diff --git a/multimedia/av_codec/native_avcodec_base.h b/multimedia/av_codec/native_avcodec_base.h index b26dc245406ae0c5f92e005a9b396e34784f57b8..d084e00ba6425f711daa846d18bba597acaf97ec 100644 --- a/multimedia/av_codec/native_avcodec_base.h +++ b/multimedia/av_codec/native_avcodec_base.h @@ -150,6 +150,37 @@ typedef struct OH_AVCodecCallback { OH_AVCodecOnNewOutputBuffer onNewOutputBuffer; } OH_AVCodecCallback; +/** + * @brief The function pointer will be called to get sequenced media data. + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @param data The buffer to fill. + * @param length Length of data to read. + * @param offset Start offset to read. + * @return Actual length of data read to the buffer. + * @since 12 +*/ +typedef int32_t (*OH_AVDataSourceReadAt)(OH_AVBuffer *data, int32_t length, int64_t offset); + +/** + * @brief User customized data source. + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @since 12 +*/ +typedef struct OH_AVDataSource { + /** + * @brief Total size of the data source. + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @since 12 + */ + int64_t size; + /** + * @brief Data callback of the data source. + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @since 12 + */ + 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..a8dca0837f1305b45bb72dbbbea1387c3adc056f 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 data source. + * @syscap SystemCapability.Multimedia.Media.Spliter + * @param dataSource User customized 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 diff --git a/multimedia/player_framework/avplayer.h b/multimedia/player_framework/avplayer.h index e8db017f06a7689d127e9966c8a6faa63271472b..f6da162bd0907756d7b39a760c66771d82431867 100644 --- a/multimedia/player_framework/avplayer.h +++ b/multimedia/player_framework/avplayer.h @@ -97,6 +97,21 @@ OH_AVErrCode OH_AVPlayer_SetFDSource(OH_AVPlayer *player, int32_t fd, int64_t of */ OH_AVErrCode OH_AVPlayer_Prepare(OH_AVPlayer *player); +/** + * @brief Prepares the playback environment and buffers media data asynchronous, at specific timestamp. + * + * This function must be called after {@link SetSource}. + * + * @syscap SystemCapability.Multimedia.Media.AVPlayer + * @param player Pointer to an OH_AVPlayer instance. + * @param mSeconds Timestamp to be prepared at. + * @return Returns {@link AV_ERR_OK} if {@link Prepare} is successfully added to the task queue; + * returns an error code defined in {@link native_averrors.h} otherwise. + * @since 12 + * @version 1.0 + */ +OH_AVErrCode OH_AVPlayer_PrepareAt(OH_AVPlayer *player, int32_t mSeconds); + /** * @brief Start playback. * diff --git a/multimedia/player_framework/avplayer_base.h b/multimedia/player_framework/avplayer_base.h index 1283b920441672bd4c75b2b2fe31de60c63b2668..99490ae9c82016c05749b414681d44f1042a3976 100644 --- a/multimedia/player_framework/avplayer_base.h +++ b/multimedia/player_framework/avplayer_base.h @@ -83,6 +83,12 @@ typedef enum AVPlayerSeekMode { AV_SEEK_NEXT_SYNC = 0, /* sync to keyframes before the time point. */ AV_SEEK_PREVIOUS_SYNC, + /** + * @brief Sync to frames closest to the time point. + * @syscap SystemCapability.Multimedia.Media.AVPlayer + * @since 12 + */ + AV_SEEK_CLOSEST = 2, } AVPlayerSeekMode; /** @@ -102,6 +108,24 @@ typedef enum AVPlaybackSpeed { AV_SPEED_FORWARD_1_75_X, /* Video playback at 2.0x normal speed */ AV_SPEED_FORWARD_2_00_X, + /** + * @brief Video playback at 0.5x normal speed. + * @syscap SystemCapability.Multimedia.Media.AVPlayer + * @since 12 + */ + AV_SPEED_FORWARD_0_50_X, + /** + * @brief Video playback at 1.5x normal speed. + * @syscap SystemCapability.Multimedia.Media.AVPlayer + * @since 12 + */ + AV_SPEED_FORWARD_1_50_X, + /** + * @brief Video playback at 3.0x normal speed. + * @syscap SystemCapability.Multimedia.Media.AVPlayer + * @since 12 + */ + AV_SPEED_FORWARD_3_00_X, } AVPlaybackSpeed; /**