|
|
@ -64,7 +64,7 @@ static int (_stdcall *pAVIStreamTimeToSample)( PAVISTREAM pavi, LONG lTime ); |
|
|
|
static void* (_stdcall *pAVIStreamGetFrame)( PGETFRAME pg, LONG lPos ); |
|
|
|
static void* (_stdcall *pAVIStreamGetFrame)( PGETFRAME pg, LONG lPos ); |
|
|
|
static int (_stdcall *pAVIStreamGetFrameClose)( PGETFRAME pg ); |
|
|
|
static int (_stdcall *pAVIStreamGetFrameClose)( PGETFRAME pg ); |
|
|
|
static dword (_stdcall *pAVIStreamRelease)( PAVISTREAM pavi ); |
|
|
|
static dword (_stdcall *pAVIStreamRelease)( PAVISTREAM pavi ); |
|
|
|
static int (_stdcall *pAVIFileOpen)( PAVIFILE *ppfile, LPCSTR szFile, UINT uMode, LPCLSID lpHandler ); |
|
|
|
static int (_stdcall *pAVIFileOpenW)( PAVIFILE *ppfile, LPCWSTR szFile, UINT uMode, LPCLSID lpHandler ); |
|
|
|
static int (_stdcall *pAVIFileGetStream)( PAVIFILE pfile, PAVISTREAM *ppavi, DWORD fccType, LONG lParam ); |
|
|
|
static int (_stdcall *pAVIFileGetStream)( PAVIFILE pfile, PAVISTREAM *ppavi, DWORD fccType, LONG lParam ); |
|
|
|
static int (_stdcall *pAVIStreamReadFormat)( PAVISTREAM pavi, LONG lPos,LPVOID lpFormat, LONG *lpcbFormat ); |
|
|
|
static int (_stdcall *pAVIStreamReadFormat)( PAVISTREAM pavi, LONG lPos,LPVOID lpFormat, LONG *lpcbFormat ); |
|
|
|
static int (_stdcall *pAVIStreamStart)( PAVISTREAM pavi ); |
|
|
|
static int (_stdcall *pAVIStreamStart)( PAVISTREAM pavi ); |
|
|
@ -77,7 +77,7 @@ static dllfunc_t avifile_funcs[] = |
|
|
|
{ "AVIFileExit", (void **) &pAVIFileExit }, |
|
|
|
{ "AVIFileExit", (void **) &pAVIFileExit }, |
|
|
|
{ "AVIFileGetStream", (void **) &pAVIFileGetStream }, |
|
|
|
{ "AVIFileGetStream", (void **) &pAVIFileGetStream }, |
|
|
|
{ "AVIFileInit", (void **) &pAVIFileInit }, |
|
|
|
{ "AVIFileInit", (void **) &pAVIFileInit }, |
|
|
|
{ "AVIFileOpenA", (void **) &pAVIFileOpen }, |
|
|
|
{ "AVIFileOpenW", (void **) &pAVIFileOpenW }, |
|
|
|
{ "AVIFileRelease", (void **) &pAVIFileRelease }, |
|
|
|
{ "AVIFileRelease", (void **) &pAVIFileRelease }, |
|
|
|
{ "AVIStreamGetFrame", (void **) &pAVIStreamGetFrame }, |
|
|
|
{ "AVIStreamGetFrame", (void **) &pAVIStreamGetFrame }, |
|
|
|
{ "AVIStreamGetFrameClose", (void **) &pAVIStreamGetFrameClose }, |
|
|
|
{ "AVIStreamGetFrameClose", (void **) &pAVIStreamGetFrameClose }, |
|
|
@ -494,6 +494,7 @@ void AVI_OpenVideo( movie_state_t *Avi, const char *filename, qboolean load_audi |
|
|
|
AVISTREAMINFO stream_info; |
|
|
|
AVISTREAMINFO stream_info; |
|
|
|
int opened_streams = 0; |
|
|
|
int opened_streams = 0; |
|
|
|
LONG hr; |
|
|
|
LONG hr; |
|
|
|
|
|
|
|
wchar_t pathBuffer[MAX_PATH]; |
|
|
|
|
|
|
|
|
|
|
|
// default state: non-working.
|
|
|
|
// default state: non-working.
|
|
|
|
Avi->active = false; |
|
|
|
Avi->active = false; |
|
|
@ -502,8 +503,15 @@ void AVI_OpenVideo( movie_state_t *Avi, const char *filename, qboolean load_audi |
|
|
|
// can't load Video For Windows :-(
|
|
|
|
// can't load Video For Windows :-(
|
|
|
|
if( !avi_initialized ) return; |
|
|
|
if( !avi_initialized ) return; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// convert to wide char
|
|
|
|
|
|
|
|
if( MultiByteToWideChar( CP_UTF8, 0, filename, -1, pathBuffer, ARRAYSIZE( pathBuffer )) <= 0 ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Con_DPrintf( S_ERROR "filename buffer limit exceeded\n" ); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// load the AVI
|
|
|
|
// load the AVI
|
|
|
|
hr = pAVIFileOpen( &Avi->pfile, filename, OF_SHARE_DENY_WRITE, 0L ); |
|
|
|
hr = pAVIFileOpenW( &Avi->pfile, pathBuffer, OF_SHARE_DENY_WRITE, 0L ); |
|
|
|
|
|
|
|
|
|
|
|
if( hr != 0 ) // error opening AVI:
|
|
|
|
if( hr != 0 ) // error opening AVI:
|
|
|
|
{ |
|
|
|
{ |
|
|
|