[FFmpeg-devel] [PATCH] cbs_av1: Fill tile width/height values when uniform_tile_spacing_flag is set

Wang, Fei W fei.w.wang at intel.com
Mon Aug 31 10:31:29 EEST 2020



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of Mark
> Thompson
> Sent: Sunday, August 23, 2020 6:26 AM
> To: ffmpeg-devel at ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH] cbs_av1: Fill tile width/height values when
> uniform_tile_spacing_flag is set
> 
> They are not explicitly in the bitstream in this case, but it is helpful to be able to
> use these values without always needing to check the flag beforehand.
> ---
> On 22/08/2020 23:01, Mark Thompson wrote:
> > On 21/08/2020 06:29, Fei Wang wrote:
> >> ...
> >> +
> >> +    if (s->raw_frame_header.uniform_tile_spacing_flag) {
> >> +        mi_cols = 2 * ((s->raw_seq.max_frame_width_minus_1 + 8) >>
> >> +3);
> >> +        mi_rows = 2 * ((s->raw_seq.max_frame_height_minus_1 + 8) >>
> >> +3);
> >> +        sb_cols = s->raw_seq.use_128x128_superblock ? ((mi_cols +
> >> +31) >> 5)
> >> +                                                    : ((mi_cols +
> >> +15) >> 4);
> >> +        sb_rows = s->raw_seq.use_128x128_superblock ? ((mi_rows +
> >> +31) >> 5)
> >> +                                                    : ((mi_rows +
> >> +15) >> 4);
> >> +        tile_width_sb = (sb_cols + (1 <<
> >> +s->raw_frame_header.tile_cols_log2)
> >> +                         -1) >> s->raw_frame_header.tile_cols_log2;
> >> +        tile_height_sb = (sb_rows + (1 <<
> >> +s->raw_frame_header.tile_rows_log2)
> >> +                         -1) >> s->raw_frame_header.tile_rows_log2;
> >
> > Maybe cbs read should always fill the width/height_in_sbs arrays so that all
> the special casing for uniform_spacing_flag in this function isn't needed?  It
> would be trivial to add it there.
> 
> Like this.
> 
>   libavcodec/cbs_av1_syntax_template.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
> 
> diff --git a/libavcodec/cbs_av1_syntax_template.c
> b/libavcodec/cbs_av1_syntax_template.c
> index a315e8868a..2c976a9574 100644
> --- a/libavcodec/cbs_av1_syntax_template.c
> +++ b/libavcodec/cbs_av1_syntax_template.c
> @@ -624,6 +624,15 @@ static int FUNC(tile_info)(CodedBitstreamContext *ctx,
> RWContext *rw,
>               current->tile_rows_log2;
>           current->tile_rows = (sb_rows + tile_height_sb - 1) / tile_height_sb;
> 
> +        for (i = 0; i < current->tile_cols - 1; i++)
> +            infer(width_in_sbs_minus_1[i], tile_width_sb);
> +        infer(width_in_sbs_minus_1[i],
> +              sb_cols - (current->tile_cols - 1) * tile_width_sb);
Should this by using "tile_width_sb -1" and "sb_cols - (current->tile_cols - 1) * tile_width_sb - 1" ?  And same for height_in_sbs_minus_1.

> +        for (i = 0; i < current->tile_rows - 1; i++)
> +            infer(height_in_sbs_minus_1[i], tile_height_sb);
> +        infer(height_in_sbs_minus_1[i],
> +              sb_rows - (current->tile_rows - 1) * tile_height_sb);
> +
>       } else {
>           int widest_tile_sb, start_sb, size_sb, max_width, max_height;
> 
> --
> 2.28.0
> _______________________________________________
> 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