// Xvid_dec.cpp: implementation of the CXvid_dec class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" //#include "Mp4app.h" #include "Xvid_dec.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CXvid_dec::CXvid_dec() { } CXvid_dec::~CXvid_dec() { } BOOL CXvid_dec::Init(int x,int y,int color_space) { int xerr; m_cx=x; m_cy=y; m_colorspace=color_space; XVID_INIT_PARAM xinit; XVID_DEC_PARAM xparam; xinit.cpu_flags = 0; xvid_init(NULL, 0, &xinit, NULL); xparam.width = x; xparam.height = y; xerr = xvid_decore(NULL, XVID_DEC_CREATE, &xparam, NULL); m_dec_handle = xparam.handle; return TRUE; } BOOL CXvid_dec::Decode(unsigned char * istream,unsigned char * outbuffer,int istream_size,int outbuffer_pitch) { int xerr; XVID_DEC_FRAME xframe; xframe.bitstream = istream; xframe.length = istream_size; xframe.image = outbuffer; xframe.stride = outbuffer_pitch; xframe.colorspace = m_colorspace; BOOL rs = TRUE; __try { xerr = xvid_decore(m_dec_handle, XVID_DEC_DECODE, &xframe, NULL); } __except (EXCEPTION_EXECUTE_HANDLER) { rs = FALSE; } return rs; } BOOL CXvid_dec::Close() { int xerr; xerr = xvid_decore(m_dec_handle, XVID_DEC_DESTROY, NULL, NULL); return TRUE; }