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, 向左浮动, 向右浮动)
大小_t(*)(struct audio_stream_out *stream, const void *buffer, size_t bytes)
整数(* 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 )(结构audio_stream_out *stream, stream_callback_t回调,void *cookie)
整数(*暂停)(结构audio_stream_out *流)
整数(*恢复)(结构audio_stream_out *流)
整数(*漏极)(结构audio_stream_out *流, audio_drain_type_t类型)
整数(*刷新)(结构audio_stream_out *流)
整数(* get_presentation_position )(const struct audio_stream_out *stream,uint64_t *frames,struct timespec *timestamp)

详细说明

audio_stream_out是音频输出硬件的抽象接口。

它提供有关音频输出硬件驱动程序的各种属性的信息。

定义位于文件audio.h的第276行。

现场文档

结构体audio_stream公共

音频流输出的常用方法。这必须audio_stream_out的第一个成员,因为该结构的用户将在已知audio_stream引用audio_stream_out的上下文中将audio_stream强制转换为audio_stream_out指针。

定义位于文件audio.h的第282行。

int(* 漏极)(结构audio_stream_out *流, audio_drain_type_t类型)

当驱动程序/硬件缓冲的数据已播放时请求通知。如果之前已调用set_callback()来启用非阻塞模式,则rain()不得阻塞,而是应快速返回,并通过回调通知drain完成。如果set_callback()尚未被调用, drain()必须阻塞直到完成。如果 type==AUDIO_DRAIN_ALL,则在播放所有先前写入的数据后,排水完成。如果 type==AUDIO_DRAIN_EARLY_NOTIFY,则在当前轨道的所有数据播放完毕之前不久,排水就会完成,以便框架有时间执行无缝轨道切换。

Drain 必须在 stop() 和lush()调用后立即返回

对于卸载播放来说,必须实现此功能。

定义位于文件audio.h的第372行。

int(*刷新)(结构audio_stream_out *流)

通知音频驱动程序刷新排队的数据。在调用flush()之前流必须已经暂停。

对于卸载播放来说,必须实现此功能。

定义位于文件audio.h的第380行。

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

返回音频硬件驱动程序估计的延迟(以毫秒为单位)。

定义位于文件audio.h的第287行。

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

获取下次写入音频驱动程序的本地时间。单位是微秒,其中纪元由本地音频 HAL 决定。

文件audio.h324行的定义。

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 及更高版本。

定义位于文件audio.h的第398行。

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

定义位于文件audio.h的第317行。

int(* 暂停)(struct audio_stream_out *stream)

通知音频驱动程序停止播放,但排队的缓冲区由硬件保留。对于实现暂停/恢复很有用。如果不支持,则应为具有重要延迟的硬件实现空实现。在暂停状态下,音频硬件可能仍在使用电源。用户可以考虑在超时后调用挂起。

对于卸载播放来说,必须实现此功能。

定义位于文件audio.h的第345行。

int(*恢复)(结构audio_stream_out *stream)

通知音频驱动程序在暂停后恢复播放。如果调用时没有匹配暂停,则返回错误。

对于卸载播放来说,必须实现此功能。

定义位于文件audio.h的第353行。

int(* set_callback)(结构audio_stream_out *stream, stream_callback_t回调,void *cookie)

设置通知非阻塞写入和耗尽完成的回调函数。调用此函数意味着所有未来的write()rain()都必须是非阻塞的,并使用回调来表示完成。

定义位于文件audio.h的第333行。

int(* set_volume)(struct audio_stream_out *stream, 向左浮动, 向右浮动)

在硬件中完成音频混合的情况下使用此方法。此方法作为与硬件的直接接口,允许您直接设置音量,而不是通过框架。此方法可能会产生多个 PCM 输出或硬件加速编解码器,例如 MP3 或 AAC。

定义位于文件audio.h的第296行。

ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t bytes)

将音频缓冲区写入驱动程序。返回写入的字节数,或负的 status_t。如果在发生错误之前至少成功写入一帧,则建议驱动程序返回成功的(短)字节计数,然后在后续调用中返回错误。

如果先前已调用set_callback()来启用非阻塞模式,则不允许阻塞write() 。它必须仅写入当前适合驱动程序/硬件缓冲区的字节数,然后返回该字节计数。如果这小于请求的写入大小,则必须在驱动程序/硬件缓冲区中有更多空间可用时调用回调函数。

定义位于文件audio.h的第311行。


该结构的文档是从以下文件生成的:
  • 硬件/libhardware/include/hardware/audio.h