On 06/20/2016 10:38 PM, Dave Stevenson wrote: > Hi Hans. > > On 20/06/16 18:03, Hans Verkuil wrote: >> On 06/20/2016 06:20 PM, Sakari Ailus wrote: >>> The 10-bit packed raw bayer format documented that the data of the first >>> pixel of a four-pixel group was found in the first byte and the two >>> highest bits of the fifth byte. This was not entirely correct. The two >>> bits in the fifth byte are the two lowest bits. The second pixel occupies >>> the second byte and third and fourth least significant bits and so on. >>> >>> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> >> As mentioned, this needs confirmation. I wonder, isn't this specified in the UVC >> spec? I can't find anything in the uvc spec. This format was apparently added for an Intel R200 3D camera, so I suspect it followed the SMIA/CSI standard and that the doc is indeed wrong. So: Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Regards, Hans >> >> Regards, >> >> Hans > I'm assuming this is intended to be the same format as generated by many > Bayer sensors. > Those are defined in both the SMIA CCP2 (section 7.9), and MIPI CSI2 > (section 11.4.4) specs. Whilst nominally restricted, they are both > available via unofficial websites if you Google for them (I'm happy to > send links, but didn't want to break mailing list rules by just posting > them). > CSI2 draft spec Figure 98 "RAW10 Data Transmission on CSI-2 Bus Bitwise > Illustration" is probably the clearest confirmation of the bit ordering. > > dcraw from http://www.cybercom.net/~dcoffin/dcraw/ can consume Raw10 via > nokia_load_raw > for (dp=data, col=0; col < raw_width; dp+=5, col+=4) > FORC4 RAW(row,col+c) = (dp[c] << 2) | (dp[4] >> (c << 1) & 3); > > And checking against the Raspberry Pi hardware simulator, the RAW10 > parser code has > for (i = 0; i < width; i++) { > switch ((i + tile_x) & 3) { > case 0: val = (buf[0] << 2) | (buf[4] & 3); break; > case 1: val = (buf[1] << 2) | ((buf[4] >> 2) & 3); > break; > case 2: val = (buf[2] << 2) | ((buf[4] >> 4) & 3); > break; > default: val = (buf[3] << 2) | ((buf[4] >> 6) & 3); > > > All of those agree with Sakari's update that the first pixel's LSBits > are in bits 1..0 of byte 5, 2nd pixel in bits 3..2, etc. > > Regards, > Dave > (working on the Pi CSI2 receiver V4L2 driver as there is now sufficient > data in the public domain to do it. I'll be wanting these formats!) > -- > 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 > -- 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