audio_stream_out Справочник по структуре

audio_stream_out Справочник по структуре

#include < audio.h >

Поля данных

структура audio_stream общий
uint32_t(* get_latency )(const struct audio_stream_out *поток)
интервал (* set_volume )(struct audio_stream_out *поток, с плавающей запятой влево, с плавающей запятой справа)
ssize_t(* запись )(struct audio_stream_out *stream, const void *buffer, size_t байт)
интервал (* get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames)
интервал (* get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *timestamp)
интервал (* set_callback )(struct audio_stream_out *stream, обратный вызов stream_callback_t , void *cookie)
интервал (* пауза )(struct audio_stream_out *stream)
интервал (* возобновить )(struct audio_stream_out *stream)
интервал (* сток )(структура audio_stream_out *поток, тип audio_drain_type_t )
интервал (* флеш )(struct audio_stream_out *stream)
интервал (* get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)

Подробное описание

audio_stream_out — это интерфейс абстракции для оборудования вывода звука.

Он предоставляет информацию о различных свойствах аппаратного драйвера аудиовыхода.

Определение в строке 276 файла audio.h .

Полевая документация

общая структура audio_stream

Распространенные способы вывода аудиопотока. Это должен быть первый элемент audio_stream_out , поскольку пользователи этой структуры будут преобразовывать audio_stream в указатель audio_stream_out в контекстах, где известно, что audio_stream ссылается на audio_stream_out .

Определение в строке 282 файла audio.h .

int(* сток)(структура audio_stream_out *stream, тип audio_drain_type_t )

Запрашивает уведомление, когда данные, буферизованные драйвером/аппаратным обеспечением, были воспроизведены. Если функция set_callback() была ранее вызвана для включения неблокирующего режима, функция стока() не должна блокироваться, вместо этого она должна быстро возвращаться, а о завершении сброса сообщается посредством обратного вызова. Если set_callback() не был вызван, функция стока() должна быть заблокирована до завершения. Если type==AUDIO_DRAIN_ALL, слив завершится, когда будут воспроизведены все ранее записанные данные. Если type==AUDIO_DRAIN_EARLY_NOTIFY, слив завершается незадолго до того, как все данные для текущей дорожки будут воспроизведены, чтобы дать платформе время выполнить непрерывное переключение дорожек.

Слив должен немедленно возвращаться при вызове stop() и flush() .

Реализация этой функции обязательна для разгруженного воспроизведения.

Определение в строке 372 файла audio.h .

int(* flush)(struct audio_stream_out *stream)

Уведомляет аудиодрайвер о необходимости сброса данных в очереди. Поток уже должен быть приостановлен перед вызовом flush() .

Реализация этой функции обязательна для разгруженного воспроизведения.

Определение в строке 380 файла audio.h .

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

Возвращает расчетную задержку драйвера звукового оборудования в миллисекундах.

Определение в строке 287 файла audio.h .

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

получить местное время, когда будет представлена ​​следующая запись в аудиодрайвер. Единицами являются микросекунды, где эпоха определяется локальным звуковым HAL.

Определение в строке 324 файла audio.h .

int(* get_presentation_position)(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)

Возвращает недавний подсчет количества аудиокадров, представленных внешнему наблюдателю. Это исключает кадры, которые были записаны, но все еще находятся в конвейере. Счетчик не обнуляется, когда выход переходит в режим ожидания. Также возвращает значение CLOCK_MONOTONIC для этого счетчика презентаций. Ожидается, что возвращаемый счетчик будет «последним», но не обязательно должен быть самым последним возможным значением. Однако связанное время должно соответствовать любому возвращаемому счетчику. Пример: предположим, что было представлено N+M кадров, где M — «небольшое» число. Тогда допустимо возвращать N вместо N+M, и метка времени должна соответствовать N, а не N+M. Термины «недавний» и «небольшой» не определены. Они отражают качество реализации.

Только 3.0 и выше.

Определение в строке 398 файла audio.h .

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

Определение в строке 317 файла audio.h .

int(* pause)(struct audio_stream_out *stream)

Уведомляет аудиодрайвер об остановке воспроизведения, однако буферы в очереди сохраняются аппаратным обеспечением. Полезно для реализации паузы/возобновления. Однако пустая реализация, если она не поддерживается, должна быть реализована для оборудования с нетривиальной задержкой. В состоянии паузы звуковое оборудование все еще может потреблять энергию. Пользователь может рассмотреть возможность вызова приостановки после тайм-аута.

Реализация этой функции обязательна для разгруженного воспроизведения.

Определение в строке 345 файла audio.h .

int(* резюме)(struct audio_stream_out *stream)

Уведомляет аудиодрайвер о возобновлении воспроизведения после паузы. Возвращает ошибку, если вызывается без соответствующей паузы.

Реализация этой функции обязательна для разгруженного воспроизведения.

Определение в строке 353 файла audio.h .

int(* set_callback)(struct audio_stream_out *stream, обратный вызов stream_callback_t , void *cookie)

установить функцию обратного вызова для уведомления о завершении неблокирующей записи и слива. Вызов этой функции подразумевает, что все будущие записи() и дренаж() должны быть неблокирующими и использовать обратный вызов, чтобы сигнализировать о завершении.

Определение в строке 333 файла audio.h .

int(* set_volume)(struct audio_stream_out *stream, float влево, float вправо)

Используйте этот метод в ситуациях, когда микширование звука выполняется аппаратно. Этот метод служит прямым интерфейсом с оборудованием, позволяя вам напрямую устанавливать громкость, а не через фреймворк. Этот метод может создавать несколько выходных данных PCM или кодеков с аппаратным ускорением, таких как MP3 или AAC.

Определение в строке 296 файла audio.h .

ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t байт)

Записать звуковой буфер в драйвер. Возвращает количество записанных байтов или отрицательное значение status_t. Если хотя бы один кадр был успешно записан до возникновения ошибки, предлагается, чтобы драйвер возвращал этот успешный (короткий) счетчик байтов, а затем возвращал ошибку при последующем вызове.

Если set_callback() ранее вызывался для включения неблокирующего режима, функция write() не может блокироваться. Он должен записывать только то количество байтов, которое в настоящее время помещается в буфере драйвера/аппаратного обеспечения, а затем возвращать это количество байтов. Если это меньше запрошенного размера записи, функция обратного вызова должна быть вызвана, когда в драйвере/аппаратном буфере доступно больше места.

Определение в строке 311 файла audio.h .


Документация для этой структуры была сгенерирована из следующего файла:
  • оборудование/libhardware/include/оборудование/ аудио.h