[PATCH 3/3] apps: cam: Support full orientation options
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri May 2 12:05:39 CEST 2025
Quoting Jacopo Mondi (2025-05-02 09:31:55)
> Hi Kieran
>
> On Thu, May 01, 2025 at 03:16:09PM +0100, Kieran Bingham wrote:
> > The Orientation control was implemented in commit 7e5f1e1cedf5 "apps:
>
> nit: could you use the canonical commit reference style ?
Argh - the brackets got dropped/lost somehow in escaping on the
commandline. But yes I'll fix this.
> The Orientation control was implemented in commit 7e5f1e1cedf5 ("apps:
> cam: Add option to set stream orientation") but did not fully add all of
>
> > cam: Add option to set stream orientation" but did not fully add all of
> > the supported Orientation types.
> >
> > The upcoming dewarp support on RkISP1 will provide full rotation
> > implementation options, including previously difficult '90' degree
> > rotations.
> >
> > Extend the cam application to support setting any of the valid options.
> >
> > The existing 'mirror' and 'flip' options are not consistent with the
>
> Where are these existing already ?
In your commit you added at 7e5f1e1cedf5 in cam/camera_session.cpp in 2023 ;-)
>
> > rest of the option definitions, but maintain them as useful aliases to
> > their corresponding type.
> >
> > Fixes: 7e5f1e1cedf5 ("apps: cam: Add option to set stream orientation")
>
> Not really a fixes..
Indeed, hence below ... mayb I'll remove it in fact, it wasn't "broken"
just reduced functionality.
Mostly I only care about the tags as a way of highlighting things in the
release notes ;-)
> > Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> >
> > ---
> > It might be debatable if this really is a 'Fixes' as the existing commit
> > wasn't broken - just not fully implemented - however the full set of
> > Orientation types were there at the time the patch was merged.
>
> Ah yes. Doesn't matter at all to me
>
> >
> > src/apps/cam/camera_session.cpp | 9 +++++++++
> > src/apps/cam/main.cpp | 5 ++++-
> > 2 files changed, 13 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp
> > index f63fcb228519..43188133d9cb 100644
> > --- a/src/apps/cam/camera_session.cpp
> > +++ b/src/apps/cam/camera_session.cpp
> > @@ -97,7 +97,16 @@ CameraSession::CameraSession(CameraManager *cm,
> > std::string orientOpt = options_[OptOrientation].toString();
> > static const std::map<std::string, libcamera::Orientation> orientations{
> > { "rot0", libcamera::Orientation::Rotate0 },
> > + { "rot90", libcamera::Orientation::Rotate90 },
> > { "rot180", libcamera::Orientation::Rotate180 },
> > + { "rot270", libcamera::Orientation::Rotate270 },
> > +
> > + { "rot0mirror", libcamera::Orientation::Rotate0Mirror },
> > + { "rot90mirror", libcamera::Orientation::Rotate90Mirror },
> > + { "rot180mirror", libcamera::Orientation::Rotate180Mirror },
> > + { "rot270mirror", libcamera::Orientation::Rotate270Mirror },
> > +
> > + /* Helpful aliases */
> > { "mirror", libcamera::Orientation::Rotate0Mirror },
> > { "flip", libcamera::Orientation::Rotate180Mirror },
> > };
> > diff --git a/src/apps/cam/main.cpp b/src/apps/cam/main.cpp
> > index fa266eca6d30..f1495a2db465 100644
> > --- a/src/apps/cam/main.cpp
> > +++ b/src/apps/cam/main.cpp
> > @@ -136,7 +136,10 @@ int CamApp::parseOptions(int argc, char *argv[])
> > OptCamera);
> >
> > parser.addOption(OptOrientation, OptionString,
> > - "Desired image orientation (rot0, rot180, mirror, flip)",
> > + "Desired image orientation. Supported values:\n"
> > + "- rot0, rot90, rot180, rot270,\n"
> > + "- rot0mirror, rot90mirror, rot180mirror, rot270mirror,\n"
> > + "- mirror (alias for rot0mirror), flip (alias for rot180mirror)",
> > "orientation", ArgumentRequired, "orientation", false,
> > OptCamera);
>
> Have you tested this on a platform that doesn't support
> transpositions?
No I haven't yet actually - but I don't think 'some platforms not
supporting' should limit the api options from cam.
I would expect that the platform should adjust or return invalid - and
if it doesn't - that's a fault of the pipeline handler - not cam.
> With the above confirmed
> Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
>
Thanks
Kieran
> Thanks
> j
>
>
> > #ifdef HAVE_KMS
> > --
> > 2.48.1
> >
More information about the libcamera-devel
mailing list