diff --git a/multimedia/av_codec/avsource/libnative_media_avsource.ndk.json b/multimedia/av_codec/avsource/libnative_media_avsource.ndk.json index 090ca10305f7f738ade3cb450a55921534d97040..8758d51bb9ae3f34908335cd453f026520b4da14 100644 --- a/multimedia/av_codec/avsource/libnative_media_avsource.ndk.json +++ b/multimedia/av_codec/avsource/libnative_media_avsource.ndk.json @@ -1,4 +1,8 @@ [ + { + "first_introduced": "12", + "name": "OH_AVSource_CreateWithDataSource" + }, { "first_introduced": "10", "name": "OH_AVSource_CreateWithURI" diff --git a/multimedia/av_codec/native_avcodec_base.h b/multimedia/av_codec/native_avcodec_base.h index b26dc245406ae0c5f92e005a9b396e34784f57b8..fe41e2620f27cf729152afa41d8bd74dd821be76 100644 --- a/multimedia/av_codec/native_avcodec_base.h +++ b/multimedia/av_codec/native_avcodec_base.h @@ -150,6 +150,27 @@ typedef struct OH_AVCodecCallback { OH_AVCodecOnNewOutputBuffer onNewOutputBuffer; } OH_AVCodecCallback; +/** + * @brief the function pointer will be called to get sequence media data + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @param data OH_AVBuffer buffer to fill + * @param length expected to read size; + * @param pos current read offset + * @return Actual size of data read to the buffer. + * @since 12 + */ +typedef int32_t (*OH_AVDataSourceReadAt)(OH_AVBuffer *data, int32_t length, int64_t pos); + +/** + * @brief User customized data source. + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @since 12 + */ +typedef struct OH_AVDataSource { + int64_t size; + OH_AVDataSourceReadAt readAt; +} OH_AVDataSource; + /** * @brief Enumerates the MIME types of audio and video codecs * @syscap SystemCapability.Multimedia.Media.CodecBase diff --git a/multimedia/av_codec/native_avsource.h b/multimedia/av_codec/native_avsource.h index 5a9e71e0c9fe39f6861b8d5790326b884e703e3b..a211d69505c24d16544741600e1b25bb0bc90293 100644 --- a/multimedia/av_codec/native_avsource.h +++ b/multimedia/av_codec/native_avsource.h @@ -27,6 +27,15 @@ extern "C" { typedef struct OH_AVSource OH_AVSource; +/** + * @brief Creates an OH_AVSource instance that models the media with dataSource. + * @syscap SystemCapability.Multimedia.Media.Spliter + * @param dataSource An Struct for a remote media resource. + * @return Returns a pointer to an OH_AVSource instance + * @since 12 +*/ +OH_AVSource *OH_AVSource_CreateWithDataSource(OH_AVDataSource *dataSource); + /** * @brief Creates an OH_AVSource instance that models the media at the URI. * @syscap SystemCapability.Multimedia.Media.Spliter