Ссылка на структуру audio_stream_out

Ссылка на структуру audio_stream_out

#include < audio.h >

Поля данных

структура audio_stream общий
uint32_t(* get_latency )(const struct audio_stream_out *stream)
интервал(* set_volume )(struct audio_stream_out *stream, с плавающей запятой влево, с плавающей запятой вправо)
ssize_t(* write )(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)
интервал(* сток )(struct audio_stream_out *stream, тип 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(* дренаж)(struct audio_stream_out *stream, тип audio_drain_type_t )

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

Drain должен немедленно вернуться при вызове stop() иlush ().

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

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

int(* флеш)(struct audio_stream_out *stream)

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

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

Определение в строке 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(* пауза)(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)

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

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

int(* set_volume)(struct audio_stream_out *stream, с плавающей запятой влево, с плавающей запятой вправо)

Используйте этот метод в ситуациях, когда микширование звука осуществляется аппаратно. Этот метод служит прямым интерфейсом с оборудованием, позволяя вам напрямую устанавливать громкость, а не через платформу. Этот метод может создавать несколько выходных сигналов 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/hardware/ audio.h