Hi Thomas and Sylwester,

Apologies for my late reply.

On Sat, Jul 06, 2013 at 09:58:23PM +0200, Sylwester Nawrocki wrote:
> Hi Thomas,
> 
> Cc: Sakari and Laurent
> 
> On 07/05/2013 10:22 AM, Thomas Vajzovic wrote:
> >Hello,
> >
> >I am writing a driver for the sensor MT9D131.  This device supports
> >digital zoom and JPEG compression.
> >
> >Although I am writing it for my company's internal purposes, it will
> >be made open-source, so I would like to keep the API as portable as
> >possible.
> >
> >The hardware reads AxB sensor pixels from its array, resamples them
> >to CxD image pixels, and then compresses them to ExF bytes.
> >
> >The subdevice driver sets size AxB to the value it receives from
> >v4l2_subdev_video_ops.s_crop().
> >
> >To enable compression then v4l2_subdev_video_ops.s_mbus_fmt() is
> >called with fmt->code=V4L2_MBUS_FMT_JPEG_1X8.
> >
> >fmt->width and fmt->height then ought to specify the size of the
> >compressed image ExF, that is, the size specified is the size in the
> >format specified (the number of JPEG_1X8), not the size it would be
> >in a raw format.
> 
> In VIDIOC_S_FMT 'sizeimage' specifies size of the buffer for the
> compressed frame at the bridge driver side. And width/height should
> specify size of the re-sampled (binning, skipping ?) frame - CxD,
> if I understand what  you are saying correctly.
> 
> I don't quite what transformation is done at CxD -> ExF. Why you are
> using ExF (two numbers) to specify number of bytes ? And how can you
> know exactly beforehand what is the frame size after compression ?
> Does the sensor transmit fixed number of bytes per frame, by adding
> some padding bytes if required to the compressed frame data ?
> 
> Is it something like:
> 
> sensor matrix (AxB pixels) -> binning/skipping (CxD pixels) ->
> -> JPEG compresion (width = C, height = D, sizeimage ExF bytes)
> 
> ?
> >This allows the bridge driver to be compression agnostic.  It gets
> >told how many bytes to allocate per buffer and it reads that many
> >bytes.  It doesn't have to understand that the number of bytes isn't
> >directly related to the number of pixels.
> >
> >So how does the user tell the driver what size image to capture
> >before compression, CxD?
> 
> I think you should use VIDIOC_S_FMT(width = C, height = D, sizeimage = ExF)
> for that. And s_frame_desc sudev op could be used to pass sizeimage to the
> sensor subdev driver.

Agreed. Let me take this into account in the next RFC.

> >(or alternatively, if you disagree and think CxD should be specified
> >by s_fmt(), then how does the user specify ExF?)

Does the user need to specify ExF, for other purposes than limiting the size
of the image? I would leave this up to the sensor driver (with reasonable
alignment). The sensor driver would tell about this to the receiver through
frame descriptors. (But still I don't think frame descriptors should be
settable; what sensors can support is fully sensor specific and the
parameters that typically need to be changed are quite limited in numbers.
So I'd go with e.g. controls, again.)

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi     XMPP: sai...@retiisi.org.uk
--
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

Reply via email to