{"id":823,"url":"https://patchwork.libcamera.org/api/covers/823/?format=json","web_url":"https://patchwork.libcamera.org/cover/823/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20190401101410.4984-1-jacopo@jmondi.org>","date":"2019-04-01T10:14:08","name":"[libcamera-devel,RFC,0/2] libcamera: Implement stream properties","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/?format=json","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"mbox":"https://patchwork.libcamera.org/cover/823/mbox/","series":[{"id":225,"url":"https://patchwork.libcamera.org/api/series/225/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=225","date":"2019-04-01T10:14:08","name":"libcamera: Implement stream properties","version":1,"mbox":"https://patchwork.libcamera.org/series/225/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/823/comments/","headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0A56F600F9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  1 Apr 2019 12:13:36 +0200 (CEST)","from uno.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 809061BF20D;\n\tMon,  1 Apr 2019 10:13:35 +0000 (UTC)"],"X-Originating-IP":"2.224.242.101","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"libcamera-devel@lists.libcamera.org","Date":"Mon,  1 Apr 2019 12:14:08 +0200","Message-Id":"<20190401101410.4984-1-jacopo@jmondi.org>","X-Mailer":"git-send-email 2.21.0","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [RFC 0/2] libcamera: Implement stream properties","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Mon, 01 Apr 2019 10:13:36 -0000"},"content":"Hello,\n   this RFC series implement support for static stream properties and\nimplements their usage in the library, by modifying the way\nstreamConfiguration() works.\n\nThe first patch adds the StreamProperties and StreamUsage classes, and creates\nIPU3 streams with associated properties.\n\nThe IPU3 implementation uses a sub-class of StreamProperties, demonstrating\nhow to use it to store pipeline-specific configurations.\n\nThe patch does not introduced any dependency betwee the Stream and\nStreamProperties class, as the second contains informations not visible to the\napplications, and should be sub-classed by pipeline handler. For this reason,\neach pipeline hander has to maintain an association between streams and their\nproperties. This could be later generalized by introducing per-Stream data in\nthe pipeline handler base class.\n\nThe second patch modifies the way application retrieve default stream\nconfigurations. The StreamConfiguration class has been expanded to support\nwhat has been named 'usage hints'. Each configuration reports a desired size,\nformat and intended usage, and pipeline handlers shall try to associate a\nconfiguration with a stream, and return it with an associated default\nconfiguration.\n\nTo demonstrate the usage, implement the new behaviour in the library, using the\nIPU3 multi-stream pipeline handler implementation (not merged yet) as an\nexample. Also modify the cam application to require configurations for two\nstreams (STILL_CAPTURE and VIEWFINDER) and modify the viewfinder sizes.\n\nThe two patches are based on v2 of multi-stream support for IPU3, which has\nnot been yet sent as the ImgU support series has not been merged yet. I have\npushed to the 'jmondi/imgu-v5-multi' branch.\n\nVerified by using the hacked version of camera app, which captures from view\nfinder and takes a snapshot from output every ten frames.\n\nSending as RFC as it depends on a lot of out of tree code, and to request early\nfeedbacks.\n\nThanks\n  j\n\nJacopo Mondi (2):\n  libcamera: stream: Implement StreamProperties\n  libcamera: Modify streamConfiguration()\n\n include/libcamera/camera.h                |   2 +-\n include/libcamera/meson.build             |   1 +\n include/libcamera/stream.h                |   7 ++\n include/libcamera/stream_usages.h         |  20 ++++\n src/cam/main.cpp                          |  48 ++++----\n src/libcamera/camera.cpp                  |  30 +++--\n src/libcamera/include/pipeline_handler.h  |   3 +-\n src/libcamera/include/stream_properties.h |  41 +++++++\n src/libcamera/meson.build                 |   1 +\n src/libcamera/pipeline/ipu3/ipu3.cpp      | 127 +++++++++++++++++-----\n src/libcamera/pipeline/uvcvideo.cpp       |   4 +-\n src/libcamera/pipeline/vimc.cpp           |   4 +-\n src/libcamera/pipeline_handler.cpp        |  23 ++--\n src/libcamera/stream.cpp                  |  25 +++++\n src/libcamera/stream_properties.cpp       | 121 +++++++++++++++++++++\n 15 files changed, 379 insertions(+), 78 deletions(-)\n create mode 100644 include/libcamera/stream_usages.h\n create mode 100644 src/libcamera/include/stream_properties.h\n create mode 100644 src/libcamera/stream_properties.cpp\n\n--\n2.21.0"}