1e41f4b71Sopenharmony_ci# AVSource 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ci## Overview 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ciThe AVSource module provides the functions for constructing media resource objects. 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci**Since**: 10 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci## Summary 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci### File 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci| Name| Description| 19e41f4b71Sopenharmony_ci| -------- | -------- | 20e41f4b71Sopenharmony_ci| [native_avsource.h](native__avsource_8h.md) | Declares the APIs for parsing audio and video media data. | 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci### Types 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci| Name| Description| 26e41f4b71Sopenharmony_ci| -------- | -------- | 27e41f4b71Sopenharmony_ci| typedef struct [OH_AVSource](#oh_avsource) [OH_AVSource](#oh_avsource) | Defines a struct that describes a native object for the media resource interface. | 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci### Functions 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci| Name| Description| 33e41f4b71Sopenharmony_ci| -------- | -------- | 34e41f4b71Sopenharmony_ci| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithDataSource](#oh_avsource_createwithdatasource) ([OH_AVDataSource](_o_h___a_v_data_source.md) \*dataSource) | Creates an **OH_AVSource** instance with a user-defined data source. You can release the instance by calling **OH_AVSource_Destroy**. | 35e41f4b71Sopenharmony_ci| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithURI](#oh_avsource_createwithuri) (char \*uri) | Creates an **OH_AVSource** instance based on a URI. | 36e41f4b71Sopenharmony_ci| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithFD](#oh_avsource_createwithfd) (int32_t fd, int64_t offset, int64_t size) | Creates an **OH_AVSource** instance based on a file descriptor (FD). | 37e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVSource_Destroy](#oh_avsource_destroy) ([OH_AVSource](#oh_avsource) \*source) | Destroys an **OH_AVSource** instance and clears internal resources. | 38e41f4b71Sopenharmony_ci| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AVSource_GetSourceFormat](#oh_avsource_getsourceformat) ([OH_AVSource](#oh_avsource) \*source) | Obtains the basic information about a media resource. | 39e41f4b71Sopenharmony_ci| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AVSource_GetTrackFormat](#oh_avsource_gettrackformat) ([OH_AVSource](#oh_avsource) \*source, uint32_t trackIndex) | Obtains the basic information about a track. | 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci## Type Description 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci### OH_AVSource 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci``` 48e41f4b71Sopenharmony_citypedef struct OH_AVSource OH_AVSource 49e41f4b71Sopenharmony_ci``` 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci**Description** 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ciDefines a struct that describes a native object for the media resource interface. 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci**Since**: 10 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ci## Function Description 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci### OH_AVSource_CreateWithDataSource() 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci``` 64e41f4b71Sopenharmony_ciOH_AVSource* OH_AVSource_CreateWithDataSource (OH_AVDataSource * dataSource) 65e41f4b71Sopenharmony_ci``` 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci**Description** 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ciCreates an **OH_AVSource** instance with a user-defined data source. You can release the instance by calling **OH_AVSource_Destroy**. 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci**Since**: 12 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci**Parameters** 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci| Name| Description| 78e41f4b71Sopenharmony_ci| -------- | -------- | 79e41f4b71Sopenharmony_ci| dataSource | User-defined data source. | 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci**Returns** 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ciReturns the pointer to the **OH_AVSource** instance created if the operation is successful; returns NULL otherwise. 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ciThe possible causes of an operation failure are as follows: 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci1. The value of **dataSource** is a null pointer. 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci2. The size of the data source is 0. 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci3. Setting the data source fails. 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci4. The memory is insufficient. 94e41f4b71Sopenharmony_ci 95e41f4b71Sopenharmony_ci5. The decoder engine is a null pointer. 96e41f4b71Sopenharmony_ci 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci### OH_AVSource_CreateWithFD() 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci``` 101e41f4b71Sopenharmony_ciOH_AVSource* OH_AVSource_CreateWithFD (int32_t fd, int64_t offset, int64_t size) 102e41f4b71Sopenharmony_ci``` 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci**Description** 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ciCreates an **OH_AVSource** instance based on an FD. 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ciYou can release the instance by calling **OH_AVSource_Destroy**. 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ciIf **offset** is not the start position of the file or **size** is not the file size, undefined errors such as creation failure and demuxing failure may occur due to incomplete data obtained. 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci**Since**: 10 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci**Parameters** 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci| Name| Description| 119e41f4b71Sopenharmony_ci| -------- | -------- | 120e41f4b71Sopenharmony_ci| fd | FD of a media resource file. | 121e41f4b71Sopenharmony_ci| offset | Position from which data is to read. | 122e41f4b71Sopenharmony_ci| size | File size, in bytes. | 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci**Returns** 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ciReturns the pointer to the **OH_AVSource** instance created if the operation is successful; returns NULL otherwise. 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ciThe possible causes of an operation failure are as follows: 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci1. The FD is invalid. 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci2. The offset is not the start position of the file. 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci3. The size is incorrect. 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci4. The resource is invalid. 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci5. The file format is not supported. 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ci### OH_AVSource_CreateWithURI() 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci``` 144e41f4b71Sopenharmony_ciOH_AVSource* OH_AVSource_CreateWithURI (char *uri) 145e41f4b71Sopenharmony_ci``` 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci**Description** 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ciCreate an **OH_AVSource** instance based on a URI. You can release the instance by calling **OH_AVSource_Destroy**. 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci**Since**: 10 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci**Parameters** 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ci| Name| Description| 158e41f4b71Sopenharmony_ci| -------- | -------- | 159e41f4b71Sopenharmony_ci| uri | URI of the media resource. | 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci**Returns** 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ciReturns the pointer to the **OH_AVSource** instance created if the operation is successful; returns NULL otherwise. 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ciThe possible causes of an operation failure are as follows: 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci1. The network is abnormal. 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci2. The resource is invalid. 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci3. The file format is not supported. 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci### OH_AVSource_Destroy() 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci``` 177e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVSource_Destroy (OH_AVSource *source) 178e41f4b71Sopenharmony_ci``` 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci**Description** 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ciDestroys an **OH_AVSource** instance and clears internal resources. 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ciAn instance can be destroyed only once. The destroyed instance cannot be used until it is re-created. You are advised to set the pointer to **NULL** after the instance is destroyed. 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci**Since**: 10 189e41f4b71Sopenharmony_ci 190e41f4b71Sopenharmony_ci**Parameters** 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci| Name| Description| 193e41f4b71Sopenharmony_ci| -------- | -------- | 194e41f4b71Sopenharmony_ci| source | Pointer to an **OH_AVSource** instance. | 195e41f4b71Sopenharmony_ci 196e41f4b71Sopenharmony_ci**Returns** 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ciReturns either of the following result codes: 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful. 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**: The operation fails. 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci 1. The source pointer is invalid. 205e41f4b71Sopenharmony_ci 2. The pointer is null or does not point to an **OH_AVSource** instance. 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci### OH_AVSource_GetSourceFormat() 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci``` 211e41f4b71Sopenharmony_ciOH_AVFormat* OH_AVSource_GetSourceFormat (OH_AVSource *source) 212e41f4b71Sopenharmony_ci``` 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci**Description** 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ciObtains the basic information about a media resource. 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci**Since**: 10 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci**Parameters** 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci| Name| Description| 225e41f4b71Sopenharmony_ci| -------- | -------- | 226e41f4b71Sopenharmony_ci| source | Pointer to an **OH_AVSource** instance. | 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci**Returns** 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ciReturns the pointer to the **OH_AVSource** instance created if the operation is successful; returns NULL otherwise. 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ciThe possible causes of an operation failure are as follows: 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci1. The source pointer is invalid. 235e41f4b71Sopenharmony_ci2. The pointer is null or does not point to an **OH_AVSource** instance. 236e41f4b71Sopenharmony_ci3. The source is not initialized. 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci### OH_AVSource_GetTrackFormat() 240e41f4b71Sopenharmony_ci 241e41f4b71Sopenharmony_ci``` 242e41f4b71Sopenharmony_ciOH_AVFormat* OH_AVSource_GetTrackFormat (OH_AVSource *source, uint32_t trackIndex) 243e41f4b71Sopenharmony_ci``` 244e41f4b71Sopenharmony_ci 245e41f4b71Sopenharmony_ci**Description** 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ciObtains the basic information about a track. 248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci**Since**: 10 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci**Parameters** 254e41f4b71Sopenharmony_ci 255e41f4b71Sopenharmony_ci| Name| Description| 256e41f4b71Sopenharmony_ci| -------- | -------- | 257e41f4b71Sopenharmony_ci| source | Pointer to an **OH_AVSource** instance. | 258e41f4b71Sopenharmony_ci| trackIndex | Index of the track whose information is to be obtained. | 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci**Returns** 261e41f4b71Sopenharmony_ci 262e41f4b71Sopenharmony_ciReturns the basic information about the track if the operation is successful; returns NULL otherwise. 263e41f4b71Sopenharmony_ci 264e41f4b71Sopenharmony_ciThe possible causes of an operation failure are as follows: 265e41f4b71Sopenharmony_ci 266e41f4b71Sopenharmony_ci1. The value of **source** is invalid (either a null pointer or a pointer to a non-OH_AVSource instance). 267e41f4b71Sopenharmony_ci2. The track index is out of range. 268e41f4b71Sopenharmony_ci3. The source is not initialized. 269