@@ -64,7 +64,7 @@ static int (_stdcall *pAVIStreamTimeToSample)( PAVISTREAM pavi, LONG lTime );
64
64
static void * (_stdcall * pAVIStreamGetFrame )( PGETFRAME pg , LONG lPos );
65
65
static int (_stdcall * pAVIStreamGetFrameClose )( PGETFRAME pg );
66
66
static dword (_stdcall * pAVIStreamRelease )( PAVISTREAM pavi );
67
- static int (_stdcall * pAVIFileOpen )( PAVIFILE * ppfile , LPCSTR szFile , UINT uMode , LPCLSID lpHandler );
67
+ static int (_stdcall * pAVIFileOpenW )( PAVIFILE * ppfile , LPCWSTR szFile , UINT uMode , LPCLSID lpHandler );
68
68
static int (_stdcall * pAVIFileGetStream )( PAVIFILE pfile , PAVISTREAM * ppavi , DWORD fccType , LONG lParam );
69
69
static int (_stdcall * pAVIStreamReadFormat )( PAVISTREAM pavi , LONG lPos ,LPVOID lpFormat , LONG * lpcbFormat );
70
70
static int (_stdcall * pAVIStreamStart )( PAVISTREAM pavi );
@@ -77,7 +77,7 @@ static dllfunc_t avifile_funcs[] =
77
77
{ "AVIFileExit" , (void * * ) & pAVIFileExit },
78
78
{ "AVIFileGetStream" , (void * * ) & pAVIFileGetStream },
79
79
{ "AVIFileInit" , (void * * ) & pAVIFileInit },
80
- { "AVIFileOpenA " , (void * * ) & pAVIFileOpen },
80
+ { "AVIFileOpenW " , (void * * ) & pAVIFileOpenW },
81
81
{ "AVIFileRelease" , (void * * ) & pAVIFileRelease },
82
82
{ "AVIStreamGetFrame" , (void * * ) & pAVIStreamGetFrame },
83
83
{ "AVIStreamGetFrameClose" , (void * * ) & pAVIStreamGetFrameClose },
@@ -494,6 +494,7 @@ void AVI_OpenVideo( movie_state_t *Avi, const char *filename, qboolean load_audi
494
494
AVISTREAMINFO stream_info ;
495
495
int opened_streams = 0 ;
496
496
LONG hr ;
497
+ wchar_t pathBuffer [MAX_PATH ];
497
498
498
499
// default state: non-working.
499
500
Avi -> active = false;
@@ -502,8 +503,15 @@ void AVI_OpenVideo( movie_state_t *Avi, const char *filename, qboolean load_audi
502
503
// can't load Video For Windows :-(
503
504
if ( !avi_initialized ) return ;
504
505
506
+ // convert to wide char
507
+ if ( MultiByteToWideChar ( CP_UTF8 , 0 , filename , -1 , pathBuffer , ARRAYSIZE ( pathBuffer )) <= 0 )
508
+ {
509
+ Con_DPrintf ( S_ERROR "filename buffer limit exceeded\n" );
510
+ return ;
511
+ }
512
+
505
513
// load the AVI
506
- hr = pAVIFileOpen ( & Avi -> pfile , filename , OF_SHARE_DENY_WRITE , 0L );
514
+ hr = pAVIFileOpenW ( & Avi -> pfile , pathBuffer , OF_SHARE_DENY_WRITE , 0L );
507
515
508
516
if ( hr != 0 ) // error opening AVI:
509
517
{
0 commit comments