From 1dd89a9840f9861c456e753eaafcdf0bd7e75f8b Mon Sep 17 00:00:00 2001 From: x00911906 Date: Wed, 25 Jun 2025 14:41:25 +0800 Subject: [PATCH 1/2] OH_AVDataSourceExt Signed-off-by: x00911906 --- .../multimedia/av_codec/native_avcodec_base.h | 30 +++++++++++++++++++ .../multimedia/av_codec/native_avsource.h | 17 +++++++++++ 2 files changed, 47 insertions(+) diff --git a/zh-cn/native_sdk/multimedia/av_codec/native_avcodec_base.h b/zh-cn/native_sdk/multimedia/av_codec/native_avcodec_base.h index 9a705a9c..6bdd2d24 100644 --- a/zh-cn/native_sdk/multimedia/av_codec/native_avcodec_base.h +++ b/zh-cn/native_sdk/multimedia/av_codec/native_avcodec_base.h @@ -199,6 +199,36 @@ typedef struct OH_AVDataSource { OH_AVDataSourceReadAt readAt; } OH_AVDataSource; +/** + * @brief 函数指针定义,用于提供获取用户自定义媒体数据的能力。 + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @param data 要填充的缓冲区。 + * @param length 要读取的数据长度。 + * @param pos 从偏移量位置读取。 + * @param userData 用户自定义数据。 + * @return 读取到缓冲区的数据的实际长度。 + * @since 20 +*/ +typedef int32_t (*OH_AVDataSourceReadAtExt)(OH_AVBuffer *data, int32_t length, int64_t pos, void *userData); + +/** + * @brief 用户自定义数据源。 + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @since 20 +*/ +typedef struct OH_AVDataSourceExt { + /** + * @brief 数据源的总大小。 + * @since 20 + */ + int64_t size; + /** + * @brief 数据源的数据回调。 + * @since 20 + */ + OH_AVDataSourceReadAtExt readAt; +} OH_AVDataSourceExt; + /** * @brief 枚举音频和视频编解码器的MIME类型。 * @syscap SystemCapability.Multimedia.Media.CodecBase diff --git a/zh-cn/native_sdk/multimedia/av_codec/native_avsource.h b/zh-cn/native_sdk/multimedia/av_codec/native_avsource.h index 37e33b12..dae73ba9 100644 --- a/zh-cn/native_sdk/multimedia/av_codec/native_avsource.h +++ b/zh-cn/native_sdk/multimedia/av_codec/native_avsource.h @@ -68,6 +68,23 @@ typedef struct OH_AVSource OH_AVSource; */ OH_AVSource *OH_AVSource_CreateWithDataSource(OH_AVDataSource *dataSource); +/** + * @brief 为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。回调支持传递用户自定义数据。 + * @syscap SystemCapability.Multimedia.Media.Spliter + * @param dataSource 指向数据源结构的指针,该结构可用于获取输入数据。 + * @param userData 指向用户定义数据的指针。 + * @return 如果执行成功,则返回一个指向OH_AVSource实例的指针,否则返回NULL。\n + * 可能的故障原因: + * 1. dataSource为nullptr。 + * 2. dataSource->size == 0。 + * 3. 设置数据源失败。 + * 4. 内存不足。 + * 5. 解码器引擎为nullptr。 + * 6. dataSource->readAt == nullptr。 + * @since 20 +*/ +OH_AVSource *OH_AVSource_CreateWithDataSourceExt(OH_AVDataSourceExt *dataSource, void *userData); + /** * @brief 为统一资源标识符对应的的资源对象创建OH_AVSource实例。,可以通过调用OH_AVSource_Destroy接口释放实例。 * @syscap SystemCapability.Multimedia.Media.Spliter -- Gitee From c7989a5873ac515dea2ae8d7362a1d45839314c2 Mon Sep 17 00:00:00 2001 From: xulei123 Date: Wed, 25 Jun 2025 08:27:06 +0000 Subject: [PATCH 2/2] update zh-cn/native_sdk/multimedia/av_codec/native_avsource.h. Signed-off-by: xulei123 --- zh-cn/native_sdk/multimedia/av_codec/native_avsource.h | 1 - 1 file changed, 1 deletion(-) diff --git a/zh-cn/native_sdk/multimedia/av_codec/native_avsource.h b/zh-cn/native_sdk/multimedia/av_codec/native_avsource.h index dae73ba9..64dc8530 100644 --- a/zh-cn/native_sdk/multimedia/av_codec/native_avsource.h +++ b/zh-cn/native_sdk/multimedia/av_codec/native_avsource.h @@ -80,7 +80,6 @@ OH_AVSource *OH_AVSource_CreateWithDataSource(OH_AVDataSource *dataSource); * 3. 设置数据源失败。 * 4. 内存不足。 * 5. 解码器引擎为nullptr。 - * 6. dataSource->readAt == nullptr。 * @since 20 */ OH_AVSource *OH_AVSource_CreateWithDataSourceExt(OH_AVDataSourceExt *dataSource, void *userData); -- Gitee