Referência da estrutura audio_stream_out

Referência da estrutura audio_stream_out

#include < audio.h >

Campos de dados

struct audio_stream   comum
 
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)
 

Descrição detalhada

audio_stream_out é a interface de abstração para o hardware de saída de áudio.

Ele fornece informações sobre várias propriedades do driver de hardware de saída de áudio.

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

Documentação do campo

struct audio_stream common

Métodos comuns de saída de stream de áudio. Ele precisa ser o primeiro membro de audio_stream_out porque os usuários dessa estrutura vão transmitir um audio_stream para o ponteiro audio_stream_out em contextos em que se sabe que o audio_stream faz referência a um audio_stream_out .

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

int(* drain)(struct audio_stream_out *stream, audio_drain_type_t type)

Solicita uma notificação quando os dados armazenados em buffer pelo driver/hardware são reproduzidos. Se set_callback() tiver sido chamado anteriormente para ativar o modo não de bloqueio, o drain() não poderá ser bloqueado. Em vez disso, ele precisa retornar rapidamente, e a conclusão do drain precisa ser notificada pelo callback. Se set_callback() não tiver sido chamado, o drain() precisa bloquear até a conclusão. Se type==AUDIO_DRAIN_ALL, o esgotamento é concluído quando todos os dados gravados anteriormente são reproduzidos. Se type==AUDIO_DRAIN_EARLY_NOTIFY, o esgotamento é concluído pouco antes de todos os dados da faixa atual serem reproduzidos para permitir que o framework realize uma troca de faixa sem intervalos.

O esgotamento precisa retornar imediatamente na chamada stop() e flush() .

A implementação dessa função é obrigatória para a reprodução desativada.

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

int(* flush)(struct audio_stream_out *stream)

Notifica o driver de áudio para limpar os dados em fila. O fluxo precisa estar pausado antes de chamar flush() .

A implementação dessa função é obrigatória para a reprodução desativada.

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

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

Retorna 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)

recebe a hora local em que a próxima gravação no driver de áudio será apresentada. As unidades são microssegundos, em que 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)

Retorna uma contagem recente do número de frames de áudio apresentados a um observador externo. Isso exclui os frames que foram gravados, mas ainda estão no pipeline. A contagem não é redefinida para zero quando a saída entra em modo de espera. Também retorna o valor de CLOCK_MONOTONIC a partir desta contagem de apresentação. A contagem retornada precisa ser "recente", mas não precisa ser o valor mais recente possível. No entanto, o tempo associado deve corresponder à contagem retornada. Exemplo: suponha que N+M frames foram apresentados, em que 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, e não a N+M. Os termos "recente" e "pequeno" não estão definidos. Elas refletem a qualidade da implementação.

Somente 3.0 e versões mais recentes.

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(* pause)(struct audio_stream_out *stream)

Notifica o driver de áudio para interromper a reprodução, mas os buffers em fila são mantidos pelo hardware. Útil para implementar pausa/retomada. A implementação vazia, se não tiver suporte, precisa ser implementada para hardware com latência não trivial. No estado de pausa, o hardware de áudio ainda pode estar usando energia. O usuário pode considerar chamar suspend após um tempo limite.

A implementação dessa função é obrigatória para a reprodução desativada.

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

int(* resume)(struct audio_stream_out *stream)

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

A implementação dessa função é obrigatória para a reprodução desativada.

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

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

defina a função de callback para notificar a conclusão da gravação e do esgotamento não bloqueante. Chamar essa função implica que todas as futuras write() e drain() precisam ser não bloqueantes e usar o callback para sinalizar a conclusão.

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

int(* set_volume)(struct audio_stream_out *stream, float left, float right)

Use esse método em situações em que a mixagem de áudio é feita no hardware. Esse método serve como uma interface direta com o hardware, permitindo que você defina o volume diretamente, em vez de usar o framework. Esse método pode produzir várias 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)

Grava o buffer de áudio no driver. Retorna o número de bytes gravados ou um status_t negativo. Se pelo menos um frame tiver sido gravado antes do erro, é recomendável que o driver retorne a 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, o write() não poderá bloquear. Ele precisa gravar apenas o número de bytes que cabem no buffer do driver/hardware e retornar essa contagem de bytes. Se esse valor for menor que o tamanho de gravação solicitado, a função de callback precisará 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 desse struct foi gerada com base no seguinte arquivo:
  • hardware/libhardware/include/hardware/ audio.h