Referência de estrutura audio_stream_out

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.

Definição na linha 276 do arquivo audio.h .

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 .

Definição na linha 282 do arquivo audio.h .

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.

Definição na linha 372 do arquivo audio.h .

int(*flush)(struct audio_stream_out *stream)

Notifica o driver de áudio para liberar os dados na fila. O stream já deve estar pausado antes de chamar flush() .

A implementação desta função é obrigatória para reprodução descarregada.

Definição na linha 380 do arquivo audio.h .

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

Retorne a latência estimada do driver de hardware de áudio em milissegundos.

Definição na linha 287 do arquivo audio.h .

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

obtenha a hora local em que a próxima gravação no driver de áudio será apresentada. As unidades são microssegundos, onde a época é decidida pelo HAL de áudio local.

Definição na linha 324 do arquivo audio.h .

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.

Definição na linha 398 do arquivo audio.h .

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

Definição na linha 317 do arquivo audio.h .

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.

Definição na linha 345 do arquivo audio.h .

int(* currículo)(struct audio_stream_out *stream)

Notifica o driver de áudio para retomar a reprodução após uma pausa. Retorna erro se chamado sem pausa correspondente.

A implementação desta função é obrigatória para reprodução descarregada.

Definição na linha 353 do arquivo audio.h .

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.

Definição na linha 333 do arquivo audio.h .

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.

Definição na linha 296 do arquivo audio.h .

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.

Definição na linha 311 do arquivo audio.h .


A documentação desta estrutura foi gerada a partir do seguinte arquivo:
  • hardware/libhardware/include/hardware/ audio.h