Referensi Struct audio_stream_out
#include <
audio.h
>
Kolom Data |
|
struct audio_stream | umum |
uint32_t(* | get_latency )(const struct audio_stream_out *stream) |
int(* | set_volume )(struct audio_stream_out *stream, float left, float right) |
ssize_t(* | write )(struct audio_stream_out *stream, const void *buffer, size_t bytes) |
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, void *cookie) |
int(* | pause )(struct audio_stream_out *stream) |
int(* | resume )(struct audio_stream_out *stream) |
int(* | drain )(struct audio_stream_out *stream, audio_drain_type_t type) |
int(* | flush )(struct audio_stream_out *stream) |
int(* | get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp) |
Deskripsi Mendetail
audio_stream_out adalah antarmuka abstraksi untuk hardware output audio.
Class ini memberikan informasi tentang berbagai properti driver hardware output audio.
Dokumentasi Bidang
struct audio_stream umum |
Metode umum streaming audio. ini harus menjadi anggota pertama audio_stream_out karena pengguna struktur ini akan mentransmisikan audio_stream ke pointer audio_stream_out dalam konteks yang diketahui bahwa audio_stream mereferensikan audio_stream_out .
int(* drain)(struct audio_stream_out *stream, audio_drain_type_t type) |
Meminta notifikasi saat data yang di-buffer oleh driver/hardware telah diputar. Jika set_callback() sebelumnya telah dipanggil untuk mengaktifkan mode non-pemblokiran, drain() tidak boleh memblokir, tetapi harus ditampilkan dengan cepat dan penyelesaian drain akan diberi tahu melalui callback. Jika set_callback() belum dipanggil, drain() harus diblokir hingga selesai. Jika type==AUDIO_DRAIN_ALL, pengosongan selesai saat semua data yang ditulis sebelumnya telah diputar. Jika type==AUDIO_DRAIN_EARLY_NOTIFY, pengosongan akan selesai sesaat sebelum semua data untuk trek saat ini diputar untuk memberi waktu bagi framework untuk melakukan pengalihan trek tanpa jeda.
Drain harus segera ditampilkan saat panggilan stop() dan flush() dilakukan
Penerapan fungsi ini wajib untuk pemutaran yang di-offload.
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 *frames, struct timespec *timestamp) |
Menampilkan jumlah terbaru jumlah frame audio yang ditampilkan kepada pengamat eksternal. Hal ini tidak termasuk frame yang telah ditulis, tetapi masih dalam pipeline. Jumlah tidak direset ke nol saat output memasuki mode standby. Juga menampilkan nilai CLOCK_MONOTONIC mulai dari jumlah presentasi ini. Jumlah yang ditampilkan diharapkan 'terbaru', tetapi tidak harus merupakan nilai terbaru. Namun, waktu yang terkait harus sesuai dengan jumlah yang ditampilkan. Contoh: asumsikan bahwa frame N+M telah ditampilkan, dengan M adalah angka 'kecil'. Kemudian, Anda diizinkan untuk menampilkan N, bukan N+M, dan stempel waktu harus sesuai dengan N, bukan N+M. Istilah 'terbaru' dan 'kecil' tidak ditentukan. Hal ini mencerminkan kualitas implementasi.
Khusus 3.0 dan yang lebih tinggi.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(* pause)(struct audio_stream_out *stream) |
Memberi tahu driver audio untuk menghentikan pemutaran, tetapi buffering yang diantrekan dipertahankan oleh hardware. Berguna untuk menerapkan jeda/lanjutkan. Implementasi kosong jika tidak didukung, harus diterapkan untuk hardware dengan latensi non-trivial. Dalam status jeda, hardware audio masih dapat menggunakan daya. Pengguna dapat mempertimbangkan untuk memanggil penangguhan setelah waktu tunggu habis.
Penerapan fungsi ini wajib untuk pemutaran yang di-offload.
int(* resume)(struct audio_stream_out *stream) |
int(* set_callback)(struct audio_stream_out *stream, stream_callback_t callback, void *cookie) |
int(* set_volume)(struct audio_stream_out *stream, float left, float right) |
Gunakan metode ini dalam situasi saat pencampuran audio dilakukan di hardware. Metode ini berfungsi sebagai antarmuka langsung dengan hardware, sehingga Anda dapat langsung menyetel volume, bukan melalui framework. Metode ini dapat menghasilkan beberapa output PCM atau codec yang diakselerasi hardware, seperti MP3 atau AAC.
ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t bytes) |
Menulis buffering audio ke driver. Menampilkan jumlah byte yang ditulis, atau status_t negatif. Jika setidaknya satu frame berhasil ditulis sebelum error, sebaiknya driver menampilkan jumlah byte (pendek) yang berhasil, lalu menampilkan error dalam panggilan berikutnya.
Jika set_callback() sebelumnya telah dipanggil untuk mengaktifkan mode non-pemblokiran, write() tidak diizinkan untuk memblokir. Metode ini hanya boleh menulis jumlah byte yang saat ini sesuai dengan buffer driver/hardware, lalu menampilkan jumlah byte ini. Jika kurang dari ukuran operasi tulis yang diminta, fungsi callback harus dipanggil saat lebih banyak ruang tersedia di buffer driver/hardware.
Dokumentasi untuk struct ini dibuat dari file berikut:
- hardware/libhardware/include/hardware/ audio.h