From a8f3fb99d25be4dca8625c3561fa040ec4d3b6c6 Mon Sep 17 00:00:00 2001 From: fuxiuwsz Date: Mon, 30 Jun 2025 16:44:07 +0800 Subject: [PATCH 1/6] upload native_audio_resource_manager.h Signed-off-by: fuxiuwsz --- multimedia/audio_framework/BUILD.gn | 1 + .../audio_manager/native_audio_resource_manager.h | 1 + multimedia/audio_framework/ohaudio.ndk.json | 1 + 3 files changed, 3 insertions(+) create mode 100644 multimedia/audio_framework/audio_manager/native_audio_resource_manager.h diff --git a/multimedia/audio_framework/BUILD.gn b/multimedia/audio_framework/BUILD.gn index 3318529e2..a8e336c0c 100644 --- a/multimedia/audio_framework/BUILD.gn +++ b/multimedia/audio_framework/BUILD.gn @@ -1,3 +1,4 @@ +dd # 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. diff --git a/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h b/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h new file mode 100644 index 000000000..f03f6945f --- /dev/null +++ b/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h @@ -0,0 +1 @@ +dd diff --git a/multimedia/audio_framework/ohaudio.ndk.json b/multimedia/audio_framework/ohaudio.ndk.json index d619281db..f3968b53d 100644 --- a/multimedia/audio_framework/ohaudio.ndk.json +++ b/multimedia/audio_framework/ohaudio.ndk.json @@ -1,3 +1,4 @@ +dd [ { "first_introduced": "10", -- Gitee From 34c968cdda73af0f320ec9a5572516ef047751e6 Mon Sep 17 00:00:00 2001 From: fuxiuwsz Date: Mon, 30 Jun 2025 08:52:03 +0000 Subject: [PATCH 2/6] update multimedia/audio_framework/audio_manager/native_audio_resource_manager.h. Signed-off-by: fuxiuwsz --- .../native_audio_resource_manager.h | 168 +++++++++++++++++- 1 file changed, 167 insertions(+), 1 deletion(-) diff --git a/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h b/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h index f03f6945f..c1fe06776 100644 --- a/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h +++ b/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h @@ -1 +1,167 @@ -dd +/* + * Copyright (c) 2025 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 Provide the definition of the C interface for the audio module. + * + * @syscap SystemCapability.Multimedia.Audio.Core + * + * @since 20 + */ + +/** + * @file native_audio_resource_manager.h + * + * @brief Declare audio stream manager related interfaces. + * + * This file interfaces are used for the creation of AudioResourceManager. + * + * @library libohaudio.so + * @syscap SystemCapability.Multimedia.Audio.Core + * @kit AudioKit + * @since 20 + */ + +#ifndef NATIVE_AUDIO_RESOURCE_MANAGER_H +#define NATIVE_AUDIO_RESOURCE_MANAGER_H + +#include "native_audio_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Declare the audio resource manager. + * Audio resource manager provides many functions for developer to manage system resources to avoid + * underrun or overrun in audio playback and recording. + * + * @since 20 + */ +typedef struct OH_AudioResourceManager OH_AudioResourceManager; + +/** + * @brief Fetch the audio resource manager handle, which is a singleton. + * + * @param resourceManager output parameter to get {@link #OH_AudioResourceManager}. + * @return + * {@link #AUDIOCOMMON_RESULT_SUCCESS} if execution succeeds + * {@link #AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM} if input param is nullptr + * @since 20 + */ +OH_AudioCommon_Result OH_AudioManager_GetAudioResourceManager(OH_AudioResourceManager **resourceManager); + +/** + * @brief Declare the audio workgroup. + * The handle of audio workgroup is used for workgroup related functions. + * + * @since 20 + */ +typedef struct OH_AudioWorkgroup OH_AudioWorkgroup; + +/** + * @brief Create a workgroup for audio data processing threads in application. + * System manages cpu resources by workgroup configuration. + * + * @param resourceManager {@link OH_AudioResourceManager} handle + * provided by {@link OH_AudioManager_GetAudioRoutingManager}. + * @param name workgroup name + * @param group {@link OH_AudioWorkgroup} handle for managing audio data processing threads. + * @return + * {@link #AUDIOCOMMON_RESULT_SUCCESS} if execution succeeds + * {@link #AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM} if input param is nullptr + * {@link #AUDIOCOMMON_RESULT_ERROR_NO_MEMORY} out of workgroup resources + * {@link #AUDIOCOMMON_RESULT_ERROR_SYSTEM} system process error occurs + * @since 20 + */ +OH_AudioCommon_Result OH_AudioResourceManager_CreateWorkgroup(OH_AudioResourceManager *resourceManager, + const char *name, OH_AudioWorkgroup **group); + +/** + * @brief Release the workgroup created before. + * + * @param resourceManager {@link OH_AudioResourceManager} handle + * provided by {@link OH_AudioManager_GetAudioRoutingManager}. + * @param group {@link OH_AudioWorkgroup} handle provided by {@link OH_AudioResourceManager_CreateWorkgroup}. + * @return + * {@link #AUDIOCOMMON_RESULT_SUCCESS} if execution succeeds + * {@link #AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM} if input param is nullptr + * {@link #AUDIOCOMMON_RESULT_ERROR_SYSTEM} system process error occurs + * @since 20 + */ +OH_AudioCommon_Result OH_AudioResourceManager_ReleaseWorkgroup(OH_AudioResourceManager *resourceManager, + OH_AudioWorkgroup *group); + +/** + * @brief Add current thread into a specified audio workgroup as audio data processing thread. + * + * @param group {@link OH_AudioWorkgroup} handle provided by {@link OH_AudioResourceManager_CreateWorkgroup}. + * @param tokenId a token id that represent the thread added. + * @return + * {@link #AUDIOCOMMON_RESULT_SUCCESS} if execution succeeds + * {@link #AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM} if input param is nullptr + * {@link #AUDIOCOMMON_RESULT_ERROR_NO_MEMORY} out of resources for the new thread + * {@link #AUDIOCOMMON_RESULT_ERROR_SYSTEM} system process error occurs + * @since 20 + */ +OH_AudioCommon_Result OH_AudioWorkgroup_AddCurrentThread(OH_AudioWorkgroup *group, int32_t *tokenId); + +/** + * @brief Remove the thread from a specified audio workgroup. + * + * @param group {@link OH_AudioWorkgroup} handle provided by {@link OH_AudioResourceManager_CreateWorkgroup}. + * @param tokenId id for thread returned by {link OH_AudioWorkgroup_AddCurrentThread} + * @return + * {@link #AUDIOCOMMON_RESULT_SUCCESS} if execution succeeds + * {@link #AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM} if input param is nullptr or token id is invalid + * {@link #AUDIOCOMMON_RESULT_ERROR_SYSTEM} system process error occurs + * @since 20 + */ +OH_AudioCommon_Result OH_AudioWorkgroup_RemoveThread(OH_AudioWorkgroup *group, int32_t tokenId); + +/** + * @brief Notify system the audio workgroup start working. + * + * @param group {@link OH_AudioWorkgroup} handle provided by {@link OH_AudioResourceManager_CreateWorkgroup}. + * @param startTime the time when audio thread start working, using system time. + * @param deadlineTime the time before which audio work should be finished, otherwise underrun may happens. + * @return + * {@link #AUDIOCOMMON_RESULT_SUCCESS} if execution succeeds + * {@link #AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM} if input param is nullptr, or time is invalid + * {@link #AUDIOCOMMON_RESULT_ERROR_SYSTEM} system process error occurs + * @since 20 + */ +OH_AudioCommon_Result OH_AudioWorkgroup_Start(OH_AudioWorkgroup *group, uint64_t startTime, uint64_t deadlineTime); + +/** + * @brief Notify system the audio workgroup stop working. + * + * @param group {@link OH_AudioWorkgroup} handle provided by {@link OH_AudioResourceManager_CreateWorkgroup}. + * @return + * {@link #AUDIOCOMMON_RESULT_SUCCESS} if execution succeeds + * {@link #AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM} if input param is nullptr + * {@link #AUDIOCOMMON_RESULT_ERROR_SYSTEM} system process error occurs + * @since 20 + */ +OH_AudioCommon_Result OH_AudioWorkgroup_Stop(OH_AudioWorkgroup *group); + +#ifdef __cplusplus +} +#endif + +#endif // NATIVE_AUDIO_RESOURCE_MANAGER_H +/** @} */ \ No newline at end of file -- Gitee From 2956ca9ffd351f53fc2737f52fe45dd0c2f1a696 Mon Sep 17 00:00:00 2001 From: fuxiuwsz Date: Mon, 30 Jun 2025 08:54:11 +0000 Subject: [PATCH 3/6] update multimedia/audio_framework/BUILD.gn. Signed-off-by: fuxiuwsz --- multimedia/audio_framework/BUILD.gn | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/multimedia/audio_framework/BUILD.gn b/multimedia/audio_framework/BUILD.gn index a8e336c0c..17f432f91 100644 --- a/multimedia/audio_framework/BUILD.gn +++ b/multimedia/audio_framework/BUILD.gn @@ -1,4 +1,3 @@ -dd # 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. @@ -24,6 +23,7 @@ ohos_ndk_headers("ohaudio_header") { "audio_manager/native_audio_session_manager.h", "audio_manager/native_audio_stream_manager.h", "audio_manager/native_audio_volume_manager.h", + "audio_manager/native_audio_resource_manager.h" "audio_renderer/native_audiorenderer.h", "common/native_audio_common.h", "common/native_audio_device_base.h", @@ -49,5 +49,6 @@ ohos_ndk_library("libohaudio_ndk") { "ohaudio/native_audio_session_manager.h", "ohaudio/native_audio_stream_manager.h", "ohaudio/native_audio_volume_manager.h", + "ohaudio/native_audio_resource_manager.h", ] -} +} \ No newline at end of file -- Gitee From bcac271a82af69531bd545130ccb1912e59f0549 Mon Sep 17 00:00:00 2001 From: fuxiuwsz Date: Mon, 30 Jun 2025 08:59:19 +0000 Subject: [PATCH 4/6] update multimedia/audio_framework/ohaudio.ndk.json. Signed-off-by: fuxiuwsz --- multimedia/audio_framework/ohaudio.ndk.json | 29 ++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/multimedia/audio_framework/ohaudio.ndk.json b/multimedia/audio_framework/ohaudio.ndk.json index f3968b53d..10ad8fea6 100644 --- a/multimedia/audio_framework/ohaudio.ndk.json +++ b/multimedia/audio_framework/ohaudio.ndk.json @@ -1,4 +1,3 @@ -dd [ { "first_introduced": "10", @@ -507,5 +506,33 @@ dd { "first_introduced": "20", "name": "OH_AudioRenderer_GetLoudnessGain" + }, + { + "first_introduced": "20", + "name": "OH_AudioManager_GetAudioResourceManager" + }, + { + "first_introduced": "20", + "name": "OH_AudioResourceManager_CreateWorkgroup" + }, + { + "first_introduced": "20", + "name": "OH_AudioResourceManager_ReleaseWorkgroup" + }, + { + "first_introduced": "20", + "name": "OH_AudioWorkgroup_AddCurrentThread" + }, + { + "first_introduced": "20", + "name": "OH_AudioWorkgroup_RemoveThread" + }, + { + "first_introduced": "20", + "name": "OH_AudioWorkgroup_Start" + }, + { + "first_introduced": "20", + "name": "OH_AudioWorkgroup_Stop" } ] -- Gitee From b4d0033956a347c1614defa063ba83e90c085ea9 Mon Sep 17 00:00:00 2001 From: fuxiuwsz Date: Mon, 30 Jun 2025 09:50:19 +0000 Subject: [PATCH 5/6] update multimedia/audio_framework/audio_manager/native_audio_resource_manager.h. Signed-off-by: fuxiuwsz --- .../audio_manager/native_audio_resource_manager.h | 1 + 1 file changed, 1 insertion(+) diff --git a/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h b/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h index c1fe06776..5244ee698 100644 --- a/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h +++ b/multimedia/audio_framework/audio_manager/native_audio_resource_manager.h @@ -15,6 +15,7 @@ /** * @addtogroup OHAudio + * @{ * * @brief Provide the definition of the C interface for the audio module. * -- Gitee From 8b2cd8e7ae83b3cf63b708402e51fc5093dbccdb Mon Sep 17 00:00:00 2001 From: fuxiuwsz Date: Mon, 30 Jun 2025 09:53:16 +0000 Subject: [PATCH 6/6] update multimedia/audio_framework/BUILD.gn. Signed-off-by: fuxiuwsz --- multimedia/audio_framework/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multimedia/audio_framework/BUILD.gn b/multimedia/audio_framework/BUILD.gn index 17f432f91..7e9a65bef 100644 --- a/multimedia/audio_framework/BUILD.gn +++ b/multimedia/audio_framework/BUILD.gn @@ -23,7 +23,7 @@ ohos_ndk_headers("ohaudio_header") { "audio_manager/native_audio_session_manager.h", "audio_manager/native_audio_stream_manager.h", "audio_manager/native_audio_volume_manager.h", - "audio_manager/native_audio_resource_manager.h" + "audio_manager/native_audio_resource_manager.h", "audio_renderer/native_audiorenderer.h", "common/native_audio_common.h", "common/native_audio_device_base.h", -- Gitee