diff --git a/multimedia/audio_framework/audio_renderer/native_audiorenderer.h b/multimedia/audio_framework/audio_renderer/native_audiorenderer.h index edc3d2a81489602a577a797364a109b9cc5c8d47..be164c362cc675cc1fb4e1ba3517ceb46d2bbb7f 100644 --- a/multimedia/audio_framework/audio_renderer/native_audiorenderer.h +++ b/multimedia/audio_framework/audio_renderer/native_audiorenderer.h @@ -281,6 +281,29 @@ OH_AudioStream_Result OH_AudioRenderer_SetVolumeWithRamp(OH_AudioRenderer* rende */ OH_AudioStream_Result OH_AudioRenderer_GetVolume(OH_AudioRenderer* renderer, float* volume); +/** + * @brief Set mark position on current renderer. Calling this function will overwrite the mark postion which has already + * set. + * + * @param renderer Renderer generated by OH_AudioStreamBuilder_GenerateRenderer() + * @param samplePos Mark position in samples. + * @param callback Callback used when the samplePos has reached. + * @param userData User data which is passed by user. + * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error. + * @since 12 + */ +OH_AudioStream_Result OH_AudioRenderer_SetMarkPosition(OH_AudioRenderer* renderer, uint32_t samplePos, + OH_AudioRenderer_OnMarkReachedCallback callback, void* userData); + +/** + * @brief Cancel mark which has set by {@link #OH_AudioRenderer_SetMarkPosition}. + * + * @param renderer Renderer generated by OH_AudioStreamBuilder_GenerateRenderer() + * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error. + * @since 12 + */ +OH_AudioStream_Result OH_AudioRenderer_CancelMark(OH_AudioRenderer* renderer); + #ifdef __cplusplus } #endif diff --git a/multimedia/audio_framework/common/native_audiostream_base.h b/multimedia/audio_framework/common/native_audiostream_base.h index 10332c357e5c82fbd0d17706116b29976b437e67..e0db659ce5827cb926611781cc1753a180b1ec36 100644 --- a/multimedia/audio_framework/common/native_audiostream_base.h +++ b/multimedia/audio_framework/common/native_audiostream_base.h @@ -577,6 +577,16 @@ typedef enum { */ typedef void (*OH_AudioRenderer_OutputDeviceChangeCallback)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_DeviceChangeReason reason); + +/** + * @brief Callback when the mark position reached. + * + * @param renderer AudioRenderer where this event occurs. + * @param samplePos Mark position in samples. + * @param userData User data which is passed by user. + * @since 12 + */ +typedef void (*OH_AudioRenderer_OnMarkReachedCallback)(OH_AudioRenderer* renderer, uint32_t samplePos, void* userData); #ifdef __cplusplus } #endif diff --git a/multimedia/audio_framework/ohaudio.ndk.json b/multimedia/audio_framework/ohaudio.ndk.json index 9f63550632c3cc9585296a8c655772a66c83d1ab..9365cd644c5e64ca0d48efa26ad4e22c770693ca 100644 --- a/multimedia/audio_framework/ohaudio.ndk.json +++ b/multimedia/audio_framework/ohaudio.ndk.json @@ -206,5 +206,13 @@ { "first_introduced": "12", "name": "OH_AudioRenderer_GetVolume" + }, + { + "first_introduced": "12", + "name": "OH_AudioRenderer_SetMarkPosition" + }, + { + "first_introduced": "12", + "name": "OH_AudioRenderer_CancelMark" } ]