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 ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel