diff --git a/doc/APIchanges b/doc/APIchanges index 9b9f46ef49..e7a0b14038 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2015-08-28 API changes, most recent first: +2017-02-11 - xxxxxxx - lavu 55.32.0 - frame.h + Add AVFrame.opaque_ref. + 2017-02-xx - xxxxxxx - lavu 55.31.1 - frame.h Allow passing the value of 0 (meaning "automatic") as the required alignment to av_frame_get_buffer(). diff --git a/libavutil/frame.c b/libavutil/frame.c index aa5820c0e9..9cd5f9ab37 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -317,6 +317,8 @@ void av_frame_unref(AVFrame *frame) av_buffer_unref(&frame->hw_frames_ctx); + av_buffer_unref(&frame->opaque_ref); + get_frame_defaults(frame); } @@ -440,6 +442,13 @@ FF_ENABLE_DEPRECATION_WARNINGS av_dict_copy(&sd_dst->metadata, sd_src->metadata, 0); } + av_buffer_unref(&dst->opaque_ref); + if (src->opaque_ref) { + dst->opaque_ref = av_buffer_ref(src->opaque_ref); + if (!dst->opaque_ref) + return AVERROR(ENOMEM); + } + return 0; } diff --git a/libavutil/frame.h b/libavutil/frame.h index 4f63fb0249..f9ffb5bbbf 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -395,6 +395,17 @@ typedef struct AVFrame { /** * @} */ + + /** + * AVBufferRef for free use by the API user. Libav will never check the + * contents of the buffer ref. Libav calls av_buffer_unref() on it when + * the frame is unreferenced. av_frame_copy_props() calls create a new + * reference with av_buffer_ref() for the target frame's opaque_ref field. + * + * This is unrelated to the opaque field, although it serves a similar + * purpose. + */ + AVBufferRef *opaque_ref; } AVFrame; /** diff --git a/libavutil/version.h b/libavutil/version.h index 0768f9fe99..5dbc57cc1b 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -54,8 +54,8 @@ */ #define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 31 -#define LIBAVUTIL_VERSION_MICRO 1 +#define LIBAVUTIL_VERSION_MINOR 32 +#define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ LIBAVUTIL_VERSION_MINOR, \