Re: [RFC PATCH v2] media: Add AV1 uAPI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Optional: one comment about "v4l2_ctrl_av1_frame_header".

struct v4l2_ctrl_av1_frame_header {
  struct v4l2_av1_tile_info tile_info;
  struct v4l2_av1_quantization quantization;
  struct v4l2_av1_segmentation segmentation;
  struct v4l2_av1_loop_filter loop_filter;
  struct v4l2_av1_cdef cdef;
  struct v4l2_av1_loop_restoration loop_restoration;
  struct v4l2_av1_global_motion global_motion;

We used "v4l2_ctrl_vp9_frame" for the similar purpose.

I thought "_header" can be confusing in a sense that these are
parameters setup from parsing av1 frame header,
not necessarily "header" itself.

How about making it "v4l2_ctrl_av1_frame" similar to vp9,
or "v4l2_ctrl_av1_frame_params"?

I don't think this alone justify for another update, but if we need to
have an update anyway,
then I thought it was worthwhile considering.

Steve

On Mon, May 16, 2022 at 10:42 AM Steve Cho <stevecho@xxxxxxxxxxxx> wrote:
>
> Hi Daniel,
>
> Question about tile info structure.
>
> struct v4l2_av1_tile_info {
> __u8 flags;
> __u32 mi_col_starts[V4L2_AV1_MAX_TILE_COLS + 1];
> __u32 mi_row_starts[V4L2_AV1_MAX_TILE_ROWS + 1];
> __u32 width_in_sbs_minus_1[V4L2_AV1_MAX_TILE_COLS];
> __u32 height_in_sbs_minus_1[V4L2_AV1_MAX_TILE_ROWS];
>
> I see below from the spec and gstreamer implementation
> for width_in_sbs_minus_1 and height_in_sbs_minus_1 computation.
>
>   sb_cols = seq_header->use_128x128_superblock ?
>       ((parser->state.mi_cols + 31) >> 5) : ((parser->state.mi_cols + 15) >> 4);
>   sb_rows = seq_header->use_128x128_superblock ? ((parser->state.mi_rows +
>           31) >> 5) : ((parser->state.mi_rows + 15) >> 4);
>
> Are we confident that V4L2_AV1_MAX_TILE_COLS is good enough size for
> width_in_sbs_minus_1?
> Or does it potentially need to be V4L2_AV1_MAX_TILE_COLS+1?
>
> I am asking to double check because I see V4L2_AV1_MAX_TILE_COLS+1
> used for corresponding field in libgav1.
> int tile_column_width_in_superblocks[kMaxTileColumns + 1];
>
> https://source.chromium.org/chromium/chromium/src/+/main:third_party/libgav1/src/src/utils/types.h;l=291
>
> Steve
>
> On Wed, May 11, 2022 at 1:59 PM Steve Cho <stevecho@xxxxxxxxxxxx> wrote:
> >
> > Hi Daniel,
> >
> > I think the below definition is expected to cause a build error.
> >
> > +struct v4l2_av1_loop_restoration {
> > +       u8 flags;
> >
> > s/u8/__u8/ is needed.
> >
> > At least, this change was needed to fix this build error on Chromium
> > build environment.
> >
> > Steve
> >
> > On Tue, May 10, 2022 at 9:30 AM Daniel Almeida
> > <daniel.almeida@xxxxxxxxxxxxx> wrote:
> > >
> > > Hi Steve,
> > >
> > > > Hi Daniel,
> > > >
> > > > Found a minor typo.
> > > >
> > > >> See enum_v4l2_av1_frame_restoration_type.
> > > > Assume you meant v4l2_av1_frame_restoration_type instead here.
> > >
> > >
> > > Thanks for the heads up, this will be fixed in v3.
> > >
> > > -- Daniel
> > >



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux