# AVSource
## Overview
The AVSource module provides functions for constructing audio and video resource objects.
\@syscap SystemCapability.Multimedia.Media.Spliter
**Since**
10
## Summary
### File
| Name| Description|
| -------- | -------- |
| [native_avsource.h](native__avsource_8h.md) | Declares the native APIs used to construct audio and video resource objects.
**File to include**:
**Library**: libnative_media_avsource.so|
### Functions
| Name| Description|
| -------- | -------- |
| \*[OH_AVSource_CreateWithURI](#oh_avsource_createwithuri) (char \*uri) | Creates an **OH_AVSource** instance based on a URI.|
| \*[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).|
| [OH_AVSource_Destroy](#oh_avsource_destroy) (OH_AVSource \*source) | Destroys an **OH_AVSource** instance and clears internal resources. An instance can be destroyed only once.|
| \*[OH_AVSource_GetSourceFormat](#oh_avsource_getsourceformat) (OH_AVSource \*source) | Obtains the basic information about a media resource.|
| \*[OH_AVSource_GetTrackFormat](#oh_avsource_gettrackformat) (OH_AVSource \*source, uint32_t trackIndex) | Obtains the basic information about a track.|
## Function Description
### OH_AVSource_CreateWithFD()
```
OH_AVSource* OH_AVSource_CreateWithFD (int32_t fd, int64_t offset, int64_t size)
```
**Description**
Creates an **OH_AVSource** instance based on an FD.
You can release the instance by calling **OH_AVSource_Destroy**.
If **offset** is not the start position of the file or **size** is not the file size, undefined errors such as creation failure and decapsulation failure may occur due to incomplete data obtained.
\@syscap SystemCapability.Multimedia.Media.Spliter
**Parameters**
| Name| Description|
| -------- | -------- |
| fd | FD of a media resource file.|
| offset | Position from which data is to read.|
| size | File size, in bytes.|
**Returns**
Returns the pointer to an **OH_AVSource** instance.
**Since**
10
### OH_AVSource_CreateWithURI()
```
OH_AVSource* OH_AVSource_CreateWithURI (char *uri)
```
**Description**
Create an **OH_AVSource** instance object based on a URI. You can release the instance by calling **OH_AVSource_Destroy**.
\@syscap SystemCapability.Multimedia.Media.Spliter
**Parameters**
| Name| Description|
| -------- | -------- |
| uri | URI of the media resource.|
**Returns**
Returns the pointer to an **OH_AVSource** instance.
**Since**
10
### OH_AVSource_Destroy()
```
OH_AVErrCode OH_AVSource_Destroy (OH_AVSource *source)
```
**Description**
Destroys an **OH_AVSource** instance and clears internal resources.
An 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.
\@syscap SystemCapability.Multimedia.Media.Spliter
**Parameters**
| Name| Description|
| -------- | -------- |
| source | Pointer to an **OH_AVSource** instance.|
**Returns**
Returns **AV_ERR_OK** if the operation is successful; returns an error code defined in [OH_AVErrCode](_core.md#oh_averrcode) otherwise.
**Since**
10
### OH_AVSource_GetSourceFormat()
```
OH_AVFormat* OH_AVSource_GetSourceFormat (OH_AVSource *source)
```
**Description**
Obtains the basic information about a media resource.
\@syscap SystemCapability.Multimedia.Media.Spliter
**Parameters**
| Name| Description|
| -------- | -------- |
| source | Pointer to an **OH_AVSource** instance.|
**Returns**
Returns the basic information obtained.
**Since**
10
### OH_AVSource_GetTrackFormat()
```
OH_AVFormat* OH_AVSource_GetTrackFormat (OH_AVSource *source, uint32_t trackIndex)
```
**Description**
Obtains the basic information about a track.
\@syscap SystemCapability.Multimedia.Media.Spliter
**Parameters**
| Name| Description|
| -------- | -------- |
| source | Pointer to an **OH_AVSource** instance.|
| trackIndex | Index of the track whose information is to be obtained.|
**Returns**
Returns the basic information obtained.
**Since**
10