最近搞那个SDL播放用USB摄像头采集的数据,其实YUV的数据格式有很多种,一般都要针对相应的格式取得帧数据来给SDL描绘才行。我的摄像头取得的数据是YUY2的,大概过程如下所示:
bool CSDL_playerDlg::InitSDL(HWND m_hWnd)
{ //初始化,这里主要是把SDL的窗口嵌入到MFC的控件中
char sdl_var[64];
sprintf(sdl_var,"SDL_WINDOWID=0x%1x",m_hWnd);//在窗口初始化时加入InitSDL(this->GetDlgItem(IDC_STATIC)->GetSafeHwnd());
SDL_putenv(sdl_var);
char *myvalue = SDL_getenv("SDL_WINDOWID"); //让SDL取得窗口ID
atexit(SDL_Quit);
pscreen = SDL_SetVideoMode(WIDTH,HEIGHT,24,SDL_SWSURFACE); //设置播放模式
if(pscreen == NULL)
{
TRACE("error SDL SetVideoMode! - %s", SDL_GetError());
return false;
}
poverlay = SDL_CreateYUVOverlay(WIDTH,HEIGHT,SDL_YUY2_OVERLAY,pscreen); //创建绘制YUV数据的句柄
if(poverlay == NULL)
{
TRACE("error SDL CreateYUVOverlay! - %s", SDL_GetError());
re