[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