Referensi Struct audio_stream_out

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.

Definisi di baris 276 file audio.h .

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 .

Definisi di baris 282 dari file audio.h .

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.

Definisi di baris 372 dari file audio.h .

int(* flush)(struct audio_stream_out *stream)

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

Penerapan fungsi ini wajib untuk pemutaran yang di-offload.

Definisi pada baris 380 dari file audio.h .

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

Menampilkan estimasi latensi driver hardware audio dalam milidetik.

Definisi di baris 287 dari file audio.h .

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

mendapatkan waktu lokal saat penulisan berikutnya ke driver audio akan ditampilkan. Unitnya adalah mikrodetik, dengan epoch ditentukan oleh HAL audio lokal.

Definisi di baris 324 dari file audio.h .

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.

Definisi pada baris 398 dari file audio.h .

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

Definisi di baris 317 dari file audio.h .

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.

Definisi di baris 345 dari file audio.h .

int(* resume)(struct audio_stream_out *stream)

Memberi tahu driver audio untuk melanjutkan pemutaran setelah jeda. Menampilkan error jika dipanggil tanpa jeda yang cocok.

Penerapan fungsi ini wajib untuk pemutaran yang di-offload.

Definisi pada baris 353 dari file audio.h .

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

menetapkan fungsi callback untuk memberi tahu penyelesaian penulisan dan pembuangan non-pemblokiran. Memanggil fungsi ini menyiratkan bahwa semua write() dan drain() mendatang harus non-blocking dan menggunakan callback untuk menandakan penyelesaian.

Definisi di baris 333 dari file audio.h .

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.

Definisi di baris 296 dari file audio.h .

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.

Definisi di baris 311 dari file audio.h .


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