DM368 EVM에서 제공하는 evmdm368_test에는 여러기능을 시험 해볼 수 있는 소스코드가 있다.
그중. Video Colorbar를 LCD에 출력할 수 있는 시험을 하는 lcd Project는 Video0 window에 컬러
바를 출력해준다. DM368-EVM과 같이 YCC422 인터페이스라면 Test Code로 타켓보드를 검증 할 수
있으나 Parallel RGB 인터페이스를 사용한다면 정확한 색감을 얻기 위해서는 변환을 해줘야 한다.
아래 소스는 RGB 0x00XXXXXX (XX:R, XX:G, XX:B)로 원하는 색을 넣으면 YCrCb로 변환하는 소스다.

 Uint32 CVT_RGB_to_YCbCr(Uint32 RGB)
{
  Uint32 Red = 0, Green = 0, Blue = 0;
 int Y = 0, Cb = 0, Cr = 0;
 Uint32 YCbCr = 0;

 Red = (RGB & 0x00FF0000) >> 16;
 Green = (RGB & 0x0000FF00) >> 8;
 Blue = (RGB & 0x000000FF);

 Y  = (int)(((19595 * Red) >> 16) + ((38470 * Green) >> 16) + ((7471  * Blue) >> 16));
 Cb = (int)( -((11059 * Red) >> 16) - ((21709 * Green) >> 16) + ((32768 * Blue) >> 16) + 128 );
 Cr = (int)(((32768 * Red) >> 16) - ((27439 * Green) >> 16) - ((5329  * Blue) >> 16) + 128 );

 Y  = (int)((Y  > 0) ? Y  : 0);  Y  = (int)((Y  < 255) ? Y  : 255);
 Cb = (int)((Cb > 0) ? Cb : 0);  Cb = (int)((Cb < 255) ? Cb : 255);
 Cr = (int)((Cr > 0) ? Cr : 0);  Cr = (int)((Cr < 255) ? Cr : 255);

  YCbCr = 0;
 YCbCr |= (Y << 24);
 YCbCr |= (Cr << 16);
 YCbCr |= (Y << 8);
 YCbCr |= (Cb);

 return YCbCr;
}


lcd_colorbars() 에서 plot(O,O,0x00FF0000) 형식으로 RGB 값을 입력하고,
plot()에서 *addr = CVT_RGB_to_YCbCr(pixeldata); 로 변환해서 넘겨주면 된다.
Posted by 다크쌍피