[Intel-gfx] AVI infoframes: default aspect ratio/VIC for CEA modes

Damien Lespiau damien.lespiau at intel.com
Thu Nov 21 01:37:31 CET 2013


On Wed, Nov 20, 2013 at 11:45:03PM +0000, Gohad, Tushar wrote:
> > > On Wed, Nov 20, 2013 at 09:48:26PM +0000, Gohad, Tushar wrote:
> > > > Folks,
> > > >
> > > > When filling in an HDMI AVI infoframe, how does
> > > > one correctly determine the "default" picture aspect ratio (and VIC)
> > > > for CEA modes that support multiple (4:3 and 16:9) aspect ratios.
> > > > 720x576p for example, corresponds to VIC 17 or 18:
> > > >
> > > >         /* 17 - 720x576 at 50Hz */
> > > >         { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720,
> > 732,
> > > >                    796, 864, 0, 576, 581, 586, 625, 0,
> > > >                    DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
> > > >           .vrefresh = 50, },
> > > >         /* 18 - 720x576 at 50Hz */
> > > >         { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720,
> > 732,
> > > >                    796, 864, 0, 576, 581, 586, 625, 0,
> > > >                    DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
> > > >           .vrefresh = 50, },
> > > >
> > > > Should the "picture aspect ratio" information be derived from sink
> > > > EDID (from detailed/cvt/standard timings)? .. possibly in
> > > > drm_add_edid_modes() and store the picture aspect ratio in
> > > > drm_display_mode perhaps, for later use?  Trying to get a better
> > > > understanding of how this usually works.
> > >
> > > Oh no! someone finally discovered it! Yes, we are totally missing the
> > > picture aspect ratio information from the CEA modes. It's been on my
> > > TODO list for a couple of month but not exactly high priority. If we
> > > want to get a stab a it, we'll review the patches :)
> 
> Thanks Damien.  Sure, I can come up with something quick.  Is the idea
> then to store aspect ratio information in drm_display_mode, possibly
> as a separate member or as a hint that's part of mode->flags?

It seems natural to extend those flags to describe the picture aspect
ratio (that why dri-devel is in Cc., touching core DRM).

> > I realized that I did not actually answer the question. The CEA
> > modes come with their defined aspect ratio, it's part of the CEA 861
> > standard.  In this case VIC 17 is 4:3, VIC 18 is 16:9.
> > 
> 
> I understand the VIC/aspect ratio correlation, however in order to set
> the VIC correctly, don't we need to first determine the picture aspect
> ratio?  My question really is, how do we "select" the aspect ratio for
> the ambiguous cases, such as 720x576 which neither truly 4:3 nor 16:9?  

If we expose both to user-space (through the flags), user-space is
responsible for picking one. One detail (out of many, I'm sure) is that,
today, we accept modes without any picture aspect ratio information. We
need to keep that behaviour working.

> Section 7.2.2 of CEA-861-D spec reads -
> 
> "7.2.2 Order of Dual-Aspect Ratio Detailed Timing Descriptors

> Source devices that do not support the AVI InfoFrame (e.g., DVI
> sources) shall consider the first EDID descriptor of any dual-aspect
> ratio timing to be the display-assumed aspect ratio for that timing
> ..."
> 
> How do we figure out the "display-assumed aspect ratio"?

It seems that CEA-861-E rewords that sentence:

"A sink not capable of receiving AVI InfoFrames shall only declare video
formats with different video timings in its EDID data structure unless
the sink declares it is capable of displaying a video timing in either
picture aspect ratio."

This relates to 4.1:

"For a display device to simultaneously support both formats, the source needs
a way to let the display device know the picture aspect ratio in which the
video should be displayed. A DTV shall list only one picture aspect ratio of
any dual-aspect ratio timing unless it is capable of receiving and decoding the
AVI InfoFrame defined in Section 6."

However, it is possible for a DTV that has no support for the AVI InfoFrame to
still support both aspect ratios of such formats as a user programmable option.
In that case, the EDID Detailed Timing Descriptor could be modified during
operation to reflect the selected picture aspect ratio and the change could be
signaled to the source (e.g. with Hot Plug Detect on DVI or HDMI). The effects
on the EDID data structure are explained in Section 7.2.2. See Table 4 for
Video ID Code and Aspect Ratios."

Still not super, super clear. Worst case scenario, we could only expose the
first (preferred) mode when several modes have the same timings but different
Picture AR on DVI and call it a day.

> I see that "drm_add_edid_modes()" enumerates detailed, CVT, standard,
> established, CEA modes.  Should picture aspect ratio determination be
> a part of that process, based on the EDID info?

Right, so I guess you'd need to add the proper flags to the modes as
you're parsing them. May prove a bit tricky.

-- 
Damien



More information about the Intel-gfx mailing list