[FFmpeg-devel] [PATCH 1/3] avutil/frame: add AVBufferRef for qp table

Michael Niedermayer michaelni at gmx.at
Thu Mar 14 02:14:45 CET 2013


On Thu, Mar 14, 2013 at 01:49:25AM +0100, Clément Bœsch wrote:
> On Thu, Mar 14, 2013 at 12:17:24AM +0100, Michael Niedermayer wrote:
> > Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> > ---
> >  libavutil/frame.c |   30 ++++++++++++++++++++++++++++++
> >  libavutil/frame.h |    7 +++++++
> >  2 files changed, 37 insertions(+)
> > 
> > diff --git a/libavutil/frame.c b/libavutil/frame.c
> > index 58e77c7..b955af2 100644
> > --- a/libavutil/frame.c
> > +++ b/libavutil/frame.c
> > @@ -42,6 +42,26 @@ MAKE_ACCESSORS(AVFrame, frame, int,     pkt_size)
> >  
> >  AVDictionary **avpriv_frame_get_metadatap(AVFrame *frame) {return &frame->metadata;};
> >  
> > +int av_frame_set_qp_table(AVFrame *f, AVBufferRef *buf, int stride) {
> > +    av_buffer_unref(&f->qp_table_buf);
> > +
> 
> nit++: inconsistent style
> 
> > +    f->qp_table_buf = buf;
> > +
> > +    f->qscale_table = buf->data;
> > +    f->qstride = stride;
> > +
> > +    return 0;
> > +}
> > +
> > +int8_t *av_frame_get_qp_table(AVFrame *f, int *stride)
> > +{
> > +    if (!f->qp_table_buf)
> > +        return NULL;
> > +
> > +    *stride = f->qstride;
> > +    return f->qp_table_buf->data;
> > +}
> > +
> >  static void get_frame_defaults(AVFrame *frame)
> >  {
> >      if (frame->extended_data != frame->data)
> > @@ -311,6 +331,8 @@ void av_frame_unref(AVFrame *frame)
> >          av_buffer_unref(&frame->extended_buf[i]);
> >      av_freep(&frame->extended_buf);
> >      av_dict_free(&frame->metadata);
> > +    av_buffer_unref(&frame->qp_table_buf);
> > +
> >      get_frame_defaults(frame);
> >  }
> >  
> > @@ -431,6 +453,14 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
> >          av_dict_copy(&sd_dst->metadata, sd_src->metadata, 0);
> >      }
> >  
> > +    if (src->qp_table_buf) {
> > +        dst->qp_table_buf = av_buffer_ref(src->qp_table_buf);
> > +        if (dst->qp_table_buf) {
> > +            dst->qscale_table = dst->qp_table_buf->data;
> > +            dst->qstride = src->qstride;
> > +        }
> > +    }
> > +
> >      return 0;
> >  }
> >  
> > diff --git a/libavutil/frame.h b/libavutil/frame.h
> > index ec7cfa9..aebc776 100644
> > --- a/libavutil/frame.h
> > +++ b/libavutil/frame.h
> > @@ -419,6 +419,11 @@ typedef struct AVFrame {
> >       * - decoding: set by libavcodec, read by user.
> >       */
> >      int pkt_size;
> > +
> > +    /**
> > +     * Not to be accessed from outside libavutil
> > +     */
> 
> not to be accessed *directly*? Both in read and write?

new patchset posted

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The misfortune of the wise is better than the prosperity of the fool.
-- Epicurus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130314/42eda9ec/attachment.asc>


More information about the ffmpeg-devel mailing list