Riferimento alla struttura audio_stream_out
#include < audio.h >
Campi dati | |
struttura audio_stream | comune |
uint32_t(* | get_latency )(const struct audio_stream_out *stream) |
int(* | set_volume )(struct audio_stream_out *stream, float a sinistra, float a destra) |
taglia_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(* | curriculum )(struct audio_stream_out *stream) |
int(* | drain )(struct audio_stream_out *stream, audio_drain_type_t tipo) |
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 uscita audio.
Documentazione sul campo
struttura audio_stream comune |
Metodi comuni di streaming audio in uscita. Questo deve essere il primo membro di audio_stream_out poiché gli utenti di questa struttura trasmetteranno un puntatore da audio_stream a audio_stream_out in contesti in cui è noto che audio_stream fa riferimento a audio_stream_out .
int(* drain)(struct audio_stream_out *stream, audio_drain_type_t tipo) |
Richiede una notifica quando i dati memorizzati nel buffer dal driver/hardware sono stati riprodotti. Se set_callback() è stato precedentemente chiamato per abilitare la modalità non bloccante, drain() non deve bloccarsi, ma dovrebbe ritornare rapidamente e il completamento dello svuotamento viene notificato 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 tutti i dati per la traccia corrente vengano riprodotti per consentire al framework di eseguire un cambio di traccia senza pause.
Drain deve restituire immediatamente la chiamata stop() e flush()
L'implementazione di questa funzione è obbligatoria per la riproduzione scaricata.
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. Ciò esclude i frame che sono stati scritti ma sono ancora in fase di elaborazione. Il conteggio non viene azzerato quando l'uscita entra in standby. Restituisce anche il valore di CLOCK_MONOTONIC a partire dal conteggio di questa presentazione. Si prevede che il conteggio restituito sia "recente", ma non è necessario che sia il valore più recente possibile. Tuttavia, il tempo associato deve corrispondere al conteggio restituito. Esempio: supponiamo che siano stati presentati N+M frame, dove M è un numero 'piccolo'. Quindi è consentito restituire N anziché N+M e il timestamp dovrebbe corrispondere a N anziché N+M. I termini "recente" e "piccolo" non sono definiti. Riflettono la qualità dell'attuazione.
3.0 e versioni successive solo.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(* pausa)(struct audio_stream_out *stream) |
Notifica al driver audio di interrompere la riproduzione, tuttavia i buffer in coda vengono conservati dall'hardware. Utile per implementare pausa/ripresa. L'implementazione vuota, se non supportata, dovrebbe tuttavia essere implementata per l'hardware con latenza non banale. Nello stato di pausa l'hardware audio potrebbe ancora utilizzare energia. L'utente può prendere in considerazione la possibilità di chiamare la sospensione dopo un timeout.
L'implementazione di questa funzione è obbligatoria per la riproduzione scaricata.
int(* curriculum)(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 sinistra, float destra) |
Utilizzare questo metodo in situazioni in cui il missaggio audio viene eseguito nell'hardware. Questo metodo funge da interfaccia diretta con l'hardware, consentendo di impostare direttamente il volume come previsto 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) |
Scrivi il buffer audio sul driver. Restituisce il numero di byte scritti o uno status_t negativo. Se almeno un frame è stato scritto correttamente prima dell'errore, si suggerisce che il driver restituisca il conteggio di byte riusciti (brevi) e quindi restituisca un errore nella chiamata successiva.
Se set_callback() è stato precedentemente chiamato per abilitare la modalità non bloccante , write() non può bloccare. Deve scrivere solo il numero di byte che attualmente rientrano nel buffer driver/hardware e quindi restituire questo conteggio di byte. Se questa è inferiore alla dimensione di scrittura richiesta, la funzione di callback deve essere chiamata quando è disponibile più spazio nel buffer driver/hardware.
La documentazione per questa struttura è stata generata dal seguente file:
- hardware/libhardware/include/hardware/ audio.h