[FFmpeg-devel] [PATCH] libavutil/video_enc_params: add block type

Yongle Lin yonglel at google.com
Wed Jul 8 02:06:20 EEST 2020


On Tue, Jul 7, 2020 at 10:54 PM Lynne <dev at lynne.ee> wrote:

> Jul 7, 2020, 23:47 by yongle.lin.94 at gmail.com:
>
> > add block type field to AVVideoBlockParams so we could either export or
> visualize it later.
> > ---
> >  libavutil/video_enc_params.h | 16 ++++++++++++++++
> >  1 file changed, 16 insertions(+)
> >
> > diff --git a/libavutil/video_enc_params.h b/libavutil/video_enc_params.h
> > index 43fa443154..52c0058f5b 100644
> > --- a/libavutil/video_enc_params.h
> > +++ b/libavutil/video_enc_params.h
> > @@ -57,6 +57,11 @@ enum AVVideoEncParamsType {
> >  AV_VIDEO_ENC_PARAMS_H264,
> >  };
> >
> > +enum AVVideoBlockFlags {
> > +    AV_VIDEO_ENC_BLOCK_INTRA = 1ULL <<  0,  /* Indicates block uses
> intra prediction */
> > +    AV_VIDEO_ENC_BLOCK_SKIP = 1ULL <<  1,   /* Indicates block is not
> coded (skipped) */
> > +};
> > +
> >  /**
> >  * Video encoding parameters for a given frame. This struct is allocated
> along
> >  * with an optional array of per-block AVVideoBlockParams descriptors.
> > @@ -126,6 +131,17 @@ typedef struct AVVideoBlockParams {
> >  * corresponding per-frame value.
> >  */
> >  int32_t delta_qp;
> > +
> > +    /**
> > +     * Type flag of the block
> > +     * Each bit field indicates a type flag
> > +     */
> > +    enum AVVideoBlockFlags flags;
> > +
> > +    /**
> > +     * Reference frames used for prediction
> > +     */
> > +    uint8_t ref[8];
> >  } AVVideoBlockParams;
> >
>
> After some discussion on IRC, could you clarify the ref array description
> to this:
>
> > Each entry specifies the first/second/third/etc. reference frame the
> current frame uses.
> > The value at each entry specifies the index inside the reference frame
> array for that current frame.
>
> E.g. your current frame has 6 valid possible references, and your frame
> header specifies you
> can use ref_frame[3] and ref_frame[5] as a reference.
> So the values of ref[] for each block must be either 3 or 5.
> Its convoluted because the array maps indices to indices but it makes
> sense.
>
Yes. That makes sense to me. So the ref array stores the index of reference
frame in the ref_frame[]

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list