Referência de estrutura audio_stream_out
#include < audio.h >
Campos de dados | |
estrutura audio_stream | comum |
uint32_t(* | get_latency )(const struct audio_stream_out *stream) |
interno(* | set_volume )(struct audio_stream_out *stream, flutua para a esquerda, flutua para a direita) |
tamanho_t(* | escrever )(struct audio_stream_out *stream, const void *buffer, size_t bytes) |
interno(* | get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
interno(* | get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *timestamp) |
interno(* | set_callback )(struct audio_stream_out *stream, stream_callback_t retorno de chamada, void *cookie) |
interno(* | pausa )(estrutura audio_stream_out *stream) |
interno(* | currículo )(estrutura audio_stream_out *stream) |
interno(* | drenar )(struct audio_stream_out *stream, audio_drain_type_t tipo) |
interno(* | flush )(estrutura audio_stream_out *stream) |
interno(* | get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp) |
Descrição detalhada
audio_stream_out é a interface de abstração para o hardware de saída de áudio.
Ele fornece informações sobre diversas propriedades do driver de hardware de saída de áudio.
Documentação de campo
estrutura audio_stream comum |
Métodos comuns de saída de fluxo de áudio. Este deve ser o primeiro membro de audio_stream_out , pois os usuários desta estrutura lançarão um ponteiro audio_stream para audio_stream_out em contextos onde é conhecido que audio_stream faz referência a um audio_stream_out .
int(* dreno)(struct audio_stream_out *stream, audio_drain_type_t tipo) |
Solicita notificação quando os dados armazenados em buffer pelo driver/hardware foram reproduzidos. Se set_callback() tiver sido chamado anteriormente para ativar o modo sem bloqueio, o drena() não deve bloquear; em vez disso, ele deve retornar rapidamente e a conclusão da drenagem é notificada por meio do retorno de chamada. Se set_callback() não tiver sido chamado, o drena() deverá ser bloqueado até a conclusão. Se type==AUDIO_DRAIN_ALL, a drenagem será concluída quando todos os dados gravados anteriormente forem reproduzidos. Se type==AUDIO_DRAIN_EARLY_NOTIFY, a drenagem será concluída pouco antes de todos os dados da trilha atual serem reproduzidos para permitir que a estrutura execute uma troca de trilha sem intervalos.
Drain deve retornar imediatamente na chamada stop() e flush()
A implementação desta função é obrigatória para reprodução descarregada.
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) |
Retorne uma contagem recente do número de quadros de áudio apresentados a um observador externo. Isso exclui frames que foram gravados, mas ainda estão em pipeline. A contagem não é zerada quando a saída entra em espera. Também retorna o valor de CLOCK_MONOTONIC a partir desta contagem de apresentação. Espera-se que a contagem retornada seja 'recente', mas não precisa ser o valor mais recente possível. No entanto, o tempo associado deve corresponder a qualquer contagem retornada. Exemplo: suponha que foram apresentados quadros N+M, onde M é um número 'pequeno'. Então é permitido retornar N em vez de N+M, e o carimbo de data/hora deve corresponder a N em vez de N+M. Os termos 'recente' e 'pequeno' não estão definidos. Eles refletem a qualidade da implementação.
3.0 e superior apenas.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(*pausa)(struct audio_stream_out *stream) |
Notifica o driver de áudio para interromper a reprodução, mas os buffers enfileirados são retidos pelo hardware. Útil para implementar pausa/retomada. A implementação vazia, se não for suportada, deverá ser implementada para hardware com latência não trivial. No estado de pausa, o hardware de áudio ainda pode estar consumindo energia. O usuário pode considerar chamar a suspensão após um tempo limite.
A implementação desta função é obrigatória para reprodução descarregada.
int(* currículo)(struct audio_stream_out *stream) |
int(* set_callback)(struct audio_stream_out *stream, stream_callback_t retorno de chamada, void *cookie) |
defina a função de retorno de chamada para notificar a conclusão de gravação e drenagem sem bloqueio. Chamar esta função implica que todos os write() e drenos futuros devem ser sem bloqueio e usar o retorno de chamada para sinalizar a conclusão.
int(* set_volume)(struct audio_stream_out *stream, flutua para a esquerda, flutua para a direita) |
Use este método em situações onde a mixagem de áudio é feita no hardware. Este método serve como uma interface direta com o hardware, permitindo que você defina diretamente o volume por meio da estrutura. Este método pode produzir múltiplas saídas PCM ou codecs acelerados por hardware, como MP3 ou AAC.
ssize_t(*write)(struct audio_stream_out *stream, const void *buffer, size_t bytes) |
Grave o buffer de áudio no driver. Retorna o número de bytes gravados ou um status_t negativo. Se pelo menos um quadro foi gravado com êxito antes do erro, sugere-se que o driver retorne essa contagem de bytes (curta) bem-sucedida e, em seguida, retorne um erro na chamada subsequente.
Se set_callback() tiver sido chamado anteriormente para ativar o modo sem bloqueio , write() não terá permissão para bloquear. Ele deve escrever apenas o número de bytes que cabem atualmente no buffer do driver/hardware e então retornar essa contagem de bytes. Se for menor que o tamanho de gravação solicitado, a função de retorno de chamada deverá ser chamada quando mais espaço estiver disponível no buffer do driver/hardware.
A documentação desta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/include/hardware/ audio.h