Re: [PATCH] edid-decode: Cannot support NonMixed MS without MS

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

 



On 04/06/2024 18:57, Sebastian Wick wrote:
> On Wed, May 29, 2024 at 4:16 PM Hans Verkuil <hverkuil-cisco@xxxxxxxxx> wrote:
>>
>> Hi Sebastian,
>>
>> On 29/05/2024 12:02, Sebastian Wick wrote:
>>> When `Max Stream Count` is zero, the sink does not support multistream
>>> and thus cannot support NonMixed MS.
>>>
>>> An EDID with Max Stream Count = 0 and Non Mixed MS = 1 can be found in
>>> linuxhw/EDID ./Digital/TCL/TCL5655/1723FF2DC6D1 at commit cff7fe4d44.
>>>
>>> Signed-off-by: Sebastian Wick <sebastian.wick@xxxxxxxxxx>
>>> ---
>>>  parse-cta-block.cpp | 7 ++++---
>>>  1 file changed, 4 insertions(+), 3 deletions(-)
>>>
>>> diff --git ./parse-cta-block.cpp ../parse-cta-block.cpp
>>> index 4d2afc6..7cd7a3a 100644
>>> --- ./parse-cta-block.cpp
>>> +++ ../parse-cta-block.cpp
>>> @@ -2498,10 +2498,11 @@ static void cta_hdmi_audio_block(const unsigned char *x, unsigned length)
>>>               fail("Empty Data Block with length %u.\n", length);
>>>               return;
>>>       }
>>> -     if (x[0] & 3)
>>> +     if (x[0] & 3) {
>>>               printf("    Max Stream Count: %u\n", (x[0] & 3) + 1);
>>> -     if (x[0] & 4)
>>> -             printf("    Supports MS NonMixed\n");
>>> +         if (x[0] & 4)
>>> +                 printf("    Supports MS NonMixed\n");
>>> +     }
>>
>> I would actually leave this as-is, but instead add a fail() message
>> if MS NonMixed is set, but Max Stream Count == 0.
>>
>> It's really an EDID conformity failure, and it should be reported as such.
> 
> I'm all for adding a fail() message but I'm afraid our implementation
> which tries to be compatible with the output here won't have access to
> the MS NonMixed bit when Max Stream Count == 0.
> 
> Would this work for you?
> 
>     if (x[0] & 3) {
>         printf("    Max Stream Count: %u\n", (x[0] & 3) + 1);
>         if (x[0] & 4)
>             printf("    Supports MS NonMixed\n");
>         else
>                 fail("NonMixed MS support indicated but MS is unsupported\n");
>     }

Correcting the logic that would be this:

	if (x[0] & 3) {
        	printf("    Max Stream Count: %u\n", (x[0] & 3) + 1);
		if (x[0] & 4)
			printf("    Supports MS NonMixed\n");
	} else if (x[0] & 4) {
		fail("MS NonMixed support indicated but Max Stream Count == 0.\n");
	}

And that works for me.

Regards,

	Hans

> 
>>
>> Regards,
>>
>>         Hans
>>
>>>
>>>       num_descs = x[1] & 7;
>>>       if (num_descs == 0)
>>
> 





[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