I thought you were not making sense for a bit. Then I walked away, came back, and I think you're making sense now. So: * Crop always refers to the source image * Compose always refers to the destination image On Sat, Oct 12, 2013 at 1:00 AM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote: > On 10/12/2013 01:48 AM, John Sheu wrote: >> On Wed, Oct 9, 2013 at 11:49 PM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote: >> In all cases, the crop boundary refers to the area in the source >> image; for a CAPTURE device, this is the (presumably analog) sensor, > > Correct. > >> and for an OUTPUT device, this is the memory buffer. > > Correct. Here you are referring to the crop boundary, which is _not_ always what {G,S}_CROP refers to. (Confusing part). {G,S}_CROP refers to the crop boundary only for a CAPTURE queue. >> My particular >> case is a memory-to-memory device, with both CAPTURE and OUTPUT >> queues. In this case, {G,S}_CROP on either the CAPTURE or OUTPUT >> queues should effect exactly the same operation: cropping on the >> source image, i.e. whatever image buffer I'm providing to the OUTPUT >> queue. > > Incorrect. > > S_CROP on an OUTPUT queue does the inverse: it refers to the area in > the sink image. This confused me for a bit (seeming contradiction with the above), until I realized that you're referring to the S_CROP ioctl here, which is _not_ the "crop boundary"; on an OUTPUT queue it refers to the compose boundary. > No, it adds the compose operation for capture and the crop operation for > output, and it uses the terms 'cropping' and 'composing' correctly > without the inversion that S_CROP introduced on the output side. > > Bottom line: S_CROP for capture is equivalent to S_SELECTION(V4L2_SEL_TGT_CROP). > S_CROP for output is equivalent to S_SELECTION(V4L2_SEL_TGT_COMPOSE). So yes. By adding the {G,S}_SELECTION ioctls we can now refer to the compose boundary for CAPTURE, and crop boundary for OUTPUT. Now, here's a question. It seems that for a mem2mem device, since {G,S}_CROP on the CAPTURE queue covers the crop boundary, and {G,S}_CROP on the OUTPUT queue capture the compose boundary, is there any missing functionality that {G,S}_SELECTION is covering here. In other words: for a mem2mem device, the crop and compose boundaries should be identical for the CAPTURE and OUTPUT queues? -John Sheu -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html