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.
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 .
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.
int(* siram)(struct audio_stream_out *aliran) |
uint32_t(* get_latency)(konstruk audio_stream_out *stream) |
int(* get_next_write_timestamp)(const struct audio_stream_out *stream, int64_t *timestamp) |
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.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
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.
int(* melanjutkan)(struct audio_stream_out *stream) |
int(* set_callback)(struct audio_stream_out *stream, stream_callback_t panggilan balik, batal *cookie) |
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.
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.
Dokumentasi untuk struct ini dihasilkan dari file berikut:
- perangkat keras/libhardware/include/hardware/ audio.h