Re: [PATCH 2/2] uvcvideo: Document Intel SR300 Depth camera INZI format
> In addition to my previous comments, wouldn't it make more sense to create a > multiplanar format for this instead of bundling the two separate images into a > single plane ? Unfortunately that would break userspace at this point as multiple libraries are already depending on a patch that implements the INZI format in this way. I first released a work in progress patch in March of 2015. It was integrated into a Robot Operating System module shortly after that, and Intel has included it in librealsense since January, and also in the firmware for their new Joule module. Since people using this have mostly had to patch their own kernel to use it that might not be a deal breaker. I had initially held back on upstreaming it because I was trying to work out some details of the image formats. Two depth formats seemed the same, and I was trying to figure out what was different enough about them to justify having two formats. I've never had access to any intel documentation beyond what is public on their website, and many details are missing. For reference I got an early RealSense camera when only windows was supported, and figured out some rudimentary support for Linux over a year before intel released their own support. A manager hiring for Intel's open source library told me over the phone that they were in fact using my blog posts to help them develop it so it wasn't surprising that the patch they distributed with the library included my comments. It was surprising that they didn't mention me as the author of the patch. I could rebase my original patch on the current development kernel and submit it if that helps. I can reformat the useful bits from my blog posts as documentation on how 3d cameras work. I wrote a C hotplug utility to let the kernel know about non standard camera controls. I also have a partially finished kernel driver for the SR300, and F200 cameras for things like retrieving the calibration to turn depth images into point clouds, putting the camera into firmware update mode, etc that intel's library does with libusb. I think there should be a standard v4l2 api for 3d cameras because as it is now userspace programs have to be written differently for each vendor. Really all they need are some calibration matrices, and distortion coefficients. Precise time synchronization between /dev/videoX nodes would also be really helpful. These two things would be helpful for other cameras as well for things like stitching 360 degree video. Here are links to my blog series. http://solsticlipse.com/2015/01/09/intel-real-sense-camera-on-linux.html http://solsticlipse.com/2015/02/10/intel-real-sense-on-linux-part-2-3d-camera-controls.html http://solsticlipse.com/2015/03/31/intel-real-sense-3d-on-linux-macos.html http://solsticlipse.com/2016/09/26/long-road-to-ubiquitous-3d-cameras.html -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] uvcvideo: Document Intel SR300 Depth camera INZI format
Hi Evgeni, On Monday 05 Dec 2016 15:24:59 evgeni.raik...@gmail.com wrote: > From: Evgeni Raikhel> > Provide the frame structure and data layout of V4L2-PIX-FMT-INZI > format utilized by Intel SR300 Depth camera. > > This is a complimentary patch for: > [PATCH] UVC: Add support for Intel SR300 depth camera > > Signed-off-by: Evgeni Raikhel > --- > Documentation/media/uapi/v4l/pixfmt-inzi.rst | 40 + > 1 file changed, 40 insertions(+) > create mode 100644 Documentation/media/uapi/v4l/pixfmt-inzi.rst > > diff --git a/Documentation/media/uapi/v4l/pixfmt-inzi.rst > b/Documentation/media/uapi/v4l/pixfmt-inzi.rst new file mode 100644 > index ..cdfdeae4a664 > --- /dev/null > +++ b/Documentation/media/uapi/v4l/pixfmt-inzi.rst > @@ -0,0 +1,40 @@ > +.. -*- coding: utf-8; mode: rst -*- > + > +.. _V4L2-PIX-FMT-INZI: > + > +** > +V4L2_PIX_FMT_INZI ('INZI') > +** > + > +Infrared 10-bit linked with Depth 16-bit images > + > + > +Description > +=== > + > +Custom multi-planar format used by Intel SR300 Depth cameras, comprise of > Infrared image followed by Depth data. +The pixel definition is 32-bpp, > with the Depth and Infrared Data split into separate continuous planes of > identical dimensions. + > +The first plane - Infrared data - is stored in V4L2_PIX_FMT_Y10 (see > :ref:`pixfmt-y10`) greyscale format. Each pixel is 16-bit cell, with actual > data present in the 10 LSBs with values in range 0 to 1023. The six > remaining MSBs are padded with zeros. + > +The second plane provides 16-bit per-pixel Depth data in V4L2_PIX_FMT_Z16 > (:ref:`pixfmt-z16`) format. + In addition to my previous comments, wouldn't it make more sense to create a multiplanar format for this instead of bundling the two separate images into a single plane ? > +**Frame Structure.** > +Each cell is a 16-bit word with the significant data byte is stored at > lower memory address (little-endian). + > ++-+-+-+-+-- > ---+-+ +| Ir\ :sub:`0`| Ir\ :sub:`1`| > Ir\ :sub:`2`| ... |... | ... | > ++-+-+-+-+- > +-+ +| ... ... ... > | +| > Infrared Data >| +| > ... ... ... | > ++-+-+-+-+- > +-+ +| Ir\ :sub:`n-3` | Ir\ :sub:`n-2` | > Ir\ :sub:`n-1` | Depth\ :sub:`0` | Depth\ :sub:`1` | Depth\ :sub:`2` | > ++-+-+-+-+- > +-+ +| ... ... ... > | +| > Depth Data >| +| > ... ... ... | > ++-+-+-+-+- > +-+ +| ... | ... | > ... |Depth\ :sub:`n-3`|Depth\ :sub:`n-2`|Depth\ :sub:`n-1`| > ++-+-+-+-+- > +-+ -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] uvcvideo: Document Intel SR300 Depth camera INZI format
Hi Evgeni, Thank you for the patch. On Monday 05 Dec 2016 15:24:59 evgeni.raik...@gmail.com wrote: > From: Evgeni Raikhel> > Provide the frame structure and data layout of V4L2-PIX-FMT-INZI > format utilized by Intel SR300 Depth camera. > > This is a complimentary patch for: > [PATCH] UVC: Add support for Intel SR300 depth camera Once the patches will be committed this reference will be harder to use, as it would require searching for the other commit through the whole git history. Here you should instead group related changes in a single patch. The first patch in this series should add the new INZI format to the V4L2 API, with the new format definition in include/uapi/linux/videodev2.h (currently part of patch 1/2) and this documentation. The second patch should then add support for that format in the uvcvideo driver, with the changes to drivers/media/usb/uvc/* from patch 1/2. Could you please split the patches that way and resubmit ? And please see below for additional comments. > Signed-off-by: Evgeni Raikhel > --- > Documentation/media/uapi/v4l/pixfmt-inzi.rst | 40 + > 1 file changed, 40 insertions(+) > create mode 100644 Documentation/media/uapi/v4l/pixfmt-inzi.rst > > diff --git a/Documentation/media/uapi/v4l/pixfmt-inzi.rst > b/Documentation/media/uapi/v4l/pixfmt-inzi.rst new file mode 100644 > index ..cdfdeae4a664 > --- /dev/null > +++ b/Documentation/media/uapi/v4l/pixfmt-inzi.rst > @@ -0,0 +1,40 @@ > +.. -*- coding: utf-8; mode: rst -*- > + > +.. _V4L2-PIX-FMT-INZI: > + > +** > +V4L2_PIX_FMT_INZI ('INZI') > +** > + > +Infrared 10-bit linked with Depth 16-bit images > + > + > +Description > +=== > + > +Custom multi-planar format used by Intel SR300 Depth cameras, comprise of > Infrared image followed by Depth data. +The pixel definition is 32-bpp, > with the Depth and Infrared Data split into separate continuous planes of > identical dimensions. + > +The first plane - Infrared data - is stored in V4L2_PIX_FMT_Y10 (see > :ref:`pixfmt-y10`) greyscale format. Each pixel is 16-bit cell, with actual > data present in the 10 LSBs with values in range 0 to 1023. The six > remaining MSBs are padded with zeros. + > +The second plane provides 16-bit per-pixel Depth data in V4L2_PIX_FMT_Z16 > (:ref:`pixfmt-z16`) format. + The documentation, like source code, should be limited to 80 characters per column. Could you please reformat the file ? > +**Frame Structure.** > +Each cell is a 16-bit word with the significant data byte is stored at > lower memory address (little-endian). + > ++-+-+-+-+-- > ---+-+ +| Ir\ :sub:`0`| Ir\ :sub:`1`| > Ir\ :sub:`2`| ... |... | ... | > ++-+-+-+-+- > +-+ +| ... ... ... > | +| > Infrared Data >| +| > ... ... ... | > ++-+-+-+-+- > +-+ +| Ir\ :sub:`n-3` | Ir\ :sub:`n-2` | > Ir\ :sub:`n-1` | Depth\ :sub:`0` | Depth\ :sub:`1` | Depth\ :sub:`2` | > ++-+-+-+-+- > +-+ +| ... ... ... > | +| > Depth Data >| +| > ... ... ... | > ++-+-+-+-+- > +-+ +| ... | ... | > ... |Depth\ :sub:`n-3`|Depth\ :sub:`n-2`|Depth\ :sub:`n-1`| > ++-+-+-+-+- > +-+ This table is harder to wrap to 80 columns, but if you use the same format description style as the rest of the media documentation the limit shouldn't be an issue. -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 2/2] uvcvideo: Document Intel SR300 Depth camera INZI format
From: Evgeni RaikhelProvide the frame structure and data layout of V4L2-PIX-FMT-INZI format utilized by Intel SR300 Depth camera. This is a complimentary patch for: [PATCH] UVC: Add support for Intel SR300 depth camera Signed-off-by: Evgeni Raikhel --- Documentation/media/uapi/v4l/pixfmt-inzi.rst | 40 1 file changed, 40 insertions(+) create mode 100644 Documentation/media/uapi/v4l/pixfmt-inzi.rst diff --git a/Documentation/media/uapi/v4l/pixfmt-inzi.rst b/Documentation/media/uapi/v4l/pixfmt-inzi.rst new file mode 100644 index ..cdfdeae4a664 --- /dev/null +++ b/Documentation/media/uapi/v4l/pixfmt-inzi.rst @@ -0,0 +1,40 @@ +.. -*- coding: utf-8; mode: rst -*- + +.. _V4L2-PIX-FMT-INZI: + +** +V4L2_PIX_FMT_INZI ('INZI') +** + +Infrared 10-bit linked with Depth 16-bit images + + +Description +=== + +Custom multi-planar format used by Intel SR300 Depth cameras, comprise of Infrared image followed by Depth data. +The pixel definition is 32-bpp, with the Depth and Infrared Data split into separate continuous planes of identical dimensions. + +The first plane - Infrared data - is stored in V4L2_PIX_FMT_Y10 (see :ref:`pixfmt-y10`) greyscale format. Each pixel is 16-bit cell, with actual data present in the 10 LSBs with values in range 0 to 1023. The six remaining MSBs are padded with zeros. + +The second plane provides 16-bit per-pixel Depth data in V4L2_PIX_FMT_Z16 (:ref:`pixfmt-z16`) format. + + +**Frame Structure.** +Each cell is a 16-bit word with the significant data byte is stored at lower memory address (little-endian). + ++-+-+-+-+-+-+ +| Ir\ :sub:`0`| Ir\ :sub:`1`| Ir\ :sub:`2`| ... | ... | ... | ++-+-+-+-+-+-+ +| ... ... ... | +| Infrared Data | +| ... ... ... | ++-+-+-+-+-+-+ +| Ir\ :sub:`n-3` | Ir\ :sub:`n-2` | Ir\ :sub:`n-1` | Depth\ :sub:`0` | Depth\ :sub:`1` | Depth\ :sub:`2` | ++-+-+-+-+-+-+ +| ... ... ... | +| Depth Data | +| ... ... ... | ++-+-+-+-+-+-+ +| ... | ... | ... |Depth\ :sub:`n-3`|Depth\ :sub:`n-2`|Depth\ :sub:`n-1`| ++-+-+-+-+-+-+ -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html