Referensi Struktur audio_stream_out

Referensi Struktur audio_stream_out

#include < audio.h >

Bidang Data

struct audio_stream umum
uint32_t(* get_latency )(const struct audio_stream_out *stream)
ke dalam(* set_volume )(struct audio_stream_out *stream, melayang ke kiri, melayang ke kanan)
ukuran_t(* tulis )(struct audio_stream_out *stream, const void *buffer, size_t byte)
ke dalam(* get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames)
ke dalam(* get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *timestamp)
ke dalam(* set_callback )(struct audio_stream_out *stream, stream_callback_t panggilan balik, batal *cookie)
ke dalam(* jeda )(struct audio_stream_out *stream)
ke dalam(* melanjutkan )(struct audio_stream_out *stream)
ke dalam(* tiriskan )(struct audio_stream_out *stream, tipe audio_drain_type_t )
ke dalam(* menyiram )(struct audio_stream_out *stream)
ke dalam(* get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frame, struct spesifikasi waktu *cap waktu)

Detil Deskripsi

audio_stream_out adalah antarmuka abstraksi untuk perangkat keras keluaran audio.

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

Definisi pada baris 276 file audio.h .

Dokumentasi Lapangan

struct audio_stream umum

Metode umum aliran audio keluar. Ini harus menjadi anggota pertama audio_stream_out karena pengguna struktur ini akan mentransmisikan penunjuk audio_stream ke audio_stream_out dalam konteks yang diketahui bahwa audio_stream merujuk pada audio_stream_out .

Definisi pada baris 282 file audio.h .

int(* tiriskan)(struct audio_stream_out *aliran, tipe audio_drain_type_t )

Meminta pemberitahuan ketika data yang di-buffer oleh driver/perangkat keras telah diputar. Jika set_callback() sebelumnya telah dipanggil untuk mengaktifkan mode non-pemblokiran, drain() tidak boleh diblokir, melainkan harus kembali dengan cepat dan penyelesaian pengurasan diberitahukan melalui callback. Jika set_callback() belum dipanggil, drain() harus diblokir hingga 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 peralihan trek tanpa celah.

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

Penerapan fungsi ini wajib untuk pemutaran yang dibongkar.

Definisi pada baris 372 file audio.h .

int(* siram)(struct audio_stream_out *aliran)

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

Penerapan fungsi ini wajib untuk pemutaran yang dibongkar.

Definisi pada baris 380 file audio.h .

uint32_t(* get_latency)(konstruk audio_stream_out *stream)

Mengembalikan perkiraan latensi driver perangkat keras audio dalam milidetik.

Definisi pada baris 287 file audio.h .

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

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

Definisi pada baris 324 file audio.h .

int(* get_presentation_position)(const struct audio_stream_out *stream, uint64_t *frame, struct spesifikasi waktu *cap waktu)

Menampilkan hitungan terkini jumlah bingkai audio yang disajikan kepada pengamat eksternal. Ini tidak termasuk frame yang telah ditulis tetapi masih dalam proses. Hitungan tidak direset ke nol ketika output memasuki keadaan siaga. Juga mengembalikan nilai CLOCK_MONOTONIC pada jumlah presentasi ini. Hitungan yang dikembalikan diharapkan bersifat 'terbaru', namun tidak harus berupa nilai terbaru. Namun, waktu terkait harus sesuai dengan hitungan apa pun yang dikembalikan. Contoh: asumsikan bahwa N+M frame telah disajikan, dimana M adalah angka 'kecil'. Maka diperbolehkan untuk mengembalikan N, bukan N+M, dan stempel waktu harus sesuai dengan N, bukan N+M. Istilah 'terkini' dan 'kecil' tidak didefinisikan. Hal ini mencerminkan kualitas implementasinya.

3.0 dan lebih tinggi saja.

Definisi pada baris 398 file audio.h .

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

Definisi pada baris 317 file audio.h .

int(* jeda)(struct audio_stream_out *aliran)

Memberi tahu driver audio untuk menghentikan pemutaran namun buffer yang antri disimpan oleh perangkat keras. Berguna untuk menerapkan jeda/melanjutkan. Namun implementasi kosong jika tidak didukung harus diterapkan untuk perangkat keras dengan latensi non-sepele. Dalam keadaan jeda, perangkat keras audio masih dapat menggunakan daya. Pengguna dapat mempertimbangkan untuk memanggil penangguhan setelah batas waktu habis.

Penerapan fungsi ini wajib untuk pemutaran yang dibongkar.

Definisi pada baris 345 file audio.h .

int(* melanjutkan)(struct audio_stream_out *stream)

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

Penerapan fungsi ini wajib untuk pemutaran yang dibongkar.

Definisi pada baris 353 file audio.h .

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

atur fungsi panggilan balik untuk memberitahukan penyelesaian penulisan dan pengurasan non-pemblokiran. Memanggil fungsi ini menyiratkan bahwa semua write() dan drain() di masa depan harus non-blocking dan menggunakan callback untuk menandakan penyelesaian.

Definisi pada baris 333 file audio.h .

int(* set_volume)(struct audio_stream_out *stream, melayang ke kiri, melayang ke 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 mengatur volume secara langsung sesuai keinginan melalui kerangka kerja. Metode ini mungkin menghasilkan beberapa keluaran PCM atau codec yang dipercepat perangkat keras, seperti MP3 atau AAC.

Definisi pada baris 296 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 dan kemudian mengembalikan kesalahan pada panggilan berikutnya.

Jika set_callback() sebelumnya telah dipanggil untuk mengaktifkan mode non-pemblokiran, 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 file audio.h .


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