[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