[RFC,0/7] Support different outputs for cam streams
mbox series

Message ID 20250314202943.112109-1-mzamazal@redhat.com
Headers show
Series
  • Support different outputs for cam streams
Related show

Message

Milan Zamazal March 14, 2025, 8:29 p.m. UTC
cam application supports multiple streams but only a single kind of
output for all of them at the same time.  It would be helpful if it was
possible to support different outputs for different streams, for example if a processed stream could be sent to display while a raw stream to files or if a processed stream would be written to PPM files while a raw stream to raw files.

This patch series implements this (besides some janitorial patches).
There are multiple options how to do it.  The selected way is to keep
the current output command line options, so that things don’t get
unnecessarily more complicated for the users, and adding new --stream
child options specifying the output.  To keep the implementation
simpler, it’s not possible to combine the current output options with
the newly introduced stream child options.

Examples of newly introduced command line options:

  cam ... -s role=viewfinder,... --stream-display \
          -s role=raw,... --stream-file=raw#

or

  cam ... -s role=viewfinder,... --stream-file=processed#.ppm \
          -s role=raw,... --stream-file=raw#

Milan Zamazal (7):
  apps: common: Fix flipped error condition
  apps: cam: Formatting fixes
  apps: cam: Remove unused imports
  apps: cam: Add support for multiple sinks
  apps: cam: Report error on multiple default sinks
  apps: cam: Track sink streams
  apps: cam: Add command line options for stream specific outputs

 src/apps/cam/camera_session.cpp | 140 ++++++++++++++++++++++++++------
 src/apps/cam/camera_session.h   |   2 +-
 src/apps/cam/file_sink.cpp      |   3 +-
 src/apps/cam/frame_sink.cpp     |  14 ++++
 src/apps/cam/frame_sink.h       |  26 ++++++
 src/apps/cam/kms_sink.cpp       |  16 ++--
 src/apps/cam/main.cpp           |  27 ++++--
 src/apps/cam/main.h             |   3 +
 src/apps/cam/sdl_sink.cpp       |  19 ++---
 src/apps/common/options.cpp     |   2 +-
 10 files changed, 202 insertions(+), 50 deletions(-)