Konrad, could you please review? Thank you, Oleksandr On 1/15/19 11:38 AM, Oleksandr Andrushchenko wrote: > From: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx> > > Hello! > > At the moment Xen [1] already supports some virtual multimedia > features [2] such as virtual display, sound. It supports keyboards, > pointers and multi-touch devices all allowing Xen to be used in > automotive appliances, In-Vehicle Infotainment (IVI) systems > and many more. > > Frontend implementation is available at [3] and the corresponding > backend at [4]. These are work in progress, but frontend already > passes v4l2-compliance test for V4L2 drivers. libxl preliminary > changes are available at [5]. > > This work adds a new Xen para-virtualized protocol for a virtual > camera device which extends multimedia capabilities of Xen even > farther: video conferencing, IVI, high definition maps etc. > > The initial goal is to support most needed functionality with the > final idea to make it possible to extend the protocol if need be: > > 1. Provide means for base virtual device configuration: > - pixel formats > - resolutions > - frame rates > 2. Support basic camera controls: > - contrast > - brightness > - hue > - saturation > 3. Support streaming control > > I would like to thank Hans Verkuil <hverkuil@xxxxxxxxx> for valuable > comments and help. > > Thank you, > Oleksandr Andrushchenko > > Changes since v3: > ================= > > 1. Add trimming example for short FOURCC labels, e.g. Y16 and Y16-BE > 2. Remove from XENCAMERA_OP_CONFIG_XXX requests colorspace, xfer_func, > ycbcr_enc, quantization and move those into the corresponding response > 3. Extend description of XENCAMERA_OP_BUF_REQUEST.num_bufs: limit to > maximum buffers and num_bufs == 0 case > 4. Extend decription of XENCAMERA_OP_BUF_CREATE.index and specify its > range > 5. Make XENCAMERA_EVT_FRAME_AVAIL.seq_num 32-bit instead of 64-bit > > Changes since v2: > ================= > > 1. Add "max-buffers" frontend configuration entry, e.g. > the maximum number of camera buffers a frontend may use. > 2. Add big-endian pixel-format support: > - "formats" configuration string length changed from 4 to 7 > octets, so we can also manage BE pixel-formats > - add corresponding comments to FOURCC mappings description > 3. New commands added to the protocol and documented: > - XENCAMERA_OP_CONFIG_VALIDATE > - XENCAMERA_OP_FRAME_RATE_SET > - XENCAMERA_OP_BUF_GET_LAYOUT > 4.-Add defaults for colorspace, xfer, ycbcr_enc and quantization > 5. Remove XENCAMERA_EVT_CONFIG_CHANGE event > 6. Move plane offsets to XENCAMERA_OP_BUF_REQUEST as offsets > required for the frontend might not be known at the configuration time > 7. Clean up and address comments to v2 of the protocol > > Changes since v1: > ================= > > 1. Added XenStore entries: > - frame-rates > 2. Do not require the FOURCC code in XenStore to be upper case only > 3. Added/changed command set: > - configuration get/set > - buffer queue/dequeue > - control get > 4. Added control flags, e.g. read-only etc. > 5. Added colorspace configuration support, relevant constants > 6. Added events: > - configuration change > - control change > 7. Changed control values to 64-bit > 8. Added sequence number to frame avail event > 9. Coding style cleanup > > [1] https://www.xenproject.org/ > [2] https://xenbits.xen.org/gitweb/?p=xen.git;a=tree;f=xen/include/public/io > [3] https://github.com/andr2000/linux/tree/camera_front_v1/drivers/media/xen > [4] https://github.com/andr2000/camera_be > [5] https://github.com/andr2000/xen/tree/vcamera > > Oleksandr Andrushchenko (1): > cameraif: add ABI for para-virtual camera > > xen/include/public/io/cameraif.h | 1364 ++++++++++++++++++++++++++++++ > 1 file changed, 1364 insertions(+) > create mode 100644 xen/include/public/io/cameraif.h >