X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Favisynth.c;h=4af58f62f77ba4114158b2e451ca44a6db52677a;hb=410317237663adf9d3f07dbbbf708a8dd49d693c;hp=604afdda8962f0567e07eddd49ca5dee4330fcdb;hpb=a8c99205ca8703bd849efae13fcf844315c7147d;p=ffmpeg diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 604afdda896..4af58f62f77 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -2,20 +2,19 @@ * AviSynth/AvxSynth support * Copyright (c) 2012 AvxSynth Team. * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it and/or + * This file is part of FFmpeg + * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * Libav is distributed in the hope that it will be useful, + * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -27,25 +26,16 @@ /* Enable function pointer definitions for runtime loading. */ #define AVSC_NO_DECLSPEC -/* Platform-specific directives for AviSynth vs AvxSynth. - * - * avisynth_c.h needs to be the one provided with x264, as - * the one in AviSynth's CVS hasn't been updated to support - * 2.6's extra colorspaces. A temporary source of that header, - * installable from a GNU-style Makefile is available from - * github.com/qyot27/avisynth_headers -- AvxSynth doesn't - * require this kind of special treatment because like any - * standard *nix application, it installs its headers - * alongside its libs. */ +/* Platform-specific directives for AviSynth vs AvxSynth. */ #ifdef _WIN32 #include #undef EXTERN_C - #include + #include "compat/avisynth/avisynth_c.h" #define AVISYNTH_LIB "avisynth" #define USING_AVISYNTH #else #include - #include + #include "compat/avisynth/avxsynth_c.h" #if defined (__APPLE__) #define AVISYNTH_LIB "libavxsynth.dylib" #else @@ -149,15 +139,15 @@ static av_cold int avisynth_load_library(void) LOAD_AVS_FUNC(avs_release_video_frame, 0); LOAD_AVS_FUNC(avs_take_clip, 0); #ifdef USING_AVISYNTH - LOAD_AVS_FUNC(avs_bits_per_pixel, 0); - LOAD_AVS_FUNC(avs_get_height_p, 0); - LOAD_AVS_FUNC(avs_get_pitch_p, 0); - LOAD_AVS_FUNC(avs_get_read_ptr_p, 0); - LOAD_AVS_FUNC(avs_get_row_size_p, 0); - LOAD_AVS_FUNC(avs_is_yv24, 0); - LOAD_AVS_FUNC(avs_is_yv16, 0); - LOAD_AVS_FUNC(avs_is_yv411, 0); - LOAD_AVS_FUNC(avs_is_y8, 0); + LOAD_AVS_FUNC(avs_bits_per_pixel, 1); + LOAD_AVS_FUNC(avs_get_height_p, 1); + LOAD_AVS_FUNC(avs_get_pitch_p, 1); + LOAD_AVS_FUNC(avs_get_read_ptr_p, 1); + LOAD_AVS_FUNC(avs_get_row_size_p, 1); + LOAD_AVS_FUNC(avs_is_yv24, 1); + LOAD_AVS_FUNC(avs_is_yv16, 1); + LOAD_AVS_FUNC(avs_is_yv411, 1); + LOAD_AVS_FUNC(avs_is_y8, 1); #endif #undef LOAD_AVS_FUNC @@ -416,13 +406,14 @@ static int avisynth_open_file(AVFormatContext *s) avs->vi = avs_library.avs_get_video_info(avs->clip); #ifdef USING_AVISYNTH - /* libav only supports AviSynth 2.6 on Windows. Since AvxSynth - * identifies itself as interface version 3 like 2.5.8, this - * needs to be special-cased. */ + /* On Windows, FFmpeg supports AviSynth interface version 6 or higher. + * This includes AviSynth 2.6 RC1 or higher, and AviSynth+ r1718 or higher, + * and excludes 2.5 and the 2.6 alphas. Since AvxSynth identifies itself + * as interface version 3 like 2.5.8, this needs to be special-cased. */ - if (avs_library.avs_get_version(avs->clip) == 3) { + if (avs_library.avs_get_version(avs->clip) < 6) { av_log(s, AV_LOG_ERROR, - "AviSynth 2.5.8 not supported. Please upgrade to 2.6.\n"); + "AviSynth version is too old. Please upgrade to either AviSynth 2.6 >= RC1 or AviSynth+ >= r1718.\n"); ret = AVERROR_UNKNOWN; goto fail; }