Referência de 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 para a esquerda, float para a direita) |
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(* | pausa )(struct audio_stream_out *stream) |
int(* | resume )(struct audio_stream_out *stream) |
int(* | dreno )(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.
Documentação de campo
struct audio_stream comum |
Métodos comuns de saída de áudio. Este deve ser o primeiro membro de audio_stream_out , pois os usuários dessa estrutura converterão 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 .
int(*dreno)(struct audio_stream_out *stream, audio_drain_type_t type) |
Solicita notificação quando os dados armazenados em buffer pelo driver/hardware foram reproduzidos. Se set_callback() foi chamado anteriormente para habilitar o modo não bloqueante, o drain() não deve bloquear, em vez disso, deve retornar rapidamente e a conclusão do dreno é notificada através do retorno de chamada. Se set_callback() não foi chamado, o drain() deve bloquear até a conclusão. Se type==AUDIO_DRAIN_ALL, o dreno será concluído quando todos os dados gravados anteriormente tiverem sido reproduzidos. Se type==AUDIO_DRAIN_EARLY_NOTIFY, o dreno é concluído pouco antes de todos os dados da faixa atual serem reproduzidos para dar tempo para a estrutura realizar uma troca de faixa sem intervalos.
Dreno deve retornar imediatamente na chamada de stop() e flush()
A implementação desta função é obrigatória para a 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) |
Retorna uma contagem recente do número de quadros de áudio apresentados a um observador externo. Isso exclui quadros que foram gravados, mas ainda estão no 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 N+M quadros tenham sido apresentados, onde M é um número 'pequeno'. Então é permitido retornar N ao invés de N+M, e o timestamp deve corresponder a N ao invés 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/retomar. Implementação vazia se não for suportada, no entanto, deve 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 suspender após um tempo limite.
A implementação desta função é obrigatória para a reprodução descarregada.
int(* resume)(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 para a esquerda, float para a direita) |
Use este 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 diretamente o volume como oposto por meio da estrutura. Esse método pode produzir várias 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) |
Gravar 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 sucesso antes do erro, sugere-se que o driver retorne essa contagem de bytes bem-sucedida (curta) e, em seguida, retorne um erro na chamada subsequente.
Se set_callback() foi chamado anteriormente para habilitar o modo sem bloqueio, o write() não tem permissão para bloquear. Ele deve gravar apenas o número de bytes que cabem atualmente no buffer do driver/hardware e, em seguida, 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 houver mais espaço disponível no buffer do driver/hardware.
A documentação para esta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/include/hardware/ audio.h
Referência de 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 para a esquerda, float para a direita) |
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(* | pausa )(struct audio_stream_out *stream) |
int(* | resume )(struct audio_stream_out *stream) |
int(* | dreno )(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.
Documentação de campo
struct audio_stream comum |
Métodos comuns de saída de áudio. Este deve ser o primeiro membro de audio_stream_out , pois os usuários dessa estrutura converterão 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 .
int(*dreno)(struct audio_stream_out *stream, audio_drain_type_t type) |
Solicita notificação quando os dados armazenados em buffer pelo driver/hardware foram reproduzidos. Se set_callback() foi chamado anteriormente para habilitar o modo não bloqueante, o drain() não deve bloquear, em vez disso, deve retornar rapidamente e a conclusão do dreno é notificada através do retorno de chamada. Se set_callback() não foi chamado, o drain() deve bloquear até a conclusão. Se type==AUDIO_DRAIN_ALL, o dreno será concluído quando todos os dados gravados anteriormente tiverem sido reproduzidos. Se type==AUDIO_DRAIN_EARLY_NOTIFY, o dreno é concluído pouco antes de todos os dados da faixa atual serem reproduzidos para dar tempo para a estrutura realizar uma troca de faixa sem intervalos.
Dreno deve retornar imediatamente na chamada de stop() e flush()
A implementação desta função é obrigatória para a 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) |
Retorna uma contagem recente do número de quadros de áudio apresentados a um observador externo. Isso exclui quadros que foram gravados, mas ainda estão no 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 N+M quadros tenham sido apresentados, onde M é um número 'pequeno'. Então é permitido retornar N ao invés de N+M, e o timestamp deve corresponder a N ao invés 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/retomar. Implementação vazia se não for suportada, no entanto, deve 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 suspender após um tempo limite.
A implementação desta função é obrigatória para a reprodução descarregada.
int(* resume)(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 para a esquerda, float para a direita) |
Use este 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 diretamente o volume como oposto por meio da estrutura. Esse método pode produzir várias 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) |
Gravar 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 sucesso antes do erro, sugere-se que o driver retorne essa contagem de bytes bem-sucedida (curta) e, em seguida, retorne um erro na chamada subsequente.
Se set_callback() foi chamado anteriormente para habilitar o modo sem bloqueio, o write() não tem permissão para bloquear. Ele deve gravar apenas o número de bytes que cabem atualmente no buffer do driver/hardware e, em seguida, 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 houver mais espaço disponível no buffer do driver/hardware.
A documentação para esta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/include/hardware/ audio.h