[FFmpeg-devel] [PATCH] avisynth: Make sure the filename passed to avisynth is in the right code page
Derek Buitenhuis
derek.buitenhuis at gmail.com
Sat Jun 22 21:06:41 CEST 2013
On 2013-06-21 10:07 AM, Motofumi Oka wrote:
> 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.
> ---
> libavformat/avisynth.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
Gotta love Avisynth. Feels pretty stupid to have WIN32 ifdefs
in Avisynth code, but I guess there's that one guy in existence
who cares about Avxsynth...
> +#ifdef _WIN32
> +#define MAX_AVS_PATH_LENGTH 1024
> + char filename[MAX_AVS_PATH_LENGTH];
> + wchar_t filename_wc[MAX_AVS_PATH_LENGTH];
> +#endif
Where does this max length come from?
> +#ifdef _WIN32
> + // Convert UTF-8 to ASCII code page
> + MultiByteToWideChar(CP_UTF8, 0, s->filename, -1, filename_wc, MAX_AVS_PATH_LENGTH);
> + WideCharToMultiByte(CP_THREAD_ACP, 0, filename_wc, -1, filename, MAX_AVS_PATH_LENGTH, NULL, NULL);
Is it worth it to check the return values here? (I'm guessing
probably not.)
> + arg = avs_new_value_string(filename);
Perhaps call it filename_ansi?
Otherwise, seems OK.
- Derek
More information about the ffmpeg-devel
mailing list