diff --git a/multimedia/audio_framework/audio_renderer/native_audiorenderer.h b/multimedia/audio_framework/audio_renderer/native_audiorenderer.h index a2b5dff7d94bb3a890bc911f763c0e16a4f5682d..c61129fc20aa3b1b2f81877a350a2cbb5d16fa7a 100644 --- a/multimedia/audio_framework/audio_renderer/native_audiorenderer.h +++ b/multimedia/audio_framework/audio_renderer/native_audiorenderer.h @@ -599,6 +599,63 @@ typedef void (*OH_AudioRenderer_OnFastStatusChange)( OH_AudioStream_FastStatus status ); +/** + * @brief Gets audio renderer running status, check if it works in power saving status. + * + * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer. + * @param status Pointer to a variable to receive the status. + * @return + * {@link AUDIOSTREAM_SUCCESS} if the execution is successful. + * {@link AUDIOSTREAM_ERROR_INVALID_PARAM} the param of renderer is nullptr. + * {@link AUDIOSTREAM_ERROR_ILLEGAL_STATE} function called in invalid state, only available before release state. + * @since 20 + */ +OH_AudioStream_Result OH_AudioRenderer_GetPowerStatus(OH_AudioRenderer* renderer, + OH_AudioStream_PowerMode* status); + +/** + * @brief Callback function of power status change event for audio renderer. + * + * @param renderer Pointer to an audio renderer instance for which this callback occurs. + * @param userData Userdata which is passed by register. + * @param status Current power status. + * @since 20 + */ +typedef void (*OH_AudioRenderer_OnPowerStatusChange)( + OH_AudioRenderer* renderer, + void* userData, + OH_AudioStream_PowerMode status +); + +/** + * @brief Callback function of stop and drain completed for audio renderer. + * + * @param renderer Pointer to an audio renderer instance for which this callback occurs. + * @param userData Userdata which is passed by register. + * @param status Current power status. + * @since 20 + */ +typedef void (*OH_AudioRenderer_OnCompletedCallback)( + OH_AudioRenderer* renderer, + void* userData, +); + +/** +/** + * @brief Request to stop and drain renderer stream. + * + * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer. + * @param callback Callback function that will receive the playback completed event. + * @param userData Pointer to an application data structure that will be passed to the callback functions. + * @return + * {@link AUDIOSTREAM_SUCCESS} If the execution is successful. + * {@link AUDIOSTREAM_ERROR_INVALID_PARAM} The param of renderer or callback is nullptr. + * {@link AUDIOSTREAM_ERROR_ILLEGAL_STATE} Execution status exception. + * @since 20 + */ +OH_AudioStream_Result OH_AudioRenderer_StopWithDrain(OH_AudioRenderer* renderer, + OH_AudioRenderer_OnCompletedCallback callback, void* userData); + #ifdef __cplusplus } #endif diff --git a/multimedia/audio_framework/common/native_audiostream_base.h b/multimedia/audio_framework/common/native_audiostream_base.h index 9b763054bc9bff2e1bf5b9b4490f33b99a52fbce..6343b1884e8f6f6d1f72e44e5059457fd47c6fd4 100644 --- a/multimedia/audio_framework/common/native_audiostream_base.h +++ b/multimedia/audio_framework/common/native_audiostream_base.h @@ -607,6 +607,22 @@ typedef enum { AUDIOSTREAM_FASTSTATUS_FAST = 1 } OH_AudioStream_FastStatus; +/** + * @brief Defines the power mode. + * + * @since 20 + */ +typedef enum { + /** + * power saving + */ + AUDIOSTREAM_POWER_SAVING = 0, + /** + * power normal + */ + AUDIOSTREAM_POWER_NORMAL = 1 +} OH_AudioStream_PowerMode; + /** * @brief Declaring the audio stream builder. * The instance of builder is used for creating audio stream. diff --git a/multimedia/audio_framework/common/native_audiostreambuilder.h b/multimedia/audio_framework/common/native_audiostreambuilder.h index a557a9342e477a1dcc481e38bd5b34d74a7dccaf..0d1a63358d8ac2370df4ed80bb439de9aade9908 100644 --- a/multimedia/audio_framework/common/native_audiostreambuilder.h +++ b/multimedia/audio_framework/common/native_audiostreambuilder.h @@ -544,6 +544,36 @@ OH_AudioStream_Result OH_AudioStreamBuilder_SetRendererFastStatusChangeCallback( OH_AudioStream_Result OH_AudioStreamBuilder_SetCapturerFastStatusChangeCallback(OH_AudioStreamBuilder* builder, OH_AudioCapturer_OnFastStatusChange callback, void* userData); +/** + * @brief Set the power mode of the renderer client + * + * @param builder Reference provided by OH_AudioStreamBuilder_Create() + * @param powerMode Set the power mode for the renderer client. + * @return Function result code: + * {@link AUDIOSTREAM_SUCCESS} If the execution is successful. + * {@link AUDIOSTREAM_ERROR_INVALID_PARAM}: + * 1.The param of builder is nullptr; + * 2.The param of powerMode invalid. + * @since 20 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetPowerMode(OH_AudioStreamBuilder* builder, + OH_AudioStream_PowerMode powerMode); + +/** + * @brief Set the callback of power status change event for audio renderer. + * + * @param builder Reference provided by OH_AudioStreamBuilder_Create() + * @param callback Callback function that will receive the power status change event. + * @param userData Pointer to an application data structure that will be passed to the callback functions. + * @return Function result code: + * {@link AUDIOSTREAM_SUCCESS} If the execution is successful. + * {@link AUDIOSTREAM_ERROR_INVALID_PARAM}: + * 1.The param of builder is nullptr; + * 2.The param of callback is nullptr. + * @since 20 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetRendererPowerStatusChangeCallback(OH_AudioStreamBuilder* builder, + OH_AudioRenderer_OnPowerStatusChange callback, void* userData); #ifdef __cplusplus }