From: Erkki Seppälä <erkki.seppala....@nokia.com> Also added avdata_alloc and avdata_free for dealing with it. AVData can contain arbitrary binary data and comes with a format-field so far unused.
The purpose is that AVMEDIA_TYPE_DATA -kind codecs can store frames in this format. Signed-off-by: Erkki Seppälä <erkki.seppala....@nokia.com> Signed-off-by: OZOPlayer <oz...@nokia.com> --- libavcodec/avcodec.h | 20 ++++++++++++++++++++ libavcodec/utils.c | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 6ac6646..fb8f363 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3934,6 +3934,14 @@ typedef struct AVSubtitle { int64_t pts; ///< Same as packet pts, in AV_TIME_BASE } AVSubtitle; +typedef struct AVData { + uint16_t format; /** 0 = timed metadata */ + int64_t pts; + int64_t dts; + + AVBufferRef *data; +} AVData; + /** * This struct describes the properties of an encoded stream. * @@ -4317,6 +4325,18 @@ int avcodec_close(AVCodecContext *avctx); void avsubtitle_free(AVSubtitle *sub); /** + * Allocate an empty data (typically use with timed metadata) + */ +AVData *avdata_alloc(void); + +/** + * Free all allocated data in the given data struct. + * + * @param sub AVData to free. + */ +void avdata_free(AVData *sub); + +/** * @} */ diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 138125a..dabe97e 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -2955,6 +2955,25 @@ int attribute_align_arg avcodec_receive_packet(AVCodecContext *avctx, AVPacket * return 0; } +AVData *avdata_alloc(void) +{ + AVData *data = av_mallocz(sizeof(*data)); + + if (!data) + return NULL; + + return data; +} + +void avdata_free(AVData *data) +{ + av_buffer_unref(&data->data); + + memset(data, 0, sizeof(AVData)); + + av_free(data); +} + av_cold int avcodec_close(AVCodecContext *avctx) { int i; -- 2.7.4 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel