Riferimento alla struttura audio_stream_out

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.

Definizione nella riga 276 del file audio.h .

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 .

Definizione nella riga 282 del file audio.h .

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.

Definizione nella riga 372 del file audio.h .

int(* flush)(struct audio_stream_out *stream)

Invia una notifica al driver audio per svuotare la coda dei dati. Lo stream deve essere già in pausa prima di chiamare flush() .

L'implementazione di questa funzione è obbligatoria per la riproduzione offloaded.

Definizione alla riga 380 del file audio.h .

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

Restituisce la latenza stimata del driver dell'hardware audio in millisecondi.

Definizione nella riga 287 del file audio.h .

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

recupera l'ora locale in cui verrà presentata la successiva scrittura nel driver audio. Le unità sono microsecondi, dove l'epoca è decisa dall'HAL audio locale.

Definizione nella riga 324 del file audio.h .

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.

Definizione alla riga 398 del file audio.h .

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

Definizione nella riga 317 del file audio.h .

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.

Definizione nella riga 345 del file audio.h .

int(* resume)(struct audio_stream_out *stream)

Invia una notifica al driver audio per riprendere la riproduzione dopo una pausa. Restituisce un errore se viene chiamato senza una pausa corrispondente.

L'implementazione di questa funzione è obbligatoria per la riproduzione offloaded.

Definizione nella riga 353 del file audio.h .

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

imposta la funzione di callback per la notifica del completamento della scrittura e dello scarico non bloccanti. La chiamata a questa funzione implica che tutti i futuri metodi write() e drain() devono essere non bloccanti e utilizzare il callback per segnalare il completamento.

Definizione nella riga 333 del file audio.h .

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.

Definizione nella riga 296 del file audio.h .

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.

Definizione nella riga 311 del file audio.h .


La documentazione di questa struttura è stata generata dal seguente file:
  • hardware/libhardware/include/hardware/ audio.h