On Fri, Apr 17, 2015 at 4:39 AM, Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> wrote: > Hi Chris, > > On Thursday 16 April 2015 13:05:30 Chris Whittenburg wrote: >> On Tue, Apr 7, 2015 at 10:51 AM, Laurent Pinchart wrote: >> > Black level compensation is applied by the CCDC before writing raw frames >> > to memory. If your raw frames are correct BLC is probably not to blame. >> > >> > The default contrast is x1.0 and the default brightness is +0.0, so I >> > don't think those should be blame either. >> > >> > I suspect the RGB2RGB conversion matrix to be wrong. The default setting >> > is supposed to handle fluorescent lighting. You could try setting the >> > RGB2RGB matrix to the identity matrix and see if this helps. See >> > http://git.ideasonboard.org/omap3-isp-live.git/blob/HEAD:/isp/controls.c#l >> > 184 for sample code. >> > >> > Another matrix that could be worth being reprogrammed is the RGB2YUV >> > matrix, which also defaults to fluorescent lighting. Sample code to >> > reprogram it is available in the same location. >> >> I tried changing the rgb2rgb matrx to the identity matrix: >> >> {0x0100, 0x0000, 0x0000}, >> {0x0000, 0x0100, 0x0000}, >> {0x0000, 0x0000, 0x0100} >> >> And the csc (rgb2yuv) to this: >> {256, 0, 0}, >> {0, 0, 0}, >> {0, 0, 0} >> >> But I couldn't see much, if any, difference. >> >> However, when I forced the gamma correction to be bypassed, it seemed to fix >> it. >> >> Does that make sense? I guess I don't understand it enough to understand if >> gamma correction would have compressed all my luma values. > > Yes, it makes sense. Gamma correction applies a non-linear transformation to > the pixel values and can explain the problems you were seeing. > > I've checked the default rgb2rgb matrix, and it should work fine for your case > as all lines add up to 1.0. The default rgb2yuv matrix, however, limits Y > values to 220, so you should modify it. I believe the formula used is: Y = CSCRY*Rin + CSCGY*Gin + CSCBY*Bin +Yoffset If CSCRY=1.0, and Rin is in the range 0 to 255, then the resulting Y would be in the range [0, 255] as well, so why would the matrix limit Y values to 220? Is it because Rin, Gin, and Bin have already been limited to the YCbCr range of [16, 240]? -- 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