Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Referensi Struktur audio_stream_out

Referensi Struktur audio_stream_out

#include < audio.h >

Bidang Data

struktur audio_stream umum
uint32_t(* get_latency )(const struct audio_stream_out *stream)
int(* set_volume )(struct audio_stream_out *stream, float kiri, float kanan)
ukuran_t(* write )(struct audio_stream_out *stream, const void *buffer, size_t byte)
int(* get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames)
int(* get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *timestamp)
int(* set_callback )(struct audio_stream_out *stream, stream_callback_t callback, batal *cookie)
int(* jeda )(struct audio_stream_out *stream)
int(* resume )(struct audio_stream_out *stream)
int(* tiriskan )(struct audio_stream_out *stream, tipe audio_drain_type_t )
int(* flush )(struct audio_stream_out *stream)
int(* get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)

Detil Deskripsi

audio_stream_out adalah antarmuka abstraksi untuk perangkat keras keluaran audio.

Ini memberikan informasi tentang berbagai properti driver perangkat keras output audio.

Definisi pada baris 276 dari file audio.h .

Dokumentasi Lapangan

struct audio_stream umum

Metode umum streaming audio keluar. Ini harus menjadi anggota pertama audio_stream_out karena pengguna struktur ini akan mentransmisikan audio_stream ke audio_stream_out pointer dalam konteks yang diketahui bahwa audio_stream mereferensikan audio_stream_out .

Definisi pada baris 282 dari file audio.h .

int(* drain)(struct audio_stream_out *stream, tipe audio_drain_type_t )

Meminta pemberitahuan ketika data yang di-buffer oleh driver/hardware telah dimainkan. Jika set_callback() sebelumnya telah dipanggil untuk mengaktifkan mode non-blocking, drain() tidak boleh memblokir, melainkan harus kembali dengan cepat dan penyelesaian drain akan diberitahukan melalui callback. Jika set_callback() belum dipanggil, drain() harus memblokir sampai selesai. Jika type==AUDIO_DRAIN_ALL, pengurasan selesai ketika semua data yang ditulis sebelumnya telah diputar. Jika type==AUDIO_DRAIN_EARLY_NOTIFY, pengurasan selesai sesaat sebelum semua data untuk trek saat ini diputar untuk memberikan waktu bagi kerangka kerja untuk melakukan sakelar trek tanpa celah.

Drain harus segera kembali pada panggilan stop() dan flush()

Implementasi fungsi ini wajib untuk pemutaran yang tidak dimuat.

Definisi pada baris 372 dari file audio.h .

int(* flush)(struct audio_stream_out *stream)

Memberi tahu driver audio untuk menghapus data yang antri. Streaming harus sudah dijeda sebelum memanggil flush() .

Implementasi fungsi ini wajib untuk pemutaran yang tidak dimuat.

Definisi pada baris 380 dari file audio.h .

uint32_t(* get_latency)(const struct audio_stream_out *stream)

Kembalikan perkiraan latensi driver perangkat keras audio dalam milidetik.

Definisi pada baris 287 dari file audio.h .

int(* get_next_write_timestamp)(const struct audio_stream_out *stream, int64_t *timestamp)

dapatkan waktu lokal di mana penulisan berikutnya ke driver audio akan disajikan. Satuannya adalah mikrodetik, di mana epoch ditentukan oleh HAL audio lokal.

Definisi pada baris 324 dari file audio.h .

int(* get_presentation_position)(const struct audio_stream_out *stream, uint64_t *frame, struct timespec *timestamp)

Kembalikan hitungan terbaru dari jumlah bingkai audio yang disajikan ke pengamat eksternal. Ini tidak termasuk bingkai yang telah ditulis tetapi masih dalam proses. Hitungan tidak diatur ulang ke nol saat output memasuki siaga. Juga mengembalikan nilai CLOCK_MONOTONIC pada hitungan presentasi ini. Hitungan yang dikembalikan diharapkan 'terkini', tetapi tidak perlu menjadi nilai yang paling baru. Namun, waktu terkait harus sesuai dengan hitungan apa pun yang dikembalikan. Contoh: asumsikan bahwa frame N+M telah disajikan, di mana M adalah angka 'kecil'. Maka diperbolehkan untuk mengembalikan N alih-alih N+M, dan stempel waktu harus sesuai dengan N daripada N+M. Istilah 'baru-baru ini' dan 'kecil' tidak didefinisikan. Mereka mencerminkan kualitas implementasi.

3.0 dan lebih tinggi saja.

Definisi pada baris 398 dari file audio.h .

int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames)

Definisi pada baris 317 dari file audio.h .

int(* jeda)(struktur audio_stream_out *aliran)

Memberi tahu driver audio untuk menghentikan pemutaran namun buffer yang antri dipertahankan oleh perangkat keras. Berguna untuk mengimplementasikan pause/resume. Implementasi kosong jika tidak didukung harus diimplementasikan untuk perangkat keras dengan latensi non-sepele. Dalam keadaan jeda, perangkat keras audio masih bisa menggunakan daya. Pengguna dapat mempertimbangkan untuk memanggil penangguhan setelah batas waktu.

Implementasi fungsi ini wajib untuk pemutaran yang tidak dimuat.

Definisi pada baris 345 dari file audio.h .

int(* resume)(struct audio_stream_out *stream)

Memberi tahu driver audio untuk melanjutkan pemutaran setelah jeda. Mengembalikan kesalahan jika dipanggil tanpa jeda yang cocok.

Implementasi fungsi ini wajib untuk pemutaran yang tidak dimuat.

Definisi pada baris 353 dari file audio.h .

int(* set_callback)(struct audio_stream_out *stream, stream_callback_t callback, batal *cookie)

atur fungsi panggilan balik untuk memberi tahu penyelesaian penulisan dan pengurasan non-pemblokiran. Memanggil fungsi ini menyiratkan bahwa semua write() dan drain() yang akan datang harus non-blocking dan menggunakan callback untuk menyelesaikan sinyal.

Definisi pada baris 333 dari file audio.h .

int(* set_volume)(struct audio_stream_out *stream, float kiri, float kanan)

Gunakan metode ini dalam situasi di mana pencampuran audio dilakukan di perangkat keras. Metode ini berfungsi sebagai antarmuka langsung dengan perangkat keras, memungkinkan Anda untuk mengatur volume secara langsung seperti yang ditunjukkan melalui kerangka kerja. Metode ini mungkin menghasilkan beberapa keluaran PCM atau codec yang dipercepat perangkat keras, seperti MP3 atau AAC.

Definisi pada baris 296 dari file audio.h .

ssize_t(* tulis)(struct audio_stream_out *stream, const void *buffer, size_t byte)

Tulis buffer audio ke driver. Mengembalikan jumlah byte yang ditulis, atau status_t negatif. Jika setidaknya satu frame berhasil ditulis sebelum kesalahan, disarankan agar driver mengembalikan jumlah byte (pendek) yang berhasil itu dan kemudian mengembalikan kesalahan pada panggilan berikutnya.

Jika set_callback() sebelumnya telah dipanggil untuk mengaktifkan mode non-blocking, write() tidak diperbolehkan untuk memblokir. Itu harus menulis hanya jumlah byte yang saat ini sesuai dengan buffer driver/perangkat keras dan kemudian mengembalikan jumlah byte ini. Jika ini kurang dari ukuran tulis yang diminta, fungsi panggilan balik harus dipanggil ketika lebih banyak ruang tersedia di buffer driver/perangkat keras.

Definisi pada baris 311 dari file audio.h .


Dokumentasi untuk struct ini dibuat dari file berikut:
  • hardware/libhardware/include/hardware/ audio.h