[libcamera-devel,0/2] Simple pipeline: skip broken pipeline configurations
mbox series

Message ID 20200421203954.15585-1-andrey.konovalov@linaro.org
Headers show
Series
  • Simple pipeline: skip broken pipeline configurations
Related show

Message

Andrey Konovalov April 21, 2020, 8:39 p.m. UTC
When enumerating the possible pipeline configurations, SimpleCameraData::init()
doesn't check if the sink pad uses the same format as the source pad of the
same link does. This can result in broken pipeline configurations added to
the formats_ map, and if such a configuration is selected the issue reveals
late as a failure to start streaming.

The first patch adds the check into SimpleCameraData::setupFormats() - now
it returns -EINVAL if a link is misconfigured.

The second patch prevents the enumeration of the possible pipeline
configurations from being aborted on the first broken configuration
and proceeds with the next media bus code instead.

Andrey Konovalov (2):
  libcamera: pipeline: simple: make sure the formats at the link's pads
    match
  libcamera: pipeline: simple: try next mbus code if setupFormats()
    fails

 src/libcamera/pipeline/simple/simple.cpp | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

Comments

Andrey Konovalov April 21, 2020, 9:18 p.m. UTC | #1
Forgot to mention that this series is to be applied on top of Simple pipeline handler,
v4 patch set:
https://lists.libcamera.org/pipermail/libcamera-devel/2020-April/007880.html

Thanks,
Andrey

On 21.04.2020 23:39, Andrey Konovalov wrote:
> When enumerating the possible pipeline configurations, SimpleCameraData::init()
> doesn't check if the sink pad uses the same format as the source pad of the
> same link does. This can result in broken pipeline configurations added to
> the formats_ map, and if such a configuration is selected the issue reveals
> late as a failure to start streaming.
> 
> The first patch adds the check into SimpleCameraData::setupFormats() - now
> it returns -EINVAL if a link is misconfigured.
> 
> The second patch prevents the enumeration of the possible pipeline
> configurations from being aborted on the first broken configuration
> and proceeds with the next media bus code instead.
> 
> Andrey Konovalov (2):
>    libcamera: pipeline: simple: make sure the formats at the link's pads
>      match
>    libcamera: pipeline: simple: try next mbus code if setupFormats()
>      fails
> 
>   src/libcamera/pipeline/simple/simple.cpp | 17 +++++++++++++++--
>   1 file changed, 15 insertions(+), 2 deletions(-)
>