www.pudn.com > VOBSUB.rar > OutMediaTypes.cpp


#include "stdafx.h" 
#include  
#include  
#include "OutMediaTypes.h" 
 
#define VIH_NORMAL (sizeof(VIDEOINFOHEADER)) 
#define VIH_BITFIELDS (sizeof(VIDEOINFOHEADER)+3*sizeof(RGBQUAD)) 
#define VIH2_NORMAL (sizeof(VIDEOINFOHEADER2)) 
#define VIH2_BITFIELDS (sizeof(VIDEOINFOHEADER2)+3*sizeof(RGBQUAD)) 
#define BIH_SIZE (sizeof(BITMAPINFOHEADER)) 
 
VIH vihs[] = 
{ 
	// YUY2 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, mmioFOURCC('Y','U','Y','2'), 0, 0, 0, 0, 0}		// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH_NORMAL,														// size 
		&MEDIASUBTYPE_YUY2												// subtype 
	}, 
	// YV12 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 12, mmioFOURCC('Y','V','1','2'), 0, 0, 0, 0, 0}		// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH_NORMAL,														// size 
		&MEDIASUBTYPE_YV12												// subtype 
	}, 
	// 8888 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 32, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH_NORMAL,														// size 
		&MEDIASUBTYPE_RGB32												// subtype 
	}, 
	// 8888 bitf  
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 32, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0xFF0000, 0x00FF00, 0x0000FF},									// mask[3] 
		VIH_BITFIELDS,													// size 
		&MEDIASUBTYPE_RGB32												// subtype 
	}, 
	// A888 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 32, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH_NORMAL,														// size 
		&MEDIASUBTYPE_ARGB32											// subtype 
	}, 
	// A888 bitf (I'm not sure if this exist...) 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 32, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0xFF0000, 0x00FF00, 0x0000FF},									// mask[3] 
		VIH_BITFIELDS,													// size 
		&MEDIASUBTYPE_ARGB32											// subtype 
	}, 
	// 888 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 24, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH_NORMAL,														// size 
		&MEDIASUBTYPE_RGB24												// subtype 
	}, 
	// 888 bitf  
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 24, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0xFF0000, 0x00FF00, 0x0000FF},									// mask[3] 
		VIH_BITFIELDS,													// size 
		&MEDIASUBTYPE_RGB24												// subtype 
	}, 
	// 565 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH_NORMAL,														// size 
		&MEDIASUBTYPE_RGB565											// subtype 
	}, 
	// 565 bitf 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0xF800, 0x07E0, 0x001F},										// mask[3] 
		VIH_BITFIELDS,													// size 
		&MEDIASUBTYPE_RGB565											// subtype 
	}, 
	// 555 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH_NORMAL,														// size 
		&MEDIASUBTYPE_RGB555											// subtype 
	}, 
	// 555 bitf 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0x7C00, 0x03E0, 0x001F},										// mask[3] 
		VIH_BITFIELDS,													// size 
		&MEDIASUBTYPE_RGB555											// subtype 
	}, 
}; 
 
VIH2 vih2s[] = 
{ 
	// YUY2 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, mmioFOURCC('Y','U','Y','2'), 0, 0, 0, 0, 0}		// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH2_NORMAL,													// size 
		&MEDIASUBTYPE_YUY2												// subtype 
	}, 
	// YV12 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 12, mmioFOURCC('Y','V','1','2'), 0, 0, 0, 0, 0}		// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH2_NORMAL,													// size 
		&MEDIASUBTYPE_YV12												// subtype 
	}, 
	// 8888 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 32, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH2_NORMAL,													// size 
		&MEDIASUBTYPE_RGB32												// subtype 
	}, 
	// 8888 bitf  
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 32, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0xFF0000, 0x00FF00, 0x0000FF},									// mask[3] 
		VIH2_BITFIELDS,													// size 
		&MEDIASUBTYPE_RGB32												// subtype 
	}, 
	// A888 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 32, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH2_NORMAL,													// size 
		&MEDIASUBTYPE_ARGB32											// subtype 
	}, 
	// A888 bitf (I'm not sure if this exist...) 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 32, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0xFF0000, 0x00FF00, 0x0000FF},									// mask[3] 
		VIH2_BITFIELDS,													// size 
		&MEDIASUBTYPE_ARGB32											// subtype 
	}, 
	// 888 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 24, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH2_NORMAL,													// size 
		&MEDIASUBTYPE_RGB24												// subtype 
	}, 
	// 888 bitf  
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 24, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0xFF0000, 0x00FF00, 0x0000FF},									// mask[3] 
		VIH2_BITFIELDS,													// size 
		&MEDIASUBTYPE_RGB24												// subtype 
	}, 
	// 565 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH2_NORMAL,													// size 
		&MEDIASUBTYPE_RGB565											// subtype 
	}, 
	// 565 bitf 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0xF800, 0x07E0, 0x001F},										// mask[3] 
		VIH2_BITFIELDS,													// size 
		&MEDIASUBTYPE_RGB565											// subtype 
	}, 
	// 555 normal 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, BI_RGB, 0, 0, 0, 0, 0}			// bmiHeader 
		},  
		{0, 0, 0},														// mask[3] 
		VIH2_NORMAL,													// size 
		&MEDIASUBTYPE_RGB555											// subtype 
	}, 
	// 555 bitf 
	{ 
		{					 
			{0, 0, 0, 0}, {0, 0, 0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			{BIH_SIZE, 0, 0, 1, 16, BI_BITFIELDS, 0, 0, 0, 0, 0}	// bmiHeader 
		},  
		{0x7C00, 0x03E0, 0x001F},										// mask[3] 
		VIH2_BITFIELDS,													// size 
		&MEDIASUBTYPE_RGB555											// subtype 
	}, 
}; 
 
int VIHSIZE = (sizeof(vihs) / sizeof(vihs[0])); 
 
CString VIH2String(int i) 
{ 
	CString ret = GuidNames[*vihs[i].subtype]; 
	if(!ret.Left(13).CompareNoCase(_T("MEDIASUBTYPE_"))) ret = ret.Mid(13); 
	if(vihs[i].vih.bmiHeader.biCompression == 3) ret += _T(" BITF"); 
	return(ret); 
}