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