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.
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 .
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.
int(* flush)(struct audio_stream_out *stream) |
uint32_t(* get_latency)(const struct 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 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.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
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.
int(* resume)(struct audio_stream_out *stream) |
int(* set_callback)(struct audio_stream_out *stream, stream_callback_t callback, batal *cookie) |
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.
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.
Dokumentasi untuk struct ini dibuat dari file berikut:
- hardware/libhardware/include/hardware/ audio.h