www.pudn.com > src.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); }