I wont to set contrast / brightnes on image witch is in form byte[]. The image is in YCbCr_420 color space (android camera). I am geting luma value this way :
f
The little that I know from this API is that the values for the 3 channels are concatenated in a byte array. So, likewise in Windows working with RGB, I guess here you have the same, I mean, every 3 bytes representing one pixel. So I GUESS, you could access it jumping every 3 positions to access only one single channel (Luma in your case). I just don't know if the luma is represented by the first, second or third byte.
Second, if I understand you just want to change bright/contrast (increase/decrease) is that correct? Because if so, contrast is just multiplication and brightness is addition.
For instance - pseudo code assuming you are working with 8bits channel:
luma[y] = luma[y] * 1.10; //Increases contrast
or you can have a more generic form:
luma[y] = luma[y] + (luma[y] * contrast); //where contrast ranges from -1.0 to 1.0
Similarly you can do the same with brightness:
luma[y] = luma[y] + bright; //Where bright can range from -255 to 255
In both cases you have to be careful with overflows and underflows before you assign the final pixel result to your image.
YUV processing is best demonstrated in the APLEAGLView.m file of this sample app:
https://developer.apple.com/library/ios/samplecode/AVBasicVideoOutput/Listings/AVBasicVideoOutput_APLEAGLView_m.html#//apple_ref/doc/uid/DTS40013109-AVBasicVideoOutput_APLEAGLView_m-DontLinkElementID_6
Proper adjustments to brightness and contrast so that they maintain their relationship in proportion to each other is demonstrated in the Shader.fsh file at:
https://developer.apple.com/library/ios/samplecode/AVBasicVideoOutput/Listings/AVBasicVideoOutput_Shaders_Shader_fsh.html#//apple_ref/doc/uid/DTS40013109-AVBasicVideoOutput_Shaders_Shader_fsh-DontLinkElementID_9
If you need help interpeting the code, I can help. For now, though, using a user-specified luma threshold value, the luma-adjusted Y plane is calculated like this:
Y' = (Y - (16 / 255)) * lumaThreshold;