From 5c742005fb7854dcfaa9f0efb65fd36a63ceaa2b Mon Sep 17 00:00:00 2001 From: Oka Motofumi Date: Thu, 31 May 2012 02:14:43 +0900 Subject: avisynth: Make sure the filename passed to avisynth is in the right code page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit avisynth is a non-unicode application and cannot accept UTF-8 characters. Therefore, the input filename should be converted to the correct code page that it expects. Signed-off-by: Martin Storsjö --- libavformat/avisynth.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libavformat/avisynth.c') diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 3b695a9a0a..c4c523dc8a 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -49,10 +49,15 @@ static int avisynth_read_header(AVFormatContext *s) DWORD id; AVStream *st; AVISynthStream *stream; + wchar_t filename_wchar[1024] = { 0 }; + char filename_char[1024] = { 0 }; AVIFileInit(); - res = AVIFileOpen(&avs->file, s->filename, OF_READ|OF_SHARE_DENY_WRITE, NULL); + /* avisynth can't accept UTF-8 filename */ + MultiByteToWideChar(CP_UTF8, 0, s->filename, -1, filename_wchar, 1024); + WideCharToMultiByte(CP_THREAD_ACP, 0, filename_wchar, -1, filename_char, 1024, NULL, NULL); + res = AVIFileOpen(&avs->file, filename_char, OF_READ|OF_SHARE_DENY_WRITE, NULL); if (res != S_OK) { av_log(s, AV_LOG_ERROR, "AVIFileOpen failed with error %ld", res); -- cgit v1.2.3