From e0552d38ef019ec7139e9b13ea2a76035c7b0bb1 Mon Sep 17 00:00:00 2001 From: zhangwenting3652 Date: Fri, 6 Jun 2025 14:50:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=8E=E6=97=B6=E5=BB=B6=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=92=8C=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangwenting3652 --- .../audio_capturer/native_audiocapturer.h | 28 ++++++++++++++++++ .../native_audio_stream_manager.h | 26 +++++++++++++++++ .../audio_renderer/native_audiorenderer.h | 28 ++++++++++++++++++ .../common/native_audiostream_base.h | 16 ++++++++++ .../common/native_audiostreambuilder.h | 29 +++++++++++++++++++ 5 files changed, 127 insertions(+) diff --git a/zh-cn/native_sdk/multimedia/audio_framework/audio_capturer/native_audiocapturer.h b/zh-cn/native_sdk/multimedia/audio_framework/audio_capturer/native_audiocapturer.h index ba27895a..5afdd8e3 100644 --- a/zh-cn/native_sdk/multimedia/audio_framework/audio_capturer/native_audiocapturer.h +++ b/zh-cn/native_sdk/multimedia/audio_framework/audio_capturer/native_audiocapturer.h @@ -315,6 +315,34 @@ typedef void (*OH_AudioCapturer_OnInterruptCallback)(OH_AudioCapturer* capturer, typedef void (*OH_AudioCapturer_OnErrorCallback)(OH_AudioCapturer* renderer, void* userData, OH_AudioStream_Result error); +/** + * @brief 获取音频录制过程中的运行状态,是否在低时延状态下工作。 + * + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param status 指向接收低时延状态的指针。 + * @return + * AUDIOSTREAM_SUCCESS:函数执行成功。\n + * AUDIOSTREAM_ERROR_INVALID_PARAM:参数capturer为nullptr。\n + * AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常,仅在释放状态之前可用。 + * @since 20 + */ +OH_AudioStream_Result OH_AudioCapturer_GetFastStatus(OH_AudioCapturer* capturer, + OH_AudioStream_FastStatus* status); + +/** + * @brief 音频录制过程中低时延状态改变事件的回调函数。 + * + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param userData 指向应用自定义的数据存储区域。 + * @param status 返回当前低时延状态。 + * @since 20 + */ +typedef void (*OH_AudioCapturer_OnFastStatusChange)( + OH_AudioCapturer* capturer, + void* userData, + OH_AudioStream_FastStatus status +); + #ifdef __cplusplus } #endif diff --git a/zh-cn/native_sdk/multimedia/audio_framework/audio_manager/native_audio_stream_manager.h b/zh-cn/native_sdk/multimedia/audio_framework/audio_manager/native_audio_stream_manager.h index 86e21473..c87cbb39 100644 --- a/zh-cn/native_sdk/multimedia/audio_framework/audio_manager/native_audio_stream_manager.h +++ b/zh-cn/native_sdk/multimedia/audio_framework/audio_manager/native_audio_stream_manager.h @@ -104,6 +104,32 @@ OH_AudioCommon_Result OH_AudioStreamManager_IsAcousticEchoCancelerSupported( OH_AudioStream_SourceType sourceType, bool *supported); +/** + * @brief 查询当前设备在特定音频流信息和使用场景下是否支持低时延播放。 + * + * @param streamManager 音频流管理器句柄。 + * 通过 {@link OH_AudioManager_GetAudioStreamManager}获取句柄。 + * @param streamInfo 音频流信息指针。 + * @param usage 音频流使用场景。 + * @return 返回true的情况下表示支持低时延播放。 + * @since 20 + */ +bool OH_AudioStreamManager_IsFastPlaybackSupported( + OH_AudioStreamManager *streamManager, OH_AudioStreamInfo *streamInfo, OH_AudioStream_Usage usage); + +/** + * @brief 查询当前设备在特定音频流信息和使用场景下是否支持低时延录制。 + * + * @param streamManager 音频流管理器句柄。 + * 通过 {@link OH_AudioManager_GetAudioStreamManager}获取句柄。 + * @param streamInfo 音频流信息指针。 + * @param source 音频流使用场景。 + * @return 返回true的情况下表示支持低时延录制。 + * @since 20 + */ +bool OH_AudioStreamManager_IsFastRecordingSupported( + OH_AudioStreamManager *streamManager, OH_AudioStreamInfo *streamInfo, OH_AudioStream_SourceType source); + #ifdef __cplusplus } #endif diff --git a/zh-cn/native_sdk/multimedia/audio_framework/audio_renderer/native_audiorenderer.h b/zh-cn/native_sdk/multimedia/audio_framework/audio_renderer/native_audiorenderer.h index 13f40f42..f8cebddd 100644 --- a/zh-cn/native_sdk/multimedia/audio_framework/audio_renderer/native_audiorenderer.h +++ b/zh-cn/native_sdk/multimedia/audio_framework/audio_renderer/native_audiorenderer.h @@ -527,6 +527,34 @@ typedef void (*OH_AudioRenderer_OnInterruptCallback)(OH_AudioRenderer* renderer, typedef void (*OH_AudioRenderer_OnErrorCallback)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_Result error); +/** + * @brief 获取音频播放过程中的运行状态,是否在低时延状态下工作。 + * + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param status 指向接收低时延状态的指针。 + * @return + * AUDIOSTREAM_SUCCESS:函数执行成功。\n + * AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。\n + * AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常,仅在释放状态之前可用。 + * @since 20 + */ +OH_AudioStream_Result OH_AudioRenderer_GetFastStatus(OH_AudioRenderer* renderer, + OH_AudioStream_FastStatus* status); + +/** + * @brief 音频播放过程中低时延状态改变事件的回调函数。 + * + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param userData 指向应用自定义的数据存储区域。 + * @param status 返回当前低时延状态。 + * @since 20 + */ +typedef void (*OH_AudioRenderer_OnFastStatusChange)( + OH_AudioRenderer* renderer, + void* userData, + OH_AudioStream_FastStatus status +); + #ifdef __cplusplus } #endif diff --git a/zh-cn/native_sdk/multimedia/audio_framework/common/native_audiostream_base.h b/zh-cn/native_sdk/multimedia/audio_framework/common/native_audiostream_base.h index d725d760..5acfe3b9 100644 --- a/zh-cn/native_sdk/multimedia/audio_framework/common/native_audiostream_base.h +++ b/zh-cn/native_sdk/multimedia/audio_framework/common/native_audiostream_base.h @@ -501,6 +501,22 @@ typedef enum { EFFECT_DEFAULT = 1, } OH_AudioStream_AudioEffectMode; +/** + * @brief 定义低时延状态。 + * + * @since 20 + */ +typedef enum { + /** + * 普通音频流状态 + */ + AUDIOSTREAM_FASTSTATUS_NORMAL = 0, + /** + * 低时延音频流状态 + */ + AUDIOSTREAM_FASTSTATUS_FAST = 1 +} OH_AudioStream_FastStatus; + /** * @brief 声明音频流的构造器。 * diff --git a/zh-cn/native_sdk/multimedia/audio_framework/common/native_audiostreambuilder.h b/zh-cn/native_sdk/multimedia/audio_framework/common/native_audiostreambuilder.h index 378bc1fd..49974656 100644 --- a/zh-cn/native_sdk/multimedia/audio_framework/common/native_audiostreambuilder.h +++ b/zh-cn/native_sdk/multimedia/audio_framework/common/native_audiostreambuilder.h @@ -482,6 +482,35 @@ OH_AudioStream_Result OH_AudioStreamBuilder_SetCapturerErrorCallback(OH_AudioStr */ OH_AudioStream_Result OH_AudioStreamBuilder_SetCapturerWillMuteWhenInterrupted(OH_AudioStreamBuilder* builder, bool muteWhenInterrupted); + +/** + * @brief 设置音频播放过程中低时延状态改变事件的回调函数。 + * + * @param builder 指向{@link OH_AudioStreamBuilder_Create}创建的构造器实例。 + * @param callback 用于接收播放低时延状态改变事件的回调函数。 + * @param userData 向应用程序数据结构的指针,该结构将传递给回调函数。 + * @return + * {@link AUDIOSTREAM_SUCCESS} 函数执行成功。\n + * {@link AUDIOSTREAM_ERROR_INVALID_PARAM} 参数无效,比如,builder为空指针。 + * @since 20 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetRendererFastStatusChangeCallback(OH_AudioStreamBuilder* builder, + OH_AudioRenderer_OnFastStatusChange callback, void* userData); + +/** + * @brief 设置音频录制过程中低时延状态改变事件的回调函数。 + * + * @param builder 指向{@link OH_AudioStreamBuilder_Create}创建的构造器实例。 + * @param callback 用于接收录制低时延状态改变事件的回调函数。 + * @param userData 向应用程序数据结构的指针,该结构将传递给回调函数。 + * @return + * {@link AUDIOSTREAM_SUCCESS} 函数执行成功。\n + * {@link AUDIOSTREAM_ERROR_INVALID_PARAM} 参数无效,比如,builder为空指针。 + * @since 20 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetCapturerFastStatusChangeCallback(OH_AudioStreamBuilder* builder, + OH_AudioCapturer_OnFastStatusChange callback, void* userData); + #ifdef __cplusplus } #endif -- Gitee