Thread (7 messages) 7 messages, 4 authors, 2021-06-25

Re: [PATCH] media: uvc: limit max bandwidth for HDMI capture

From: Nicolas Dufresne <hidden>
Date: 2021-06-25 19:18:21
Also in: lkml

Le mardi 22 juin 2021 à 10:29 +0200, Mauro Carvalho Chehab a écrit :
Em Mon, 21 Jun 2021 21:22:26 +0300
Laurent Pinchart [off-list ref] escreveu:
quoted
Hi Mauro,

Thank you for the patch.
Thanks for reviewing it!
quoted
On Mon, Feb 01, 2021 at 08:08:59PM +0100, Mauro Carvalho Chehab wrote:
quoted
This device:
        534d:2109 MacroSilicon

Announces that it supports several frame intervals for
their resolutions for MJPEG compression:

        VideoStreaming Interface Descriptor:
        bLength                            46
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1920
        wHeight                          1080
        dwMinBitRate                   768000
        dwMaxBitRate                196608000
        dwMaxVideoFrameBufferSize     4147200
        dwDefaultFrameInterval         166666
        bFrameIntervalType                  5
        dwFrameInterval( 0)            166666
        dwFrameInterval( 1)            333333
        dwFrameInterval( 2)            400000
        dwFrameInterval( 3)            500000
        dwFrameInterval( 4)           1000000

However, the highest frame interval (166666), which means 60 fps
is not supported. For such resolution, the maximum interval
is, instead 333333 (30 fps).  
What happens if you try to select it ?
Basically, URBs get lost: they cause apps like qv4l2 to crash
sometimes, with:

	v4l-convert: libjpeg error: Corrupt JPEG data: premature end of data segment
This is the emulated format handler that decodes jpeg behind application back
that is broken. The converter should implement this in a nicer way. E.g. it
could return ERROR buffer with payload = 0 in that case.
The image keeps blinking, and part of the image is replaced by
white noise.

Clearly, it tries to send more data than the maximum available bandwidth
on this chipset.


Sent a v2 addressing the issues you pointed.


Thanks,
Mauro
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help