Riferimento alla struttura audio_stream_out
#include <
audio.h
>
Campi dati |
|
struct audio_stream | comuni |
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) |
Descrizione dettagliata
audio_stream_out è l'interfaccia di astrazione per l'hardware di uscita audio.
Fornisce informazioni su varie proprietà del driver hardware di output audio.
Documentazione dei campi
struct audio_stream common |
Metodi comuni di uscita dello stream audio. Questo deve essere il primo membro di audio_stream_out poiché gli utenti di questa struttura trasmettono un audio_stream a audio_stream_out in contesti in cui è noto che audio_stream fa riferimento a un audio_stream_out .
int(* drain)(struct audio_stream_out *stream, audio_drain_type_t type) |
Richiede una notifica quando i dati memorizzati nella memoria intermedia dal driver/dall'hardware sono stati riprodotti. Se set_callback() è stato chiamato in precedenza per attivare la modalità non bloccante, il drain() non deve bloccarsi, ma deve restituire rapidamente e il completamento dello scarico viene comunicato tramite il callback. Se set_callback() non è stato chiamato, drain() deve bloccarsi fino al completamento. Se type==AUDIO_DRAIN_ALL, lo scarico viene completato quando tutti i dati scritti in precedenza sono stati riprodotti. Se type==AUDIO_DRAIN_EARLY_NOTIFY, lo scarico viene completato poco prima che vengano riprodotti tutti i dati per la traccia corrente per consentire al framework di eseguire un passaggio tra tracce senza interruzioni.
Lo scarico deve restituire immediatamente il valore stop() e flush() chiamata
L'implementazione di questa funzione è obbligatoria per la riproduzione offloaded.
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) |
Restituisce un conteggio recente del numero di frame audio presentati a un osservatore esterno. Sono esclusi i frame che sono stati scritti, ma sono ancora nella pipeline. Il conteggio non viene reimpostato su zero quando l'uscita entra in modalità standby. Restituisce anche il valore di CLOCK_MONOTONIC a partire da questo conteggio della presentazione. Il conteggio restituito dovrebbe essere "recente", ma non deve essere il valore più recente possibile. Tuttavia, l'ora associata deve corrispondere al conteggio restituito. Esempio: supponiamo che siano stati presentati N + M frame, dove M è un numero "piccolo". In questo caso è consentito restituire N anziché N+M e il timestamp deve corrispondere a N anziché a N+M. I termini "recente" e "piccolo" non sono definiti. Riflettono la qualità dell'implementazione.
Solo 3.0 e versioni successive.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(* pause)(struct audio_stream_out *stream) |
Invia una notifica al driver audio per interrompere la riproduzione, ma i buffer in coda vengono conservati dall'hardware. Utile per implementare la messa in pausa/la ripresa. Tuttavia, se non supportata, l'implementazione vuota deve essere implementata per l'hardware con latenza non banale. In stato di pausa, l'hardware audio potrebbe comunque consumare corrente. L'utente potrebbe prendere in considerazione la sospensione della chiamata dopo un timeout.
L'implementazione di questa funzione è obbligatoria per la riproduzione offloaded.
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) |
Utilizza questo metodo in situazioni in cui il missaggio audio viene eseguito nell'hardware. Questo metodo funge da interfaccia diretta con l'hardware, consentendoti di impostare direttamente il volume anziché tramite il framework. Questo metodo potrebbe produrre più output PCM o codec con accelerazione hardware, come MP3 o AAC.
ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t bytes) |
Scrive il buffer audio nel driver. Restituisce il numero di byte scritti o un valore status_t negativo. Se almeno un frame è stato scritto correttamente prima dell'errore, si consiglia al driver di restituire il conteggio dei byte riuscito (breve) e poi un errore nella chiamata successiva.
Se set_callback() è stato chiamato in precedenza per attivare la modalità non bloccante, write() non è consentito bloccare. Deve scrivere solo il numero di byte che attualmente rientrano nel buffer del driver/dell'hardware e poi restituire questo conteggio di byte. Se è inferiore alle dimensioni di scrittura richieste, la funzione di callback deve essere chiamata quando è disponibile più spazio nel buffer del driver/dell'hardware.
La documentazione di questa struttura è stata generata dal seguente file:
- hardware/libhardware/include/hardware/ audio.h