69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
// $Header: G:/SwDev/WDM/Video/bt848/rcs/Pscolspc.cpp 1.4 1998/04/29 22:43:35 tomz Exp $
|
|
|
|
extern "C" {
|
|
#ifndef _STREAM_H
|
|
#include "strmini.h"
|
|
#endif
|
|
}
|
|
|
|
#include "pscolspc.h"
|
|
|
|
/* Method: PsColorSpace::SetColorFormat
|
|
* Purpose: Sets BtPisces color space converter to the given color
|
|
* Input: eaColor: enum of type ColFmt
|
|
* Output: None
|
|
* Note: No error checking is done ( enum is checked by the compiler during compile
|
|
* The function writes to the XXXX register
|
|
*/
|
|
|
|
BOOL VerifyColorFormat( ColFmt val )
|
|
{
|
|
// [WRK] - use constants here for valid formats
|
|
switch( val ) {
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
case 0xe:
|
|
return( TRUE );
|
|
default:
|
|
DebugOut((0, "Caught bad write to ColorFormat (0x%x)\n", val));
|
|
return( FALSE );
|
|
}
|
|
}
|
|
void PsColorSpace::SetColorFormat( ColFmt eColor )
|
|
{
|
|
// save for later use...
|
|
ColorSpace::SetColorFormat( eColor );
|
|
ByteSwap_ = 0;
|
|
|
|
switch ( eColor ) {
|
|
case CF_YUV9:
|
|
eColor = CF_PL_411;
|
|
break;
|
|
case CF_YUV12:
|
|
case CF_I420:
|
|
eColor = CF_PL_422;
|
|
break;
|
|
case CF_UYVY:
|
|
eColor = CF_YUY2;
|
|
ByteSwap_ = 1;
|
|
break;
|
|
}
|
|
|
|
// set the hardware
|
|
if ( VerifyColorFormat(eColor) ) {
|
|
Format_ = eColor;
|
|
} else {
|
|
Format_ = 7;
|
|
DebugOut((0, "Forcing invalid color format to 0x%x\n", Format_));
|
|
}
|
|
}
|
|
|