diff --git a/multimedia/audio_framework/audio_renderer/native_audiorenderer.h b/multimedia/audio_framework/audio_renderer/native_audiorenderer.h index edc3d2a81489602a577a797364a109b9cc5c8d47..451c349a6fdbd23077a6e6dcd73f2f8a4d1228e1 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 @@ -281,6 +282,42 @@ OH_AudioStream_Result OH_AudioRenderer_SetVolumeWithRamp(OH_AudioRenderer* rende */ OH_AudioStream_Result OH_AudioRenderer_GetVolume(OH_AudioRenderer* renderer, float* volume); +/** + * @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 10332c357e5c82fbd0d17706116b29976b437e67..5ddbbd5bb6115dd8f5aa1bd201839ea0e9b1e948 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. @@ -577,6 +603,22 @@ typedef enum { */ typedef void (*OH_AudioRenderer_OutputDeviceChangeCallback)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_DeviceChangeReason reason); + +/** + * @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 9f63550632c3cc9585296a8c655772a66c83d1ab..9aaaf5acb0b02e9188c3de74d17c73ef8be2c401 100644 --- a/multimedia/audio_framework/ohaudio.ndk.json +++ b/multimedia/audio_framework/ohaudio.ndk.json @@ -206,5 +206,25 @@ { "first_introduced": "12", "name": "OH_AudioRenderer_GetVolume" + }, + { + "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" } ]