diff --git a/multimedia/audio_framework/audio_renderer/native_audiorenderer.h b/multimedia/audio_framework/audio_renderer/native_audiorenderer.h index 0a04b37954a86d960e4173da605e1586747f8116..b1121a9f0509d8ad52f2b465a77bfc53d1c3a104 100644 --- a/multimedia/audio_framework/audio_renderer/native_audiorenderer.h +++ b/multimedia/audio_framework/audio_renderer/native_audiorenderer.h @@ -40,6 +40,7 @@ #include #include "native_audiostream_base.h" +#include "multimedia/native_audio_channel_layout.h" #ifdef __cplusplus extern "C" { #endif @@ -314,6 +315,42 @@ OH_AudioStream_Result OH_AudioRenderer_CancelMark(OH_AudioRenderer* renderer); */ OH_AudioStream_Result OH_AudioRenderer_GetUnderflowCount(OH_AudioRenderer* renderer, uint32_t* count); +/** + * @brief Query the channel layout of the renderer client. + * + * @since 12 + * + * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer() + * @param channelLayout Pointer to a variable to receive the channel layout + * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error. + */ +OH_AudioStream_Result OH_AudioRenderer_GetChannelLayout(OH_AudioRenderer* renderer, + OH_AudioChannelLayout* channelLayout); + +/** + * @brief Query current audio effect mode. + * + * @since 12 + * + * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer() + * @param effectMode Pointer to a variable to receive current audio effect mode + * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error. + */ +OH_AudioStream_Result OH_AudioRenderer_GetEffectMode(OH_AudioRenderer* renderer, + OH_AudioStream_AudioEffectMode* effectMode); + +/** + * @brief Set current audio effect mode. + * + * @since 12 + * + * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer() + * @param effectMode Audio effect mode that will be set for the stream + * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error. + */ +OH_AudioStream_Result OH_AudioRenderer_SetEffectMode(OH_AudioRenderer* renderer, + OH_AudioStream_AudioEffectMode effectMode); + #ifdef __cplusplus } #endif diff --git a/multimedia/audio_framework/common/native_audiostream_base.h b/multimedia/audio_framework/common/native_audiostream_base.h index e0db659ce5827cb926611781cc1753a180b1ec36..55bff63079a83512742d2f0588ddefca9056332e 100644 --- a/multimedia/audio_framework/common/native_audiostream_base.h +++ b/multimedia/audio_framework/common/native_audiostream_base.h @@ -144,6 +144,12 @@ typedef enum { * @since 10 */ AUDIOSTREAM_ENCODING_TYPE_RAW = 0, + /** + * AudioVivid encoding type. + * + * @since 12 + */ + AUDIOSTREAM_ENCODING_TYPE_AUDIOVIVID = 1, } OH_AudioStream_EncodingType; /** @@ -420,6 +426,26 @@ typedef enum { AUDIOSTREAM_SOURCE_TYPE_VOICE_COMMUNICATION = 7 } OH_AudioStream_SourceType; +/** + * @brief Defines the audio effect mode. + * + * @since 12 + */ +typedef enum { + /** + * Audio Effect Mode effect none. + * + * @since 12 + */ + EFFECT_NONE = 0, + /** + * Audio Effect Mode effect default. + * + * @since 12 + */ + EFFECT_DEFAULT = 1, +} OH_AudioStream_AudioEffectMode; + /** * Declaring the audio stream builder. * The instance of builder is used for creating audio stream. @@ -587,6 +613,22 @@ typedef void (*OH_AudioRenderer_OutputDeviceChangeCallback)(OH_AudioRenderer* re * @since 12 */ typedef void (*OH_AudioRenderer_OnMarkReachedCallback)(OH_AudioRenderer* renderer, uint32_t samplePos, void* userData); + +/** + * @brief This function pointer will point to the callback function that + * is used to write audio data with metadata + * + * @param renderer AudioRenderer where this event occurs. + * @param userData User data which is passed by user. + * @param audioData Audio data which is written by user. + * @param audioDataSize Audio data size which is the size of audio data written by user. + * @param metadata Metadata which is written by user. + * @param metadataSize Metadata size which is the size of metadata written by user. + * @return Error code of the callback function returned by user. + * @since 12 + */ +typedef int32_t (*OH_AudioRenderer_WriteDataWithMetadataCallback)(OH_AudioRenderer* renderer, + void* userData, void* audioData, int32_t audioDataSize, void* metadata, int32_t metadataSize); #ifdef __cplusplus } #endif diff --git a/multimedia/audio_framework/common/native_audiostreambuilder.h b/multimedia/audio_framework/common/native_audiostreambuilder.h index 44b1e4ae268ac7fe821e0be9a62a0aed0a7c152d..79a64dbf510072cf8df78f1de08b600d4fbceef4 100644 --- a/multimedia/audio_framework/common/native_audiostreambuilder.h +++ b/multimedia/audio_framework/common/native_audiostreambuilder.h @@ -127,6 +127,18 @@ OH_AudioStream_Result OH_AudioStreamBuilder_SetEncodingType(OH_AudioStreamBuilde OH_AudioStream_Result OH_AudioStreamBuilder_SetLatencyMode(OH_AudioStreamBuilder* builder, OH_AudioStream_LatencyMode latencyMode); +/** + * @brief Set the channel layout to the stream client + * + * @since 12 + * + * @param builder Reference provided by OH_AudioStreamBuilder_Create() + * @param channelLayout is the layout of the speaker. + * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error. + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetChannelLayout(OH_AudioStreamBuilder* builder, + OH_AudioChannelLayout channelLayout); + /* * Set the renderer information of the stream client * @@ -227,6 +239,19 @@ OH_AudioStream_Result OH_AudioStreamBuilder_GenerateCapturer(OH_AudioStreamBuild OH_AudioStream_Result OH_AudioStreamBuilder_SetFrameSizeInCallback(OH_AudioStreamBuilder* builder, int32_t frameSize); +/** + * @brief Set the callback of writing metadata to the renderer client + * + * @since 12 + * + * @param builder Reference provided by OH_AudioStreamBuilder_Create() + * @param callback Callback to the functions that will write audio data with metadata to the renderer. + * @param userData Pointer to an application data structure that will be passed to the callback functions. + * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error. + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetWriteDataWithMetadataCallback(OH_AudioStreamBuilder* builder, + OH_AudioRenderer_WriteDataWithMetadataCallback callback, void* userData); + #ifdef __cplusplus } #endif diff --git a/multimedia/audio_framework/ohaudio.ndk.json b/multimedia/audio_framework/ohaudio.ndk.json index 39b8be0ecdcd047950d53cfec9514a8d6f63ad97..9fc32540710fb9b0d42e56a7278434a8e60b3835 100644 --- a/multimedia/audio_framework/ohaudio.ndk.json +++ b/multimedia/audio_framework/ohaudio.ndk.json @@ -222,5 +222,25 @@ { "first_introduced":"12", "name": "OH_AudioCapturer_GetOverflowCount" + }, + { + "first_introduced": "12", + "name": "OH_AudioRenderer_GetEffectMode" + }, + { + "first_introduced": "12", + "name": "OH_AudioRenderer_SetEffectMode" + }, + { + "first_introduced": "12", + "name": "OH_AudioRenderer_GetChannelLayout" + }, + { + "first_introduced": "12", + "name": "OH_AudioStreamBuilder_SetChannelLayout" + }, + { + "first_introduced": "12", + "name": "OH_AudioStreamBuilder_SetWriteDataWithMetadataCallback" } ]