Re: [PATCH v5 00/39] i.MX Media Driver
From: Nicolas Dufresne <hidden>
Date: 2017-03-19 15:00:06
Also in:
linux-arm-kernel, linux-media, lkml
Le dimanche 19 mars 2017 à 00:54 +0000, Russell King - ARM Linux a écrit :
quoted
In practice, I have the impression there is a fair reason why framerate enumeration isn't implemented (considering there is only 1 valid rate).That's actually completely incorrect. With the capture device interfacing directly with CSI, it's possible _today_ to select: * the CSI sink pad's resolution * the CSI sink pad's resolution with the width and/or height halved * the CSI sink pad's frame rate * the CSI sink pad's frame rate divided by the frame drop factor To put it another way, these are possible: # v4l2-ctl -d /dev/video10 --list-formats-ext ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'RGGB' Name : 8-bit Bayer RGRG/GBGB Size: Discrete 816x616 Interval: Discrete 0.040s (25.000 fps) Interval: Discrete 0.048s (20.833 fps) Interval: Discrete 0.050s (20.000 fps) Interval: Discrete 0.053s (18.750 fps) Interval: Discrete 0.060s (16.667 fps) Interval: Discrete 0.067s (15.000 fps) Interval: Discrete 0.080s (12.500 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.120s (8.333 fps) Interval: Discrete 0.160s (6.250 fps) Interval: Discrete 0.200s (5.000 fps) Interval: Discrete 0.240s (4.167 fps) Size: Discrete 408x616 <same intervals> Size: Discrete 816x308 <same intervals> Size: Discrete 408x308 <same intervals> These don't become possible as a result of implementing the enums, they're all already requestable through /dev/video10.
Ok that wasn't clear. So basically video9 is a front-end to video10, and it does not proxy the enumerations. I understand this is what you are now fixing. And this has to be fixed, because I can image cases where the front-end could support only a subset of the sub-dev. So having userspace enumerate on another device (and having to find this device by walking the tree) is unlikely to work in all scenarios. regards, Nicolas p.s. This is why caps negotiation is annoyingly complex in GStreamer, specially that there is no shortcut, you connect pads, and they figure- out what format they will use between each other.