From fa1c039f25ed3385e88ca4b13573d89de989e2a6 Mon Sep 17 00:00:00 2001 From: zhanhang Date: Sun, 18 Jun 2023 19:30:47 +0800 Subject: [PATCH] add interface for ohaudio Signed-off-by: z00511616 --- .../media/ohaudio/native_audiocapturer.h | 195 ++++++++++++ .../media/ohaudio/native_audiorenderer.h | 192 +++++++++++ .../media/ohaudio/native_audiostream_base.h | 298 ++++++++++++++++++ .../media/ohaudio/native_audiostreambuilder.h | 209 ++++++++++++ 4 files changed, 894 insertions(+) create mode 100644 zh-cn/native_sdk/media/ohaudio/native_audiocapturer.h create mode 100644 zh-cn/native_sdk/media/ohaudio/native_audiorenderer.h create mode 100644 zh-cn/native_sdk/media/ohaudio/native_audiostream_base.h create mode 100644 zh-cn/native_sdk/media/ohaudio/native_audiostreambuilder.h diff --git a/zh-cn/native_sdk/media/ohaudio/native_audiocapturer.h b/zh-cn/native_sdk/media/ohaudio/native_audiocapturer.h new file mode 100644 index 00000000..61e7bd5c --- /dev/null +++ b/zh-cn/native_sdk/media/ohaudio/native_audiocapturer.h @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup OHAudio + * @{ + * + * @brief 提供音频模块C接口定义。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * + * @since 10 + * @version 1.0 + */ + +/** + * @file native_audiocapturer.h + * + * @brief 声明输入类型的音频流相关接口, + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + * @version 1.0 + */ + +#ifndef NATIVE_AUDIOCAPTURER_H +#define NATIVE_AUDIOCAPTURER_H + +#include +#include "native_audiostream_base.h" +#ifdef __cplusplus +extern "C" { +#endif +/* + * @brief 释放音频流。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @permission ohos.permission.MICROPHONE + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_Release(OH_AudioCapturer* capturer); + +/* + * @brief 开始获取音频数据。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @permission ohos.permission.MICROPHONE + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_Start(OH_AudioCapturer* capturer); + +/* + * @brief 暂停音频流。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @permission ohos.permission.MICROPHONE + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_Pause(OH_AudioCapturer* capturer); + +/* + * @brief 停止音频流 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @permission ohos.permission.MICROPHONE + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_Stop(OH_AudioCapturer* capturer); + +/* + * @brief 丢弃获取的音频数据。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_Flush(OH_AudioCapturer* capturer); + +/* + * @brief 查询当前音频流状态。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param state 指向一个用来接收音频流状态的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_GetCurrentState(OH_AudioCapturer* capturer, OH_AudioStream_State* state); + +/* + * @brief 查询当前音频流时延模式。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param latencyMode 指向一个用来接收音频流时延模式的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_GetLatencyMode(OH_AudioCapturer* capturer, + OH_AudioStream_LatencyMode* latencyMode); + +/* + * @brief 查询当前音频流ID。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param streamId 指向一个用来接收音频流ID的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_GetStreamId(OH_AudioCapturer* capturer, uint32_t* streamId); + +/* + * @brief 查询当前音频流采样率。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param rate 指向一个用来接收音频流采样率的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_GetSamplingRate(OH_AudioCapturer* capturer, int32_t* rate); + +/* + * @brief 查询当前音频流通道数。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param channelCount 指向一个用来接收音频流通道数的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_GetChannelCount(OH_AudioCapturer* capturer, int32_t* channelCount); + +/* + * @brief 查询当前音频流采样格式。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param sampleFormat 指向一个用来接收音频流采样格式的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_GetSampleFormat(OH_AudioCapturer* capturer, + OH_AudioStream_SampleFormat* sampleFormat); + +/* + * @brief 查询当前音频流编码类型。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param encodingType 指向一个用来接收音频流编码类型的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_GetEncodingType(OH_AudioCapturer* capturer, + OH_AudioStream_EncodingType* encodingType); + +/* + * @brief 查询当前音频流工作场景类型。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param capturer 指向{@link OH_AudioStreamBuilder_GenerateCapturer}创建的音频流实例。 + * @param sourceType 指向一个用来接收输入类型音频流的工作场景的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioCapturer_GetCapturerInfo(OH_AudioCapturer* capturer, + OH_AudioStream_SourceType* sourceType); +#ifdef __cplusplus +} +#endif + +#endif // NATIVE_AUDIOCAPTURER_H diff --git a/zh-cn/native_sdk/media/ohaudio/native_audiorenderer.h b/zh-cn/native_sdk/media/ohaudio/native_audiorenderer.h new file mode 100644 index 00000000..e2796bf3 --- /dev/null +++ b/zh-cn/native_sdk/media/ohaudio/native_audiorenderer.h @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup OHAudio + * @{ + * + * @brief 提供音频模块C接口定义。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * + * @since 10 + * @version 1.0 + */ + +/** + * @file native_audiorenderer.h + * + * @brief 声明输出类型的音频流相关接口, + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + * @version 1.0 + */ + +#ifndef NATIVE_AUDIORENDERER_H +#define NATIVE_AUDIORENDERER_H + +#include +#include "native_audiostream_base.h" +#ifdef __cplusplus +extern "C" { +#endif +/* + * @brief 释放音频流。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_Release(OH_AudioRenderer* renderer); + +/* + * @brief 开始输出音频数据。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_Start(OH_AudioRenderer* renderer); + +/* + * @brief 暂停音频流。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_Pause(OH_AudioRenderer* renderer); + +/* + * @brief 停止音频流 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_Stop(OH_AudioRenderer* renderer); + +/* + * @brief 丢弃已经写入的音频数据。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_Flush(OH_AudioRenderer* renderer); + +/* + * @brief 查询当前音频流状态。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param state 指向一个用来接收音频流状态的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_GetCurrentState(OH_AudioRenderer* renderer, + OH_AudioStream_State* state); + +/* + * @brief 查询当前音频流采样率。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param rate 指向一个用来接收音频流采样率的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_GetSamplingRate(OH_AudioRenderer* renderer, int32_t* rate); + +/* + * @brief 查询当前音频流ID。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param streamId 指向一个用来接收音频流ID的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_GetStreamId(OH_AudioRenderer* renderer, uint32_t* streamId); + +/* + * @brief 查询当前音频流通道数。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param channelCount 指向一个用来接收音频流通道数的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_GetChannelCount(OH_AudioRenderer* renderer, int32_t* channelCount); + +/* + * @brief 查询当前音频流采样格式。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param sampleFormat 指向一个用来接收音频流采样格式的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_GetSampleFormat(OH_AudioRenderer* renderer, + OH_AudioStream_SampleFormat* sampleFormat); + +/* + * @brief 查询当前音频流时延模式。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param latencyMode 指向一个用来接收音频流时延模式的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_GetLatencyMode(OH_AudioRenderer* renderer, + OH_AudioStream_LatencyMode* latencyMode); +/* + * @brief 查询当前音频流工作场景类型。 + * + * The rendere info includes {@link OH_AudioStream_Usage} value and {@link OH_AudioStream_Content} value. + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param usage 指向一个用来接收输出类型音频流的工作场景的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_GetRendererInfo(OH_AudioRenderer* renderer, + OH_AudioStream_Usage* usage); + +/* + * @brief 查询当前音频流编码类型。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param renderer 指向{@link OH_AudioStreamBuilder_GenerateRenderer}创建的音频流实例。 + * @param encodingType 指向一个用来接收音频流编码类型的变量。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioRenderer_GetEncodingType(OH_AudioRenderer* renderer, + OH_AudioStream_EncodingType* encodingType); +#ifdef __cplusplus +} +#endif +#endif // NATIVE_AUDIORENDERER_H diff --git a/zh-cn/native_sdk/media/ohaudio/native_audiostream_base.h b/zh-cn/native_sdk/media/ohaudio/native_audiostream_base.h new file mode 100644 index 00000000..53bc1b62 --- /dev/null +++ b/zh-cn/native_sdk/media/ohaudio/native_audiostream_base.h @@ -0,0 +1,298 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup OHAudio + * @{ + * + * @brief 提供音频模块C接口定义。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * + * @since 10 + * @version 1.0 + */ + +/** + * @file native_audiostream_base.h + * + * @brief 声明OHAudio基础的数据结构。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + * @version 1.0 + */ + +#ifndef NATIVE_AUDIOSTREAM_BASE_H +#define NATIVE_AUDIOSTREAM_BASE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 音频错误码。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef enum { + /** + * 操作成功 + */ + AUDIOSTREAM_SUCCESS, + + /** + * 入参错误。 + */ + AUDIOSTREAM_ERROR_INVALID_PARAM, + + /** + * 非法状态。 + */ + AUDIOSTREAM_ERROR_ILLEGAL_STATE, + + /** + * 系统通用错误。 + */ + AUDIOSTREAM_ERROR_SYSTEM +} OH_AudioStream_Result; + +/** + * @brief 音频流类型。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef enum { + /** + * 该类型代表音频流是输出流。 + */ + AUDIOSTREAM_TYPE_RERNDERER = 1, + + /** + * 该类型代表音频流是输入流。 + */ + AUDIOSTREAM_TYPE_CAPTURER = 2 +} OH_AudioStream_Type; + +/** + * @brief 定义音频流采样格式。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef enum { + /** + * Unsigned 8位。 + */ + AUDIOSTREAM_SAMPLE_U8 = 0, + /** + * Short 16位小端。 + */ + AUDIOSTREAM_SAMPLE_S16LE = 1, + /** + * Short 24位小端。 + */ + AUDIOSTREAM_SAMPLE_S24LE = 2, + /** + * Short 32位小端。 + */ + AUDIOSTREAM_SAMPLE_S32LE = 3, +} OH_AudioStream_SampleFormat; + +/** + * @brief 定义音频流编码类型。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef enum { + /** + * PCM编码。 + */ + AUDIOSTREAM_ENCODING_TYPE_RAW = 0, +} OH_AudioStream_EncodingType; + +/** + * @brief 定义音频流使用场景。 + * + * 通常用来描述音频输出流的使用场景。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef enum { + /** + * 未定义。 + */ + AUDIOSTREAM_USAGE_UNKNOWN = 0, + /** + * 音乐。 + */ + AUDIOSTREAM_USAGE_MUSIC = 1, + /** + * 通话。 + */ + AUDIOSTREAM_USAGE_COMMUNICATION = 2, + /** + * 游戏。 + */ + AUDIOSTREAM_USAGE_GAME = 11, +} OH_AudioStream_Usage; + +/** + * @brief 定义音频时延模式。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef enum { + /** + * 该模式代表一个普通时延的音频流。 + */ + AUDIOSTREAM_LATENCY_MODE_NORMAL, +} OH_AudioStream_LatencyMode; + +/** + * @brief 定义音频流的状态。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef enum { + /** + * 不合法的状态。 + */ + AUDIOSTREAM_STATE_INVALID = -1, + /** + * 准备状态。 + */ + AUDIOSTREAM_STATE_PREPARED = 1, + /** + * 工作状态。 + */ + AUDIOSTREAM_STATE_RUNNING = 2, + /** + * 停止状态。 + */ + AUDIOSTREAM_STATE_STOPPED = 3, + /** + * 释放状态。 + */ + AUDIOSTREAM_STATE_RELEASED = 4, + /** + * 暂停状态。 + */ + AUDIOSTREAM_STATE_PAUSED = 5, +} OH_AudioStream_State; + +/** + * @brief 定义音频流使用场景。 + * + * 通常用来描述音频输入流的使用场景。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef enum { + /** + * 不合法状态。 + */ + AUDIOSTREAM_SOURCE_TYPE_INVALID = -1, + /** + * 录音。 + */ + AUDIOSTREAM_SOURCE_TYPE_MIC, + /** + * 语音识别。 + */ + AUDIOSTREAM_SOURCE_TYPE_VOICE_RECOGNITION = 1, + /** + * 通话。 + */ + AUDIOSTREAM_SOURCE_TYPE_VOICE_COMMUNICATION = 7 +} OH_AudioStream_SourceType; + +/** + * @brief 声明音频流的构造器。 + * + * 构造器实例通常被用来设置音频流属性和创建音频流。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef struct OH_AudioStreamBuilderStruct OH_AudioStreamBuilder; + +/** + * @brief 声明输出音频流。 + * + * 输出音频流的实例被用来播放音频数据。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef struct OH_AudioRendererStruct OH_AudioRenderer; + +/** + * @brief 声明输入音频流。 + * + * 输入音频流的实例被用来获取音频数据。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef struct OH_AudioCapturerStruct OH_AudioCapturer; + +/** + * @brief 声明输出音频流的回调函数指针。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef struct OH_AudioRenderer_Callbacks_Struct { + /** + * 这个函数指针将指向用于写入音频数据的回调函数。 + */ + int32_t (*OH_AudioRenderer_OnWriteData)( + OH_AudioRenderer* renderer, + void* userData, + void* buffer, + int32_t lenth); +} OH_AudioRenderer_Callbacks; + +/** + * @brief 声明输入音频流的回调函数指针。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + */ +typedef struct OH_AudioCapturer_Callbacks_Struct { + /** + * 这个函数指针将指向用于读取音频数据的回调函数。 + */ + int32_t (*OH_AudioCapturer_OnReadData)( + OH_AudioCapturer* capturer, + void* userData, + void* buffer, + int32_t lenth); +} OH_AudioCapturer_Callbacks; +#ifdef __cplusplus +} +#endif + +#endif // NATIVE_AUDIOSTREAM_BASE_H diff --git a/zh-cn/native_sdk/media/ohaudio/native_audiostreambuilder.h b/zh-cn/native_sdk/media/ohaudio/native_audiostreambuilder.h new file mode 100644 index 00000000..7301c26a --- /dev/null +++ b/zh-cn/native_sdk/media/ohaudio/native_audiostreambuilder.h @@ -0,0 +1,209 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup OHAudio + * @{ + * + * @brief 提供音频模块C接口定义。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * + * @since 10 + * @version 1.0 + */ + +/** + * @file native_audiostreambuilder.h + * + * @brief 声明音频流构造器相关接口。 + * + * 包含构造和销毁构造器,设置音频流属性,回调等相关接口。 + * + * @syscap SystemCapability.Multimedia.Audio.Core + * @since 10 + * @version 1.0 + */ + +#ifndef NATIVE_AUDIOSTREAMBUILDER_H +#define NATIVE_AUDIOSTREAMBUILDER_H + +#include "native_audiostream_base.h" +#include "native_audiorenderer.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 创建一个输入或者输出类型的音频流构造器。 + * + * 当构造器不再使用时,需要调用OH_AudioStreamBuilder_Destroy()销毁它。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 该引用指向创建的构造器的结果。 + * @param type 构造器的流类型。{@link AUDIOSTREAM_TYPE_RERNDERER} or {@link AUDIOSTREAM_TYPE_CAPTURER} + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_Create(OH_AudioStreamBuilder** builder, OH_AudioStream_Type type); + +/** + * @brief 销毁一个音频流构造器。 + * + * 当构造器不再使用时,需要调用该函数销毁它。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_Destroy(OH_AudioStreamBuilder* builder); + +/** + * @brief 设置音频流的采样率属性。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param channelCount 音频流采样率。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetSamplingRate(OH_AudioStreamBuilder* builder, int32_t rate); + +/** + * @brief 设置音频流的通道数属性。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param channelCount 音频流通道数。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetChannelCount(OH_AudioStreamBuilder* builder, int32_t channelCount); + +/** + * @brief 设置音频流的采样格式属性。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param format 音频流采样格式。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetSampleFormat(OH_AudioStreamBuilder* builder, + OH_AudioStream_SampleFormat format); + +/** + * @brief 设置音频流的编码类型属性。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param encodingType 音频流编码类型, {@link AUDIOSTREAM_ENCODING_PCM} + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetEncodingType(OH_AudioStreamBuilder* builder, + OH_AudioStream_EncodingType encodingType); + +/** + * @brief 设置音频流的时延模式。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param latencyMode 音频流时延模式。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetLatencyMode(OH_AudioStreamBuilder* builder, + OH_AudioStream_LatencyMode latencyMode); + +/** + * @brief 设置输出音频流的工作场景。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param usage 输出音频流属性,使用的工作场景。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetRendererInfo(OH_AudioStreamBuilder* builder, + OH_AudioStream_Usage usage); + +/** + * @brief 设置输入音频流的工作场景。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param sourceType 输入音频流属性,使用的工作场景。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetCapturerInfo(OH_AudioStreamBuilder* builder, + OH_AudioStream_SourceType sourceType); + +/** + * @brief 设置输出音频流的回调。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param callbacks 将被用来处理输出音频流相关事件的回调函数。 + * @param userData 指向通过回调函数传递的应用数据指针。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetRendererCallback(OH_AudioStreamBuilder* builder, + OH_AudioRenderer_Callbacks callbacks, void* userData); + +/** + * @brief 设置输入音频流的回调。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param callbacks 将被用来处理输入音频流相关事件的回调函数。 + * @param userData 指向通过回调函数传递的应用数据指针。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_SetCapturerCallback(OH_AudioStreamBuilder* builder, + OH_AudioCapturer_Callbacks callbacks, void* userData); + +/** + * @brief 创建输出音频流实例。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param audioRenderer 指向输出音频流实例的指针,将被用来接收函数创建的结果。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_GenerateRenderer(OH_AudioStreamBuilder* builder, + OH_AudioRenderer** audioRenderer); + +/** + * @brief 创建输入音频流实例。 + * + * @since 10 + * @syscap SystemCapability.Multimedia.Audio.Core + * @param builder 指向OH_AudioStreamBuilder_Create()创建的构造器实例。 + * @param audioCapturer 指向输入音频流实例的指针,将被用来接收函数创建的结果。 + * @return {@link AUDIOSTREAM_SUCCESS} 或者一个不期望发生的错误。 + */ +OH_AudioStream_Result OH_AudioStreamBuilder_GenerateCapturer(OH_AudioStreamBuilder* builder, + OH_AudioCapturer** audioCapturer); +#ifdef __cplusplus +} +#endif + +#endif // NATIVE_AUDIOSTREAMBUILDER_H -- Gitee