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

Mark Thompson sw at jkqxz.net
Tue Jul 7 01:08:24 EEST 2020


On 06/07/2020 22:08, Yongle Lin wrote:
> add block type field to AVVideoBlockParams so we could either export or visualize it later.
> ---
>   libavutil/video_enc_params.h | 20 ++++++++++++++++++++
>   1 file changed, 20 insertions(+)
> 
> diff --git a/libavutil/video_enc_params.h b/libavutil/video_enc_params.h
> index 43fa443154..55b9fc4031 100644
> --- a/libavutil/video_enc_params.h
> +++ b/libavutil/video_enc_params.h
> @@ -101,6 +101,21 @@ typedef struct AVVideoEncParams {
>       int32_t delta_qp[4][2];
>   } AVVideoEncParams;
>   
> +typedef struct MacroBlockType {
> +    /**
> +     * Is intra prediction
> +     */
> +    int intra;
> +    /**
> +     * Skip flag
> +     */
> +    int skip;
> +    /**
> +     * Reference to the past or future
> +     */
> +    int ref[2];

Please can you define carefully in the documentation exactly what each of these fields mean, as is done for the QP values above?

(That is, there should be enough information to determine what exactly is meant if I am given one of these structures with, say, intra = 3, skip = 7, ref = { 5, 1 }.)

> +} MacroBlockType;

Structures in the public API need to carry the "AV" namespace prefix.

I'm not sure that "macroblock" is a good word to use here: many codecs have no concept called a "macroblock", and invoking a word with a specific definition in only some contexts seems unhelpful.

> +
>   /**
>    * Data structure for storing block-level encoding information.
>    * It is allocated as a part of AVVideoEncParams and should be retrieved with
> @@ -126,6 +141,11 @@ typedef struct AVVideoBlockParams {
>        * corresponding per-frame value.
>        */
>       int32_t delta_qp;
> +
> +    /**
> +     * Type of block
> +     */
> +    MacroBlockType mb_type;
>   } AVVideoBlockParams;
>   
>   /*
> 

- Mark


More information about the ffmpeg-devel mailing list