使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
audio_stream_out结构参考
#include < audio.h >
audio_stream_out是音频输出硬件的抽象接口。
它提供有关音频输出硬件驱动程序的各种属性的信息。
定义位于文件audio.h的第276行。
当驱动程序/硬件缓冲的数据已播放时请求通知。如果之前已调用set_callback()来启用非阻塞模式,则rain()不得阻塞,而是应快速返回,并通过回调通知drain完成。如果set_callback()尚未被调用, drain()必须阻塞直到完成。如果 type==AUDIO_DRAIN_ALL,则在播放所有先前写入的数据后,排水完成。如果 type==AUDIO_DRAIN_EARLY_NOTIFY,则在当前轨道的所有数据播放完毕之前不久,排水就会完成,以便框架有时间执行无缝轨道切换。
Drain 必须在 stop() 和lush()调用后立即返回
对于卸载播放来说,必须实现此功能。
定义位于文件audio.h的第372行。
int(* get_next_write_timestamp)(const struct audio_stream_out *stream, int64_t *timestamp) |
获取下次写入音频驱动程序的本地时间。单位是微秒,其中纪元由本地音频 HAL 决定。
文件audio.h第324行的定义。
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的第345行。
通知音频驱动程序在暂停后恢复播放。如果调用时没有匹配暂停,则返回错误。
对于卸载播放来说,必须实现此功能。
定义位于文件audio.h的第353行。
在硬件中完成音频混合的情况下使用此方法。此方法作为与硬件的直接接口,允许您直接设置音量,而不是通过框架。此方法可能会产生多个 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
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2023-12-01。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2023-12-01。"],[],[]]