On Thu, Mar 01, 2018 at 04:58:22PM +0100, wm4 wrote:
> This adds a way for an API user to transfer QP data and metadata without
> having to keep the reference to AVFrame, and without having to
> explicitly care about QP APIs. It might also provide a way to finally
> remove the deprecated QP related fields. In the end, the QP table should
> be handled in a very similar way to e.g. AV_FRAME_DATA_MOTION_VECTORS.
>
> There are two side data types, because I didn't care about having to
> repack the QP data so the table and the metadata are in a single
> AVBufferRef. Otherwise it would have either required a copy on decoding
> (extra slowdown for something as obscure as the QP data), or would have
> required making intrusive changes to the codecs which support export of
> this data.
>
> The new side data types are added under deprecation guards, because I
> don't intend to change the status of the QP export as being deprecated
> (as it was before this patch too).
> ---
> libavutil/frame.c | 55
> +++++++++++++++++++++++++++++++++-----
> libavutil/frame.h | 17 ++++++++++++
> tests/ref/fate/exif-image-embedded | 6 +++++
> tests/ref/fate/exif-image-jpg | 34 +++++++++++++----------
> 4 files changed, 92 insertions(+), 20 deletions(-)
>
> diff --git a/libavutil/frame.c b/libavutil/frame.c
> index 3ecd739317..a9e76504eb 100644
> --- a/libavutil/frame.c
> +++ b/libavutil/frame.c
> @@ -51,8 +51,16 @@ MAKE_ACCESSORS(AVFrame, frame, enum AVColorRange,
> color_range)
> av_get_channel_layout_nb_channels((frame)->channel_layout))
>
> #if FF_API_FRAME_QP
> +struct qp_properties {
> + int stride;
> + int type;
> +};
> +
> int av_frame_set_qp_table(AVFrame *f, AVBufferRef *buf, int stride, int
> qp_type)
> {
> + struct qp_properties *p;
> + AVFrameSideData *sd;
> +
> FF_DISABLE_DEPRECATION_WARNINGS
> av_buffer_unref(&f->qp_table_buf);
>
> @@ -62,20 +70,53 @@ FF_DISABLE_DEPRECATION_WARNINGS
> f->qscale_type = qp_type;
> FF_ENABLE_DEPRECATION_WARNINGS
>
> + av_frame_remove_side_data(f, AV_FRAME_DATA_QP_TABLE_PROPERTIES);
> + av_frame_remove_side_data(f, AV_FRAME_DATA_QP_TABLE_DATA);
> +> + if (!frame_new_side_data(f, AV_FRAME_DATA_QP_TABLE_DATA, > av_buffer_ref(buf))) > + return AVERROR(ENOMEM); > + This does not build anymore after 6731f60598963da357ff77dafe9e5e903629bde9 [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB "Nothing to hide" only works if the folks in power share the values of you and everyone you know entirely and always will -- Tom Scott
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
