Hi,
I'm using DM816x vpss Video driver, but when input the 1920x1080 YUV420(NV12) 100% color bar
from the decoder to the scaler, color levels fall after the Display Controller.
I show the YUV value before and after Display Controller below.
I want to mach the YUV value before and after Display Controller.
| white | green | red | blue | black | |||||||||||||
| Y | U | V | Y | U | V | Y | U | V | Y | U | V | Y | U | V | |||
| before Display Controller | 235 | 128 | 128 | 144 | 54 | 34 | 82 | 90 | 240 | 41 | 240 | 109 | 16 | 128 | 128 | ||
| after Display Controller | 216 | 128 | 128 | 136 | 61 | 49 | 72 | 96 | 222 | 38 | 226 | 113 | 16 | 128 | 128 | ||
So, I use vpss driver user guide as reference and check the settings of vpss driver and change nodes
from vcompmux:dvo2 to hdcompmux:dvo2.
After change nodes, problem that color levels fall became a little better, but YUV value before
and after Display Controller do not match.
I show the YUV value before and after Display Controller when change nodes
from vcompmux:dvo2 to hdcompmux:dvo2 below.
| white | green | red | blue | black | |||||||||||||
| Y | U | V | Y | U | V | Y | U | V | Y | U | V | Y | U | V | |||
| before Display Controller | 235 | 128 | 128 | 144 | 54 | 34 | 82 | 90 | 240 | 41 | 240 | 109 | 16 | 128 | 128 | ||
| after Display Controller | 234 | 127 | 128 | 147 | 55 | 42 | 77 | 93 | 230 | 40 | 235 | 112 | 16 | 127 | 127 | ||
After that I found that hdcomp has Following some CSC mode and change this mode
by changing source of dctrl.c.
But, in case of the default mode(VPS_CSC_MODE_HDTV_GRAPHICS_Y2R) , YUV value before
and after Display Controller was the most close.
enum vps_cscmode {
VPS_CSC_MODE_SDTV_VIDEO_R2Y = 0,
/**< Select coefficient for SDTV Video */
VPS_CSC_MODE_SDTV_VIDEO_Y2R,
/**< Select coefficient for SDTV Video */
VPS_CSC_MODE_SDTV_GRAPHICS_R2Y,
/**< Select coefficient for SDTV Graphics */
VPS_CSC_MODE_SDTV_GRAPHICS_Y2R,
/**< Select coefficient for SDTV Graphics */
VPS_CSC_MODE_HDTV_VIDEO_R2Y,
/**< Select coefficient for HDTV Video */
VPS_CSC_MODE_HDTV_VIDEO_Y2R,
/**< Select coefficient for HDTV Video */
VPS_CSC_MODE_HDTV_GRAPHICS_R2Y,
/**< Select coefficient for HDTV Graphics */
VPS_CSC_MODE_HDTV_GRAPHICS_Y2R,
/**< Select coefficient for HDTV Graphics */
VPS_CSC_MODE_MAX,
/**< Should be the last value of this enumeration.
Will be used by driver for validating the input parameters. */
VPS_CSC_MODE_NONE = 0xFFFFu
/**< Used when coefficients are provided */
};
Also, I tried to change the Following parameters of the CPROC in vcomp in user settings,
but can not match YUV value before and after Display Controller.
struct vps_cprocciecamcfg {
u32 multcoeff[VPS_CPROC_NUM_COEFF][VPS_CPROC_NUM_COEFF];
/**< Multiplication coefficients in the format
A0, B0, C0 in the first row,
A1, B1, C1 in the second row,
and A2, B2, C2 in the third row. */
u32 s, t, a, cz;
u32 gy, gub, guy, gvg, vgr;
} ;
struct vps_cprocuciecamcfg {
u32 multcoeff[VPS_CPROC_NUM_COEFF][VPS_CPROC_NUM_COEFF];
/**< Multiplication coefficients in the format
A0, B0, C0 in the first row,
A1, B1, C1 in the second row,
and A2, B2, C2 in the third row. */
u32 a, cz, s, x0;
} ;
So,Could you tell me CPROC of parameters, such as YUV value before and after Display Controller match,
or, something else a solution?
Thanks,
fumiya tanaka