1# native_audio_resource_manager.h 2 3## Overview 4 5The file declares the functions related to an audio resource manager. 6 7**File to include**: <ohaudio/native_audio_resource_manager.h> 8 9**Library**: libohaudio.so 10 11**System capability**: SystemCapability.Multimedia.Audio.Core 12 13**Since**: 20 14 15**Related module**: [OHAudio](capi-ohaudio.md) 16 17## Summary 18 19### Structs 20 21| Name| typedef Keyword| Description| 22| -- | -- | -- | 23| [OH_AudioResourceManager](capi-ohaudio-oh-audioresourcemanager.md) | OH_AudioResourceManager | Describes an audio resource manager, which is used to manage audio resources.| 24| [OH_AudioWorkgroup](capi-ohaudio-oh-audioworkgroup.md) | OH_AudioWorkgroup | Describes an audio group, which is used to group and manage key audio threads.| 25 26### Functions 27 28| Name| Description| 29| -- | -- | 30| [OH_AudioCommon_Result OH_AudioManager_GetAudioResourceManager(OH_AudioResourceManager **resourceManager)](#oh_audiomanager_getaudioresourcemanager) | Obtains an audio resource manager.<br>Before using the features related to the audio resource manager, you must obtain an audio resource manager instance.| 31| [OH_AudioCommon_Result OH_AudioResourceManager_CreateWorkgroup(OH_AudioResourceManager *resourceManager,const char *name, OH_AudioWorkgroup **group)](#oh_audioresourcemanager_createworkgroup) | Creates an audio workgroup.| 32| [OH_AudioCommon_Result OH_AudioResourceManager_ReleaseWorkgroup(OH_AudioResourceManager *resourceManager,OH_AudioWorkgroup *group)](#oh_audioresourcemanager_releaseworkgroup) | Releases an audio workgroup.| 33| [OH_AudioCommon_Result OH_AudioWorkgroup_AddCurrentThread(OH_AudioWorkgroup *group, int32_t *tokenId)](#oh_audioworkgroup_addcurrentthread) | Adds a thread to an audio workgroup.| 34| [OH_AudioCommon_Result OH_AudioWorkgroup_RemoveThread(OH_AudioWorkgroup *group, int32_t tokenId)](#oh_audioworkgroup_removethread) | Removes a thread from an audio workgroup.| 35| [OH_AudioCommon_Result OH_AudioWorkgroup_Start(OH_AudioWorkgroup *group, uint64_t startTime, uint64_t deadlineTime)](#oh_audioworkgroup_start) | Notifies the system that an audio workgroup starts working and provides the expected end time of the workgroup.| 36| [OH_AudioCommon_Result OH_AudioWorkgroup_Stop(OH_AudioWorkgroup *group)](#oh_audioworkgroup_stop) | Notifies the system that an audio workgroup finishes working.| 37 38## Function Description 39 40### OH_AudioManager_GetAudioResourceManager() 41 42``` 43OH_AudioCommon_Result OH_AudioManager_GetAudioResourceManager(OH_AudioResourceManager **resourceManager) 44``` 45 46**Description** 47 48Obtains an audio resource manager. 49 50Before using the features related to the audio resource manager, you must obtain an audio resource manager instance. 51 52**Since**: 20 53 54 55**Parameters** 56 57| Name| Description| 58| -- | -- | 59| [OH_AudioResourceManager](capi-ohaudio-oh-audioresourcemanager.md) **resourceManager | Double pointer to an OH_AudioResourceManager instance, which is used to receive the created audio resource manager instance.| 60 61**Returns** 62 63| Type| Description| 64| -- | -- | 65| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**: The **resourceManager** parameter is nullptr.| 66 67### OH_AudioResourceManager_CreateWorkgroup() 68 69``` 70OH_AudioCommon_Result OH_AudioResourceManager_CreateWorkgroup(OH_AudioResourceManager *resourceManager,const char *name, OH_AudioWorkgroup **group) 71``` 72 73**Description** 74 75Creates an audio workgroup. 76 77**Since**: 20 78 79 80**Parameters** 81 82| Name| Description| 83| -- | -- | 84| [OH_AudioResourceManager](capi-ohaudio-oh-audioresourcemanager.md) *resourceManager | Pointer to an OH_AudioResourceManager instance, which is created by calling [OH_AudioManager_GetAudioResourceManager](capi-native-audio-resource-manager-h.md#oh_audiomanager_getaudioresourcemanager).| 85| const char *name | Pointer to the name of the audio workgroup.| 86| [OH_AudioWorkgroup](capi-ohaudio-oh-audioworkgroup.md) **group | Double pointer to an OH_AudioWorkgroup instance, which is used to receive the created audio workgroup instance.| 87 88**Returns** 89 90| Type| Description| 91| -- | -- | 92| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**:<br>1. The **resourceManager** parameter is nullptr.<br>2. The **name** parameter is nullptr.<br>3. The **group** parameter is nullptr.<br>**AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE**: The workgroup fails to be created, and the returned workgroup is nullptr. | 93 94### OH_AudioResourceManager_ReleaseWorkgroup() 95 96``` 97OH_AudioCommon_Result OH_AudioResourceManager_ReleaseWorkgroup(OH_AudioResourceManager *resourceManager,OH_AudioWorkgroup *group) 98``` 99 100**Description** 101 102Releases an audio workgroup. 103 104**Since**: 20 105 106 107**Parameters** 108 109| Name| Description| 110| -- | -- | 111| [OH_AudioResourceManager](capi-ohaudio-oh-audioresourcemanager.md) *resourceManager | Pointer to an OH_AudioResourceManager instance, which is created by calling [OH_AudioManager_GetAudioResourceManager](capi-native-audio-resource-manager-h.md#oh_audiomanager_getaudioresourcemanager).| 112| [OH_AudioWorkgroup](capi-ohaudio-oh-audioworkgroup.md) *group | Pointer to an OH_AudioWorkgroup instance, which is created by calling [OH_AudioResourceManager_CreateWorkgroup](capi-native-audio-resource-manager-h.md#oh_audioresourcemanager_createworkgroup).| 113 114**Returns** 115 116| Type| Description| 117| -- | -- | 118| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**:<br>1. The **resourceManager** parameter is nullptr.<br>2. The **group** parameter is nullptr.<br>**AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE**: The workgroup fails to be released. | 119 120### OH_AudioWorkgroup_AddCurrentThread() 121 122``` 123OH_AudioCommon_Result OH_AudioWorkgroup_AddCurrentThread(OH_AudioWorkgroup *group, int32_t *tokenId) 124``` 125 126**Description** 127 128Adds a thread to an audio workgroup. 129 130**Since**: 20 131 132 133**Parameters** 134 135| Name| Description| 136| -- | -- | 137| [OH_AudioWorkgroup](capi-ohaudio-oh-audioworkgroup.md) *group | Pointer to an OH_AudioWorkgroup instance, which is created by calling [OH_AudioResourceManager_CreateWorkgroup](capi-native-audio-resource-manager-h.md#oh_audioresourcemanager_createworkgroup).| 138| int32_t *tokenId | Pointer to the ID of the thread to be added to the audio workgroup.| 139 140**Returns** 141 142| Type| Description| 143| -- | -- | 144| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**: The **group** parameter is nullptr.<br>**AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE**: The thread fails to be added to the workgroup.| 145 146### OH_AudioWorkgroup_RemoveThread() 147 148``` 149OH_AudioCommon_Result OH_AudioWorkgroup_RemoveThread(OH_AudioWorkgroup *group, int32_t tokenId) 150``` 151 152**Description** 153 154Removes a thread from an audio workgroup. 155 156**Since**: 20 157 158 159**Parameters** 160 161| Name| Description| 162| -- | -- | 163| [OH_AudioWorkgroup](capi-ohaudio-oh-audioworkgroup.md) *group | Pointer to an OH_AudioWorkgroup instance, which is created by calling [OH_AudioResourceManager_CreateWorkgroup](capi-native-audio-resource-manager-h.md#oh_audioresourcemanager_createworkgroup).| 164| int32_t tokenId | ID of the thread to be removed from the audio workgroup.| 165 166**Returns** 167 168| Type| Description| 169| -- | -- | 170| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**: The **group** parameter is nullptr.<br>**AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE**: The thread fails to be removed from the workgroup.| 171 172### OH_AudioWorkgroup_Start() 173 174``` 175OH_AudioCommon_Result OH_AudioWorkgroup_Start(OH_AudioWorkgroup *group, uint64_t startTime, uint64_t deadlineTime) 176``` 177 178**Description** 179 180Notifies the system that an audio workgroup starts working and provides the expected end time of the workgroup. 181 182**Since**: 20 183 184 185**Parameters** 186 187| Name| Description| 188| -- | -- | 189| [OH_AudioWorkgroup](capi-ohaudio-oh-audioworkgroup.md) *group | Pointer to an OH_AudioWorkgroup instance, which is created by calling [OH_AudioResourceManager_CreateWorkgroup](capi-native-audio-resource-manager-h.md#oh_audioresourcemanager_createworkgroup).| 190| uint64_t startTime | Time when the audio workgroup starts working.| 191| uint64_t deadlineTime | Expected end time of the audio workgroup.| 192 193**Returns** 194 195| Type| Description| 196| -- | -- | 197| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**: The **group** parameter is nullptr.<br>**AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE**: The workgroup fails to notify the system of the start.| 198 199### OH_AudioWorkgroup_Stop() 200 201``` 202OH_AudioCommon_Result OH_AudioWorkgroup_Stop(OH_AudioWorkgroup *group) 203``` 204 205**Description** 206 207Notifies the system that an audio workgroup finishes working. 208 209**Since**: 20 210 211 212**Parameters** 213 214| Name| Description| 215| -- | -- | 216| [OH_AudioWorkgroup](capi-ohaudio-oh-audioworkgroup.md) *group | Pointer to an OH_AudioWorkgroup instance, which is created by calling [OH_AudioResourceManager_CreateWorkgroup](capi-native-audio-resource-manager-h.md#oh_audioresourcemanager_createworkgroup).| 217 218**Returns** 219 220| Type| Description| 221| -- | -- | 222| [OH_AudioCommon_Result](capi-native-audio-common-h.md#oh_audiocommon_result) | **AUDIOCOMMON_RESULT_SUCCESS**: The function is executed successfully.<br>**AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM**: The **group** parameter is nullptr.<br>**AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE**: The workgroup fails to notify the system of the end.| 223