Hi André,
Thank you for you work on this. I've posted a few review comments (nothing
major), so this should be ready for be merged for 5.3 once v6 is posted.
On 4/26/19 9:51 PM, André Almeida wrote:
> Hello,
>
> This series implements support for multiplane pixel formats at Vimc.
> A lot of changes were required since vimc support for singleplane
> was "hardcoded". The code has been adapted in order to support both
> formats. When was possible, the functions were written generically,
> avoiding functions for just one type of pixel format.
>
> The debayer subdevice is the only one that currently doesn't supports
> multiplanar formats. Documentation to each device will be made in a
> future patch. In hardcoded topology, the exposed capture device
> `RGB/YUV Capture` have a debayer in the pipeline, so it will fail when
> tested with multiplanar formats.
>
> The last commit of this series was tested using Hans' virtme.sh[1]
> script here are the summary of results:
>
> Grand Total for vivid device /dev/media0: 631, Succeeded: 631, Failed: 0,
> Warnings: 6
> Grand Total for vivid device /dev/media1: 631, Succeeded: 631, Failed: 0,
> Warnings: 6
> Grand Total for vim2m device /dev/media3: 61, Succeeded: 61, Failed: 0,
> Warnings: 0
> Grand Total for vimc device /dev/media3: 478, Succeeded: 478, Failed: 0,
> Warnings: 0
> Final Summary: 1801, Succeeded: 1801, Failed: 0, Warnings: 12
It would be great if you can also post a separate patch to update
contrib/test/test-media
so vimc is tested twice: once in singleplanar and once in multiplanar mode.
The current vimc test should be done in a for loop so it is tested twice.
Thanks!
Hans
>
> Thanks,
> André
>
> [1] https://hverkuil.home.xs4all.nl/virtme/virtme.sh
>
> Changes in v5:
> - Remove bpp from vimc_sca_device
>
> Changes in v4:
> - Remove unutilized commit "Propagate multiplanar state in the stream"
> - Split "Create multiplanar parameter and ioctls"
> - Check for try_fmt return value
> - Change ret from `unsigned int` to `int`
> - Remove label `free_planes` from else scope
> - Change vars at vimc-scaler
>
> Changes in v3:
> - Refactor vimc_frame and vimc_fill_frame in order to be more clear and
> simple
> - Squash "Add handler for multiplanar fmt ioctls" and "Create multiplanar
> parameter"
> - Define format ioctls of capture device according to it capabilities
> - Get rid of `IS_MULTIPLANAR(vcap)` verification on format ioctls
> - Remove some format ioctl handlers
> - Reorder "Move sp2mp functions to v4l2-common"
> - Minimal code style and comments changes
> - Assign ioctls according to capture device capabilities
>
> Changes in v2:
> - Fix typos
> - Fix indentations
> - Enhance v4l2_fmt_* documentation
> - Change the order of commits, now the multiplanar parameter is the last
> one with the commit to set the device capabilities
> - Squash "unnecessary checks" commits together
> - In v1, the whole media device was in singleplanar or in multiplanar
> format. Now, each stream/pipeline can be in a format
> - Check the capture capabilities to get if the stream is in
> singleplanar/multiplanar mode, instead of checking the module parameter.
> - Change `if (multiplanar)` to `if (IS_MULTIPLANAR(vcap))`
> - Add a new commit to propagate in the stream if the capture device is
> in multiplanar or singleplanar mode
>
> André Almeida (14):
> media: vimc: Remove unnecessary stream checks
> media: vimc: cap: Change vimc_cap_device.format type
> media: vimc: cap: Dynamically define stream pixelformat
> media: Move sp2mp functions to v4l2-common
> media: vimc: cap: refactor singleplanar as a subset of multiplanar
> media: vimc: cap: Add handler for multiplanar fmt ioctls
> media: vimc: cap: Add multiplanar formats
> media: vimc: cap: Add multiplanar default format
> media: vimc: cap: Allocate and verify mplanar buffers
> media: vimc: Add and use new struct vimc_frame
> media: vimc: sen: Add support for multiplanar formats
> media: vimc: sca: Add support for multiplanar formats
> media: vimc: cap: Add support for multiplanar formats
> media: vimc: Create multiplanar parameter
>
> drivers/media/platform/vimc/vimc-capture.c | 288 ++++++++++++++----
> drivers/media/platform/vimc/vimc-common.c | 8 +
> drivers/media/platform/vimc/vimc-common.h | 41 ++-
> drivers/media/platform/vimc/vimc-debayer.c | 38 ++-
> drivers/media/platform/vimc/vimc-scaler.c | 127 ++++----
> drivers/media/platform/vimc/vimc-sensor.c | 67 ++--
> drivers/media/platform/vimc/vimc-streamer.c | 2 +-
> drivers/media/platform/vivid/vivid-vid-cap.c | 6 +-
> .../media/platform/vivid/vivid-vid-common.c | 59 ----
> .../media/platform/vivid/vivid-vid-common.h | 9 -
> drivers/media/platform/vivid/vivid-vid-out.c | 6 +-
> drivers/media/v4l2-core/v4l2-common.c | 62 ++++
> include/media/v4l2-common.h | 37 +++
> 13 files changed, 511 insertions(+), 239 deletions(-)
>