diff --git a/zh-cn/application-dev/reference/apis-avcodec-kit/_a_v_source.md b/zh-cn/application-dev/reference/apis-avcodec-kit/_a_v_source.md index 97666e820c9d1480b40050c1d3af3009be800d4a..afabcb311768c8844cef5a4763ebb053f85813f2 100644 --- a/zh-cn/application-dev/reference/apis-avcodec-kit/_a_v_source.md +++ b/zh-cn/application-dev/reference/apis-avcodec-kit/_a_v_source.md @@ -32,6 +32,7 @@ AVSource模块提供用于构造媒体资源对象功能的函数。 | 名称 | 描述 | | -------- | -------- | | [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithDataSource](#oh_avsource_createwithdatasource) ([OH_AVDataSource](_o_h___a_v_data_source.md) \*dataSource) | 为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。 | +| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithDataSourceExt](#oh_avsource_createwithdatasourceext) ([OH_AVDataSourceExt](_o_h___a_v_data_source_ext.md) \*dataSource, void *userData) | 为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。回调支持通过userData传递用户自定义数据。 | | [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithURI](#oh_avsource_createwithuri) (char \*uri) | 为统一资源标识符对应的资源对象创建OH_AVSource实例。 | | [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithFD](#oh_avsource_createwithfd) (int32_t fd, int64_t offset, int64_t size) | 为文件描述符对应的资源对象创建OH_AVSource实例。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVSource_Destroy](#oh_avsource_destroy) ([OH_AVSource](#oh_avsource) \*source) | 销毁OH_AVSource实例并清理内部资源。 | @@ -88,6 +89,38 @@ OH_AVSource* OH_AVSource_CreateWithDataSource (OH_AVDataSource * dataSource) 6. dataSource->readAt == nullptr。 +### OH_AVSource_CreateWithDataSourceExt() + +``` +OH_AVSource* OH_AVSource_CreateWithDataSourceExt (OH_AVDataSource * dataSource, void *userData) +``` +**描述** +为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。回调支持通过userData传递用户自定义数据。 + +**系统能力:** SystemCapability.Multimedia.Media.Spliter + +**起始版本:** 20 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| dataSource | 指向数据源结构体的指针,该结构体可用于获取输入数据。 | +| userData | 指向用户自定义数据的指针。 | + +**返回:** + +如果执行成功,则返回一个指向OH_AVSource实例的指针,否则返回NULL。 + +可能的故障原因: +1. dataSource为nullptr; +2. dataSource->size == 0; +3. 设置数据源失败; +4. 内存不足; +5. 解码器引擎为nullptr; +6. dataSource->readAt == nullptr。 + + ### OH_AVSource_CreateWithFD() ``` diff --git a/zh-cn/application-dev/reference/apis-avcodec-kit/_codec_base.md b/zh-cn/application-dev/reference/apis-avcodec-kit/_codec_base.md index a6532faf4a0cb57b0775e8230b3aa0fc6b411a88..d203686c11e8d6f4fde3d2b89a55fba640886778 100644 --- a/zh-cn/application-dev/reference/apis-avcodec-kit/_codec_base.md +++ b/zh-cn/application-dev/reference/apis-avcodec-kit/_codec_base.md @@ -194,6 +194,7 @@ CodecBase模块提供用于音视频封装、解封装、编解码基础功能 | typedef struct [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) [OH_AVCodecAsyncCallback](#oh_avcodecasynccallback) | OH_AVCodec中所有异步回调函数指针的集合。(API11废弃)| | typedef struct [OH_AVCodecCallback](_o_h___a_v_codec_callback.md) [OH_AVCodecCallback](#oh_avcodeccallback) | OH_AVCodec中所有异步回调函数指针的集合。 | | typedef int32_t(\* [OH_AVDataSourceReadAt](#oh_avdatasourcereadat)) (OH_AVBuffer \*data, int32_t length, int64_t pos) | 函数指针定义,用于提供获取用户自定义媒体数据的能力。 | +| typedef int32_t(\* [OH_AVDataSourceReadAtExt](#oh_avdatasourcereadatext)) (OH_AVBuffer \*data, int32_t length, int64_t pos, void *userData) | 函数指针定义,用于提供获取用户自定义媒体数据的能力。回调支持通过userData传递用户自定义数据。 | | typedef struct [OH_AVDataSource](_o_h___a_v_data_source.md) [OH_AVDataSource](#oh_avdatasource) | 用户自定义数据源。 | | typedef enum [OH_MediaType](#oh_mediatype-1) [OH_MediaType](#oh_mediatype) | 媒体类型。 | | typedef enum [OH_AACProfile](#oh_aacprofile-1) [OH_AACProfile](#oh_aacprofile) | AAC档次。 | @@ -649,6 +650,45 @@ typedef int32_t(* OH_AVDataSourceReadAt) (OH_AVBuffer *data, int32_t length, int 读取到缓冲区的数据的实际长度。 +### OH_AVDataSourceExt + +``` +typedef struct OH_AVDataSourceExt OH_AVDataSourceExt +``` +**描述** +用户自定义数据源, 回调支持通过userData传递用户自定义数据。 + +**系统能力:** SystemCapability.Multimedia.Media.CodecBase + +**起始版本:** 20 + + +### OH_AVDataSourceReadAtExt + +``` +typedef int32_t(* OH_AVDataSourceReadAtExt) (OH_AVBuffer *data, int32_t length, int64_t pos, void *userData) +``` +**描述** +函数指针定义,用于提供获取用户自定义媒体数据的能力。回调支持通过userData传递用户自定义数据。 + +**系统能力:** SystemCapability.Multimedia.Media.CodecBase + +**起始版本:** 20 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| data | 要填充的缓冲区。 | +| length | 要读取的数据长度。 | +| pos | 从偏移量位置读取。 | +| userData | 用户自定义数据。 | + +**返回:** + +读取到缓冲区的数据的实际长度。 + + ### OH_AVOutputFormat ``` diff --git a/zh-cn/application-dev/reference/apis-avcodec-kit/_o_h___a_v_data_source_ext.md b/zh-cn/application-dev/reference/apis-avcodec-kit/_o_h___a_v_data_source_ext.md new file mode 100644 index 0000000000000000000000000000000000000000..1d5f1f436a6020ae0b1dc30fd19bcfb08c486e81 --- /dev/null +++ b/zh-cn/application-dev/reference/apis-avcodec-kit/_o_h___a_v_data_source_ext.md @@ -0,0 +1,58 @@ +# OH_AVDataSourceExt + + +## 概述 + +用户自定义数据源,回调支持通过userData传递用户自定义数据。 + +**系统能力:** SystemCapability.Multimedia.Media.CodecBase + +**起始版本:** 20 + +**相关模块:**[CodecBase](_codec_base.md) + +**所在头文件:**[native_avcodec_base.h](native__avcodec__base_8h.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| int64_t [size](#size) | 数据源的总大小。 | +| [OH_AVDataSourceReadAtExt](_codec_base.md#oh_avdatasourcereadatext) [readAt](#readat) | 数据源的数据回调。 | + + +## 结构体成员变量说明 + + +### readAt + +``` +OH_AVDataSourceReadAtExt OH_AVDataSourceExt::readAt +``` + +**描述** + +数据源的数据回调。 + +**系统能力:** SystemCapability.Multimedia.Media.CodecBase + +**起始版本:** 20 + + +### size + +``` +int64_t OH_AVDataSourceExt::size +``` + +**描述** + +数据源的总大小。 + +**系统能力:** SystemCapability.Multimedia.Media.CodecBase + +**起始版本:** 20 diff --git a/zh-cn/application-dev/reference/apis-avcodec-kit/native__avcodec__base_8h.md b/zh-cn/application-dev/reference/apis-avcodec-kit/native__avcodec__base_8h.md index 053d86a6500926a0176f3f154c1a400f48602ac8..1048053471c2b68487b6c186ff919d5e0cb2b1de 100644 --- a/zh-cn/application-dev/reference/apis-avcodec-kit/native__avcodec__base_8h.md +++ b/zh-cn/application-dev/reference/apis-avcodec-kit/native__avcodec__base_8h.md @@ -22,6 +22,7 @@ | struct [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) | OH_AVCodec中所有异步回调函数指针的集合。(API11废弃) | | struct [OH_AVCodecCallback](_o_h___a_v_codec_callback.md) | OH_AVCodec中所有异步回调函数指针的集合。 | | struct [OH_AVDataSource](_o_h___a_v_data_source.md) | 用户自定义数据源。 | +| struct [OH_AVDataSourceExt](_o_h___a_v_data_source_ext.md) | 用户自定义数据源, 回调支持通过userData传递用户自定义数据。 | ### 类型定义 @@ -37,7 +38,9 @@ | typedef struct [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) [OH_AVCodecAsyncCallback](_codec_base.md#oh_avcodecasynccallback) | OH_AVCodec中所有异步回调函数指针的集合。(API11废弃) | | typedef struct [OH_AVCodecCallback](_o_h___a_v_codec_callback.md) [OH_AVCodecCallback](_codec_base.md#oh_avcodeccallback) | OH_AVCodec中所有异步回调函数指针的集合。 | | typedef int32_t(\* [OH_AVDataSourceReadAt](_codec_base.md#oh_avdatasourcereadat)) (OH_AVBuffer \*data, int32_t length, int64_t offset) | 函数指针定义,用于提供获取用户自定义媒体数据的能力。 | +| typedef int32_t(\* [OH_AVDataSourceReadAtExt](_codec_base.md#oh_avdatasourcereadatext)) (OH_AVBuffer \*data, int32_t length, int64_t offset, void *userData) | 函数指针定义,支持传递userData,用于提供获取用户自定义媒体数据的能力。 | | typedef struct [OH_AVDataSource](_o_h___a_v_data_source.md) [OH_AVDataSource](_codec_base.md#oh_avdatasource) | 用户自定义数据源。 | +| typedef struct [OH_AVDataSourceExt](_o_h___a_v_data_source_ext.md) [OH_AVDataSourceExt](_codec_base.md#oh_avdatasourceext) | 用户自定义数据源,回调支持通过userData传递用户自定义数据。 | | typedef enum [OH_MediaType](_codec_base.md#oh_mediatype-1) [OH_MediaType](_codec_base.md#oh_mediatype) | 媒体类型。 | | typedef enum [OH_AACProfile](_codec_base.md#oh_aacprofile-1) [OH_AACProfile](_codec_base.md#oh_aacprofile) | AAC档次。 | | typedef enum [OH_AVCProfile](_codec_base.md#oh_avcprofile-1) [OH_AVCProfile](_codec_base.md#oh_avcprofile) | AVC档次。 |