[FFmpeg-cvslog] avisynth: Make sure the filename passed to avisynth is in the right code page

Oka Motofumi git at videolan.org
Fri Jun 1 20:05:35 CEST 2012


ffmpeg | branch: master | Oka Motofumi <chikuzen.mo at gmail.com> | Thu May 31 02:14:43 2012 +0900| [5c742005fb7854dcfaa9f0efb65fd36a63ceaa2b] | committer: Martin Storsjö

avisynth: Make sure the filename passed to avisynth is in the right code page

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ö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5c742005fb7854dcfaa9f0efb65fd36a63ceaa2b
---

 libavformat/avisynth.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c
index 3b695a9..c4c523d 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);



More information about the ffmpeg-cvslog mailing list