Le mardi 22 juin 2021 à 10:29 +0200, Mauro Carvalho Chehab a écrit : > Em Mon, 21 Jun 2021 21:22:26 +0300 > Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> escreveu: > > > Hi Mauro, > > > > Thank you for the patch. > > Thanks for reviewing it! > > > > > On Mon, Feb 01, 2021 at 08:08:59PM +0100, Mauro Carvalho Chehab wrote: > > > 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