[PATCH edid-decode 8/9] Print HDR static metadata block

walter harms wharms at bfs.de
Fri Jul 8 17:07:43 UTC 2016



Am 08.07.2016 18:39, schrieb Arnaud Vrac:
>  On Fri, Jul 8, 2016 at 4:56 PM, walter harms <wharms at bfs.de> wrote:
>>
>>
>> Am 08.07.2016 16:09, schrieb Arnaud Vrac:
>>> From: Arnaud Vrac <avrac at freebox.fr>
>>>
>>> ---
>>>  edid-decode.c | 38 ++++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 38 insertions(+)
>>>
>>> diff --git a/edid-decode.c b/edid-decode.c
>>> index 2e367b3..c18697f 100644
>>> --- a/edid-decode.c
>>> +++ b/edid-decode.c
>>> @@ -1100,6 +1100,43 @@ cea_colorimetry_block(unsigned char *x)
>>>      }
>>>  }
>>>
>>> +static const char *eotf_map[] = {
>>> +    "Traditional gamma - SDR luminance range",
>>> +    "Traditional gamma - HDR luminance range",
>>> +    "SMPTE ST2084",
>>> +};
>>> +
>>> +static void
>>> +cea_hdr_metadata_block(unsigned char *x)
>>> +{
>>> +    int length = x[0] & 0x1f;
>>> +    int i;
>>> +
>>> +    if (length >= 3) {
>>> +     printf("    Electro optical transfer functions:\n");
>>> +     for (i = 0; i < 6; i++) {
>>> +         if (x[2] >> i) {
>>> +             printf("      %s\n", i < ARRAY_SIZE(eotf_map) ?
>>> +                    eotf_map[i] : "Unknown");
>>> +         }
>>> +     }
>>
>> i would move "Unknown" into eotf_map[], that make later changes more easy.
>>
> 
> That would add "Unknown" 3 times in the array, which I thought was
> redundant. Bits 3 to 5 are reserved for future use.

mmh, thinking about this...
can there actually more that 1 "Electro optical transfer function" ?

NTL i would say do it just add the "Rffu" to the array
bytes are cheap this days, avoid surprises

re,
 wh


> 
>> I assume that x[2] is a bitfield, so is (x[2] >> i) & 1 intended ?
> 
> as in "[PATCH edid-decode 3/9] Print speaker allocation data block"
>>
> 
> Ah right, nice catch. I'll update the patch.
> 
> 
>> re,
>>  wh
>>
>>> +     printf("    Supported static metadata descriptors:\n");
>>> +     for (i = 0; i < 8; i++) {
>>> +         if (x[3] >> i)
>>> +             printf("      Static metadata type %d\n", i + 1);
>>> +     }
>>> +    }
>>> +
>>> +    if (length >= 4)
>>> +     printf("    Desired content max luminance: %d\n", x[4]);
>>> +
>>> +    if (length >= 5)
>>> +     printf("    Desired content max frame-average luminance: %d\n",
>> x[5]);
>>> +
>>> +    if (length >= 6)
>>> +     printf("    Desired content min luminance: %d\n", x[6]);
>>> +}
>>> +
>>>  static void
>>>  cea_block(unsigned char *x)
>>>  {
>>> @@ -1155,6 +1192,7 @@ cea_block(unsigned char *x)
>>>                   break;
>>>               case 0x06:
>>>                   printf("HDR static metadata data block\n");
>>> +                 cea_hdr_metadata_block(x);
>>>                   break;
>>>               case 0x0d:
>>>                   printf("Video format preference data block\n");
>>
> 
> 
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list