[Intel-gfx] AVI infoframes: default aspect ratio/VIC for CEA modes
Gohad, Tushar
tushar.gohad at intel.com
Thu Nov 21 03:48:55 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).
Cc: dri-devel
To start with we can use a single bit in drm_display_mode->flags to distinguish 16:9 vs 4:3.
>
> > > 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.
Exactly the reason for the term "default aspect ratio" in original question. :) I didn't see a way to set/force an aspect ratio via KMS or other methods (xrandr). Is this for historical reasons?
> > 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.
>
Okay, so we seem to agree that we should set the default picture aspect ratio as we are parsing the EDID timings info.
Comments from other folks on any pitfalls of this approach?
> > 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.
>
Thanks,
Tushar
More information about the Intel-gfx
mailing list