[ffmpeg] upstream merge and related gn files update

Test: built locally and ran mediaplayer_tests

Fixed: 51657

Change-Id: I8f34cefc94e4376bff75997b097afc68be7c0999
diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000..a7d14048
--- /dev/null
+++ b/BUILD.gn
@@ -0,0 +1,235 @@
+# Copyright 2017 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("ffmpeg_options.gni")
+import("ffmpeg_generated.gni")
+
+# Path to configuration files.
+ffmpeg_config_root = "fuchsia/config/$ffmpeg_profile/$current_cpu"
+
+has_yasm_deps = ffmpeg_yasm_sources != [] && current_cpu == "x64"
+if (has_yasm_deps) {
+  import("//third_party/yasm/yasm_assemble.gni")
+  yasm_assemble("ffmpeg_yasm") {
+    sources = ffmpeg_yasm_sources
+
+    # Ensure the architecture defines go in the command line before the -P
+    # file below, so don't use defines.
+    yasm_flags = []
+    if (current_cpu == "x86") {
+      yasm_flags += [ "-DARCH_X86_32" ]
+    } else if (current_cpu == "x64") {
+      yasm_flags += [ "-DARCH_X86_64" ]
+    }
+
+    inputs = [
+      # Sets visibility hidden for cglobal functions. Explicitly included
+      # to avoid overlooking changes to this file in incremental builds.
+      "libavutil/x86/x86inc.asm",
+    ]
+
+    defines = [ "PIC" ]
+    include_dirs = [
+      ffmpeg_config_root,
+      "libavcodec/x86",
+      "libavutil/x86",
+      ".",
+    ]
+
+    # Disable warnings, prevents log spam for things we won't fix.
+    yasm_flags += [
+      "-w",
+      "-P",
+      rebase_path("$ffmpeg_config_root/config.asm", root_build_dir),
+    ]
+
+    if (is_mac) {
+      # Necessary to ensure symbols end up with a _ prefix; added by
+      # yasm_assemble.gni for Windows, but not Mac.
+      defines += [ "PREFIX" ]
+    }
+  }
+}
+
+config("ffmpeg_dependent_config") {
+  include_dirs = [
+    ffmpeg_config_root,
+    ".",
+  ]
+}
+
+# gn orders flags on a target before flags from configs. The default config
+# adds -Wall, and these flags have to be after -Wall -- so they need to come
+# from a config and can't be on the target directly.
+config("ffmpegsumo_warnings") {
+  cflags = [
+    "-Wno-absolute-value",
+
+    # ffmpeg uses its own deprecated functions.
+    "-Wno-deprecated-declarations",
+
+    # ffmpeg doesn't care about pointer constness.
+    "-Wno-incompatible-pointer-types",
+
+    # ffmpeg doesn't follow usual parentheses conventions.
+    "-Wno-logical-op-parentheses",
+
+    # ffmpeg doesn't care about pointer signedness.
+    "-Wno-parentheses",
+
+    # ffmpeg doesn't care about pointer signedness.
+    "-Wno-pointer-sign",
+
+    # ffmpeg doesn't believe in exhaustive switch statements.
+    "-Wno-switch",
+
+    # matroskadec.c has a "failed:" label that's only used if some
+    # CONFIG_ flags we don't set are set.
+    "-Wno-unused-label",
+
+    # ffmpeg has a lot of unused variables.
+    "-Wno-unused-variable",
+
+    # This fires on `av_assert0(!"valid element size")` in utils.c
+    "-Wno-string-conversion",
+
+    # This fires on `pos_min` and `pos_max` in
+    # autorename_libavformat_utils.c
+    "-Wno-sometimes-uninitialized",
+
+    # ffmpeg contains static functions in header files, which lead
+    # to unused function warnings. There are a few legit unused
+    # functions too.
+    "-Wno-unused-function",
+
+    # vp3data.h's vp31_inter_dequant stores '128' in an int8_t array.
+    "-Wno-constant-conversion",
+
+    "-Wno-string-plus-int",
+
+    # ffmpeg compares ints and floats.
+    "-Wno-implicit-int-float-conversion",
+
+    # fmmpeg may have questionable indentation. We should come back later
+    # to confirm if this indentation is expected.
+    "-Wno-misleading-indentation",
+  ]
+}
+
+config("ffmpeg_warnings") {
+  cflags = [
+    "-Wno-sign-compare",
+    "-Wno-missing-field-initializers",
+    "-Wno-pointer-bool-conversion",
+    "-Wno-implicit-int-float-conversion",
+    "-Wno-string-plus-int",
+    "-Wno-misleading-indentation",
+  ]
+}
+
+shared_library("ffmpeg") {
+  sources = ffmpeg_c_sources + ffmpeg_gas_sources + [
+              "$ffmpeg_config_root/config.h",
+              "$ffmpeg_config_root/libavutil/avconfig.h",
+            ]
+  public_configs = [ ":ffmpeg_dependent_config" ]
+  defines = [
+    "HAVE_AV_CONFIG_H",
+    "_POSIX_C_SOURCE=200112",
+    "_XOPEN_SOURCE=600",
+    "PIC",
+
+    # Disable deprecated features that generate spammy warnings.
+    "FF_API_CONVERGENCE_DURATION=0",
+
+    # Upstream libavcodec/utils.c still uses the deprecated
+    # av_dup_packet(), avcodec_encode_{audio,video}2(), and
+    # libavformat/utils.c still accesses the deprecated AVStream.codec,
+    # causing deprecation warnings.
+    # The normal fix for such things is to disable the features like setting
+    # "FF_API_AVPACKET_OLD_API=0", but the upstream code does not yet compile
+    # with it disabled (in the case of av_dup_packet()), and has no FF_API*
+    # gate for avcodec_encode_{audio,video}2() or AVStream.codec.  In the
+    # meantime, we directly disable those warnings locally in the C files.
+  ]
+
+  # So we can append below and assume they're defined.
+  cflags = []
+  ldflags = []
+  libs = []
+  deps = [
+    "//third_party/opus",
+  ]
+
+  configs += [
+    ":ffmpeg_warnings",
+    ":ffmpegsumo_warnings",
+  ]
+
+  # Since we are not often debugging FFmpeg, and performance is
+  # unacceptable without optimization, freeze the optimizations to -O2.
+  # If someone really wants -O1 , they can change these in their checkout.
+  # If you want -O0, see the Gotchas in README.fuchsia for why that
+  # won't work.
+  #
+  # In addition to the above reasons, /Od optimization won't remove symbols
+  # that are under "if (0)" style sections.  Which lead to link time errors
+  # when for example it tries to link an ARM symbol on X86.
+  if (is_debug) {
+    configs -= [ "//build/config:debug" ]
+    configs += [ "//build/config:release" ]
+  }
+
+  # Make all symbols visible.
+  configs -= [ "//build/config:symbol_visibility_hidden" ]
+
+  cflags += [
+    # ffmpeg uses its own deprecated functions.
+    "-Wno-deprecated-declarations",
+  ]
+
+  if (current_cpu == "arm64") {
+    asmflags = []
+    if (arm_float_abi == "hard") {
+      asmflags += [ "-DHAVE_VFP_ARGS=1" ]
+    } else {
+      asmflags += [ "-DHAVE_VFP_ARGS=0" ]
+    }
+  }
+
+  defines += [
+    "_ISOC99_SOURCE",
+    "_LARGEFILE_SOURCE",
+  ]
+
+  cflags += [
+    "-std=c99",
+    "-pthread",
+    "-fno-math-errno",
+    "-fno-signed-zeros",
+    "-fno-tree-vectorize",
+    "-fomit-frame-pointer",
+  ]
+  ldflags = [
+    # Avoid PIC relocation errors from assembly code.
+    "-Wl,-Bsymbolic",
+    "-L",
+    rebase_path(target_gen_dir, root_build_dir),
+  ]
+
+  if (has_yasm_deps) {
+    deps += [ ":ffmpeg_yasm" ]
+  }
+
+  # TODO(46940): UBSan has found an instance of undefined behavior in this target.
+  # Disable UBSan for this target temporarily until it is migrated into CI/CQ.
+  configs += [ "//build/config:temporarily_disable_ubsan_do_not_use" ]
+}
+
+group("ffmpeg_variants") {
+  deps = []
+  foreach(variant, select_variant) {
+    deps += [ ":ffmpeg(${toolchain_variant.base}-${variant}-shared)" ]
+  }
+}
diff --git a/CREDITS.fuchsia b/CREDITS.fuchsia
new file mode 100644
index 0000000..31e50f7
--- /dev/null
+++ b/CREDITS.fuchsia
@@ -0,0 +1,952 @@
+# License
+
+Most files in FFmpeg are under the GNU Lesser General Public License version 2.1
+or later (LGPL v2.1+). Read the file `COPYING.LGPLv2.1` for details. Some other
+files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to
+FFmpeg.
+
+Some optional parts of FFmpeg are licensed under the GNU General Public License
+version 2 or later (GPL v2+). See the file `COPYING.GPLv2` for details. None of
+these parts are used by default, you have to explicitly pass `--enable-gpl` to
+configure to activate them. In this case, FFmpeg's license changes to GPL v2+.
+
+Specifically, the GPL parts of FFmpeg are:
+
+- libpostproc
+- optional x86 optimization in the files
+    - `libavcodec/x86/flac_dsp_gpl.asm`
+    - `libavcodec/x86/idct_mmx.c`
+    - `libavfilter/x86/vf_removegrain.asm`
+- the following building and testing tools
+    - `compat/solaris/make_sunver.pl`
+    - `doc/t2h.pm`
+    - `doc/texi2pod.pl`
+    - `libswresample/tests/swresample.c`
+    - `tests/checkasm/*`
+    - `tests/tiny_ssim.c`
+- the following filters in libavfilter:
+    - `signature_lookup.c`
+    - `vf_blackframe.c`
+    - `vf_boxblur.c`
+    - `vf_colormatrix.c`
+    - `vf_cover_rect.c`
+    - `vf_cropdetect.c`
+    - `vf_delogo.c`
+    - `vf_eq.c`
+    - `vf_find_rect.c`
+    - `vf_fspp.c`
+    - `vf_histeq.c`
+    - `vf_hqdn3d.c`
+    - `vf_kerndeint.c`
+    - `vf_lensfun.c` (GPL version 3 or later)
+    - `vf_mcdeint.c`
+    - `vf_mpdecimate.c`
+    - `vf_nnedi.c`
+    - `vf_owdenoise.c`
+    - `vf_perspective.c`
+    - `vf_phase.c`
+    - `vf_pp.c`
+    - `vf_pp7.c`
+    - `vf_pullup.c`
+    - `vf_repeatfields.c`
+    - `vf_sab.c`
+    - `vf_signature.c`
+    - `vf_smartblur.c`
+    - `vf_spp.c`
+    - `vf_stereo3d.c`
+    - `vf_super2xsai.c`
+    - `vf_tinterlace.c`
+    - `vf_uspp.c`
+    - `vf_vaguedenoiser.c`
+    - `vsrc_mptestsrc.c`
+
+Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then
+the configure parameter `--enable-version3` will activate this licensing option
+for you. Read the file `COPYING.LGPLv3` or, if you have enabled GPL parts,
+`COPYING.GPLv3` to learn the exact legal terms that apply in this case.
+
+There are a handful of files under other licensing terms, namely:
+
+* The files `libavcodec/jfdctfst.c`, `libavcodec/jfdctint_template.c` and
+  `libavcodec/jrevdct.c` are taken from libjpeg, see the top of the files for
+  licensing details. Specifically note that you must credit the IJG in the
+  documentation accompanying your program if you only distribute executables.
+  You must also indicate any changes including additions and deletions to
+  those three files in the documentation.
+* `tests/reference.pnm` is under the expat license.
+
+
+## External libraries
+
+FFmpeg can be combined with a number of external libraries, which sometimes
+affect the licensing of binaries resulting from the combination.
+
+### Compatible libraries
+
+The following libraries are under GPL version 2:
+- avisynth
+- frei0r
+- libcdio
+- libdavs2
+- librubberband
+- libvidstab
+- libx264
+- libx265
+- libxavs
+- libxavs2
+- libxvid
+
+When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by
+passing `--enable-gpl` to configure.
+
+The following libraries are under LGPL version 3:
+- gmp
+- libaribb24
+- liblensfun
+
+When combining them with FFmpeg, use the configure option `--enable-version3` to
+upgrade FFmpeg to the LGPL v3.
+
+The VMAF, mbedTLS, RK MPI, OpenCORE and VisualOn libraries are under the Apache License
+2.0. That license is incompatible with the LGPL v2.1 and the GPL v2, but not with
+version 3 of those licenses. So to combine these libraries with FFmpeg, the
+license version needs to be upgraded by passing `--enable-version3` to configure.
+
+The smbclient library is under the GPL v3, to combine it with FFmpeg,
+the options `--enable-gpl` and `--enable-version3` have to be passed to
+configure to upgrade FFmpeg to the GPL v3.
+
+### Incompatible libraries
+
+There are certain libraries you can combine with FFmpeg whose licenses are not
+compatible with the GPL and/or the LGPL. If you wish to enable these
+libraries, even in circumstances that their license may be incompatible, pass
+`--enable-nonfree` to configure. This will cause the resulting binary to be
+unredistributable.
+
+The Fraunhofer FDK AAC and OpenSSL libraries are under licenses which are
+incompatible with the GPLv2 and v3. To the best of our knowledge, they are
+compatible with the LGPL.
+
+
+********************************************************************************
+
+libavformat/oggparsespeex.c
+
+Copyright (C) 2008  Reimar Döffinger
+
+      Permission is hereby granted, free of charge, to any person
+      obtaining a copy of this software and associated documentation
+      files (the "Software"), to deal in the Software without
+      restriction, including without limitation the rights to use, copy,
+      modify, merge, publish, distribute, sublicense, and/or sell copies
+      of the Software, and to permit persons to whom the Software is
+      furnished to do so, subject to the following conditions:
+
+      The above copyright notice and this permission notice shall be
+      included in all copies or substantial portions of the Software.
+
+      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+      EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+      MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+      NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+      HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+      WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+      OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+      DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
+libavutil/avsscanf.c
+
+Copyright (c) 2005-2014 Rich Felker, et al.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
+libavcodec/x86/xvididct.asm
+
+XVID MPEG-4 VIDEO CODEC
+
+ Conversion from gcc syntax to x264asm syntax with modifications
+ by Christophe Gisquet <christophe.gisquet@gmail.com>
+
+ ===========     SSE2 inverse discrete cosine transform     ===========
+
+ Copyright(C) 2003 Pascal Massimino <skal@planet-d.net>
+
+ Conversion to gcc syntax with modifications
+ by Alexander Strange <astrange@ithinksw.com>
+
+ Originally from dct/x86_asm/fdct_sse2_skal.asm in Xvid.
+
+ Vertical pass is an implementation of the scheme:
+  Loeffler C., Ligtenberg A., and Moschytz C.S.:
+  Practical Fast 1D DCT Algorithm with Eleven Multiplications,
+  Proc. ICASSP 1989, 988-991.
+
+ Horizontal pass is a double 4x4 vector/matrix multiplication,
+ (see also Intel's Application Note 922:
+  http://developer.intel.com/vtune/cbts/strmsimd/922down.htm
+  Copyright (C) 1999 Intel Corporation)
+
+ More details at http://skal.planet-d.net/coding/dct.html
+
+ =======     MMX and XMM forward discrete cosine transform     =======
+
+ Copyright(C) 2001 Peter Ross <pross@xvid.org>
+
+ Originally provided by Intel at AP-922
+ http://developer.intel.com/vtune/cbts/strmsimd/922down.htm
+ (See more app notes at http://developer.intel.com/vtune/cbts/strmsimd/appnotes.htm)
+ but in a limited edition.
+ New macro implements a column part for precise iDCT
+ The routine precision now satisfies IEEE standard 1180-1990.
+
+ Copyright(C) 2000-2001 Peter Gubanov <peter@elecard.net.ru>
+ Rounding trick Copyright(C) 2000 Michel Lespinasse <walken@zoy.org>
+
+ http://www.elecard.com/peter/idct.html
+ http://www.linuxvideo.org/mpeg2dec/
+
+ These examples contain code fragments for first stage iDCT 8x8
+ (for rows) and first stage DCT 8x8 (for columns)
+
+ conversion to gcc syntax by Michael Niedermayer
+
+ ======================================================================
+
+ 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.
+
+ 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 FFmpeg; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+********************************************************************************
+
+libswresample/version.h
+
+Version macros.
+
+This file is part of libswresample
+
+libswresample 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.
+
+libswresample 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 libswresample; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+********************************************************************************
+
+libavformat/oggparsetheora.c
+
+Copyright (C) 2005  Matthieu CASTET, Alex Beregszaszi
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
+libswresample/swresample.h
+
+Copyright (C) 2011-2013 Michael Niedermayer (michaelni@gmx.at)
+
+This file is part of libswresample
+
+libswresample 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.
+
+libswresample 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 libswresample; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+********************************************************************************
+
+libavcodec/jfdctfst.c
+libavcodec/jfdctint_template.c
+libavcodec/jrevdct.c
+
+This file is part of the Independent JPEG Group's software.
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and
+you, its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1994-1996, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to
+these conditions:
+(1) If any part of the source code for this software is distributed, then
+this README file must be included, with this copyright and no-warranty
+notice unaltered; and any additions, deletions, or changes to the original
+files must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work
+of the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG
+code, not just to the unmodified library.  If you use our work, you ought
+to acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company
+name in advertising or publicity relating to this software or products
+derived from it.  This software may be referred to only as "the Independent
+JPEG Group's software".
+
+We specifically permit and encourage the use of this software as the basis
+of commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+********************************************************************************
+
+libavcodec/fft_fixed_32.c
+libavcodec/fft_init_table.c
+libavcodec/fft_table.h
+libavcodec/mdct_fixed_32.c
+libavcodec/mips/aacdec_mips.h
+libavcodec/mips/aacsbr_mips.h
+libavcodec/mips/amrwbdec_mips.h
+libavcodec/mips/compute_antialias_fixed.h
+libavcodec/mips/compute_antialias_float.h
+libavcodec/mips/lsp_mips.h
+libavutil/fixed_dsp.c
+libavutil/fixed_dsp.h
+libavutil/mips/libm_mips.h
+libavutil/softfloat_tables.h
+
+Copyright (c) 2012
+MIPS Technologies, Inc., California.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+3. Neither the name of the MIPS Technologies, Inc., nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+Authors:
+Branimir Vasic   (bvasic@mips.com)
+Darko Laus       (darko@mips.com)
+Djordje Pesut    (djordje@mips.com)
+Goran Cordasic   (goran@mips.com)
+Nedeljko Babic   (nedeljko.babic imgtec com)
+Mirjana Vulin    (mvulin@mips.com)
+Stanislav Ocovaj (socovaj@mips.com)
+Zoran Lukic      (zoranl@mips.com)
+
+********************************************************************************
+
+libavformat/oggdec.c
+libavformat/oggdec.h
+libavformat/oggparseogm.c
+libavformat/oggparsevorbis.c
+
+Copyright (C) 2005  Michael Ahlberg, Måns Rullgård
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library 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.
+
+    This library 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 this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
\ No newline at end of file
diff --git a/README.fuchsia b/README.fuchsia
new file mode 100644
index 0000000..9ef4359
--- /dev/null
+++ b/README.fuchsia
@@ -0,0 +1,102 @@
+Name: ffmpeg
+URL: http://ffmpeg.org/
+License: LGPL 2.1
+License File: CREDITS.fuchsia
+Upstream Git: git://source.ffmpeg.org/ffmpeg.git
+Last Upstream Merge: 6a97ba521558ce131fe839eed2d51ff745280e1d, Feb 11 2018
+Description:
+
+This file documents the layout of the Fuchsia copy of FFmpeg, some common
+tasks, and how to create the build files and related configurations.
+
+FFmpeg Layout:
+==============
+
+Fuchsia's copy of FFmpeg is a fork of the upstream git repository, see the
+tags above for the latest merged upstream revision.  All of the
+Fuchsia-specific bits, minus the gn files, are located under the fuchsia/
+folder off the root.
+
+    BUILD.gn: Has the targets for building FFmpeg for Fuchsia.
+
+    ffmpeg_generated.gni: Pregenerated listing of files necessary to build
+      every variation.  See fuchsia/scripts/generate_gn.py for more details.
+
+    fuchsia/scripts: Utilities for building the gn and config files.
+
+    fuchsia/config/...: Pregenerated FFmpeg config options for each profile
+      and architecture.
+
+    fuchsia/patches/README: Details of Fuchsia-specific changes that haven't
+      yet made it upstream.
+
+
+Help w/ Common Tasks:
+=====================
+
+-- Submitting changes to Fuchsia's FFmpeg Git repository.
+
+The goal of Fuchsia's FFmpeg repository is to just be a mirror of the upstream
+Git repository.  This means every change made must be upstreamed.  If you make
+a change, please add an entry to fuchsia/patches/README with a link to the
+tracking issue and code review for your change.
+
+-- Upstreaming a patch.
+
+  <checkout copy of upstream repo>
+  git checkout <hash of last Fuchsia FFmpeg, see tag above> -b my_patch
+  git apply <patch. pulled from code review or cherry-picked from this repo>
+  git rebase origin/master
+  < Follow FFmpeg guide: http://ffmpeg.org/developer.html#Submitting-patches-1 >
+
+Once your change has been upstreamed, please update the fuchsia/patches/README
+file with the status.  The next time an upstream merge is done, the committer
+will clear out all the patches which have been upstreamed.
+
+-- Cherry-picking a patch from upstream.
+
+  # Tell our repo about the upstream one.
+  git remote add upstream git://source.ffmpeg.org/ffmpeg.git
+  git fetch upstream
+
+  # Create a new branch based off of master for committing our patch.
+  git checkout origin/master -b my_new_branch
+
+  # Pull the patch out of upstream.
+  git cherry-pick -x <hash of commit in upstream>
+
+  <Follow rest of "Submitting changes to Fuchsia's FFmpeg Git repository.">
+
+
+Performing An Upstream Merge
+============================
+
+  # Note: upstream/master automatically tracks upstream.
+
+  # Make sure your path is set up to use the right yasm and clang. yasm needs
+  # to be installed, and clang is in prebuilt/third_party/clang/linux-x64/bin.
+
+  # Make sure that sysroot is available, namely
+  # ../../prebuilt/third_party/sysroot/linux
+
+  # Create a new branch based off of master.
+  git checkout origin/master -b my_new_branch
+
+  # Merge with master, taking theirs in case of conflicts.
+  git merge -X theirs upstream/master
+
+  # Remove removed files.
+  git diff --name-only --diff-filter=U | xargs git rm
+
+  # Build the ffmpeg for all profiles and architectures
+  ./fuchsia/scripts/build_ffmpeg.py x64
+  ./fuchsia/scripts/build_ffmpeg.py arm64
+
+  # Update Fuchsia stuff based on the results of the builds
+  ./fuchsia/scripts/copy_config.sh
+  ./fuchsia/scripts/generate_gn.py
+
+  # Use 'git add' to add new files as necessary (not the build.* dirs)
+  # Commit changes
+  # Test for regressions
+  # Submit
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
new file mode 100644
index 0000000..d649c77
--- /dev/null
+++ b/RELEASE_NOTES
@@ -0,0 +1,15 @@
+
+              ┌───────────────────────────────────────┐
+              │ RELEASE NOTES for FFmpeg 3.4 "Cantor" │
+              └───────────────────────────────────────┘
+
+   The FFmpeg Project proudly presents FFmpeg 3.4 "Cantor", about 6
+   months after the release of FFmpeg 3.3.
+
+   A complete Changelog is available at the root of the project, and the
+   complete Git history on http://source.ffmpeg.org.
+
+   We hope you will like this release as much as we enjoyed working on it, and
+   as usual, if you have any questions about it, or any FFmpeg related topic,
+   feel free to join us on the #ffmpeg IRC channel (on irc.freenode.net) or ask
+   on the mailing-lists.
diff --git a/compat/solaris/make_sunver.pl b/compat/solaris/make_sunver.pl
deleted file mode 100755
index 0e9ed1d..0000000
--- a/compat/solaris/make_sunver.pl
+++ /dev/null
@@ -1,352 +0,0 @@
-#!/usr/bin/env perl
-
-# make_sunver.pl
-#
-#   Copyright (C) 2010, 2011, 2012, 2013
-#   Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program 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
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; see the file COPYING.GPLv3.  If not see
-# <http://www.gnu.org/licenses/>.
-
-# This script takes at least two arguments, a GNU style version script and
-# a list of object and archive files, and generates a corresponding Sun
-# style version script as follows:
-#
-# Each glob pattern, C++ mangled pattern or literal in the input script is
-# matched against all global symbols in the input objects, emitting those
-# that matched (or nothing if no match was found).
-# A comment with the original pattern and its type is left in the output
-# file to make it easy to understand the matches.
-#
-# It uses elfdump when present (native), GNU readelf otherwise.
-# It depends on the GNU version of c++filt, since it must understand the
-# GNU mangling style.
-
-use FileHandle;
-use IPC::Open2;
-
-# Enforce C locale.
-$ENV{'LC_ALL'} = "C";
-$ENV{'LANG'} = "C";
-
-# Input version script, GNU style.
-my $symvers = shift;
-
-##########
-# Get all the symbols from the library, match them, and add them to a hash.
-
-my %sym_hash = ();
-
-# List of objects and archives to process.
-my @OBJECTS = ();
-
-# List of shared objects to omit from processing.
-my @SHAREDOBJS = ();
-
-# Filter out those input archives that have corresponding shared objects to
-# avoid adding all symbols matched in the archive to the output map.
-foreach $file (@ARGV) {
-    if (($so = $file) =~ s/\.a$/.so/ && -e $so) {
-    printf STDERR "omitted $file -> $so\n";
-    push (@SHAREDOBJS, $so);
-    } else {
-    push (@OBJECTS, $file);
-    }
-}
-
-# We need to detect and ignore hidden symbols.  Solaris nm can only detect
-# this in the harder to parse default output format, and GNU nm not at all,
-# so use elfdump -s in the native case and GNU readelf -s otherwise.
-# GNU objdump -t cannot be used since it produces a variable number of
-# columns.
-
-# The path to elfdump.
-my $elfdump = "/usr/ccs/bin/elfdump";
-
-if (-f $elfdump) {
-    open ELFDUMP,$elfdump.' -s '.(join ' ',@OBJECTS).'|' or die $!;
-    my $skip_arsym = 0;
-
-    while (<ELFDUMP>) {
-    chomp;
-
-    # Ignore empty lines.
-    if (/^$/) {
-        # End of archive symbol table, stop skipping.
-        $skip_arsym = 0 if $skip_arsym;
-        next;
-    }
-
-    # Keep skipping until end of archive symbol table.
-    next if ($skip_arsym);
-
-    # Ignore object name header for individual objects and archives.
-    next if (/:$/);
-
-    # Ignore table header lines.
-    next if (/^Symbol Table Section:/);
-    next if (/index.*value.*size/);
-
-    # Start of archive symbol table: start skipping.
-    if (/^Symbol Table: \(archive/) {
-        $skip_arsym = 1;
-        next;
-    }
-
-    # Split table.
-    (undef, undef, undef, undef, $bind, $oth, undef, $shndx, $name) = split;
-
-    # Error out for unknown input.
-    die "unknown input line:\n$_" unless defined($bind);
-
-    # Ignore local symbols.
-    next if ($bind eq "LOCL");
-    # Ignore hidden symbols.
-    next if ($oth eq "H");
-    # Ignore undefined symbols.
-    next if ($shndx eq "UNDEF");
-    # Error out for unhandled cases.
-    if ($bind !~ /^(GLOB|WEAK)/ or $oth ne "D") {
-        die "unhandled symbol:\n$_";
-    }
-
-    # Remember symbol.
-    $sym_hash{$name}++;
-    }
-    close ELFDUMP or die "$elfdump error";
-} else {
-    open READELF, 'readelf -s -W '.(join ' ',@OBJECTS).'|' or die $!;
-    # Process each symbol.
-    while (<READELF>) {
-    chomp;
-
-    # Ignore empty lines.
-    next if (/^$/);
-
-    # Ignore object name header.
-    next if (/^File: .*$/);
-
-    # Ignore table header lines.
-    next if (/^Symbol table.*contains.*:/);
-    next if (/Num:.*Value.*Size/);
-
-    # Split table.
-    (undef, undef, undef, undef, $bind, $vis, $ndx, $name) = split;
-
-    # Error out for unknown input.
-    die "unknown input line:\n$_" unless defined($bind);
-
-    # Ignore local symbols.
-    next if ($bind eq "LOCAL");
-    # Ignore hidden symbols.
-    next if ($vis eq "HIDDEN");
-    # Ignore undefined symbols.
-    next if ($ndx eq "UND");
-    # Error out for unhandled cases.
-    if ($bind !~ /^(GLOBAL|WEAK)/ or $vis ne "DEFAULT") {
-        die "unhandled symbol:\n$_";
-    }
-
-    # Remember symbol.
-    $sym_hash{$name}++;
-    }
-    close READELF or die "readelf error";
-}
-
-##########
-# The various types of glob patterns.
-#
-# A glob pattern that is to be applied to the demangled name: 'cxx'.
-# A glob patterns that applies directly to the name in the .o files: 'glob'.
-# This pattern is ignored; used for local variables (usually just '*'): 'ign'.
-
-# The type of the current pattern.
-my $glob = 'glob';
-
-# We're currently inside `extern "C++"', which Sun ld doesn't understand.
-my $in_extern = 0;
-
-# The c++filt command to use.  This *must* be GNU c++filt; the Sun Studio
-# c++filt doesn't handle the GNU mangling style.
-my $cxxfilt = $ENV{'CXXFILT'} || "c++filt";
-
-# The current version name.
-my $current_version = "";
-
-# Was there any attempt to match a symbol to this version?
-my $matches_attempted;
-
-# The number of versions which matched this symbol.
-my $matched_symbols;
-
-open F,$symvers or die $!;
-
-# Print information about generating this file
-print "# This file was generated by make_sunver.pl.  DO NOT EDIT!\n";
-print "# It was generated by:\n";
-printf "# %s %s %s\n", $0, $symvers, (join ' ',@ARGV);
-printf "# Omitted archives with corresponding shared libraries: %s\n",
-    (join ' ', @SHAREDOBJS) if $#SHAREDOBJS >= 0;
-print "#\n\n";
-
-print "\$mapfile_version 2\n";
-
-while (<F>) {
-    # Lines of the form '};'
-    if (/^([ \t]*)(\}[ \t]*;[ \t]*)$/) {
-    $glob = 'glob';
-    if ($in_extern) {
-        $in_extern--;
-        print "$1##$2\n";
-    } else {
-        print;
-    }
-    next;
-    }
-
-    # Lines of the form '} SOME_VERSION_NAME_1.0;'
-    if (/^[ \t]*\}[ \tA-Z0-9_.a-z]+;[ \t]*$/) {
-    $glob = 'glob';
-    # We tried to match symbols agains this version, but none matched.
-    # Emit dummy hidden symbol to avoid marking this version WEAK.
-    if ($matches_attempted && $matched_symbols == 0) {
-        print "  hidden:\n";
-        print "    .force_WEAK_off_$current_version = DATA S0x0 V0x0;\n";
-    }
-    print; next;
-    }
-
-    # Comment and blank lines
-    if (/^[ \t]*\#/) { print; next; }
-    if (/^[ \t]*$/) { print; next; }
-
-    # Lines of the form '{'
-    if (/^([ \t]*){$/) {
-    if ($in_extern) {
-        print "$1##{\n";
-    } else {
-        print;
-    }
-    next;
-    }
-
-    # Lines of the form 'SOME_VERSION_NAME_1.1 {'
-    if (/^([A-Z0-9_.]+)[ \t]+{$/) {
-    # Record version name.
-    $current_version = $1;
-    # Reset match attempts, #matched symbols for this version.
-    $matches_attempted = 0;
-    $matched_symbols = 0;
-    print "SYMBOL_VERSION $1 {\n";
-    next;
-    }
-
-    # Ignore 'global:'
-    if (/^[ \t]*global:$/) { print; next; }
-
-    # After 'local:', globs should be ignored, they won't be exported.
-    if (/^[ \t]*local:$/) {
-    $glob = 'ign';
-    print;
-    next;
-    }
-
-    # After 'extern "C++"', globs are C++ patterns
-    if (/^([ \t]*)(extern \"C\+\+\"[ \t]*)$/) {
-    $in_extern++;
-    $glob = 'cxx';
-    # Need to comment, Sun ld cannot handle this.
-    print "$1##$2\n"; next;
-    }
-
-    # Chomp newline now we're done with passing through the input file.
-    chomp;
-
-    # Catch globs.  Note that '{}' is not allowed in globs by this script,
-    # so only '*' and '[]' are available.
-    if (/^([ \t]*)([^ \t;{}#]+);?[ \t]*$/) {
-    my $ws = $1;
-    my $ptn = $2;
-    # Turn the glob into a regex by replacing '*' with '.*', '?' with '.'.
-    # Keep $ptn so we can still print the original form.
-    ($pattern = $ptn) =~ s/\*/\.\*/g;
-    $pattern =~ s/\?/\./g;
-
-    if ($glob eq 'ign') {
-        # We're in a local: * section; just continue.
-        print "$_\n";
-        next;
-    }
-
-    # Print the glob commented for human readers.
-    print "$ws##$ptn ($glob)\n";
-    # We tried to match a symbol to this version.
-    $matches_attempted++;
-
-    if ($glob eq 'glob') {
-        my %ptn_syms = ();
-
-        # Match ptn against symbols in %sym_hash.
-        foreach my $sym (keys %sym_hash) {
-        # Maybe it matches one of the patterns based on the symbol in
-        # the .o file.
-        $ptn_syms{$sym}++ if ($sym =~ /^$pattern$/);
-        }
-
-        foreach my $sym (sort keys(%ptn_syms)) {
-        $matched_symbols++;
-        print "$ws$sym;\n";
-        }
-    } elsif ($glob eq 'cxx') {
-        my %dem_syms = ();
-
-        # Verify that we're actually using GNU c++filt.  Other versions
-        # most likely cannot handle GNU style symbol mangling.
-        my $cxxout = `$cxxfilt --version 2>&1`;
-        $cxxout =~ m/GNU/ or die "$0 requires GNU c++filt to function";
-
-        # Talk to c++filt through a pair of file descriptors.
-        # Need to start a fresh instance per pattern, otherwise the
-        # process grows to 500+ MB.
-        my $pid = open2(*FILTIN, *FILTOUT, $cxxfilt) or die $!;
-
-        # Match ptn against symbols in %sym_hash.
-        foreach my $sym (keys %sym_hash) {
-        # No?  Well, maybe its demangled form matches one of those
-        # patterns.
-        printf FILTOUT "%s\n",$sym;
-        my $dem = <FILTIN>;
-        chomp $dem;
-        $dem_syms{$sym}++ if ($dem =~ /^$pattern$/);
-        }
-
-        close FILTOUT or die "c++filt error";
-        close FILTIN or die "c++filt error";
-        # Need to wait for the c++filt process to avoid lots of zombies.
-        waitpid $pid, 0;
-
-        foreach my $sym (sort keys(%dem_syms)) {
-        $matched_symbols++;
-        print "$ws$sym;\n";
-        }
-    } else {
-        # No?  Well, then ignore it.
-    }
-    next;
-    }
-    # Important sanity check.  This script can't handle lots of formats
-    # that GNU ld can, so be sure to error out if one is seen!
-    die "strange line `$_'";
-}
-close F;
diff --git a/configure b/configure
index 080d93a..2595ee7 100755
--- a/configure
+++ b/configure
@@ -6331,14 +6331,15 @@
 enabled libopenjpeg       && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version ||
                                { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
 enabled libopenmpt        && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
-enabled libopus           && {
-    enabled libopus_decoder && {
-        require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
-    }
-    enabled libopus_encoder && {
-        require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
-    }
-}
+# Fuchsia uses a built in copy of libopus that is not visible to pkg-config.
+# enabled libopus           && {
+#     enabled libopus_decoder && {
+#         require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
+#     }
+#     enabled libopus_encoder && {
+#         require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
+#     }
+# }
 enabled libpulse          && require_pkg_config libpulse libpulse pulse/pulseaudio.h pa_context_new
 enabled librabbitmq       && require_pkg_config librabbitmq "librabbitmq >= 0.7.1" amqp.h amqp_new_connection
 enabled librav1e          && require_pkg_config librav1e "rav1e >= 0.1.0" rav1e.h rav1e_context_new
diff --git a/doc/Doxyfile b/doc/Doxyfile
index 0891899..4f0c5ab 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -38,7 +38,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         =
+PROJECT_NUMBER         = 3.4.2
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/doc/t2h.pm b/doc/t2h.pm
deleted file mode 100644
index e83d564..0000000
--- a/doc/t2h.pm
+++ /dev/null
@@ -1,339 +0,0 @@
-# makeinfo HTML output init file
-#
-# Copyright (c) 2011, 2012 Free Software Foundation, Inc.
-# Copyright (c) 2014 Andreas Cadhalpun
-# Copyright (c) 2014 Tiancheng "Timothy" Gu
-#
-# This file is part of FFmpeg.
-#
-# FFmpeg is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# 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
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with FFmpeg; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-# no navigation elements
-set_from_init_file('HEADERS', 0);
-
-sub ffmpeg_heading_command($$$$$)
-{
-    my $self = shift;
-    my $cmdname = shift;
-    my $command = shift;
-    my $args = shift;
-    my $content = shift;
-
-    my $result = '';
-
-    # not clear that it may really happen
-    if ($self->in_string) {
-        $result .= $self->command_string($command) ."\n" if ($cmdname ne 'node');
-        $result .= $content if (defined($content));
-        return $result;
-    }
-
-    my $element_id = $self->command_id($command);
-    $result .= "<a name=\"$element_id\"></a>\n"
-        if (defined($element_id) and $element_id ne '');
-
-    print STDERR "Process $command "
-        .Texinfo::Structuring::_print_root_command_texi($command)."\n"
-            if ($self->get_conf('DEBUG'));
-    my $element;
-    if ($Texinfo::Common::root_commands{$command->{'cmdname'}}
-        and $command->{'parent'}
-        and $command->{'parent'}->{'type'}
-        and $command->{'parent'}->{'type'} eq 'element') {
-        $element = $command->{'parent'};
-    }
-    if ($element) {
-        $result .= &{$self->{'format_element_header'}}($self, $cmdname,
-                                                       $command, $element);
-    }
-
-    my $heading_level;
-    # node is used as heading if there is nothing else.
-    if ($cmdname eq 'node') {
-        if (!$element or (!$element->{'extra'}->{'section'}
-            and $element->{'extra'}->{'node'}
-            and $element->{'extra'}->{'node'} eq $command
-             # bogus node may not have been normalized
-            and defined($command->{'extra'}->{'normalized'}))) {
-            if ($command->{'extra'}->{'normalized'} eq 'Top') {
-                $heading_level = 0;
-            } else {
-                $heading_level = 3;
-            }
-        }
-    } else {
-        $heading_level = $command->{'level'};
-    }
-
-    my $heading = $self->command_text($command);
-    # $heading not defined may happen if the command is a @node, for example
-    # if there is an error in the node.
-    if (defined($heading) and $heading ne '' and defined($heading_level)) {
-
-        if ($Texinfo::Common::root_commands{$cmdname}
-            and $Texinfo::Common::sectioning_commands{$cmdname}) {
-            my $content_href = $self->command_contents_href($command, 'contents',
-                                                            $self->{'current_filename'});
-            if ($content_href) {
-                my $this_href = $content_href =~ s/^\#toc-/\#/r;
-                $heading .= '<span class="pull-right">'.
-                              '<a class="anchor hidden-xs" '.
-                                 "href=\"$this_href\" aria-hidden=\"true\">".
-            ($ENV{"FA_ICONS"} ? '<i class="fa fa-link"></i>'
-                              : '#').
-                              '</a> '.
-                              '<a class="anchor hidden-xs"'.
-                                 "href=\"$content_href\" aria-hidden=\"true\">".
-            ($ENV{"FA_ICONS"} ? '<i class="fa fa-navicon"></i>'
-                              : 'TOC').
-                              '</a>'.
-                            '</span>';
-            }
-        }
-
-        if ($self->in_preformatted()) {
-            $result .= $heading."\n";
-        } else {
-            # if the level was changed, set the command name right
-            if ($cmdname ne 'node'
-                and $heading_level ne $Texinfo::Common::command_structuring_level{$cmdname}) {
-                $cmdname
-                    = $Texinfo::Common::level_to_structuring_command{$cmdname}->[$heading_level];
-            }
-            $result .= &{$self->{'format_heading_text'}}(
-                        $self, $cmdname, $heading,
-                        $heading_level +
-                        $self->get_conf('CHAPTER_HEADER_LEVEL') - 1, $command);
-        }
-    }
-    $result .= $content if (defined($content));
-    return $result;
-}
-
-foreach my $command (keys(%Texinfo::Common::sectioning_commands), 'node') {
-    texinfo_register_command_formatting($command, \&ffmpeg_heading_command);
-}
-
-# print the TOC where @contents is used
-set_from_init_file('INLINE_CONTENTS', 1);
-
-# make chapters <h2>
-set_from_init_file('CHAPTER_HEADER_LEVEL', 2);
-
-# Do not add <hr>
-set_from_init_file('DEFAULT_RULE', '');
-set_from_init_file('BIG_RULE', '');
-
-# Customized file beginning
-sub ffmpeg_begin_file($$$)
-{
-    my $self = shift;
-    my $filename = shift;
-    my $element = shift;
-
-    my $command;
-    if ($element and $self->get_conf('SPLIT')) {
-        $command = $self->element_command($element);
-    }
-
-    my ($title, $description, $encoding, $date, $css_lines,
-        $doctype, $bodytext, $copying_comment, $after_body_open,
-        $extra_head, $program_and_version, $program_homepage,
-        $program, $generator) = $self->_file_header_informations($command);
-
-    my $links = $self->_get_links ($filename, $element);
-
-    my $head1 = $ENV{"FFMPEG_HEADER1"} || <<EOT;
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- Created by $program_and_version, $program_homepage -->
-  <head>
-    <meta charset="utf-8">
-    <title>
-EOT
-    my $head_title = <<EOT;
-      $title
-EOT
-
-    my $head2 = $ENV{"FFMPEG_HEADER2"} || <<EOT;
-    </title>
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <link rel="stylesheet" type="text/css" href="bootstrap.min.css">
-    <link rel="stylesheet" type="text/css" href="style.min.css">
-  </head>
-  <body>
-    <div class="container">
-      <h1>
-EOT
-
-    my $head3 = $ENV{"FFMPEG_HEADER3"} || <<EOT;
-      </h1>
-EOT
-
-    return $head1 . $head_title . $head2 . $head_title . $head3;
-}
-texinfo_register_formatting_function('begin_file', \&ffmpeg_begin_file);
-
-sub ffmpeg_program_string($)
-{
-  my $self = shift;
-  if (defined($self->get_conf('PROGRAM'))
-      and $self->get_conf('PROGRAM') ne ''
-      and defined($self->get_conf('PACKAGE_URL'))) {
-    return $self->convert_tree(
-      $self->gdt('This document was generated using @uref{{program_homepage}, @emph{{program}}}.',
-         { 'program_homepage' => $self->get_conf('PACKAGE_URL'),
-           'program' => $self->get_conf('PROGRAM') }));
-  } else {
-    return $self->convert_tree(
-      $self->gdt('This document was generated automatically.'));
-  }
-}
-texinfo_register_formatting_function('program_string', \&ffmpeg_program_string);
-
-# Customized file ending
-sub ffmpeg_end_file($)
-{
-    my $self = shift;
-    my $program_string = &{$self->{'format_program_string'}}($self);
-    my $program_text = <<EOT;
-      <p style="font-size: small;">
-        $program_string
-      </p>
-EOT
-    my $footer = $ENV{FFMPEG_FOOTER} || <<EOT;
-    </div>
-  </body>
-</html>
-EOT
-    return $program_text . $footer;
-}
-texinfo_register_formatting_function('end_file', \&ffmpeg_end_file);
-
-# Dummy title command
-# Ignore title. Title is handled through ffmpeg_begin_file().
-set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1);
-sub ffmpeg_title($$$$)
-{
-    return '';
-}
-
-texinfo_register_command_formatting('titlefont',
-                                    \&ffmpeg_title);
-
-# Customized float command. Part of code borrowed from GNU Texinfo.
-sub ffmpeg_float($$$$$)
-{
-    my $self = shift;
-    my $cmdname = shift;
-    my $command = shift;
-    my $args = shift;
-    my $content = shift;
-
-    my ($caption, $prepended) = Texinfo::Common::float_name_caption($self,
-                                                                $command);
-    my $caption_text = '';
-    my $prepended_text;
-    my $prepended_save = '';
-
-    if ($self->in_string()) {
-        if ($prepended) {
-            $prepended_text = $self->convert_tree_new_formatting_context(
-                $prepended, 'float prepended');
-        } else {
-            $prepended_text = '';
-        }
-        if ($caption) {
-            $caption_text = $self->convert_tree_new_formatting_context(
-                {'contents' => $caption->{'args'}->[0]->{'contents'}},
-                'float caption');
-        }
-        return $prepended.$content.$caption_text;
-    }
-
-    my $id = $self->command_id($command);
-    my $label;
-    if (defined($id) and $id ne '') {
-        $label = "<a name=\"$id\"></a>";
-    } else {
-        $label = '';
-    }
-
-    if ($prepended) {
-        if ($caption) {
-            # prepend the prepended tree to the first paragraph
-            my @caption_original_contents = @{$caption->{'args'}->[0]->{'contents'}};
-            my @caption_contents;
-            my $new_paragraph;
-            while (@caption_original_contents) {
-                my $content = shift @caption_original_contents;
-                if ($content->{'type'} and $content->{'type'} eq 'paragraph') {
-                    %{$new_paragraph} = %{$content};
-                    $new_paragraph->{'contents'} = [@{$content->{'contents'}}];
-                    unshift (@{$new_paragraph->{'contents'}}, {'cmdname' => 'strong',
-                             'args' => [{'type' => 'brace_command_arg',
-                                                    'contents' => [$prepended]}]});
-                    push @caption_contents, $new_paragraph;
-                    last;
-                } else {
-                    push @caption_contents, $content;
-                }
-            }
-            push @caption_contents, @caption_original_contents;
-            if ($new_paragraph) {
-                $caption_text = $self->convert_tree_new_formatting_context(
-                 {'contents' => \@caption_contents}, 'float caption');
-                $prepended_text = '';
-            }
-        }
-        if ($caption_text eq '') {
-            $prepended_text = $self->convert_tree_new_formatting_context(
-                $prepended, 'float prepended');
-            if ($prepended_text ne '') {
-                $prepended_save = $prepended_text;
-                $prepended_text = '<p><strong>'.$prepended_text.'</strong></p>';
-            }
-        }
-    } else {
-        $prepended_text = '';
-    }
-
-    if ($caption and $caption_text eq '') {
-        $caption_text = $self->convert_tree_new_formatting_context(
-            $caption->{'args'}->[0], 'float caption');
-    }
-    if ($prepended_text.$caption_text ne '') {
-        $prepended_text = $self->_attribute_class('div','float-caption'). '>'
-                . $prepended_text;
-        $caption_text .= '</div>';
-    }
-    my $html_class = '';
-    if ($prepended_save =~ /NOTE/) {
-        $html_class = 'info';
-        $prepended_text = '';
-        $caption_text   = '';
-    } elsif ($prepended_save =~ /IMPORTANT/) {
-        $html_class = 'warning';
-        $prepended_text = '';
-        $caption_text   = '';
-    }
-    return $self->_attribute_class('div', $html_class). '>' . "\n" .
-        $prepended_text . $caption_text . $content . '</div>';
-}
-
-texinfo_register_command_formatting('float',
-                                    \&ffmpeg_float);
-
-1;
diff --git a/doc/texi2pod.pl b/doc/texi2pod.pl
deleted file mode 100644
index 9a9b34f..0000000
--- a/doc/texi2pod.pl
+++ /dev/null
@@ -1,464 +0,0 @@
-#!/usr/bin/env perl
-
-#   Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-
-# This file is part of GNU CC.
-
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# GNU CC 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 General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with GNU CC; see the file COPYING.  If not, write to
-# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-# Boston, MA 02110-1301 USA
-
-# This does trivial (and I mean _trivial_) conversion of Texinfo
-# markup to Perl POD format.  It's intended to be used to extract
-# something suitable for a manpage from a Texinfo document.
-
-use warnings;
-
-$output = 0;
-$skipping = 0;
-%chapters = ();
-@chapters_sequence = ();
-$chapter = "";
-@icstack = ();
-@endwstack = ();
-@skstack = ();
-@instack = ();
-$shift = "";
-%defs = ();
-$fnno = 1;
-$inf = "";
-@ibase = ();
-
-while ($_ = shift) {
-    if (/^-D(.*)$/) {
-        if ($1 ne "") {
-            $flag = $1;
-        } else {
-            $flag = shift;
-        }
-        $value = "";
-        ($flag, $value) = ($flag =~ /^([^=]+)(?:=(.+))?/);
-        die "no flag specified for -D\n"
-            unless $flag ne "";
-        die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
-            unless $flag =~ /^[a-zA-Z0-9_-]+$/;
-        $defs{$flag} = $value;
-    } elsif (/^-I(.*)$/) {
-        push @ibase, $1 ne "" ? $1 : shift;
-    } elsif (/^-/) {
-        usage();
-    } else {
-        $in = $_, next unless defined $in;
-        $out = $_, next unless defined $out;
-        usage();
-    }
-}
-
-push @ibase, ".";
-
-if (defined $in) {
-    $inf = gensym();
-    open($inf, "<$in") or die "opening \"$in\": $!\n";
-    push @ibase, $1 if $in =~ m|^(.+)/[^/]+$|;
-} else {
-    $inf = \*STDIN;
-}
-
-if (defined $out) {
-    open(STDOUT, ">$out") or die "opening \"$out\": $!\n";
-}
-
-while(defined $inf) {
-INF: while(<$inf>) {
-    # Certain commands are discarded without further processing.
-    /^\@(?:
-         [a-z]+index            # @*index: useful only in complete manual
-         |need                  # @need: useful only in printed manual
-         |(?:end\s+)?group      # @group .. @end group: ditto
-         |page                  # @page: ditto
-         |node                  # @node: useful only in .info file
-         |(?:end\s+)?ifnottex   # @ifnottex .. @end ifnottex: use contents
-        )\b/x and next;
-
-    chomp;
-
-    # Look for filename and title markers.
-    /^\@setfilename\s+([^.]+)/ and $fn = $1, next;
-    /^\@settitle\s+([^.]+)/ and $tl = postprocess($1), next;
-
-    # Identify a man title but keep only the one we are interested in.
-    /^\@c\s+man\s+title\s+([A-Za-z0-9-]+)\s+(.+)/ and do {
-        if (exists $defs{$1}) {
-            $fn = $1;
-            $tl = postprocess($2);
-        }
-        next;
-    };
-
-    /^\@include\s+(.+)$/ and do {
-        push @instack, $inf;
-        $inf = gensym();
-
-        for (@ibase) {
-            open($inf, "<" . $_ . "/" . $1) and next INF;
-        }
-        die "cannot open $1: $!\n";
-    };
-
-    /^\@chapter\s+([A-Za-z ]+)/ and do {
-        # close old chapter
-        $chapters{$chapter_name} .= postprocess($chapter) if ($chapter_name);
-
-        # start new chapter
-        $chapter_name = $1, push (@chapters_sequence, $chapter_name) unless $skipping;
-        $chapters{$chapter_name} = "" unless exists $chapters{$chapter_name};
-        $chapter = "";
-        $output = 1;
-        next;
-    };
-
-    /^\@bye/ and do {
-        # close old chapter
-        $chapters{$chapter_name} .= postprocess($chapter) if ($chapter_name);
-        last INF;
-    };
-
-    # handle variables
-    /^\@set\s+([a-zA-Z0-9_-]+)\s*(.*)$/ and do {
-        $defs{$1} = $2;
-        next;
-    };
-    /^\@clear\s+([a-zA-Z0-9_-]+)/ and do {
-        delete $defs{$1};
-        next;
-    };
-
-    next unless $output;
-
-    # Discard comments.  (Can't do it above, because then we'd never see
-    # @c man lines.)
-    /^\@c\b/ and next;
-
-    # End-block handler goes up here because it needs to operate even
-    # if we are skipping.
-    /^\@end\s+([a-z]+)/ and do {
-        # Ignore @end foo, where foo is not an operation which may
-        # cause us to skip, if we are presently skipping.
-        my $ended = $1;
-        next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex|ifhtml|ifnothtml)$/;
-
-        die "\@end $ended without \@$ended at line $.\n" unless defined $endw;
-        die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw;
-
-        $endw = pop @endwstack;
-
-        if ($ended =~ /^(?:ifset|ifclear|ignore|menu|iftex|ifhtml|ifnothtml)$/) {
-            $skipping = pop @skstack;
-            next;
-        } elsif ($ended =~ /^(?:example|smallexample|verbatim|display)$/) {
-            $shift = "";
-            $_ = "";        # need a paragraph break
-        } elsif ($ended =~ /^(?:itemize|enumerate|(?:multi|[fv])?table)$/) {
-            $_ = "\n=back\n";
-            $ic = pop @icstack;
-        } else {
-            die "unknown command \@end $ended at line $.\n";
-        }
-    };
-
-    # We must handle commands which can cause skipping even while we
-    # are skipping, otherwise we will not process nested conditionals
-    # correctly.
-    /^\@ifset\s+([a-zA-Z0-9_-]+)/ and do {
-        push @endwstack, $endw;
-        push @skstack, $skipping;
-        $endw = "ifset";
-        $skipping = 1 unless exists $defs{$1};
-        next;
-    };
-
-    /^\@ifclear\s+([a-zA-Z0-9_-]+)/ and do {
-        push @endwstack, $endw;
-        push @skstack, $skipping;
-        $endw = "ifclear";
-        $skipping = 1 if exists $defs{$1};
-        next;
-    };
-
-    /^\@(ignore|menu|iftex|ifhtml|ifnothtml)\b/ and do {
-        push @endwstack, $endw;
-        push @skstack, $skipping;
-        $endw = $1;
-        $skipping = $endw !~ /ifnothtml/;
-        next;
-    };
-
-    next if $skipping;
-
-    # Character entities.  First the ones that can be replaced by raw text
-    # or discarded outright:
-    s/\@copyright\{\}/(c)/g;
-    s/\@dots\{\}/.../g;
-    s/\@enddots\{\}/..../g;
-    s/\@([.!? ])/$1/g;
-    s/\@[:-]//g;
-    s/\@bullet(?:\{\})?/*/g;
-    s/\@TeX\{\}/TeX/g;
-    s/\@pounds\{\}/\#/g;
-    s/\@minus(?:\{\})?/-/g;
-
-    # Now the ones that have to be replaced by special escapes
-    # (which will be turned back into text by unmunge())
-    s/&/&amp;/g;
-    s/\@\{/&lbrace;/g;
-    s/\@\}/&rbrace;/g;
-    s/\@\@/&at;/g;
-
-    # Inside a verbatim block, handle @var specially.
-    if ($shift ne "") {
-        s/\@var\{([^\}]*)\}/<$1>/g;
-    }
-
-    # POD doesn't interpret E<> inside a verbatim block.
-    if ($shift eq "") {
-        s/</&lt;/g;
-        s/>/&gt;/g;
-    } else {
-        s/</&LT;/g;
-        s/>/&GT;/g;
-    }
-
-    # Single line command handlers.
-
-    /^\@(?:section|unnumbered|unnumberedsec|center|heading)\s+(.+)$/
-        and $_ = "\n=head2 $1\n";
-    /^\@(?:subsection|subheading)\s+(.+)$/
-        and $_ = "\n=head3 $1\n";
-    /^\@(?:subsubsection|subsubheading)\s+(.+)$/
-        and $_ = "\n=head4 $1\n";
-
-    # Block command handlers:
-    /^\@itemize\s*(\@[a-z]+|\*|-)?/ and do {
-        push @endwstack, $endw;
-        push @icstack, $ic;
-        $ic = $1 ? $1 : "*";
-        $_ = "\n=over 4\n";
-        $endw = "itemize";
-    };
-
-    /^\@enumerate(?:\s+([a-zA-Z0-9]+))?/ and do {
-        push @endwstack, $endw;
-        push @icstack, $ic;
-        if (defined $1) {
-            $ic = $1 . ".";
-        } else {
-            $ic = "1.";
-        }
-        $_ = "\n=over 4\n";
-        $endw = "enumerate";
-    };
-
-    /^\@((?:multi|[fv])?table)\s+(\@[a-z]+)/ and do {
-        push @endwstack, $endw;
-        push @icstack, $ic;
-        $endw = $1;
-        $ic = $2;
-        $ic =~ s/\@(?:samp|strong|key|gcctabopt|option|env|command)/B/;
-        $ic =~ s/\@(?:code|kbd)/C/;
-        $ic =~ s/\@(?:dfn|var|emph|cite|i)/I/;
-        $ic =~ s/\@(?:file)/F/;
-        $ic =~ s/\@(?:columnfractions)//;
-        $_ = "\n=over 4\n";
-    };
-
-    /^\@(multitable)\s+{.*/ and do {
-        push @endwstack, $endw;
-        push @icstack, $ic;
-        $endw = $1;
-        $ic = "";
-        $_ = "\n=over 4\n";
-    };
-
-    /^\@((?:small)?example|verbatim|display)/ and do {
-        push @endwstack, $endw;
-        $endw = $1;
-        $shift = "\t";
-        $_ = "";        # need a paragraph break
-    };
-
-    /^\@item\s+(.*\S)\s*$/ and $endw eq "multitable" and do {
-        my $columns = $1;
-        $columns =~ s/\@tab/ : /;
-
-        $_ = "\n=item B&LT;". $columns ."&GT;\n";
-    };
-
-    /^\@tab\s+(.*\S)\s*$/ and $endw eq "multitable" and do {
-        my $columns = $1;
-        $columns =~ s/\@tab//;
-
-        $_ = $columns;
-        $chapter =~ s/$//;
-    };
-
-    /^\@itemx?\s*(.+)?$/ and do {
-        if (defined $1) {
-            # Entity escapes prevent munging by the <> processing below.
-            $_ = "\n=item $ic\&LT;$1\&GT;\n";
-        } else {
-            $_ = "\n=item $ic\n";
-            $ic =~ y/A-Ya-y/B-Zb-z/;
-            $ic =~ s/(\d+)/$1 + 1/eg;
-        }
-    };
-
-    $chapter .= $shift.$_."\n";
-}
-# End of current file.
-close($inf);
-$inf = pop @instack;
-}
-
-die "No filename or title\n" unless defined $fn && defined $tl;
-
-# always use utf8
-print "=encoding utf8\n\n";
-
-$chapters{NAME} = "$fn \- $tl\n";
-$chapters{FOOTNOTES} .= "=back\n" if exists $chapters{FOOTNOTES};
-
-unshift @chapters_sequence, "NAME";
-for $chapter (@chapters_sequence) {
-    if (exists $chapters{$chapter}) {
-        $head = uc($chapter);
-        print "=head1 $head\n\n";
-        print scalar unmunge ($chapters{$chapter});
-        print "\n";
-    }
-}
-
-sub usage
-{
-    die "usage: $0 [-D toggle...] [infile [outfile]]\n";
-}
-
-sub postprocess
-{
-    local $_ = $_[0];
-
-    # @value{foo} is replaced by whatever 'foo' is defined as.
-    while (m/(\@value\{([a-zA-Z0-9_-]+)\})/g) {
-        if (! exists $defs{$2}) {
-            print STDERR "Option $2 not defined\n";
-            s/\Q$1\E//;
-        } else {
-            $value = $defs{$2};
-            s/\Q$1\E/$value/;
-        }
-    }
-
-    # Formatting commands.
-    # Temporary escape for @r.
-    s/\@r\{([^\}]*)\}/R<$1>/g;
-    s/\@(?:dfn|var|emph|cite|i)\{([^\}]*)\}/I<$1>/g;
-    s/\@(?:code|kbd)\{([^\}]*)\}/C<$1>/g;
-    s/\@(?:gccoptlist|samp|strong|key|option|env|command|b)\{([^\}]*)\}/B<$1>/g;
-    s/\@sc\{([^\}]*)\}/\U$1/g;
-    s/\@file\{([^\}]*)\}/F<$1>/g;
-    s/\@w\{([^\}]*)\}/S<$1>/g;
-    s/\@(?:dmn|math)\{([^\}]*)\}/$1/g;
-
-    # Cross references are thrown away, as are @noindent and @refill.
-    # (@noindent is impossible in .pod, and @refill is unnecessary.)
-    # @* is also impossible in .pod; we discard it and any newline that
-    # follows it.  Similarly, our macro @gol must be discarded.
-
-    s/\@anchor\{(?:[^\}]*)\}//g;
-    s/\(?\@xref\{(?:[^\}]*)\}(?:[^.<]|(?:<[^<>]*>))*\.\)?//g;
-    s/\s+\(\@pxref\{(?:[^\}]*)\}\)//g;
-    s/;\s+\@pxref\{(?:[^\}]*)\}//g;
-    s/\@ref\{(?:[^,\}]*,)(?:[^,\}]*,)([^,\}]*).*\}/B<$1>/g;
-    s/\@ref\{([^\}]*)\}/B<$1>/g;
-    s/\@noindent\s*//g;
-    s/\@refill//g;
-    s/\@gol//g;
-    s/\@\*\s*\n?//g;
-
-    # @uref can take one, two, or three arguments, with different
-    # semantics each time.  @url and @email are just like @uref with
-    # one argument, for our purposes.
-    s/\@(?:uref|url|email)\{([^\},]*),?[^\}]*\}/&lt;B<$1>&gt;/g;
-    s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g;
-    s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g;
-
-    # Turn B<blah I<blah> blah> into B<blah> I<blah> B<blah> to
-    # match Texinfo semantics of @emph inside @samp.  Also handle @r
-    # inside bold.
-    s/&LT;/</g;
-    s/&GT;/>/g;
-    1 while s/B<((?:[^<>]|I<[^<>]*>)*)R<([^>]*)>/B<$1>${2}B</g;
-    1 while (s/B<([^<>]*)I<([^>]+)>/B<$1>I<$2>B</g);
-    1 while (s/I<([^<>]*)B<([^>]+)>/I<$1>B<$2>I</g);
-    s/[BI]<>//g;
-    s/([BI])<(\s+)([^>]+)>/$2$1<$3>/g;
-    s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g;
-
-    # Extract footnotes.  This has to be done after all other
-    # processing because otherwise the regexp will choke on formatting
-    # inside @footnote.
-    while (/\@footnote/g) {
-        s/\@footnote\{([^\}]+)\}/[$fnno]/;
-        add_footnote($1, $fnno);
-        $fnno++;
-    }
-
-    return $_;
-}
-
-sub unmunge
-{
-    # Replace escaped symbols with their equivalents.
-    local $_ = $_[0];
-
-    s/&lt;/E<lt>/g;
-    s/&gt;/E<gt>/g;
-    s/&lbrace;/\{/g;
-    s/&rbrace;/\}/g;
-    s/&at;/\@/g;
-    s/&amp;/&/g;
-    return $_;
-}
-
-sub add_footnote
-{
-    unless (exists $chapters{FOOTNOTES}) {
-        $chapters{FOOTNOTES} = "\n=over 4\n\n";
-    }
-
-    $chapters{FOOTNOTES} .= "=item $fnno.\n\n"; $fnno++;
-    $chapters{FOOTNOTES} .= $_[0];
-    $chapters{FOOTNOTES} .= "\n\n";
-}
-
-# stolen from Symbol.pm
-{
-    my $genseq = 0;
-    sub gensym
-    {
-        my $name = "GEN" . $genseq++;
-        my $ref = \*{$name};
-        delete $::{$name};
-        return $ref;
-    }
-}
diff --git a/ffmpeg_generated.gni b/ffmpeg_generated.gni
new file mode 100644
index 0000000..6ba41ef
--- /dev/null
+++ b/ffmpeg_generated.gni
@@ -0,0 +1,464 @@
+# Copyright 2020 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# NOTE: this file is autogenerated by ffmpeg/fuchsia/scripts/generate_gn.py
+
+import("//build/config/arm.gni")
+import("ffmpeg_options.gni")
+
+# Declare empty versions of each variable for easier +=ing later.
+ffmpeg_c_sources = []
+ffmpeg_gas_sources = []
+ffmpeg_yasm_sources = []
+
+ffmpeg_c_sources += [
+  "libavcodec/ac3_parser.c",
+  "libavcodec/ac3tab.c",
+  "libavcodec/adts_parser.c",
+  "libavcodec/allcodecs.c",
+  "libavcodec/aptx.c",
+  "libavcodec/aptxdec.c",
+  "libavcodec/audio_frame_queue.c",
+  "libavcodec/avdct.c",
+  "libavcodec/avfft.c",
+  "libavcodec/avpacket.c",
+  "libavcodec/avpicture.c",
+  "libavcodec/bitstream.c",
+  "libavcodec/bitstream_filter.c",
+  "libavcodec/bitstream_filters.c",
+  "libavcodec/bsf.c",
+  "libavcodec/codec_desc.c",
+  "libavcodec/d3d11va.c",
+  "libavcodec/dct.c",
+  "libavcodec/dct32_fixed.c",
+  "libavcodec/dct32_float.c",
+  "libavcodec/decode.c",
+  "libavcodec/dirac.c",
+  "libavcodec/dv_profile.c",
+  "libavcodec/encode.c",
+  "libavcodec/fft_fixed.c",
+  "libavcodec/fft_fixed_32.c",
+  "libavcodec/fft_float.c",
+  "libavcodec/fft_init_table.c",
+  "libavcodec/flac.c",
+  "libavcodec/flac_parser.c",
+  "libavcodec/flacdata.c",
+  "libavcodec/flacdec.c",
+  "libavcodec/flacdsp.c",
+  "libavcodec/golomb.c",
+  "libavcodec/h264pred.c",
+  "libavcodec/hpeldsp.c",
+  "libavcodec/imgconvert.c",
+  "libavcodec/jni.c",
+  "libavcodec/libopus.c",
+  "libavcodec/libopusdec.c",
+  "libavcodec/mathtables.c",
+  "libavcodec/mdct_fixed.c",
+  "libavcodec/mdct_fixed_32.c",
+  "libavcodec/mdct_float.c",
+  "libavcodec/mediacodec.c",
+  "libavcodec/mjpegenc_huffman.c",
+  "libavcodec/mpeg12framerate.c",
+  "libavcodec/mpeg4audio.c",
+  "libavcodec/mpegaudio.c",
+  "libavcodec/mpegaudio_parser.c",
+  "libavcodec/mpegaudiodata.c",
+  "libavcodec/mpegaudiodec_fixed.c",
+  "libavcodec/mpegaudiodecheader.c",
+  "libavcodec/mpegaudiodsp.c",
+  "libavcodec/mpegaudiodsp_data.c",
+  "libavcodec/mpegaudiodsp_fixed.c",
+  "libavcodec/mpegaudiodsp_float.c",
+  "libavcodec/null_bsf.c",
+  "libavcodec/options.c",
+  "libavcodec/opus.c",
+  "libavcodec/opus_parser.c",
+  "libavcodec/opus_rc.c",
+  "libavcodec/opustab.c",
+  "libavcodec/parser.c",
+  "libavcodec/parsers.c",
+  "libavcodec/pcm.c",
+  "libavcodec/profiles.c",
+  "libavcodec/pthread.c",
+  "libavcodec/pthread_frame.c",
+  "libavcodec/pthread_slice.c",
+  "libavcodec/qsv_api.c",
+  "libavcodec/raw.c",
+  "libavcodec/rdft.c",
+  "libavcodec/sbc.c",
+  "libavcodec/sbcdec.c",
+  "libavcodec/sbcdec_data.c",
+  "libavcodec/utils.c",
+  "libavcodec/videodsp.c",
+  "libavcodec/vorbis.c",
+  "libavcodec/vorbis_data.c",
+  "libavcodec/vorbis_parser.c",
+  "libavcodec/vorbisdec.c",
+  "libavcodec/vorbisdsp.c",
+  "libavcodec/vp3.c",
+  "libavcodec/vp3_parser.c",
+  "libavcodec/vp3dsp.c",
+  "libavcodec/vp56rac.c",
+  "libavcodec/vp8.c",
+  "libavcodec/vp8_parser.c",
+  "libavcodec/vp8dsp.c",
+  "libavcodec/xiph.c",
+  "libavformat/allformats.c",
+  "libavformat/avio.c",
+  "libavformat/aviobuf.c",
+  "libavformat/cutils.c",
+  "libavformat/dump.c",
+  "libavformat/flac_picture.c",
+  "libavformat/flacdec.c",
+  "libavformat/format.c",
+  "libavformat/id3v1.c",
+  "libavformat/id3v2.c",
+  "libavformat/isom.c",
+  "libavformat/matroska.c",
+  "libavformat/matroskadec.c",
+  "libavformat/metadata.c",
+  "libavformat/mov.c",
+  "libavformat/mov_chan.c",
+  "libavformat/mov_esds.c",
+  "libavformat/mp3dec.c",
+  "libavformat/mux.c",
+  "libavformat/oggdec.c",
+  "libavformat/oggparsecelt.c",
+  "libavformat/oggparsedaala.c",
+  "libavformat/oggparsedirac.c",
+  "libavformat/oggparseflac.c",
+  "libavformat/oggparseogm.c",
+  "libavformat/oggparseopus.c",
+  "libavformat/oggparseskeleton.c",
+  "libavformat/oggparsespeex.c",
+  "libavformat/oggparsetheora.c",
+  "libavformat/oggparsevorbis.c",
+  "libavformat/oggparsevp8.c",
+  "libavformat/options.c",
+  "libavformat/os_support.c",
+  "libavformat/pcm.c",
+  "libavformat/protocols.c",
+  "libavformat/qtpalette.c",
+  "libavformat/rawdec.c",
+  "libavformat/replaygain.c",
+  "libavformat/riff.c",
+  "libavformat/riffdec.c",
+  "libavformat/rmsipr.c",
+  "libavformat/url.c",
+  "libavformat/utils.c",
+  "libavformat/vorbiscomment.c",
+  "libavformat/wavdec.c",
+  "libavutil/aes.c",
+  "libavutil/aes_ctr.c",
+  "libavutil/avsscanf.c",
+  "libavutil/avstring.c",
+  "libavutil/base64.c",
+  "libavutil/bprint.c",
+  "libavutil/buffer.c",
+  "libavutil/camellia.c",
+  "libavutil/channel_layout.c",
+  "libavutil/color_utils.c",
+  "libavutil/cpu.c",
+  "libavutil/crc.c",
+  "libavutil/dict.c",
+  "libavutil/display.c",
+  "libavutil/dovi_meta.c",
+  "libavutil/downmix_info.c",
+  "libavutil/encryption_info.c",
+  "libavutil/error.c",
+  "libavutil/eval.c",
+  "libavutil/fifo.c",
+  "libavutil/file_open.c",
+  "libavutil/fixed_dsp.c",
+  "libavutil/float_dsp.c",
+  "libavutil/frame.c",
+  "libavutil/hdr_dynamic_metadata.c",
+  "libavutil/hwcontext.c",
+  "libavutil/imgutils.c",
+  "libavutil/integer.c",
+  "libavutil/intmath.c",
+  "libavutil/lfg.c",
+  "libavutil/log.c",
+  "libavutil/log2_tab.c",
+  "libavutil/mastering_display_metadata.c",
+  "libavutil/mathematics.c",
+  "libavutil/md5.c",
+  "libavutil/mem.c",
+  "libavutil/opt.c",
+  "libavutil/parseutils.c",
+  "libavutil/pixdesc.c",
+  "libavutil/pixelutils.c",
+  "libavutil/random_seed.c",
+  "libavutil/rational.c",
+  "libavutil/reverse.c",
+  "libavutil/samplefmt.c",
+  "libavutil/sha.c",
+  "libavutil/slicethread.c",
+  "libavutil/spherical.c",
+  "libavutil/stereo3d.c",
+  "libavutil/tea.c",
+  "libavutil/threadmessage.c",
+  "libavutil/time.c",
+  "libavutil/timecode.c",
+  "libavutil/twofish.c",
+  "libavutil/tx.c",
+  "libavutil/tx_double.c",
+  "libavutil/tx_float.c",
+  "libavutil/tx_int32.c",
+  "libavutil/utils.c",
+]
+
+if (current_cpu == "arm64") {
+  ffmpeg_c_sources += [
+    "libavcodec/aarch64/fft_init_aarch64.c",
+    "libavcodec/aarch64/h264pred_init.c",
+    "libavcodec/aarch64/hpeldsp_init_aarch64.c",
+    "libavcodec/aarch64/mpegaudiodsp_init.c",
+    "libavcodec/aarch64/videodsp_init.c",
+    "libavcodec/aarch64/vorbisdsp_init.c",
+    "libavcodec/aarch64/vp8dsp_init_aarch64.c",
+    "libavutil/aarch64/cpu.c",
+    "libavutil/aarch64/float_dsp_init.c",
+  ]
+  ffmpeg_gas_sources += [
+    "libavcodec/aarch64/fft_neon.S",
+    "libavcodec/aarch64/h264pred_neon.S",
+    "libavcodec/aarch64/hpeldsp_neon.S",
+    "libavcodec/aarch64/mdct_neon.S",
+    "libavcodec/aarch64/mpegaudiodsp_neon.S",
+    "libavcodec/aarch64/videodsp.S",
+    "libavcodec/aarch64/vorbisdsp_neon.S",
+    "libavcodec/aarch64/vp8dsp_neon.S",
+    "libavutil/aarch64/float_dsp_neon.S",
+  ]
+}
+
+if (ffmpeg_profile == "max") {
+  ffmpeg_c_sources += [
+    "libavcodec/aac_ac3_parser.c",
+    "libavcodec/aac_parser.c",
+    "libavcodec/aacdec.c",
+    "libavcodec/aacps_float.c",
+    "libavcodec/aacpsdsp_float.c",
+    "libavcodec/aacsbr.c",
+    "libavcodec/aactab.c",
+    "libavcodec/acelp_filters.c",
+    "libavcodec/acelp_pitch_delay.c",
+    "libavcodec/acelp_vectors.c",
+    "libavcodec/adts_header.c",
+    "libavcodec/amrnbdec.c",
+    "libavcodec/amrwbdec.c",
+    "libavcodec/blockdsp.c",
+    "libavcodec/cabac.c",
+    "libavcodec/cbrt_data.c",
+    "libavcodec/celp_filters.c",
+    "libavcodec/celp_math.c",
+    "libavcodec/error_resilience.c",
+    "libavcodec/exif.c",
+    "libavcodec/fdctdsp.c",
+    "libavcodec/flvdec.c",
+    "libavcodec/gsm_parser.c",
+    "libavcodec/gsmdec.c",
+    "libavcodec/gsmdec_data.c",
+    "libavcodec/h263.c",
+    "libavcodec/h263_parser.c",
+    "libavcodec/h263data.c",
+    "libavcodec/h263dec.c",
+    "libavcodec/h263dsp.c",
+    "libavcodec/h2645_parse.c",
+    "libavcodec/h264_cabac.c",
+    "libavcodec/h264_cavlc.c",
+    "libavcodec/h264_direct.c",
+    "libavcodec/h264_loopfilter.c",
+    "libavcodec/h264_mb.c",
+    "libavcodec/h264_parse.c",
+    "libavcodec/h264_parser.c",
+    "libavcodec/h264_picture.c",
+    "libavcodec/h264_ps.c",
+    "libavcodec/h264_refs.c",
+    "libavcodec/h264_sei.c",
+    "libavcodec/h264_slice.c",
+    "libavcodec/h264chroma.c",
+    "libavcodec/h264data.c",
+    "libavcodec/h264dec.c",
+    "libavcodec/h264dsp.c",
+    "libavcodec/h264idct.c",
+    "libavcodec/h264qpel.c",
+    "libavcodec/idctdsp.c",
+    "libavcodec/intelh263dec.c",
+    "libavcodec/ituh263dec.c",
+    "libavcodec/jfdctfst.c",
+    "libavcodec/jfdctint.c",
+    "libavcodec/jrevdct.c",
+    "libavcodec/kbdwin.c",
+    "libavcodec/latm_parser.c",
+    "libavcodec/lsp.c",
+    "libavcodec/mdct15.c",
+    "libavcodec/me_cmp.c",
+    "libavcodec/mpeg4video.c",
+    "libavcodec/mpeg4video_parser.c",
+    "libavcodec/mpeg4videodec.c",
+    "libavcodec/mpeg_er.c",
+    "libavcodec/mpegpicture.c",
+    "libavcodec/mpegutils.c",
+    "libavcodec/mpegvideo.c",
+    "libavcodec/mpegvideo_motion.c",
+    "libavcodec/mpegvideodata.c",
+    "libavcodec/mpegvideodsp.c",
+    "libavcodec/msgsmdec.c",
+    "libavcodec/pixblockdsp.c",
+    "libavcodec/qpeldsp.c",
+    "libavcodec/rl.c",
+    "libavcodec/sbrdsp.c",
+    "libavcodec/simple_idct.c",
+    "libavcodec/sinewin.c",
+    "libavcodec/sinewin_fixed.c",
+    "libavcodec/startcode.c",
+    "libavcodec/tiff_common.c",
+    "libavcodec/xvididct.c",
+    "libavformat/aacdec.c",
+    "libavformat/amr.c",
+    "libavformat/apetag.c",
+    "libavformat/avidec.c",
+    "libavformat/gsmdec.c",
+    "libavformat/img2.c",
+  ]
+}
+
+if (current_cpu == "x64") {
+  ffmpeg_c_sources += [
+    "libavcodec/vp9.c",
+    "libavcodec/vp9_parser.c",
+    "libavcodec/vp9_superframe_split_bsf.c",
+    "libavcodec/vp9block.c",
+    "libavcodec/vp9data.c",
+    "libavcodec/vp9dsp.c",
+    "libavcodec/vp9dsp_10bpp.c",
+    "libavcodec/vp9dsp_12bpp.c",
+    "libavcodec/vp9dsp_8bpp.c",
+    "libavcodec/vp9lpf.c",
+    "libavcodec/vp9mvs.c",
+    "libavcodec/vp9prob.c",
+    "libavcodec/vp9recon.c",
+    "libavcodec/x86/constants.c",
+    "libavcodec/x86/dct_init.c",
+    "libavcodec/x86/fft_init.c",
+    "libavcodec/x86/flacdsp_init.c",
+    "libavcodec/x86/h264_intrapred_init.c",
+    "libavcodec/x86/hpeldsp_init.c",
+    "libavcodec/x86/hpeldsp_vp3_init.c",
+    "libavcodec/x86/mpegaudiodsp.c",
+    "libavcodec/x86/videodsp_init.c",
+    "libavcodec/x86/vorbisdsp_init.c",
+    "libavcodec/x86/vp3dsp_init.c",
+    "libavcodec/x86/vp8dsp_init.c",
+    "libavcodec/x86/vp9dsp_init.c",
+    "libavcodec/x86/vp9dsp_init_10bpp.c",
+    "libavcodec/x86/vp9dsp_init_12bpp.c",
+    "libavcodec/x86/vp9dsp_init_16bpp.c",
+    "libavutil/x86/cpu.c",
+    "libavutil/x86/fixed_dsp_init.c",
+    "libavutil/x86/float_dsp_init.c",
+    "libavutil/x86/imgutils_init.c",
+    "libavutil/x86/lls_init.c",
+  ]
+  ffmpeg_yasm_sources += [
+    "libavcodec/x86/dct32.asm",
+    "libavcodec/x86/fft.asm",
+    "libavcodec/x86/flacdsp.asm",
+    "libavcodec/x86/fpel.asm",
+    "libavcodec/x86/h264_intrapred.asm",
+    "libavcodec/x86/h264_intrapred_10bit.asm",
+    "libavcodec/x86/hpeldsp.asm",
+    "libavcodec/x86/hpeldsp_vp3.asm",
+    "libavcodec/x86/imdct36.asm",
+    "libavcodec/x86/videodsp.asm",
+    "libavcodec/x86/vorbisdsp.asm",
+    "libavcodec/x86/vp3dsp.asm",
+    "libavcodec/x86/vp8dsp.asm",
+    "libavcodec/x86/vp8dsp_loopfilter.asm",
+    "libavcodec/x86/vp9intrapred.asm",
+    "libavcodec/x86/vp9intrapred_16bpp.asm",
+    "libavcodec/x86/vp9itxfm.asm",
+    "libavcodec/x86/vp9itxfm_16bpp.asm",
+    "libavcodec/x86/vp9lpf.asm",
+    "libavcodec/x86/vp9lpf_16bpp.asm",
+    "libavcodec/x86/vp9mc.asm",
+    "libavcodec/x86/vp9mc_16bpp.asm",
+    "libavutil/x86/cpuid.asm",
+    "libavutil/x86/fixed_dsp.asm",
+    "libavutil/x86/float_dsp.asm",
+    "libavutil/x86/imgutils.asm",
+    "libavutil/x86/lls.asm",
+  ]
+}
+
+if (current_cpu == "arm64" && ffmpeg_profile == "max") {
+  ffmpeg_c_sources += [
+    "libavcodec/aarch64/aacpsdsp_init_aarch64.c",
+    "libavcodec/aarch64/h264chroma_init_aarch64.c",
+    "libavcodec/aarch64/h264dsp_init_aarch64.c",
+    "libavcodec/aarch64/h264qpel_init_aarch64.c",
+    "libavcodec/aarch64/idctdsp_init_aarch64.c",
+    "libavcodec/aarch64/sbrdsp_init_aarch64.c",
+    "libavcodec/neon/mpegvideo.c",
+  ]
+  ffmpeg_gas_sources += [
+    "libavcodec/aarch64/aacpsdsp_neon.S",
+    "libavcodec/aarch64/h264cmc_neon.S",
+    "libavcodec/aarch64/h264dsp_neon.S",
+    "libavcodec/aarch64/h264idct_neon.S",
+    "libavcodec/aarch64/h264qpel_neon.S",
+    "libavcodec/aarch64/sbrdsp_neon.S",
+    "libavcodec/aarch64/simple_idct_neon.S",
+  ]
+}
+
+if (current_cpu == "x64" && ffmpeg_profile == "max") {
+  ffmpeg_c_sources += [
+    "libavcodec/x86/aacpsdsp_init.c",
+    "libavcodec/x86/blockdsp_init.c",
+    "libavcodec/x86/fdct.c",
+    "libavcodec/x86/fdctdsp_init.c",
+    "libavcodec/x86/h263dsp_init.c",
+    "libavcodec/x86/h264_qpel.c",
+    "libavcodec/x86/h264chroma_init.c",
+    "libavcodec/x86/h264dsp_init.c",
+    "libavcodec/x86/idctdsp_init.c",
+    "libavcodec/x86/mdct15_init.c",
+    "libavcodec/x86/me_cmp_init.c",
+    "libavcodec/x86/mpegvideo.c",
+    "libavcodec/x86/mpegvideodsp.c",
+    "libavcodec/x86/pixblockdsp_init.c",
+    "libavcodec/x86/qpeldsp_init.c",
+    "libavcodec/x86/sbrdsp_init.c",
+    "libavcodec/x86/xvididct_init.c",
+  ]
+  ffmpeg_yasm_sources += [
+    "libavcodec/x86/aacpsdsp.asm",
+    "libavcodec/x86/blockdsp.asm",
+    "libavcodec/x86/h263_loopfilter.asm",
+    "libavcodec/x86/h264_chromamc.asm",
+    "libavcodec/x86/h264_chromamc_10bit.asm",
+    "libavcodec/x86/h264_deblock.asm",
+    "libavcodec/x86/h264_deblock_10bit.asm",
+    "libavcodec/x86/h264_idct.asm",
+    "libavcodec/x86/h264_idct_10bit.asm",
+    "libavcodec/x86/h264_qpel_10bit.asm",
+    "libavcodec/x86/h264_qpel_8bit.asm",
+    "libavcodec/x86/h264_weight.asm",
+    "libavcodec/x86/h264_weight_10bit.asm",
+    "libavcodec/x86/idctdsp.asm",
+    "libavcodec/x86/mdct15.asm",
+    "libavcodec/x86/me_cmp.asm",
+    "libavcodec/x86/pixblockdsp.asm",
+    "libavcodec/x86/qpel.asm",
+    "libavcodec/x86/qpeldsp.asm",
+    "libavcodec/x86/sbrdsp.asm",
+    "libavcodec/x86/simple_idct.asm",
+    "libavcodec/x86/simple_idct10.asm",
+    "libavcodec/x86/xvididct.asm",
+  ]
+}
+
diff --git a/ffmpeg_options.gni b/ffmpeg_options.gni
new file mode 100644
index 0000000..5112be9
--- /dev/null
+++ b/ffmpeg_options.gni
@@ -0,0 +1,11 @@
+# Copyright 2017 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+declare_args() {
+  # Controls what formats are supported. Legal values are [default|max].
+  ffmpeg_profile = "max"
+}
+
+assert(ffmpeg_profile == "default" || ffmpeg_profile == "max")
+assert(current_cpu == "x64" || current_cpu == "arm64")
diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
deleted file mode 100644
index 7f5a5ca..0000000
--- a/fftools/cmdutils.c
+++ /dev/null
@@ -1,2383 +0,0 @@
-/*
- * Various utilities for command line tools
- * Copyright (c) 2000-2003 Fabrice Bellard
- *
- * 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.
- *
- * 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 FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <math.h>
-
-/* Include only the enabled headers since some compilers (namely, Sun
-   Studio) will not omit unused inline functions and create undefined
-   references to libraries that are not being built. */
-
-#include "config.h"
-#include "compat/va_copy.h"
-#include "libavformat/avformat.h"
-#include "libavfilter/avfilter.h"
-#include "libavdevice/avdevice.h"
-#include "libavresample/avresample.h"
-#include "libswscale/swscale.h"
-#include "libswresample/swresample.h"
-#include "libpostproc/postprocess.h"
-#include "libavutil/attributes.h"
-#include "libavutil/avassert.h"
-#include "libavutil/avstring.h"
-#include "libavutil/bprint.h"
-#include "libavutil/display.h"
-#include "libavutil/mathematics.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/libm.h"
-#include "libavutil/parseutils.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/eval.h"
-#include "libavutil/dict.h"
-#include "libavutil/opt.h"
-#include "libavutil/cpu.h"
-#include "libavutil/ffversion.h"
-#include "libavutil/version.h"
-#include "cmdutils.h"
-#if CONFIG_NETWORK
-#include "libavformat/network.h"
-#endif
-#if HAVE_SYS_RESOURCE_H
-#include <sys/time.h>
-#include <sys/resource.h>
-#endif
-#ifdef _WIN32
-#include <windows.h>
-#endif
-
-static int init_report(const char *env);
-
-AVDictionary *sws_dict;
-AVDictionary *swr_opts;
-AVDictionary *format_opts, *codec_opts, *resample_opts;
-
-static FILE *report_file;
-static int report_file_level = AV_LOG_DEBUG;
-int hide_banner = 0;
-
-enum show_muxdemuxers {
-    SHOW_DEFAULT,
-    SHOW_DEMUXERS,
-    SHOW_MUXERS,
-};
-
-void init_opts(void)
-{
-    av_dict_set(&sws_dict, "flags", "bicubic", 0);
-}
-
-void uninit_opts(void)
-{
-    av_dict_free(&swr_opts);
-    av_dict_free(&sws_dict);
-    av_dict_free(&format_opts);
-    av_dict_free(&codec_opts);
-    av_dict_free(&resample_opts);
-}
-
-void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
-{
-    vfprintf(stdout, fmt, vl);
-}
-
-static void log_callback_report(void *ptr, int level, const char *fmt, va_list vl)
-{
-    va_list vl2;
-    char line[1024];
-    static int print_prefix = 1;
-
-    va_copy(vl2, vl);
-    av_log_default_callback(ptr, level, fmt, vl);
-    av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);
-    va_end(vl2);
-    if (report_file_level >= level) {
-        fputs(line, report_file);
-        fflush(report_file);
-    }
-}
-
-void init_dynload(void)
-{
-#if HAVE_SETDLLDIRECTORY && defined(_WIN32)
-    /* Calling SetDllDirectory with the empty string (but not NULL) removes the
-     * current working directory from the DLL search path as a security pre-caution. */
-    SetDllDirectory("");
-#endif
-}
-
-static void (*program_exit)(int ret);
-
-void register_exit(void (*cb)(int ret))
-{
-    program_exit = cb;
-}
-
-void exit_program(int ret)
-{
-    if (program_exit)
-        program_exit(ret);
-
-    exit(ret);
-}
-
-double parse_number_or_die(const char *context, const char *numstr, int type,
-                           double min, double max)
-{
-    char *tail;
-    const char *error;
-    double d = av_strtod(numstr, &tail);
-    if (*tail)
-        error = "Expected number for %s but found: %s\n";
-    else if (d < min || d > max)
-        error = "The value for %s was %s which is not within %f - %f\n";
-    else if (type == OPT_INT64 && (int64_t)d != d)
-        error = "Expected int64 for %s but found %s\n";
-    else if (type == OPT_INT && (int)d != d)
-        error = "Expected int for %s but found %s\n";
-    else
-        return d;
-    av_log(NULL, AV_LOG_FATAL, error, context, numstr, min, max);
-    exit_program(1);
-    return 0;
-}
-
-int64_t parse_time_or_die(const char *context, const char *timestr,
-                          int is_duration)
-{
-    int64_t us;
-    if (av_parse_time(&us, timestr, is_duration) < 0) {
-        av_log(NULL, AV_LOG_FATAL, "Invalid %s specification for %s: %s\n",
-               is_duration ? "duration" : "date", context, timestr);
-        exit_program(1);
-    }
-    return us;
-}
-
-void show_help_options(const OptionDef *options, const char *msg, int req_flags,
-                       int rej_flags, int alt_flags)
-{
-    const OptionDef *po;
-    int first;
-
-    first = 1;
-    for (po = options; po->name; po++) {
-        char buf[128];
-
-        if (((po->flags & req_flags) != req_flags) ||
-            (alt_flags && !(po->flags & alt_flags)) ||
-            (po->flags & rej_flags))
-            continue;
-
-        if (first) {
-            printf("%s\n", msg);
-            first = 0;
-        }
-        av_strlcpy(buf, po->name, sizeof(buf));
-        if (po->argname) {
-            av_strlcat(buf, " ", sizeof(buf));
-            av_strlcat(buf, po->argname, sizeof(buf));
-        }
-        printf("-%-17s  %s\n", buf, po->help);
-    }
-    printf("\n");
-}
-
-void show_help_children(const AVClass *class, int flags)
-{
-    const AVClass *child = NULL;
-    if (class->option) {
-        av_opt_show2(&class, NULL, flags, 0);
-        printf("\n");
-    }
-
-    while (child = av_opt_child_class_next(class, child))
-        show_help_children(child, flags);
-}
-
-static const OptionDef *find_option(const OptionDef *po, const char *name)
-{
-    const char *p = strchr(name, ':');
-    int len = p ? p - name : strlen(name);
-
-    while (po->name) {
-        if (!strncmp(name, po->name, len) && strlen(po->name) == len)
-            break;
-        po++;
-    }
-    return po;
-}
-
-/* _WIN32 means using the windows libc - cygwin doesn't define that
- * by default. HAVE_COMMANDLINETOARGVW is true on cygwin, while
- * it doesn't provide the actual command line via GetCommandLineW(). */
-#if HAVE_COMMANDLINETOARGVW && defined(_WIN32)
-#include <shellapi.h>
-/* Will be leaked on exit */
-static char** win32_argv_utf8 = NULL;
-static int win32_argc = 0;
-
-/**
- * Prepare command line arguments for executable.
- * For Windows - perform wide-char to UTF-8 conversion.
- * Input arguments should be main() function arguments.
- * @param argc_ptr Arguments number (including executable)
- * @param argv_ptr Arguments list.
- */
-static void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
-{
-    char *argstr_flat;
-    wchar_t **argv_w;
-    int i, buffsize = 0, offset = 0;
-
-    if (win32_argv_utf8) {
-        *argc_ptr = win32_argc;
-        *argv_ptr = win32_argv_utf8;
-        return;
-    }
-
-    win32_argc = 0;
-    argv_w = CommandLineToArgvW(GetCommandLineW(), &win32_argc);
-    if (win32_argc <= 0 || !argv_w)
-        return;
-
-    /* determine the UTF-8 buffer size (including NULL-termination symbols) */
-    for (i = 0; i < win32_argc; i++)
-        buffsize += WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1,
-                                        NULL, 0, NULL, NULL);
-
-    win32_argv_utf8 = av_mallocz(sizeof(char *) * (win32_argc + 1) + buffsize);
-    argstr_flat     = (char *)win32_argv_utf8 + sizeof(char *) * (win32_argc + 1);
-    if (!win32_argv_utf8) {
-        LocalFree(argv_w);
-        return;
-    }
-
-    for (i = 0; i < win32_argc; i++) {
-        win32_argv_utf8[i] = &argstr_flat[offset];
-        offset += WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1,
-                                      &argstr_flat[offset],
-                                      buffsize - offset, NULL, NULL);
-    }
-    win32_argv_utf8[i] = NULL;
-    LocalFree(argv_w);
-
-    *argc_ptr = win32_argc;
-    *argv_ptr = win32_argv_utf8;
-}
-#else
-static inline void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
-{
-    /* nothing to do */
-}
-#endif /* HAVE_COMMANDLINETOARGVW */
-
-static int write_option(void *optctx, const OptionDef *po, const char *opt,
-                        const char *arg)
-{
-    /* new-style options contain an offset into optctx, old-style address of
-     * a global var*/
-    void *dst = po->flags & (OPT_OFFSET | OPT_SPEC) ?
-                (uint8_t *)optctx + po->u.off : po->u.dst_ptr;
-    int *dstcount;
-
-    if (po->flags & OPT_SPEC) {
-        SpecifierOpt **so = dst;
-        char *p = strchr(opt, ':');
-        char *str;
-
-        dstcount = (int *)(so + 1);
-        *so = grow_array(*so, sizeof(**so), dstcount, *dstcount + 1);
-        str = av_strdup(p ? p + 1 : "");
-        if (!str)
-            return AVERROR(ENOMEM);
-        (*so)[*dstcount - 1].specifier = str;
-        dst = &(*so)[*dstcount - 1].u;
-    }
-
-    if (po->flags & OPT_STRING) {
-        char *str;
-        str = av_strdup(arg);
-        av_freep(dst);
-        if (!str)
-            return AVERROR(ENOMEM);
-        *(char **)dst = str;
-    } else if (po->flags & OPT_BOOL || po->flags & OPT_INT) {
-        *(int *)dst = parse_number_or_die(opt, arg, OPT_INT64, INT_MIN, INT_MAX);
-    } else if (po->flags & OPT_INT64) {
-        *(int64_t *)dst = parse_number_or_die(opt, arg, OPT_INT64, INT64_MIN, INT64_MAX);
-    } else if (po->flags & OPT_TIME) {
-        *(int64_t *)dst = parse_time_or_die(opt, arg, 1);
-    } else if (po->flags & OPT_FLOAT) {
-        *(float *)dst = parse_number_or_die(opt, arg, OPT_FLOAT, -INFINITY, INFINITY);
-    } else if (po->flags & OPT_DOUBLE) {
-        *(double *)dst = parse_number_or_die(opt, arg, OPT_DOUBLE, -INFINITY, INFINITY);
-    } else if (po->u.func_arg) {
-        int ret = po->u.func_arg(optctx, opt, arg);
-        if (ret < 0) {
-            av_log(NULL, AV_LOG_ERROR,
-                   "Failed to set value '%s' for option '%s': %s\n",
-                   arg, opt, av_err2str(ret));
-            return ret;
-        }
-    }
-    if (po->flags & OPT_EXIT)
-        exit_program(0);
-
-    return 0;
-}
-
-int parse_option(void *optctx, const char *opt, const char *arg,
-                 const OptionDef *options)
-{
-    const OptionDef *po;
-    int ret;
-
-    po = find_option(options, opt);
-    if (!po->name && opt[0] == 'n' && opt[1] == 'o') {
-        /* handle 'no' bool option */
-        po = find_option(options, opt + 2);
-        if ((po->name && (po->flags & OPT_BOOL)))
-            arg = "0";
-    } else if (po->flags & OPT_BOOL)
-        arg = "1";
-
-    if (!po->name)
-        po = find_option(options, "default");
-    if (!po->name) {
-        av_log(NULL, AV_LOG_ERROR, "Unrecognized option '%s'\n", opt);
-        return AVERROR(EINVAL);
-    }
-    if (po->flags & HAS_ARG && !arg) {
-        av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'\n", opt);
-        return AVERROR(EINVAL);
-    }
-
-    ret = write_option(optctx, po, opt, arg);
-    if (ret < 0)
-        return ret;
-
-    return !!(po->flags & HAS_ARG);
-}
-
-void parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
-                   void (*parse_arg_function)(void *, const char*))
-{
-    const char *opt;
-    int optindex, handleoptions = 1, ret;
-
-    /* perform system-dependent conversions for arguments list */
-    prepare_app_arguments(&argc, &argv);
-
-    /* parse options */
-    optindex = 1;
-    while (optindex < argc) {
-        opt = argv[optindex++];
-
-        if (handleoptions && opt[0] == '-' && opt[1] != '\0') {
-            if (opt[1] == '-' && opt[2] == '\0') {
-                handleoptions = 0;
-                continue;
-            }
-            opt++;
-
-            if ((ret = parse_option(optctx, opt, argv[optindex], options)) < 0)
-                exit_program(1);
-            optindex += ret;
-        } else {
-            if (parse_arg_function)
-                parse_arg_function(optctx, opt);
-        }
-    }
-}
-
-int parse_optgroup(void *optctx, OptionGroup *g)
-{
-    int i, ret;
-
-    av_log(NULL, AV_LOG_DEBUG, "Parsing a group of options: %s %s.\n",
-           g->group_def->name, g->arg);
-
-    for (i = 0; i < g->nb_opts; i++) {
-        Option *o = &g->opts[i];
-
-        if (g->group_def->flags &&
-            !(g->group_def->flags & o->opt->flags)) {
-            av_log(NULL, AV_LOG_ERROR, "Option %s (%s) cannot be applied to "
-                   "%s %s -- you are trying to apply an input option to an "
-                   "output file or vice versa. Move this option before the "
-                   "file it belongs to.\n", o->key, o->opt->help,
-                   g->group_def->name, g->arg);
-            return AVERROR(EINVAL);
-        }
-
-        av_log(NULL, AV_LOG_DEBUG, "Applying option %s (%s) with argument %s.\n",
-               o->key, o->opt->help, o->val);
-
-        ret = write_option(optctx, o->opt, o->key, o->val);
-        if (ret < 0)
-            return ret;
-    }
-
-    av_log(NULL, AV_LOG_DEBUG, "Successfully parsed a group of options.\n");
-
-    return 0;
-}
-
-int locate_option(int argc, char **argv, const OptionDef *options,
-                  const char *optname)
-{
-    const OptionDef *po;
-    int i;
-
-    for (i = 1; i < argc; i++) {
-        const char *cur_opt = argv[i];
-
-        if (*cur_opt++ != '-')
-            continue;
-
-        po = find_option(options, cur_opt);
-        if (!po->name && cur_opt[0] == 'n' && cur_opt[1] == 'o')
-            po = find_option(options, cur_opt + 2);
-
-        if ((!po->name && !strcmp(cur_opt, optname)) ||
-             (po->name && !strcmp(optname, po->name)))
-            return i;
-
-        if (!po->name || po->flags & HAS_ARG)
-            i++;
-    }
-    return 0;
-}
-
-static void dump_argument(const char *a)
-{
-    const unsigned char *p;
-
-    for (p = a; *p; p++)
-        if (!((*p >= '+' && *p <= ':') || (*p >= '@' && *p <= 'Z') ||
-              *p == '_' || (*p >= 'a' && *p <= 'z')))
-            break;
-    if (!*p) {
-        fputs(a, report_file);
-        return;
-    }
-    fputc('"', report_file);
-    for (p = a; *p; p++) {
-        if (*p == '\\' || *p == '"' || *p == '$' || *p == '`')
-            fprintf(report_file, "\\%c", *p);
-        else if (*p < ' ' || *p > '~')
-            fprintf(report_file, "\\x%02x", *p);
-        else
-            fputc(*p, report_file);
-    }
-    fputc('"', report_file);
-}
-
-static void check_options(const OptionDef *po)
-{
-    while (po->name) {
-        if (po->flags & OPT_PERFILE)
-            av_assert0(po->flags & (OPT_INPUT | OPT_OUTPUT));
-        po++;
-    }
-}
-
-void parse_loglevel(int argc, char **argv, const OptionDef *options)
-{
-    int idx = locate_option(argc, argv, options, "loglevel");
-    const char *env;
-
-    check_options(options);
-
-    if (!idx)
-        idx = locate_option(argc, argv, options, "v");
-    if (idx && argv[idx + 1])
-        opt_loglevel(NULL, "loglevel", argv[idx + 1]);
-    idx = locate_option(argc, argv, options, "report");
-    if ((env = getenv("FFREPORT")) || idx) {
-        init_report(env);
-        if (report_file) {
-            int i;
-            fprintf(report_file, "Command line:\n");
-            for (i = 0; i < argc; i++) {
-                dump_argument(argv[i]);
-                fputc(i < argc - 1 ? ' ' : '\n', report_file);
-            }
-            fflush(report_file);
-        }
-    }
-    idx = locate_option(argc, argv, options, "hide_banner");
-    if (idx)
-        hide_banner = 1;
-}
-
-static const AVOption *opt_find(void *obj, const char *name, const char *unit,
-                            int opt_flags, int search_flags)
-{
-    const AVOption *o = av_opt_find(obj, name, unit, opt_flags, search_flags);
-    if(o && !o->flags)
-        return NULL;
-    return o;
-}
-
-#define FLAGS (o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0
-int opt_default(void *optctx, const char *opt, const char *arg)
-{
-    const AVOption *o;
-    int consumed = 0;
-    char opt_stripped[128];
-    const char *p;
-    const AVClass *cc = avcodec_get_class(), *fc = avformat_get_class();
-#if CONFIG_AVRESAMPLE
-    const AVClass *rc = avresample_get_class();
-#endif
-#if CONFIG_SWSCALE
-    const AVClass *sc = sws_get_class();
-#endif
-#if CONFIG_SWRESAMPLE
-    const AVClass *swr_class = swr_get_class();
-#endif
-
-    if (!strcmp(opt, "debug") || !strcmp(opt, "fdebug"))
-        av_log_set_level(AV_LOG_DEBUG);
-
-    if (!(p = strchr(opt, ':')))
-        p = opt + strlen(opt);
-    av_strlcpy(opt_stripped, opt, FFMIN(sizeof(opt_stripped), p - opt + 1));
-
-    if ((o = opt_find(&cc, opt_stripped, NULL, 0,
-                         AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ)) ||
-        ((opt[0] == 'v' || opt[0] == 'a' || opt[0] == 's') &&
-         (o = opt_find(&cc, opt + 1, NULL, 0, AV_OPT_SEARCH_FAKE_OBJ)))) {
-        av_dict_set(&codec_opts, opt, arg, FLAGS);
-        consumed = 1;
-    }
-    if ((o = opt_find(&fc, opt, NULL, 0,
-                         AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
-        av_dict_set(&format_opts, opt, arg, FLAGS);
-        if (consumed)
-            av_log(NULL, AV_LOG_VERBOSE, "Routing option %s to both codec and muxer layer\n", opt);
-        consumed = 1;
-    }
-#if CONFIG_SWSCALE
-    if (!consumed && (o = opt_find(&sc, opt, NULL, 0,
-                         AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
-        struct SwsContext *sws = sws_alloc_context();
-        int ret = av_opt_set(sws, opt, arg, 0);
-        sws_freeContext(sws);
-        if (!strcmp(opt, "srcw") || !strcmp(opt, "srch") ||
-            !strcmp(opt, "dstw") || !strcmp(opt, "dsth") ||
-            !strcmp(opt, "src_format") || !strcmp(opt, "dst_format")) {
-            av_log(NULL, AV_LOG_ERROR, "Directly using swscale dimensions/format options is not supported, please use the -s or -pix_fmt options\n");
-            return AVERROR(EINVAL);
-        }
-        if (ret < 0) {
-            av_log(NULL, AV_LOG_ERROR, "Error setting option %s.\n", opt);
-            return ret;
-        }
-
-        av_dict_set(&sws_dict, opt, arg, FLAGS);
-
-        consumed = 1;
-    }
-#else
-    if (!consumed && !strcmp(opt, "sws_flags")) {
-        av_log(NULL, AV_LOG_WARNING, "Ignoring %s %s, due to disabled swscale\n", opt, arg);
-        consumed = 1;
-    }
-#endif
-#if CONFIG_SWRESAMPLE
-    if (!consumed && (o=opt_find(&swr_class, opt, NULL, 0,
-                                    AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
-        struct SwrContext *swr = swr_alloc();
-        int ret = av_opt_set(swr, opt, arg, 0);
-        swr_free(&swr);
-        if (ret < 0) {
-            av_log(NULL, AV_LOG_ERROR, "Error setting option %s.\n", opt);
-            return ret;
-        }
-        av_dict_set(&swr_opts, opt, arg, FLAGS);
-        consumed = 1;
-    }
-#endif
-#if CONFIG_AVRESAMPLE
-    if ((o=opt_find(&rc, opt, NULL, 0,
-                       AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
-        av_dict_set(&resample_opts, opt, arg, FLAGS);
-        consumed = 1;
-    }
-#endif
-
-    if (consumed)
-        return 0;
-    return AVERROR_OPTION_NOT_FOUND;
-}
-
-/*
- * Check whether given option is a group separator.
- *
- * @return index of the group definition that matched or -1 if none
- */
-static int match_group_separator(const OptionGroupDef *groups, int nb_groups,
-                                 const char *opt)
-{
-    int i;
-
-    for (i = 0; i < nb_groups; i++) {
-        const OptionGroupDef *p = &groups[i];
-        if (p->sep && !strcmp(p->sep, opt))
-            return i;
-    }
-
-    return -1;
-}
-
-/*
- * Finish parsing an option group.
- *
- * @param group_idx which group definition should this group belong to
- * @param arg argument of the group delimiting option
- */
-static void finish_group(OptionParseContext *octx, int group_idx,
-                         const char *arg)
-{
-    OptionGroupList *l = &octx->groups[group_idx];
-    OptionGroup *g;
-
-    GROW_ARRAY(l->groups, l->nb_groups);
-    g = &l->groups[l->nb_groups - 1];
-
-    *g             = octx->cur_group;
-    g->arg         = arg;
-    g->group_def   = l->group_def;
-    g->sws_dict    = sws_dict;
-    g->swr_opts    = swr_opts;
-    g->codec_opts  = codec_opts;
-    g->format_opts = format_opts;
-    g->resample_opts = resample_opts;
-
-    codec_opts  = NULL;
-    format_opts = NULL;
-    resample_opts = NULL;
-    sws_dict    = NULL;
-    swr_opts    = NULL;
-    init_opts();
-
-    memset(&octx->cur_group, 0, sizeof(octx->cur_group));
-}
-
-/*
- * Add an option instance to currently parsed group.
- */
-static void add_opt(OptionParseContext *octx, const OptionDef *opt,
-                    const char *key, const char *val)
-{
-    int global = !(opt->flags & (OPT_PERFILE | OPT_SPEC | OPT_OFFSET));
-    OptionGroup *g = global ? &octx->global_opts : &octx->cur_group;
-
-    GROW_ARRAY(g->opts, g->nb_opts);
-    g->opts[g->nb_opts - 1].opt = opt;
-    g->opts[g->nb_opts - 1].key = key;
-    g->opts[g->nb_opts - 1].val = val;
-}
-
-static void init_parse_context(OptionParseContext *octx,
-                               const OptionGroupDef *groups, int nb_groups)
-{
-    static const OptionGroupDef global_group = { "global" };
-    int i;
-
-    memset(octx, 0, sizeof(*octx));
-
-    octx->nb_groups = nb_groups;
-    octx->groups    = av_mallocz_array(octx->nb_groups, sizeof(*octx->groups));
-    if (!octx->groups)
-        exit_program(1);
-
-    for (i = 0; i < octx->nb_groups; i++)
-        octx->groups[i].group_def = &groups[i];
-
-    octx->global_opts.group_def = &global_group;
-    octx->global_opts.arg       = "";
-
-    init_opts();
-}
-
-void uninit_parse_context(OptionParseContext *octx)
-{
-    int i, j;
-
-    for (i = 0; i < octx->nb_groups; i++) {
-        OptionGroupList *l = &octx->groups[i];
-
-        for (j = 0; j < l->nb_groups; j++) {
-            av_freep(&l->groups[j].opts);
-            av_dict_free(&l->groups[j].codec_opts);
-            av_dict_free(&l->groups[j].format_opts);
-            av_dict_free(&l->groups[j].resample_opts);
-
-            av_dict_free(&l->groups[j].sws_dict);
-            av_dict_free(&l->groups[j].swr_opts);
-        }
-        av_freep(&l->groups);
-    }
-    av_freep(&octx->groups);
-
-    av_freep(&octx->cur_group.opts);
-    av_freep(&octx->global_opts.opts);
-
-    uninit_opts();
-}
-
-int split_commandline(OptionParseContext *octx, int argc, char *argv[],
-                      const OptionDef *options,
-                      const OptionGroupDef *groups, int nb_groups)
-{
-    int optindex = 1;
-    int dashdash = -2;
-
-    /* perform system-dependent conversions for arguments list */
-    prepare_app_arguments(&argc, &argv);
-
-    init_parse_context(octx, groups, nb_groups);
-    av_log(NULL, AV_LOG_DEBUG, "Splitting the commandline.\n");
-
-    while (optindex < argc) {
-        const char *opt = argv[optindex++], *arg;
-        const OptionDef *po;
-        int ret;
-
-        av_log(NULL, AV_LOG_DEBUG, "Reading option '%s' ...", opt);
-
-        if (opt[0] == '-' && opt[1] == '-' && !opt[2]) {
-            dashdash = optindex;
-            continue;
-        }
-        /* unnamed group separators, e.g. output filename */
-        if (opt[0] != '-' || !opt[1] || dashdash+1 == optindex) {
-            finish_group(octx, 0, opt);
-            av_log(NULL, AV_LOG_DEBUG, " matched as %s.\n", groups[0].name);
-            continue;
-        }
-        opt++;
-
-#define GET_ARG(arg)                                                           \
-do {                                                                           \
-    arg = argv[optindex++];                                                    \
-    if (!arg) {                                                                \
-        av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'.\n", opt);\
-        return AVERROR(EINVAL);                                                \
-    }                                                                          \
-} while (0)
-
-        /* named group separators, e.g. -i */
-        if ((ret = match_group_separator(groups, nb_groups, opt)) >= 0) {
-            GET_ARG(arg);
-            finish_group(octx, ret, arg);
-            av_log(NULL, AV_LOG_DEBUG, " matched as %s with argument '%s'.\n",
-                   groups[ret].name, arg);
-            continue;
-        }
-
-        /* normal options */
-        po = find_option(options, opt);
-        if (po->name) {
-            if (po->flags & OPT_EXIT) {
-                /* optional argument, e.g. -h */
-                arg = argv[optindex++];
-            } else if (po->flags & HAS_ARG) {
-                GET_ARG(arg);
-            } else {
-                arg = "1";
-            }
-
-            add_opt(octx, po, opt, arg);
-            av_log(NULL, AV_LOG_DEBUG, " matched as option '%s' (%s) with "
-                   "argument '%s'.\n", po->name, po->help, arg);
-            continue;
-        }
-
-        /* AVOptions */
-        if (argv[optindex]) {
-            ret = opt_default(NULL, opt, argv[optindex]);
-            if (ret >= 0) {
-                av_log(NULL, AV_LOG_DEBUG, " matched as AVOption '%s' with "
-                       "argument '%s'.\n", opt, argv[optindex]);
-                optindex++;
-                continue;
-            } else if (ret != AVERROR_OPTION_NOT_FOUND) {
-                av_log(NULL, AV_LOG_ERROR, "Error parsing option '%s' "
-                       "with argument '%s'.\n", opt, argv[optindex]);
-                return ret;
-            }
-        }
-
-        /* boolean -nofoo options */
-        if (opt[0] == 'n' && opt[1] == 'o' &&
-            (po = find_option(options, opt + 2)) &&
-            po->name && po->flags & OPT_BOOL) {
-            add_opt(octx, po, opt, "0");
-            av_log(NULL, AV_LOG_DEBUG, " matched as option '%s' (%s) with "
-                   "argument 0.\n", po->name, po->help);
-            continue;
-        }
-
-        av_log(NULL, AV_LOG_ERROR, "Unrecognized option '%s'.\n", opt);
-        return AVERROR_OPTION_NOT_FOUND;
-    }
-
-    if (octx->cur_group.nb_opts || codec_opts || format_opts || resample_opts)
-        av_log(NULL, AV_LOG_WARNING, "Trailing option(s) found in the "
-               "command: may be ignored.\n");
-
-    av_log(NULL, AV_LOG_DEBUG, "Finished splitting the commandline.\n");
-
-    return 0;
-}
-
-int opt_cpuflags(void *optctx, const char *opt, const char *arg)
-{
-    int ret;
-    unsigned flags = av_get_cpu_flags();
-
-    if ((ret = av_parse_cpu_caps(&flags, arg)) < 0)
-        return ret;
-
-    av_force_cpu_flags(flags);
-    return 0;
-}
-
-int opt_loglevel(void *optctx, const char *opt, const char *arg)
-{
-    const struct { const char *name; int level; } log_levels[] = {
-        { "quiet"  , AV_LOG_QUIET   },
-        { "panic"  , AV_LOG_PANIC   },
-        { "fatal"  , AV_LOG_FATAL   },
-        { "error"  , AV_LOG_ERROR   },
-        { "warning", AV_LOG_WARNING },
-        { "info"   , AV_LOG_INFO    },
-        { "verbose", AV_LOG_VERBOSE },
-        { "debug"  , AV_LOG_DEBUG   },
-        { "trace"  , AV_LOG_TRACE   },
-    };
-    const char *token;
-    char *tail;
-    int flags = av_log_get_flags();
-    int level = av_log_get_level();
-    int cmd, i = 0;
-
-    av_assert0(arg);
-    while (*arg) {
-        token = arg;
-        if (*token == '+' || *token == '-') {
-            cmd = *token++;
-        } else {
-            cmd = 0;
-        }
-        if (!i && !cmd) {
-            flags = 0;  /* missing relative prefix, build absolute value */
-        }
-        if (!strncmp(token, "repeat", 6)) {
-            if (cmd == '-') {
-                flags |= AV_LOG_SKIP_REPEATED;
-            } else {
-                flags &= ~AV_LOG_SKIP_REPEATED;
-            }
-            arg = token + 6;
-        } else if (!strncmp(token, "level", 5)) {
-            if (cmd == '-') {
-                flags &= ~AV_LOG_PRINT_LEVEL;
-            } else {
-                flags |= AV_LOG_PRINT_LEVEL;
-            }
-            arg = token + 5;
-        } else {
-            break;
-        }
-        i++;
-    }
-    if (!*arg) {
-        goto end;
-    } else if (*arg == '+') {
-        arg++;
-    } else if (!i) {
-        flags = av_log_get_flags();  /* level value without prefix, reset flags */
-    }
-
-    for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) {
-        if (!strcmp(log_levels[i].name, arg)) {
-            level = log_levels[i].level;
-            goto end;
-        }
-    }
-
-    level = strtol(arg, &tail, 10);
-    if (*tail) {
-        av_log(NULL, AV_LOG_FATAL, "Invalid loglevel \"%s\". "
-               "Possible levels are numbers or:\n", arg);
-        for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++)
-            av_log(NULL, AV_LOG_FATAL, "\"%s\"\n", log_levels[i].name);
-        exit_program(1);
-    }
-
-end:
-    av_log_set_flags(flags);
-    av_log_set_level(level);
-    return 0;
-}
-
-static void expand_filename_template(AVBPrint *bp, const char *template,
-                                     struct tm *tm)
-{
-    int c;
-
-    while ((c = *(template++))) {
-        if (c == '%') {
-            if (!(c = *(template++)))
-                break;
-            switch (c) {
-            case 'p':
-                av_bprintf(bp, "%s", program_name);
-                break;
-            case 't':
-                av_bprintf(bp, "%04d%02d%02d-%02d%02d%02d",
-                           tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
-                           tm->tm_hour, tm->tm_min, tm->tm_sec);
-                break;
-            case '%':
-                av_bprint_chars(bp, c, 1);
-                break;
-            }
-        } else {
-            av_bprint_chars(bp, c, 1);
-        }
-    }
-}
-
-static int init_report(const char *env)
-{
-    char *filename_template = NULL;
-    char *key, *val;
-    int ret, count = 0;
-    int prog_loglevel, envlevel = 0;
-    time_t now;
-    struct tm *tm;
-    AVBPrint filename;
-
-    if (report_file) /* already opened */
-        return 0;
-    time(&now);
-    tm = localtime(&now);
-
-    while (env && *env) {
-        if ((ret = av_opt_get_key_value(&env, "=", ":", 0, &key, &val)) < 0) {
-            if (count)
-                av_log(NULL, AV_LOG_ERROR,
-                       "Failed to parse FFREPORT environment variable: %s\n",
-                       av_err2str(ret));
-            break;
-        }
-        if (*env)
-            env++;
-        count++;
-        if (!strcmp(key, "file")) {
-            av_free(filename_template);
-            filename_template = val;
-            val = NULL;
-        } else if (!strcmp(key, "level")) {
-            char *tail;
-            report_file_level = strtol(val, &tail, 10);
-            if (*tail) {
-                av_log(NULL, AV_LOG_FATAL, "Invalid report file level\n");
-                exit_program(1);
-            }
-            envlevel = 1;
-        } else {
-            av_log(NULL, AV_LOG_ERROR, "Unknown key '%s' in FFREPORT\n", key);
-        }
-        av_free(val);
-        av_free(key);
-    }
-
-    av_bprint_init(&filename, 0, AV_BPRINT_SIZE_AUTOMATIC);
-    expand_filename_template(&filename,
-                             av_x_if_null(filename_template, "%p-%t.log"), tm);
-    av_free(filename_template);
-    if (!av_bprint_is_complete(&filename)) {
-        av_log(NULL, AV_LOG_ERROR, "Out of memory building report file name\n");
-        return AVERROR(ENOMEM);
-    }
-
-    prog_loglevel = av_log_get_level();
-    if (!envlevel)
-        report_file_level = FFMAX(report_file_level, prog_loglevel);
-
-    report_file = fopen(filename.str, "w");
-    if (!report_file) {
-        int ret = AVERROR(errno);
-        av_log(NULL, AV_LOG_ERROR, "Failed to open report \"%s\": %s\n",
-               filename.str, strerror(errno));
-        return ret;
-    }
-    av_log_set_callback(log_callback_report);
-    av_log(NULL, AV_LOG_INFO,
-           "%s started on %04d-%02d-%02d at %02d:%02d:%02d\n"
-           "Report written to \"%s\"\n"
-           "Log level: %d\n",
-           program_name,
-           tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
-           tm->tm_hour, tm->tm_min, tm->tm_sec,
-           filename.str, report_file_level);
-    av_bprint_finalize(&filename, NULL);
-    return 0;
-}
-
-int opt_report(void *optctx, const char *opt, const char *arg)
-{
-    return init_report(NULL);
-}
-
-int opt_max_alloc(void *optctx, const char *opt, const char *arg)
-{
-    char *tail;
-    size_t max;
-
-    max = strtol(arg, &tail, 10);
-    if (*tail) {
-        av_log(NULL, AV_LOG_FATAL, "Invalid max_alloc \"%s\".\n", arg);
-        exit_program(1);
-    }
-    av_max_alloc(max);
-    return 0;
-}
-
-int opt_timelimit(void *optctx, const char *opt, const char *arg)
-{
-#if HAVE_SETRLIMIT
-    int lim = parse_number_or_die(opt, arg, OPT_INT64, 0, INT_MAX);
-    struct rlimit rl = { lim, lim + 1 };
-    if (setrlimit(RLIMIT_CPU, &rl))
-        perror("setrlimit");
-#else
-    av_log(NULL, AV_LOG_WARNING, "-%s not implemented on this OS\n", opt);
-#endif
-    return 0;
-}
-
-void print_error(const char *filename, int err)
-{
-    char errbuf[128];
-    const char *errbuf_ptr = errbuf;
-
-    if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
-        errbuf_ptr = strerror(AVUNERROR(err));
-    av_log(NULL, AV_LOG_ERROR, "%s: %s\n", filename, errbuf_ptr);
-}
-
-static int warned_cfg = 0;
-
-#define INDENT        1
-#define SHOW_VERSION  2
-#define SHOW_CONFIG   4
-#define SHOW_COPYRIGHT 8
-
-#define PRINT_LIB_INFO(libname, LIBNAME, flags, level)                  \
-    if (CONFIG_##LIBNAME) {                                             \
-        const char *indent = flags & INDENT? "  " : "";                 \
-        if (flags & SHOW_VERSION) {                                     \
-            unsigned int version = libname##_version();                 \
-            av_log(NULL, level,                                         \
-                   "%slib%-11s %2d.%3d.%3d / %2d.%3d.%3d\n",            \
-                   indent, #libname,                                    \
-                   LIB##LIBNAME##_VERSION_MAJOR,                        \
-                   LIB##LIBNAME##_VERSION_MINOR,                        \
-                   LIB##LIBNAME##_VERSION_MICRO,                        \
-                   AV_VERSION_MAJOR(version), AV_VERSION_MINOR(version),\
-                   AV_VERSION_MICRO(version));                          \
-        }                                                               \
-        if (flags & SHOW_CONFIG) {                                      \
-            const char *cfg = libname##_configuration();                \
-            if (strcmp(FFMPEG_CONFIGURATION, cfg)) {                    \
-                if (!warned_cfg) {                                      \
-                    av_log(NULL, level,                                 \
-                            "%sWARNING: library configuration mismatch\n", \
-                            indent);                                    \
-                    warned_cfg = 1;                                     \
-                }                                                       \
-                av_log(NULL, level, "%s%-11s configuration: %s\n",      \
-                        indent, #libname, cfg);                         \
-            }                                                           \
-        }                                                               \
-    }                                                                   \
-
-static void print_all_libs_info(int flags, int level)
-{
-    PRINT_LIB_INFO(avutil,     AVUTIL,     flags, level);
-    PRINT_LIB_INFO(avcodec,    AVCODEC,    flags, level);
-    PRINT_LIB_INFO(avformat,   AVFORMAT,   flags, level);
-    PRINT_LIB_INFO(avdevice,   AVDEVICE,   flags, level);
-    PRINT_LIB_INFO(avfilter,   AVFILTER,   flags, level);
-    PRINT_LIB_INFO(avresample, AVRESAMPLE, flags, level);
-    PRINT_LIB_INFO(swscale,    SWSCALE,    flags, level);
-    PRINT_LIB_INFO(swresample, SWRESAMPLE, flags, level);
-    PRINT_LIB_INFO(postproc,   POSTPROC,   flags, level);
-}
-
-static void print_program_info(int flags, int level)
-{
-    const char *indent = flags & INDENT? "  " : "";
-
-    av_log(NULL, level, "%s version " FFMPEG_VERSION, program_name);
-    if (flags & SHOW_COPYRIGHT)
-        av_log(NULL, level, " Copyright (c) %d-%d the FFmpeg developers",
-               program_birth_year, CONFIG_THIS_YEAR);
-    av_log(NULL, level, "\n");
-    av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);
-
-    av_log(NULL, level, "%sconfiguration: " FFMPEG_CONFIGURATION "\n", indent);
-}
-
-static void print_buildconf(int flags, int level)
-{
-    const char *indent = flags & INDENT ? "  " : "";
-    char str[] = { FFMPEG_CONFIGURATION };
-    char *conflist, *remove_tilde, *splitconf;
-
-    // Change all the ' --' strings to '~--' so that
-    // they can be identified as tokens.
-    while ((conflist = strstr(str, " --")) != NULL) {
-        strncpy(conflist, "~--", 3);
-    }
-
-    // Compensate for the weirdness this would cause
-    // when passing 'pkg-config --static'.
-    while ((remove_tilde = strstr(str, "pkg-config~")) != NULL) {
-        strncpy(remove_tilde, "pkg-config ", 11);
-    }
-
-    splitconf = strtok(str, "~");
-    av_log(NULL, level, "\n%sconfiguration:\n", indent);
-    while (splitconf != NULL) {
-        av_log(NULL, level, "%s%s%s\n", indent, indent, splitconf);
-        splitconf = strtok(NULL, "~");
-    }
-}
-
-void show_banner(int argc, char **argv, const OptionDef *options)
-{
-    int idx = locate_option(argc, argv, options, "version");
-    if (hide_banner || idx)
-        return;
-
-    print_program_info (INDENT|SHOW_COPYRIGHT, AV_LOG_INFO);
-    print_all_libs_info(INDENT|SHOW_CONFIG,  AV_LOG_INFO);
-    print_all_libs_info(INDENT|SHOW_VERSION, AV_LOG_INFO);
-}
-
-int show_version(void *optctx, const char *opt, const char *arg)
-{
-    av_log_set_callback(log_callback_help);
-    print_program_info (SHOW_COPYRIGHT, AV_LOG_INFO);
-    print_all_libs_info(SHOW_VERSION, AV_LOG_INFO);
-
-    return 0;
-}
-
-int show_buildconf(void *optctx, const char *opt, const char *arg)
-{
-    av_log_set_callback(log_callback_help);
-    print_buildconf      (INDENT|0, AV_LOG_INFO);
-
-    return 0;
-}
-
-int show_license(void *optctx, const char *opt, const char *arg)
-{
-#if CONFIG_NONFREE
-    printf(
-    "This version of %s has nonfree parts compiled in.\n"
-    "Therefore it is not legally redistributable.\n",
-    program_name );
-#elif CONFIG_GPLV3
-    printf(
-    "%s is free software; you can redistribute it and/or modify\n"
-    "it under the terms of the GNU General Public License as published by\n"
-    "the Free Software Foundation; either version 3 of the License, or\n"
-    "(at your option) any later version.\n"
-    "\n"
-    "%s is distributed in the hope that it will be useful,\n"
-    "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-    "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
-    "GNU General Public License for more details.\n"
-    "\n"
-    "You should have received a copy of the GNU General Public License\n"
-    "along with %s.  If not, see <http://www.gnu.org/licenses/>.\n",
-    program_name, program_name, program_name );
-#elif CONFIG_GPL
-    printf(
-    "%s is free software; you can redistribute it and/or modify\n"
-    "it under the terms of the GNU General Public License as published by\n"
-    "the Free Software Foundation; either version 2 of the License, or\n"
-    "(at your option) any later version.\n"
-    "\n"
-    "%s is distributed in the hope that it will be useful,\n"
-    "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-    "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
-    "GNU General Public License for more details.\n"
-    "\n"
-    "You should have received a copy of the GNU General Public License\n"
-    "along with %s; if not, write to the Free Software\n"
-    "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n",
-    program_name, program_name, program_name );
-#elif CONFIG_LGPLV3
-    printf(
-    "%s is free software; you can redistribute it and/or modify\n"
-    "it under the terms of the GNU Lesser General Public License as published by\n"
-    "the Free Software Foundation; either version 3 of the License, or\n"
-    "(at your option) any later version.\n"
-    "\n"
-    "%s is distributed in the hope that it will be useful,\n"
-    "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-    "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
-    "GNU Lesser General Public License for more details.\n"
-    "\n"
-    "You should have received a copy of the GNU Lesser General Public License\n"
-    "along with %s.  If not, see <http://www.gnu.org/licenses/>.\n",
-    program_name, program_name, program_name );
-#else
-    printf(
-    "%s is free software; you can redistribute it and/or\n"
-    "modify it under the terms of the GNU Lesser General Public\n"
-    "License as published by the Free Software Foundation; either\n"
-    "version 2.1 of the License, or (at your option) any later version.\n"
-    "\n"
-    "%s is distributed in the hope that it will be useful,\n"
-    "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-    "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-    "Lesser General Public License for more details.\n"
-    "\n"
-    "You should have received a copy of the GNU Lesser General Public\n"
-    "License along with %s; if not, write to the Free Software\n"
-    "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n",
-    program_name, program_name, program_name );
-#endif
-
-    return 0;
-}
-
-static int is_device(const AVClass *avclass)
-{
-    if (!avclass)
-        return 0;
-    return AV_IS_INPUT_DEVICE(avclass->category) || AV_IS_OUTPUT_DEVICE(avclass->category);
-}
-
-static int show_formats_devices(void *optctx, const char *opt, const char *arg, int device_only, int muxdemuxers)
-{
-    void *ifmt_opaque = NULL;
-    const AVInputFormat *ifmt  = NULL;
-    void *ofmt_opaque = NULL;
-    const AVOutputFormat *ofmt = NULL;
-    const char *last_name;
-    int is_dev;
-
-    printf("%s\n"
-           " D. = Demuxing supported\n"
-           " .E = Muxing supported\n"
-           " --\n", device_only ? "Devices:" : "File formats:");
-    last_name = "000";
-    for (;;) {
-        int decode = 0;
-        int encode = 0;
-        const char *name      = NULL;
-        const char *long_name = NULL;
-
-        if (muxdemuxers !=SHOW_DEMUXERS) {
-            ofmt_opaque = NULL;
-            while ((ofmt = av_muxer_iterate(&ofmt_opaque))) {
-                is_dev = is_device(ofmt->priv_class);
-                if (!is_dev && device_only)
-                    continue;
-                if ((!name || strcmp(ofmt->name, name) < 0) &&
-                    strcmp(ofmt->name, last_name) > 0) {
-                    name      = ofmt->name;
-                    long_name = ofmt->long_name;
-                    encode    = 1;
-                }
-            }
-        }
-        if (muxdemuxers != SHOW_MUXERS) {
-            ifmt_opaque = NULL;
-            while ((ifmt = av_demuxer_iterate(&ifmt_opaque))) {
-                is_dev = is_device(ifmt->priv_class);
-                if (!is_dev && device_only)
-                    continue;
-                if ((!name || strcmp(ifmt->name, name) < 0) &&
-                    strcmp(ifmt->name, last_name) > 0) {
-                    name      = ifmt->name;
-                    long_name = ifmt->long_name;
-                    encode    = 0;
-                }
-                if (name && strcmp(ifmt->name, name) == 0)
-                    decode = 1;
-            }
-        }
-        if (!name)
-            break;
-        last_name = name;
-
-        printf(" %s%s %-15s %s\n",
-               decode ? "D" : " ",
-               encode ? "E" : " ",
-               name,
-            long_name ? long_name:" ");
-    }
-    return 0;
-}
-
-int show_formats(void *optctx, const char *opt, const char *arg)
-{
-    return show_formats_devices(optctx, opt, arg, 0, SHOW_DEFAULT);
-}
-
-int show_muxers(void *optctx, const char *opt, const char *arg)
-{
-    return show_formats_devices(optctx, opt, arg, 0, SHOW_MUXERS);
-}
-
-int show_demuxers(void *optctx, const char *opt, const char *arg)
-{
-    return show_formats_devices(optctx, opt, arg, 0, SHOW_DEMUXERS);
-}
-
-int show_devices(void *optctx, const char *opt, const char *arg)
-{
-    return show_formats_devices(optctx, opt, arg, 1, SHOW_DEFAULT);
-}
-
-#define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name) \
-    if (codec->field) {                                                      \
-        const type *p = codec->field;                                        \
-                                                                             \
-        printf("    Supported " list_name ":");                              \
-        while (*p != term) {                                                 \
-            get_name(*p);                                                    \
-            printf(" %s", name);                                             \
-            p++;                                                             \
-        }                                                                    \
-        printf("\n");                                                        \
-    }                                                                        \
-
-static void print_codec(const AVCodec *c)
-{
-    int encoder = av_codec_is_encoder(c);
-
-    printf("%s %s [%s]:\n", encoder ? "Encoder" : "Decoder", c->name,
-           c->long_name ? c->long_name : "");
-
-    printf("    General capabilities: ");
-    if (c->capabilities & AV_CODEC_CAP_DRAW_HORIZ_BAND)
-        printf("horizband ");
-    if (c->capabilities & AV_CODEC_CAP_DR1)
-        printf("dr1 ");
-    if (c->capabilities & AV_CODEC_CAP_TRUNCATED)
-        printf("trunc ");
-    if (c->capabilities & AV_CODEC_CAP_DELAY)
-        printf("delay ");
-    if (c->capabilities & AV_CODEC_CAP_SMALL_LAST_FRAME)
-        printf("small ");
-    if (c->capabilities & AV_CODEC_CAP_SUBFRAMES)
-        printf("subframes ");
-    if (c->capabilities & AV_CODEC_CAP_EXPERIMENTAL)
-        printf("exp ");
-    if (c->capabilities & AV_CODEC_CAP_CHANNEL_CONF)
-        printf("chconf ");
-    if (c->capabilities & AV_CODEC_CAP_PARAM_CHANGE)
-        printf("paramchange ");
-    if (c->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE)
-        printf("variable ");
-    if (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS |
-                           AV_CODEC_CAP_SLICE_THREADS |
-                           AV_CODEC_CAP_AUTO_THREADS))
-        printf("threads ");
-    if (c->capabilities & AV_CODEC_CAP_AVOID_PROBING)
-        printf("avoidprobe ");
-    if (c->capabilities & AV_CODEC_CAP_INTRA_ONLY)
-        printf("intraonly ");
-    if (c->capabilities & AV_CODEC_CAP_LOSSLESS)
-        printf("lossless ");
-    if (c->capabilities & AV_CODEC_CAP_HARDWARE)
-        printf("hardware ");
-    if (c->capabilities & AV_CODEC_CAP_HYBRID)
-        printf("hybrid ");
-    if (!c->capabilities)
-        printf("none");
-    printf("\n");
-
-    if (c->type == AVMEDIA_TYPE_VIDEO ||
-        c->type == AVMEDIA_TYPE_AUDIO) {
-        printf("    Threading capabilities: ");
-        switch (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS |
-                                   AV_CODEC_CAP_SLICE_THREADS |
-                                   AV_CODEC_CAP_AUTO_THREADS)) {
-        case AV_CODEC_CAP_FRAME_THREADS |
-             AV_CODEC_CAP_SLICE_THREADS: printf("frame and slice"); break;
-        case AV_CODEC_CAP_FRAME_THREADS: printf("frame");           break;
-        case AV_CODEC_CAP_SLICE_THREADS: printf("slice");           break;
-        case AV_CODEC_CAP_AUTO_THREADS : printf("auto");            break;
-        default:                         printf("none");            break;
-        }
-        printf("\n");
-    }
-
-    if (avcodec_get_hw_config(c, 0)) {
-        printf("    Supported hardware devices: ");
-        for (int i = 0;; i++) {
-            const AVCodecHWConfig *config = avcodec_get_hw_config(c, i);
-            if (!config)
-                break;
-            printf("%s ", av_hwdevice_get_type_name(config->device_type));
-        }
-        printf("\n");
-    }
-
-    if (c->supported_framerates) {
-        const AVRational *fps = c->supported_framerates;
-
-        printf("    Supported framerates:");
-        while (fps->num) {
-            printf(" %d/%d", fps->num, fps->den);
-            fps++;
-        }
-        printf("\n");
-    }
-    PRINT_CODEC_SUPPORTED(c, pix_fmts, enum AVPixelFormat, "pixel formats",
-                          AV_PIX_FMT_NONE, GET_PIX_FMT_NAME);
-    PRINT_CODEC_SUPPORTED(c, supported_samplerates, int, "sample rates", 0,
-                          GET_SAMPLE_RATE_NAME);
-    PRINT_CODEC_SUPPORTED(c, sample_fmts, enum AVSampleFormat, "sample formats",
-                          AV_SAMPLE_FMT_NONE, GET_SAMPLE_FMT_NAME);
-    PRINT_CODEC_SUPPORTED(c, channel_layouts, uint64_t, "channel layouts",
-                          0, GET_CH_LAYOUT_DESC);
-
-    if (c->priv_class) {
-        show_help_children(c->priv_class,
-                           AV_OPT_FLAG_ENCODING_PARAM |
-                           AV_OPT_FLAG_DECODING_PARAM);
-    }
-}
-
-static char get_media_type_char(enum AVMediaType type)
-{
-    switch (type) {
-        case AVMEDIA_TYPE_VIDEO:    return 'V';
-        case AVMEDIA_TYPE_AUDIO:    return 'A';
-        case AVMEDIA_TYPE_DATA:     return 'D';
-        case AVMEDIA_TYPE_SUBTITLE: return 'S';
-        case AVMEDIA_TYPE_ATTACHMENT:return 'T';
-        default:                    return '?';
-    }
-}
-
-static const AVCodec *next_codec_for_id(enum AVCodecID id, void **iter,
-                                        int encoder)
-{
-    const AVCodec *c;
-    while ((c = av_codec_iterate(iter))) {
-        if (c->id == id &&
-            (encoder ? av_codec_is_encoder(c) : av_codec_is_decoder(c)))
-            return c;
-    }
-    return NULL;
-}
-
-static int compare_codec_desc(const void *a, const void *b)
-{
-    const AVCodecDescriptor * const *da = a;
-    const AVCodecDescriptor * const *db = b;
-
-    return (*da)->type != (*db)->type ? FFDIFFSIGN((*da)->type, (*db)->type) :
-           strcmp((*da)->name, (*db)->name);
-}
-
-static unsigned get_codecs_sorted(const AVCodecDescriptor ***rcodecs)
-{
-    const AVCodecDescriptor *desc = NULL;
-    const AVCodecDescriptor **codecs;
-    unsigned nb_codecs = 0, i = 0;
-
-    while ((desc = avcodec_descriptor_next(desc)))
-        nb_codecs++;
-    if (!(codecs = av_calloc(nb_codecs, sizeof(*codecs)))) {
-        av_log(NULL, AV_LOG_ERROR, "Out of memory\n");
-        exit_program(1);
-    }
-    desc = NULL;
-    while ((desc = avcodec_descriptor_next(desc)))
-        codecs[i++] = desc;
-    av_assert0(i == nb_codecs);
-    qsort(codecs, nb_codecs, sizeof(*codecs), compare_codec_desc);
-    *rcodecs = codecs;
-    return nb_codecs;
-}
-
-static void print_codecs_for_id(enum AVCodecID id, int encoder)
-{
-    void *iter = NULL;
-    const AVCodec *codec;
-
-    printf(" (%s: ", encoder ? "encoders" : "decoders");
-
-    while ((codec = next_codec_for_id(id, &iter, encoder)))
-        printf("%s ", codec->name);
-
-    printf(")");
-}
-
-int show_codecs(void *optctx, const char *opt, const char *arg)
-{
-    const AVCodecDescriptor **codecs;
-    unsigned i, nb_codecs = get_codecs_sorted(&codecs);
-
-    printf("Codecs:\n"
-           " D..... = Decoding supported\n"
-           " .E.... = Encoding supported\n"
-           " ..V... = Video codec\n"
-           " ..A... = Audio codec\n"
-           " ..S... = Subtitle codec\n"
-           " ...I.. = Intra frame-only codec\n"
-           " ....L. = Lossy compression\n"
-           " .....S = Lossless compression\n"
-           " -------\n");
-    for (i = 0; i < nb_codecs; i++) {
-        const AVCodecDescriptor *desc = codecs[i];
-        const AVCodec *codec;
-        void *iter = NULL;
-
-        if (strstr(desc->name, "_deprecated"))
-            continue;
-
-        printf(" ");
-        printf(avcodec_find_decoder(desc->id) ? "D" : ".");
-        printf(avcodec_find_encoder(desc->id) ? "E" : ".");
-
-        printf("%c", get_media_type_char(desc->type));
-        printf((desc->props & AV_CODEC_PROP_INTRA_ONLY) ? "I" : ".");
-        printf((desc->props & AV_CODEC_PROP_LOSSY)      ? "L" : ".");
-        printf((desc->props & AV_CODEC_PROP_LOSSLESS)   ? "S" : ".");
-
-        printf(" %-20s %s", desc->name, desc->long_name ? desc->long_name : "");
-
-        /* print decoders/encoders when there's more than one or their
-         * names are different from codec name */
-        while ((codec = next_codec_for_id(desc->id, &iter, 0))) {
-            if (strcmp(codec->name, desc->name)) {
-                print_codecs_for_id(desc->id, 0);
-                break;
-            }
-        }
-        iter = NULL;
-        while ((codec = next_codec_for_id(desc->id, &iter, 1))) {
-            if (strcmp(codec->name, desc->name)) {
-                print_codecs_for_id(desc->id, 1);
-                break;
-            }
-        }
-
-        printf("\n");
-    }
-    av_free(codecs);
-    return 0;
-}
-
-static void print_codecs(int encoder)
-{
-    const AVCodecDescriptor **codecs;
-    unsigned i, nb_codecs = get_codecs_sorted(&codecs);
-
-    printf("%s:\n"
-           " V..... = Video\n"
-           " A..... = Audio\n"
-           " S..... = Subtitle\n"
-           " .F.... = Frame-level multithreading\n"
-           " ..S... = Slice-level multithreading\n"
-           " ...X.. = Codec is experimental\n"
-           " ....B. = Supports draw_horiz_band\n"
-           " .....D = Supports direct rendering method 1\n"
-           " ------\n",
-           encoder ? "Encoders" : "Decoders");
-    for (i = 0; i < nb_codecs; i++) {
-        const AVCodecDescriptor *desc = codecs[i];
-        const AVCodec *codec;
-        void *iter = NULL;
-
-        while ((codec = next_codec_for_id(desc->id, &iter, encoder))) {
-            printf(" %c", get_media_type_char(desc->type));
-            printf((codec->capabilities & AV_CODEC_CAP_FRAME_THREADS) ? "F" : ".");
-            printf((codec->capabilities & AV_CODEC_CAP_SLICE_THREADS) ? "S" : ".");
-            printf((codec->capabilities & AV_CODEC_CAP_EXPERIMENTAL)  ? "X" : ".");
-            printf((codec->capabilities & AV_CODEC_CAP_DRAW_HORIZ_BAND)?"B" : ".");
-            printf((codec->capabilities & AV_CODEC_CAP_DR1)           ? "D" : ".");
-
-            printf(" %-20s %s", codec->name, codec->long_name ? codec->long_name : "");
-            if (strcmp(codec->name, desc->name))
-                printf(" (codec %s)", desc->name);
-
-            printf("\n");
-        }
-    }
-    av_free(codecs);
-}
-
-int show_decoders(void *optctx, const char *opt, const char *arg)
-{
-    print_codecs(0);
-    return 0;
-}
-
-int show_encoders(void *optctx, const char *opt, const char *arg)
-{
-    print_codecs(1);
-    return 0;
-}
-
-int show_bsfs(void *optctx, const char *opt, const char *arg)
-{
-    const AVBitStreamFilter *bsf = NULL;
-    void *opaque = NULL;
-
-    printf("Bitstream filters:\n");
-    while ((bsf = av_bsf_iterate(&opaque)))
-        printf("%s\n", bsf->name);
-    printf("\n");
-    return 0;
-}
-
-int show_protocols(void *optctx, const char *opt, const char *arg)
-{
-    void *opaque = NULL;
-    const char *name;
-
-    printf("Supported file protocols:\n"
-           "Input:\n");
-    while ((name = avio_enum_protocols(&opaque, 0)))
-        printf("  %s\n", name);
-    printf("Output:\n");
-    while ((name = avio_enum_protocols(&opaque, 1)))
-        printf("  %s\n", name);
-    return 0;
-}
-
-int show_filters(void *optctx, const char *opt, const char *arg)
-{
-#if CONFIG_AVFILTER
-    const AVFilter *filter = NULL;
-    char descr[64], *descr_cur;
-    void *opaque = NULL;
-    int i, j;
-    const AVFilterPad *pad;
-
-    printf("Filters:\n"
-           "  T.. = Timeline support\n"
-           "  .S. = Slice threading\n"
-           "  ..C = Command support\n"
-           "  A = Audio input/output\n"
-           "  V = Video input/output\n"
-           "  N = Dynamic number and/or type of input/output\n"
-           "  | = Source or sink filter\n");
-    while ((filter = av_filter_iterate(&opaque))) {
-        descr_cur = descr;
-        for (i = 0; i < 2; i++) {
-            if (i) {
-                *(descr_cur++) = '-';
-                *(descr_cur++) = '>';
-            }
-            pad = i ? filter->outputs : filter->inputs;
-            for (j = 0; pad && avfilter_pad_get_name(pad, j); j++) {
-                if (descr_cur >= descr + sizeof(descr) - 4)
-                    break;
-                *(descr_cur++) = get_media_type_char(avfilter_pad_get_type(pad, j));
-            }
-            if (!j)
-                *(descr_cur++) = ((!i && (filter->flags & AVFILTER_FLAG_DYNAMIC_INPUTS)) ||
-                                  ( i && (filter->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS))) ? 'N' : '|';
-        }
-        *descr_cur = 0;
-        printf(" %c%c%c %-17s %-10s %s\n",
-               filter->flags & AVFILTER_FLAG_SUPPORT_TIMELINE ? 'T' : '.',
-               filter->flags & AVFILTER_FLAG_SLICE_THREADS    ? 'S' : '.',
-               filter->process_command                        ? 'C' : '.',
-               filter->name, descr, filter->description);
-    }
-#else
-    printf("No filters available: libavfilter disabled\n");
-#endif
-    return 0;
-}
-
-int show_colors(void *optctx, const char *opt, const char *arg)
-{
-    const char *name;
-    const uint8_t *rgb;
-    int i;
-
-    printf("%-32s #RRGGBB\n", "name");
-
-    for (i = 0; name = av_get_known_color_name(i, &rgb); i++)
-        printf("%-32s #%02x%02x%02x\n", name, rgb[0], rgb[1], rgb[2]);
-
-    return 0;
-}
-
-int show_pix_fmts(void *optctx, const char *opt, const char *arg)
-{
-    const AVPixFmtDescriptor *pix_desc = NULL;
-
-    printf("Pixel formats:\n"
-           "I.... = Supported Input  format for conversion\n"
-           ".O... = Supported Output format for conversion\n"
-           "..H.. = Hardware accelerated format\n"
-           "...P. = Paletted format\n"
-           "....B = Bitstream format\n"
-           "FLAGS NAME            NB_COMPONENTS BITS_PER_PIXEL\n"
-           "-----\n");
-
-#if !CONFIG_SWSCALE
-#   define sws_isSupportedInput(x)  0
-#   define sws_isSupportedOutput(x) 0
-#endif
-
-    while ((pix_desc = av_pix_fmt_desc_next(pix_desc))) {
-        enum AVPixelFormat av_unused pix_fmt = av_pix_fmt_desc_get_id(pix_desc);
-        printf("%c%c%c%c%c %-16s       %d            %2d\n",
-               sws_isSupportedInput (pix_fmt)              ? 'I' : '.',
-               sws_isSupportedOutput(pix_fmt)              ? 'O' : '.',
-               pix_desc->flags & AV_PIX_FMT_FLAG_HWACCEL   ? 'H' : '.',
-               pix_desc->flags & AV_PIX_FMT_FLAG_PAL       ? 'P' : '.',
-               pix_desc->flags & AV_PIX_FMT_FLAG_BITSTREAM ? 'B' : '.',
-               pix_desc->name,
-               pix_desc->nb_components,
-               av_get_bits_per_pixel(pix_desc));
-    }
-    return 0;
-}
-
-int show_layouts(void *optctx, const char *opt, const char *arg)
-{
-    int i = 0;
-    uint64_t layout, j;
-    const char *name, *descr;
-
-    printf("Individual channels:\n"
-           "NAME           DESCRIPTION\n");
-    for (i = 0; i < 63; i++) {
-        name = av_get_channel_name((uint64_t)1 << i);
-        if (!name)
-            continue;
-        descr = av_get_channel_description((uint64_t)1 << i);
-        printf("%-14s %s\n", name, descr);
-    }
-    printf("\nStandard channel layouts:\n"
-           "NAME           DECOMPOSITION\n");
-    for (i = 0; !av_get_standard_channel_layout(i, &layout, &name); i++) {
-        if (name) {
-            printf("%-14s ", name);
-            for (j = 1; j; j <<= 1)
-                if ((layout & j))
-                    printf("%s%s", (layout & (j - 1)) ? "+" : "", av_get_channel_name(j));
-            printf("\n");
-        }
-    }
-    return 0;
-}
-
-int show_sample_fmts(void *optctx, const char *opt, const char *arg)
-{
-    int i;
-    char fmt_str[128];
-    for (i = -1; i < AV_SAMPLE_FMT_NB; i++)
-        printf("%s\n", av_get_sample_fmt_string(fmt_str, sizeof(fmt_str), i));
-    return 0;
-}
-
-static void show_help_codec(const char *name, int encoder)
-{
-    const AVCodecDescriptor *desc;
-    const AVCodec *codec;
-
-    if (!name) {
-        av_log(NULL, AV_LOG_ERROR, "No codec name specified.\n");
-        return;
-    }
-
-    codec = encoder ? avcodec_find_encoder_by_name(name) :
-                      avcodec_find_decoder_by_name(name);
-
-    if (codec)
-        print_codec(codec);
-    else if ((desc = avcodec_descriptor_get_by_name(name))) {
-        void *iter = NULL;
-        int printed = 0;
-
-        while ((codec = next_codec_for_id(desc->id, &iter, encoder))) {
-            printed = 1;
-            print_codec(codec);
-        }
-
-        if (!printed) {
-            av_log(NULL, AV_LOG_ERROR, "Codec '%s' is known to FFmpeg, "
-                   "but no %s for it are available. FFmpeg might need to be "
-                   "recompiled with additional external libraries.\n",
-                   name, encoder ? "encoders" : "decoders");
-        }
-    } else {
-        av_log(NULL, AV_LOG_ERROR, "Codec '%s' is not recognized by FFmpeg.\n",
-               name);
-    }
-}
-
-static void show_help_demuxer(const char *name)
-{
-    const AVInputFormat *fmt = av_find_input_format(name);
-
-    if (!fmt) {
-        av_log(NULL, AV_LOG_ERROR, "Unknown format '%s'.\n", name);
-        return;
-    }
-
-    printf("Demuxer %s [%s]:\n", fmt->name, fmt->long_name);
-
-    if (fmt->extensions)
-        printf("    Common extensions: %s.\n", fmt->extensions);
-
-    if (fmt->priv_class)
-        show_help_children(fmt->priv_class, AV_OPT_FLAG_DECODING_PARAM);
-}
-
-static void show_help_protocol(const char *name)
-{
-    const AVClass *proto_class;
-
-    if (!name) {
-        av_log(NULL, AV_LOG_ERROR, "No protocol name specified.\n");
-        return;
-    }
-
-    proto_class = avio_protocol_get_class(name);
-    if (!proto_class) {
-        av_log(NULL, AV_LOG_ERROR, "Unknown protocol '%s'.\n", name);
-        return;
-    }
-
-    show_help_children(proto_class, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM);
-}
-
-static void show_help_muxer(const char *name)
-{
-    const AVCodecDescriptor *desc;
-    const AVOutputFormat *fmt = av_guess_format(name, NULL, NULL);
-
-    if (!fmt) {
-        av_log(NULL, AV_LOG_ERROR, "Unknown format '%s'.\n", name);
-        return;
-    }
-
-    printf("Muxer %s [%s]:\n", fmt->name, fmt->long_name);
-
-    if (fmt->extensions)
-        printf("    Common extensions: %s.\n", fmt->extensions);
-    if (fmt->mime_type)
-        printf("    Mime type: %s.\n", fmt->mime_type);
-    if (fmt->video_codec != AV_CODEC_ID_NONE &&
-        (desc = avcodec_descriptor_get(fmt->video_codec))) {
-        printf("    Default video codec: %s.\n", desc->name);
-    }
-    if (fmt->audio_codec != AV_CODEC_ID_NONE &&
-        (desc = avcodec_descriptor_get(fmt->audio_codec))) {
-        printf("    Default audio codec: %s.\n", desc->name);
-    }
-    if (fmt->subtitle_codec != AV_CODEC_ID_NONE &&
-        (desc = avcodec_descriptor_get(fmt->subtitle_codec))) {
-        printf("    Default subtitle codec: %s.\n", desc->name);
-    }
-
-    if (fmt->priv_class)
-        show_help_children(fmt->priv_class, AV_OPT_FLAG_ENCODING_PARAM);
-}
-
-#if CONFIG_AVFILTER
-static void show_help_filter(const char *name)
-{
-#if CONFIG_AVFILTER
-    const AVFilter *f = avfilter_get_by_name(name);
-    int i, count;
-
-    if (!name) {
-        av_log(NULL, AV_LOG_ERROR, "No filter name specified.\n");
-        return;
-    } else if (!f) {
-        av_log(NULL, AV_LOG_ERROR, "Unknown filter '%s'.\n", name);
-        return;
-    }
-
-    printf("Filter %s\n", f->name);
-    if (f->description)
-        printf("  %s\n", f->description);
-
-    if (f->flags & AVFILTER_FLAG_SLICE_THREADS)
-        printf("    slice threading supported\n");
-
-    printf("    Inputs:\n");
-    count = avfilter_pad_count(f->inputs);
-    for (i = 0; i < count; i++) {
-        printf("       #%d: %s (%s)\n", i, avfilter_pad_get_name(f->inputs, i),
-               media_type_string(avfilter_pad_get_type(f->inputs, i)));
-    }
-    if (f->flags & AVFILTER_FLAG_DYNAMIC_INPUTS)
-        printf("        dynamic (depending on the options)\n");
-    else if (!count)
-        printf("        none (source filter)\n");
-
-    printf("    Outputs:\n");
-    count = avfilter_pad_count(f->outputs);
-    for (i = 0; i < count; i++) {
-        printf("       #%d: %s (%s)\n", i, avfilter_pad_get_name(f->outputs, i),
-               media_type_string(avfilter_pad_get_type(f->outputs, i)));
-    }
-    if (f->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS)
-        printf("        dynamic (depending on the options)\n");
-    else if (!count)
-        printf("        none (sink filter)\n");
-
-    if (f->priv_class)
-        show_help_children(f->priv_class, AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM |
-                                          AV_OPT_FLAG_AUDIO_PARAM);
-    if (f->flags & AVFILTER_FLAG_SUPPORT_TIMELINE)
-        printf("This filter has support for timeline through the 'enable' option.\n");
-#else
-    av_log(NULL, AV_LOG_ERROR, "Build without libavfilter; "
-           "can not to satisfy request\n");
-#endif
-}
-#endif
-
-static void show_help_bsf(const char *name)
-{
-    const AVBitStreamFilter *bsf = av_bsf_get_by_name(name);
-
-    if (!name) {
-        av_log(NULL, AV_LOG_ERROR, "No bitstream filter name specified.\n");
-        return;
-    } else if (!bsf) {
-        av_log(NULL, AV_LOG_ERROR, "Unknown bit stream filter '%s'.\n", name);
-        return;
-    }
-
-    printf("Bit stream filter %s\n", bsf->name);
-    PRINT_CODEC_SUPPORTED(bsf, codec_ids, enum AVCodecID, "codecs",
-                          AV_CODEC_ID_NONE, GET_CODEC_NAME);
-    if (bsf->priv_class)
-        show_help_children(bsf->priv_class, AV_OPT_FLAG_BSF_PARAM);
-}
-
-int show_help(void *optctx, const char *opt, const char *arg)
-{
-    char *topic, *par;
-    av_log_set_callback(log_callback_help);
-
-    topic = av_strdup(arg ? arg : "");
-    if (!topic)
-        return AVERROR(ENOMEM);
-    par = strchr(topic, '=');
-    if (par)
-        *par++ = 0;
-
-    if (!*topic) {
-        show_help_default(topic, par);
-    } else if (!strcmp(topic, "decoder")) {
-        show_help_codec(par, 0);
-    } else if (!strcmp(topic, "encoder")) {
-        show_help_codec(par, 1);
-    } else if (!strcmp(topic, "demuxer")) {
-        show_help_demuxer(par);
-    } else if (!strcmp(topic, "muxer")) {
-        show_help_muxer(par);
-    } else if (!strcmp(topic, "protocol")) {
-        show_help_protocol(par);
-#if CONFIG_AVFILTER
-    } else if (!strcmp(topic, "filter")) {
-        show_help_filter(par);
-#endif
-    } else if (!strcmp(topic, "bsf")) {
-        show_help_bsf(par);
-    } else {
-        show_help_default(topic, par);
-    }
-
-    av_freep(&topic);
-    return 0;
-}
-
-int read_yesno(void)
-{
-    int c = getchar();
-    int yesno = (av_toupper(c) == 'Y');
-
-    while (c != '\n' && c != EOF)
-        c = getchar();
-
-    return yesno;
-}
-
-FILE *get_preset_file(char *filename, size_t filename_size,
-                      const char *preset_name, int is_path,
-                      const char *codec_name)
-{
-    FILE *f = NULL;
-    int i;
-    const char *base[3] = { getenv("FFMPEG_DATADIR"),
-                            getenv("HOME"),
-                            FFMPEG_DATADIR, };
-
-    if (is_path) {
-        av_strlcpy(filename, preset_name, filename_size);
-        f = fopen(filename, "r");
-    } else {
-#if HAVE_GETMODULEHANDLE && defined(_WIN32)
-        char datadir[MAX_PATH], *ls;
-        base[2] = NULL;
-
-        if (GetModuleFileNameA(GetModuleHandleA(NULL), datadir, sizeof(datadir) - 1))
-        {
-            for (ls = datadir; ls < datadir + strlen(datadir); ls++)
-                if (*ls == '\\') *ls = '/';
-
-            if (ls = strrchr(datadir, '/'))
-            {
-                *ls = 0;
-                strncat(datadir, "/ffpresets",  sizeof(datadir) - 1 - strlen(datadir));
-                base[2] = datadir;
-            }
-        }
-#endif
-        for (i = 0; i < 3 && !f; i++) {
-            if (!base[i])
-                continue;
-            snprintf(filename, filename_size, "%s%s/%s.ffpreset", base[i],
-                     i != 1 ? "" : "/.ffmpeg", preset_name);
-            f = fopen(filename, "r");
-            if (!f && codec_name) {
-                snprintf(filename, filename_size,
-                         "%s%s/%s-%s.ffpreset",
-                         base[i], i != 1 ? "" : "/.ffmpeg", codec_name,
-                         preset_name);
-                f = fopen(filename, "r");
-            }
-        }
-    }
-
-    return f;
-}
-
-int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
-{
-    int ret = avformat_match_stream_specifier(s, st, spec);
-    if (ret < 0)
-        av_log(s, AV_LOG_ERROR, "Invalid stream specifier: %s.\n", spec);
-    return ret;
-}
-
-AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
-                                AVFormatContext *s, AVStream *st, AVCodec *codec)
-{
-    AVDictionary    *ret = NULL;
-    AVDictionaryEntry *t = NULL;
-    int            flags = s->oformat ? AV_OPT_FLAG_ENCODING_PARAM
-                                      : AV_OPT_FLAG_DECODING_PARAM;
-    char          prefix = 0;
-    const AVClass    *cc = avcodec_get_class();
-
-    if (!codec)
-        codec            = s->oformat ? avcodec_find_encoder(codec_id)
-                                      : avcodec_find_decoder(codec_id);
-
-    switch (st->codecpar->codec_type) {
-    case AVMEDIA_TYPE_VIDEO:
-        prefix  = 'v';
-        flags  |= AV_OPT_FLAG_VIDEO_PARAM;
-        break;
-    case AVMEDIA_TYPE_AUDIO:
-        prefix  = 'a';
-        flags  |= AV_OPT_FLAG_AUDIO_PARAM;
-        break;
-    case AVMEDIA_TYPE_SUBTITLE:
-        prefix  = 's';
-        flags  |= AV_OPT_FLAG_SUBTITLE_PARAM;
-        break;
-    }
-
-    while (t = av_dict_get(opts, "", t, AV_DICT_IGNORE_SUFFIX)) {
-        char *p = strchr(t->key, ':');
-
-        /* check stream specification in opt name */
-        if (p)
-            switch (check_stream_specifier(s, st, p + 1)) {
-            case  1: *p = 0; break;
-            case  0:         continue;
-            default:         exit_program(1);
-            }
-
-        if (av_opt_find(&cc, t->key, NULL, flags, AV_OPT_SEARCH_FAKE_OBJ) ||
-            !codec ||
-            (codec->priv_class &&
-             av_opt_find(&codec->priv_class, t->key, NULL, flags,
-                         AV_OPT_SEARCH_FAKE_OBJ)))
-            av_dict_set(&ret, t->key, t->value, 0);
-        else if (t->key[0] == prefix &&
-                 av_opt_find(&cc, t->key + 1, NULL, flags,
-                             AV_OPT_SEARCH_FAKE_OBJ))
-            av_dict_set(&ret, t->key + 1, t->value, 0);
-
-        if (p)
-            *p = ':';
-    }
-    return ret;
-}
-
-AVDictionary **setup_find_stream_info_opts(AVFormatContext *s,
-                                           AVDictionary *codec_opts)
-{
-    int i;
-    AVDictionary **opts;
-
-    if (!s->nb_streams)
-        return NULL;
-    opts = av_mallocz_array(s->nb_streams, sizeof(*opts));
-    if (!opts) {
-        av_log(NULL, AV_LOG_ERROR,
-               "Could not alloc memory for stream options.\n");
-        return NULL;
-    }
-    for (i = 0; i < s->nb_streams; i++)
-        opts[i] = filter_codec_opts(codec_opts, s->streams[i]->codecpar->codec_id,
-                                    s, s->streams[i], NULL);
-    return opts;
-}
-
-void *grow_array(void *array, int elem_size, int *size, int new_size)
-{
-    if (new_size >= INT_MAX / elem_size) {
-        av_log(NULL, AV_LOG_ERROR, "Array too big.\n");
-        exit_program(1);
-    }
-    if (*size < new_size) {
-        uint8_t *tmp = av_realloc_array(array, new_size, elem_size);
-        if (!tmp) {
-            av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
-            exit_program(1);
-        }
-        memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size);
-        *size = new_size;
-        return tmp;
-    }
-    return array;
-}
-
-double get_rotation(AVStream *st)
-{
-    uint8_t* displaymatrix = av_stream_get_side_data(st,
-                                                     AV_PKT_DATA_DISPLAYMATRIX, NULL);
-    double theta = 0;
-    if (displaymatrix)
-        theta = -av_display_rotation_get((int32_t*) displaymatrix);
-
-    theta -= 360*floor(theta/360 + 0.9/360);
-
-    if (fabs(theta - 90*round(theta/90)) > 2)
-        av_log(NULL, AV_LOG_WARNING, "Odd rotation angle.\n"
-               "If you want to help, upload a sample "
-               "of this file to ftp://upload.ffmpeg.org/incoming/ "
-               "and contact the ffmpeg-devel mailing list. (ffmpeg-devel@ffmpeg.org)");
-
-    return theta;
-}
-
-#if CONFIG_AVDEVICE
-static int print_device_sources(AVInputFormat *fmt, AVDictionary *opts)
-{
-    int ret, i;
-    AVDeviceInfoList *device_list = NULL;
-
-    if (!fmt || !fmt->priv_class  || !AV_IS_INPUT_DEVICE(fmt->priv_class->category))
-        return AVERROR(EINVAL);
-
-    printf("Auto-detected sources for %s:\n", fmt->name);
-    if (!fmt->get_device_list) {
-        ret = AVERROR(ENOSYS);
-        printf("Cannot list sources. Not implemented.\n");
-        goto fail;
-    }
-
-    if ((ret = avdevice_list_input_sources(fmt, NULL, opts, &device_list)) < 0) {
-        printf("Cannot list sources.\n");
-        goto fail;
-    }
-
-    for (i = 0; i < device_list->nb_devices; i++) {
-        printf("%s %s [%s]\n", device_list->default_device == i ? "*" : " ",
-               device_list->devices[i]->device_name, device_list->devices[i]->device_description);
-    }
-
-  fail:
-    avdevice_free_list_devices(&device_list);
-    return ret;
-}
-
-static int print_device_sinks(AVOutputFormat *fmt, AVDictionary *opts)
-{
-    int ret, i;
-    AVDeviceInfoList *device_list = NULL;
-
-    if (!fmt || !fmt->priv_class  || !AV_IS_OUTPUT_DEVICE(fmt->priv_class->category))
-        return AVERROR(EINVAL);
-
-    printf("Auto-detected sinks for %s:\n", fmt->name);
-    if (!fmt->get_device_list) {
-        ret = AVERROR(ENOSYS);
-        printf("Cannot list sinks. Not implemented.\n");
-        goto fail;
-    }
-
-    if ((ret = avdevice_list_output_sinks(fmt, NULL, opts, &device_list)) < 0) {
-        printf("Cannot list sinks.\n");
-        goto fail;
-    }
-
-    for (i = 0; i < device_list->nb_devices; i++) {
-        printf("%s %s [%s]\n", device_list->default_device == i ? "*" : " ",
-               device_list->devices[i]->device_name, device_list->devices[i]->device_description);
-    }
-
-  fail:
-    avdevice_free_list_devices(&device_list);
-    return ret;
-}
-
-static int show_sinks_sources_parse_arg(const char *arg, char **dev, AVDictionary **opts)
-{
-    int ret;
-    if (arg) {
-        char *opts_str = NULL;
-        av_assert0(dev && opts);
-        *dev = av_strdup(arg);
-        if (!*dev)
-            return AVERROR(ENOMEM);
-        if ((opts_str = strchr(*dev, ','))) {
-            *(opts_str++) = '\0';
-            if (opts_str[0] && ((ret = av_dict_parse_string(opts, opts_str, "=", ":", 0)) < 0)) {
-                av_freep(dev);
-                return ret;
-            }
-        }
-    } else
-        printf("\nDevice name is not provided.\n"
-                "You can pass devicename[,opt1=val1[,opt2=val2...]] as an argument.\n\n");
-    return 0;
-}
-
-int show_sources(void *optctx, const char *opt, const char *arg)
-{
-    AVInputFormat *fmt = NULL;
-    char *dev = NULL;
-    AVDictionary *opts = NULL;
-    int ret = 0;
-    int error_level = av_log_get_level();
-
-    av_log_set_level(AV_LOG_ERROR);
-
-    if ((ret = show_sinks_sources_parse_arg(arg, &dev, &opts)) < 0)
-        goto fail;
-
-    do {
-        fmt = av_input_audio_device_next(fmt);
-        if (fmt) {
-            if (!strcmp(fmt->name, "lavfi"))
-                continue; //it's pointless to probe lavfi
-            if (dev && !av_match_name(dev, fmt->name))
-                continue;
-            print_device_sources(fmt, opts);
-        }
-    } while (fmt);
-    do {
-        fmt = av_input_video_device_next(fmt);
-        if (fmt) {
-            if (dev && !av_match_name(dev, fmt->name))
-                continue;
-            print_device_sources(fmt, opts);
-        }
-    } while (fmt);
-  fail:
-    av_dict_free(&opts);
-    av_free(dev);
-    av_log_set_level(error_level);
-    return ret;
-}
-
-int show_sinks(void *optctx, const char *opt, const char *arg)
-{
-    AVOutputFormat *fmt = NULL;
-    char *dev = NULL;
-    AVDictionary *opts = NULL;
-    int ret = 0;
-    int error_level = av_log_get_level();
-
-    av_log_set_level(AV_LOG_ERROR);
-
-    if ((ret = show_sinks_sources_parse_arg(arg, &dev, &opts)) < 0)
-        goto fail;
-
-    do {
-        fmt = av_output_audio_device_next(fmt);
-        if (fmt) {
-            if (dev && !av_match_name(dev, fmt->name))
-                continue;
-            print_device_sinks(fmt, opts);
-        }
-    } while (fmt);
-    do {
-        fmt = av_output_video_device_next(fmt);
-        if (fmt) {
-            if (dev && !av_match_name(dev, fmt->name))
-                continue;
-            print_device_sinks(fmt, opts);
-        }
-    } while (fmt);
-  fail:
-    av_dict_free(&opts);
-    av_free(dev);
-    av_log_set_level(error_level);
-    return ret;
-}
-
-#endif
diff --git a/fuchsia/config/default/arm64/config.h b/fuchsia/config/default/arm64/config.h
new file mode 100644
index 0000000..0556857
--- /dev/null
+++ b/fuchsia/config/default/arm64/config.h
@@ -0,0 +1,2588 @@
+/* Automatically generated by configure - do not modify! */
+#ifndef FFMPEG_CONFIG_H
+#define FFMPEG_CONFIG_H
+#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/dalesat/fuchsia/third_party/opus/include --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cross-prefix=/usr/bin/x86_64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --disable-linux-perf --disable-error-resilience"
+#define FFMPEG_LICENSE "LGPL version 2.1 or later"
+#define CONFIG_THIS_YEAR 2020
+#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
+#define CC_IDENT "Fuchsia clang version 11.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project dd484baffdf4a92e564c38a17d35a742e633b0e0)"
+#define av_restrict restrict
+#define EXTERN_PREFIX ""
+#define EXTERN_ASM 
+#define BUILDSUF ""
+#define SLIBSUF ".so"
+#define HAVE_MMX2 HAVE_MMXEXT
+#define SWS_MAX_FILTER_SIZE 256
+#define ARCH_AARCH64 1
+#define ARCH_ALPHA 0
+#define ARCH_ARM 0
+#define ARCH_AVR32 0
+#define ARCH_AVR32_AP 0
+#define ARCH_AVR32_UC 0
+#define ARCH_BFIN 0
+#define ARCH_IA64 0
+#define ARCH_M68K 0
+#define ARCH_MIPS 0
+#define ARCH_MIPS64 0
+#define ARCH_PARISC 0
+#define ARCH_PPC 0
+#define ARCH_PPC64 0
+#define ARCH_S390 0
+#define ARCH_SH4 0
+#define ARCH_SPARC 0
+#define ARCH_SPARC64 0
+#define ARCH_TILEGX 0
+#define ARCH_TILEPRO 0
+#define ARCH_TOMI 0
+#define ARCH_X86 0
+#define ARCH_X86_32 0
+#define ARCH_X86_64 0
+#define HAVE_ARMV5TE 0
+#define HAVE_ARMV6 0
+#define HAVE_ARMV6T2 0
+#define HAVE_ARMV8 1
+#define HAVE_NEON 1
+#define HAVE_VFP 1
+#define HAVE_VFPV3 0
+#define HAVE_SETEND 0
+#define HAVE_ALTIVEC 0
+#define HAVE_DCBZL 0
+#define HAVE_LDBRX 0
+#define HAVE_POWER8 0
+#define HAVE_PPC4XX 0
+#define HAVE_VSX 0
+#define HAVE_AESNI 0
+#define HAVE_AMD3DNOW 0
+#define HAVE_AMD3DNOWEXT 0
+#define HAVE_AVX 0
+#define HAVE_AVX2 0
+#define HAVE_AVX512 0
+#define HAVE_FMA3 0
+#define HAVE_FMA4 0
+#define HAVE_MMX 0
+#define HAVE_MMXEXT 0
+#define HAVE_SSE 0
+#define HAVE_SSE2 0
+#define HAVE_SSE3 0
+#define HAVE_SSE4 0
+#define HAVE_SSE42 0
+#define HAVE_SSSE3 0
+#define HAVE_XOP 0
+#define HAVE_CPUNOP 0
+#define HAVE_I686 0
+#define HAVE_MIPSFPU 0
+#define HAVE_MIPS32R2 0
+#define HAVE_MIPS32R5 0
+#define HAVE_MIPS64R2 0
+#define HAVE_MIPS32R6 0
+#define HAVE_MIPS64R6 0
+#define HAVE_MIPSDSP 0
+#define HAVE_MIPSDSPR2 0
+#define HAVE_MSA 0
+#define HAVE_MSA2 0
+#define HAVE_LOONGSON2 0
+#define HAVE_LOONGSON3 0
+#define HAVE_MMI 0
+#define HAVE_ARMV5TE_EXTERNAL 0
+#define HAVE_ARMV6_EXTERNAL 0
+#define HAVE_ARMV6T2_EXTERNAL 0
+#define HAVE_ARMV8_EXTERNAL 1
+#define HAVE_NEON_EXTERNAL 1
+#define HAVE_VFP_EXTERNAL 1
+#define HAVE_VFPV3_EXTERNAL 0
+#define HAVE_SETEND_EXTERNAL 0
+#define HAVE_ALTIVEC_EXTERNAL 0
+#define HAVE_DCBZL_EXTERNAL 0
+#define HAVE_LDBRX_EXTERNAL 0
+#define HAVE_POWER8_EXTERNAL 0
+#define HAVE_PPC4XX_EXTERNAL 0
+#define HAVE_VSX_EXTERNAL 0
+#define HAVE_AESNI_EXTERNAL 0
+#define HAVE_AMD3DNOW_EXTERNAL 0
+#define HAVE_AMD3DNOWEXT_EXTERNAL 0
+#define HAVE_AVX_EXTERNAL 0
+#define HAVE_AVX2_EXTERNAL 0
+#define HAVE_AVX512_EXTERNAL 0
+#define HAVE_FMA3_EXTERNAL 0
+#define HAVE_FMA4_EXTERNAL 0
+#define HAVE_MMX_EXTERNAL 0
+#define HAVE_MMXEXT_EXTERNAL 0
+#define HAVE_SSE_EXTERNAL 0
+#define HAVE_SSE2_EXTERNAL 0
+#define HAVE_SSE3_EXTERNAL 0
+#define HAVE_SSE4_EXTERNAL 0
+#define HAVE_SSE42_EXTERNAL 0
+#define HAVE_SSSE3_EXTERNAL 0
+#define HAVE_XOP_EXTERNAL 0
+#define HAVE_CPUNOP_EXTERNAL 0
+#define HAVE_I686_EXTERNAL 0
+#define HAVE_MIPSFPU_EXTERNAL 0
+#define HAVE_MIPS32R2_EXTERNAL 0
+#define HAVE_MIPS32R5_EXTERNAL 0
+#define HAVE_MIPS64R2_EXTERNAL 0
+#define HAVE_MIPS32R6_EXTERNAL 0
+#define HAVE_MIPS64R6_EXTERNAL 0
+#define HAVE_MIPSDSP_EXTERNAL 0
+#define HAVE_MIPSDSPR2_EXTERNAL 0
+#define HAVE_MSA_EXTERNAL 0
+#define HAVE_MSA2_EXTERNAL 0
+#define HAVE_LOONGSON2_EXTERNAL 0
+#define HAVE_LOONGSON3_EXTERNAL 0
+#define HAVE_MMI_EXTERNAL 0
+#define HAVE_ARMV5TE_INLINE 0
+#define HAVE_ARMV6_INLINE 0
+#define HAVE_ARMV6T2_INLINE 0
+#define HAVE_ARMV8_INLINE 1
+#define HAVE_NEON_INLINE 1
+#define HAVE_VFP_INLINE 1
+#define HAVE_VFPV3_INLINE 0
+#define HAVE_SETEND_INLINE 0
+#define HAVE_ALTIVEC_INLINE 0
+#define HAVE_DCBZL_INLINE 0
+#define HAVE_LDBRX_INLINE 0
+#define HAVE_POWER8_INLINE 0
+#define HAVE_PPC4XX_INLINE 0
+#define HAVE_VSX_INLINE 0
+#define HAVE_AESNI_INLINE 0
+#define HAVE_AMD3DNOW_INLINE 0
+#define HAVE_AMD3DNOWEXT_INLINE 0
+#define HAVE_AVX_INLINE 0
+#define HAVE_AVX2_INLINE 0
+#define HAVE_AVX512_INLINE 0
+#define HAVE_FMA3_INLINE 0
+#define HAVE_FMA4_INLINE 0
+#define HAVE_MMX_INLINE 0
+#define HAVE_MMXEXT_INLINE 0
+#define HAVE_SSE_INLINE 0
+#define HAVE_SSE2_INLINE 0
+#define HAVE_SSE3_INLINE 0
+#define HAVE_SSE4_INLINE 0
+#define HAVE_SSE42_INLINE 0
+#define HAVE_SSSE3_INLINE 0
+#define HAVE_XOP_INLINE 0
+#define HAVE_CPUNOP_INLINE 0
+#define HAVE_I686_INLINE 0
+#define HAVE_MIPSFPU_INLINE 0
+#define HAVE_MIPS32R2_INLINE 0
+#define HAVE_MIPS32R5_INLINE 0
+#define HAVE_MIPS64R2_INLINE 0
+#define HAVE_MIPS32R6_INLINE 0
+#define HAVE_MIPS64R6_INLINE 0
+#define HAVE_MIPSDSP_INLINE 0
+#define HAVE_MIPSDSPR2_INLINE 0
+#define HAVE_MSA_INLINE 0
+#define HAVE_MSA2_INLINE 0
+#define HAVE_LOONGSON2_INLINE 0
+#define HAVE_LOONGSON3_INLINE 0
+#define HAVE_MMI_INLINE 0
+#define HAVE_ALIGNED_STACK 1
+#define HAVE_FAST_64BIT 1
+#define HAVE_FAST_CLZ 1
+#define HAVE_FAST_CMOV 0
+#define HAVE_LOCAL_ALIGNED 0
+#define HAVE_SIMD_ALIGN_16 1
+#define HAVE_SIMD_ALIGN_32 0
+#define HAVE_SIMD_ALIGN_64 0
+#define HAVE_ATOMIC_CAS_PTR 0
+#define HAVE_MACHINE_RW_BARRIER 0
+#define HAVE_MEMORYBARRIER 0
+#define HAVE_MM_EMPTY 0
+#define HAVE_RDTSC 0
+#define HAVE_SEM_TIMEDWAIT 1
+#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
+#define HAVE_CABS 0
+#define HAVE_CEXP 0
+#define HAVE_INLINE_ASM 1
+#define HAVE_SYMVER 0
+#define HAVE_X86ASM 0
+#define HAVE_BIGENDIAN 0
+#define HAVE_FAST_UNALIGNED 1
+#define HAVE_ARPA_INET_H 0
+#define HAVE_ASM_TYPES_H 1
+#define HAVE_CDIO_PARANOIA_H 0
+#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
+#define HAVE_CUDA_H 0
+#define HAVE_DISPATCH_DISPATCH_H 0
+#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
+#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
+#define HAVE_DEV_IC_BT8XX_H 0
+#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
+#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
+#define HAVE_DIRECT_H 0
+#define HAVE_DIRENT_H 1
+#define HAVE_DXGIDEBUG_H 0
+#define HAVE_DXVA_H 0
+#define HAVE_ES2_GL_H 0
+#define HAVE_GSM_H 0
+#define HAVE_IO_H 0
+#define HAVE_LINUX_PERF_EVENT_H 1
+#define HAVE_MACHINE_IOCTL_BT848_H 0
+#define HAVE_MACHINE_IOCTL_METEOR_H 0
+#define HAVE_MALLOC_H 1
+#define HAVE_OPENCV2_CORE_CORE_C_H 0
+#define HAVE_OPENGL_GL3_H 0
+#define HAVE_POLL_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_SOUNDCARD_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_UN_H 1
+#define HAVE_SYS_VIDEOIO_H 0
+#define HAVE_TERMIOS_H 1
+#define HAVE_UDPLITE_H 0
+#define HAVE_UNISTD_H 1
+#define HAVE_VALGRIND_VALGRIND_H 0
+#define HAVE_WINDOWS_H 0
+#define HAVE_WINSOCK2_H 0
+#define HAVE_INTRINSICS_NEON 1
+#define HAVE_ATANF 1
+#define HAVE_ATAN2F 1
+#define HAVE_CBRT 1
+#define HAVE_CBRTF 1
+#define HAVE_COPYSIGN 1
+#define HAVE_COSF 1
+#define HAVE_ERF 1
+#define HAVE_EXP2 1
+#define HAVE_EXP2F 1
+#define HAVE_EXPF 1
+#define HAVE_HYPOT 1
+#define HAVE_ISFINITE 1
+#define HAVE_ISINF 1
+#define HAVE_ISNAN 1
+#define HAVE_LDEXPF 1
+#define HAVE_LLRINT 1
+#define HAVE_LLRINTF 1
+#define HAVE_LOG2 1
+#define HAVE_LOG2F 1
+#define HAVE_LOG10F 1
+#define HAVE_LRINT 1
+#define HAVE_LRINTF 1
+#define HAVE_POWF 1
+#define HAVE_RINT 1
+#define HAVE_ROUND 1
+#define HAVE_ROUNDF 1
+#define HAVE_SINF 1
+#define HAVE_TRUNC 1
+#define HAVE_TRUNCF 1
+#define HAVE_DOS_PATHS 0
+#define HAVE_LIBC_MSVCRT 0
+#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
+#define HAVE_SECTION_DATA_REL_RO 1
+#define HAVE_THREADS 1
+#define HAVE_UWP 0
+#define HAVE_WINRT 0
+#define HAVE_ACCESS 1
+#define HAVE_ALIGNED_MALLOC 0
+#define HAVE_ARC4RANDOM 0
+#define HAVE_CLOCK_GETTIME 1
+#define HAVE_CLOSESOCKET 0
+#define HAVE_COMMANDLINETOARGVW 0
+#define HAVE_FCNTL 1
+#define HAVE_GETADDRINFO 0
+#define HAVE_GETHRTIME 0
+#define HAVE_GETOPT 1
+#define HAVE_GETMODULEHANDLE 0
+#define HAVE_GETPROCESSAFFINITYMASK 0
+#define HAVE_GETPROCESSMEMORYINFO 0
+#define HAVE_GETPROCESSTIMES 0
+#define HAVE_GETRUSAGE 1
+#define HAVE_GETSTDHANDLE 0
+#define HAVE_GETSYSTEMTIMEASFILETIME 0
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GLOB 1
+#define HAVE_GLXGETPROCADDRESS 0
+#define HAVE_GMTIME_R 1
+#define HAVE_INET_ATON 0
+#define HAVE_ISATTY 1
+#define HAVE_KBHIT 0
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LSTAT 1
+#define HAVE_LZO1X_999_COMPRESS 0
+#define HAVE_MACH_ABSOLUTE_TIME 0
+#define HAVE_MAPVIEWOFFILE 0
+#define HAVE_MEMALIGN 1
+#define HAVE_MKSTEMP 1
+#define HAVE_MMAP 1
+#define HAVE_MPROTECT 1
+#define HAVE_NANOSLEEP 1
+#define HAVE_PEEKNAMEDPIPE 0
+#define HAVE_POSIX_MEMALIGN 1
+#define HAVE_PTHREAD_CANCEL 1
+#define HAVE_SCHED_GETAFFINITY 1
+#define HAVE_SECITEMIMPORT 0
+#define HAVE_SETCONSOLETEXTATTRIBUTE 0
+#define HAVE_SETCONSOLECTRLHANDLER 0
+#define HAVE_SETDLLDIRECTORY 0
+#define HAVE_SETMODE 0
+#define HAVE_SETRLIMIT 1
+#define HAVE_SLEEP 0
+#define HAVE_STRERROR_R 1
+#define HAVE_SYSCONF 1
+#define HAVE_SYSCTL 0
+#define HAVE_USLEEP 1
+#define HAVE_UTGETOSTYPEFROMSTRING 0
+#define HAVE_VIRTUALALLOC 0
+#define HAVE_WGLGETPROCADDRESS 0
+#define HAVE_BCRYPT 0
+#define HAVE_VAAPI_DRM 0
+#define HAVE_VAAPI_X11 0
+#define HAVE_VDPAU_X11 0
+#define HAVE_PTHREADS 1
+#define HAVE_OS2THREADS 0
+#define HAVE_W32THREADS 0
+#define HAVE_AS_ARCH_DIRECTIVE 0
+#define HAVE_AS_DN_DIRECTIVE 0
+#define HAVE_AS_FPU_DIRECTIVE 0
+#define HAVE_AS_FUNC 0
+#define HAVE_AS_OBJECT_ARCH 0
+#define HAVE_ASM_MOD_Q 0
+#define HAVE_BLOCKS_EXTENSION 0
+#define HAVE_EBP_AVAILABLE 0
+#define HAVE_EBX_AVAILABLE 0
+#define HAVE_GNU_AS 0
+#define HAVE_GNU_WINDRES 0
+#define HAVE_IBM_ASM 0
+#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+#define HAVE_INLINE_ASM_LABELS 1
+#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+#define HAVE_PRAGMA_DEPRECATED 1
+#define HAVE_RSYNC_CONTIMEOUT 1
+#define HAVE_SYMVER_ASM_LABEL 1
+#define HAVE_SYMVER_GNU_ASM 1
+/* #define HAVE_VFP_ARGS 0 -- softfp/hardfp selection is done by the fuchsia build */
+#define HAVE_XFORM_ASM 0
+#define HAVE_XMM_CLOBBERS 0
+#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
+#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
+#define HAVE_SOCKLEN_T 0
+#define HAVE_STRUCT_ADDRINFO 0
+#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
+#define HAVE_STRUCT_IP_MREQ_SOURCE 0
+#define HAVE_STRUCT_IPV6_MREQ 0
+#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
+#define HAVE_STRUCT_POLLFD 0
+#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
+#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
+#define HAVE_STRUCT_SOCKADDR_IN6 0
+#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
+#define HAVE_STRUCT_SOCKADDR_STORAGE 0
+#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
+#define HAVE_MAKEINFO 0
+#define HAVE_MAKEINFO_HTML 0
+#define HAVE_OPENCL_D3D11 0
+#define HAVE_OPENCL_DRM_ARM 0
+#define HAVE_OPENCL_DRM_BEIGNET 0
+#define HAVE_OPENCL_DXVA2 0
+#define HAVE_OPENCL_VAAPI_BEIGNET 0
+#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
+#define HAVE_PERL 1
+#define HAVE_POD2MAN 1
+#define HAVE_TEXI2HTML 0
+#define CONFIG_DOC 0
+#define CONFIG_HTMLPAGES 0
+#define CONFIG_MANPAGES 0
+#define CONFIG_PODPAGES 0
+#define CONFIG_TXTPAGES 0
+#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
+#define CONFIG_AVIO_READING_EXAMPLE 1
+#define CONFIG_DECODE_AUDIO_EXAMPLE 1
+#define CONFIG_DECODE_VIDEO_EXAMPLE 1
+#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
+#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
+#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
+#define CONFIG_EXTRACT_MVS_EXAMPLE 1
+#define CONFIG_FILTER_AUDIO_EXAMPLE 0
+#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
+#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
+#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
+#define CONFIG_HW_DECODE_EXAMPLE 1
+#define CONFIG_METADATA_EXAMPLE 1
+#define CONFIG_MUXING_EXAMPLE 0
+#define CONFIG_QSVDEC_EXAMPLE 0
+#define CONFIG_REMUXING_EXAMPLE 1
+#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
+#define CONFIG_SCALING_VIDEO_EXAMPLE 0
+#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
+#define CONFIG_TRANSCODING_EXAMPLE 0
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
+#define CONFIG_AVISYNTH 0
+#define CONFIG_FREI0R 0
+#define CONFIG_LIBCDIO 0
+#define CONFIG_LIBDAVS2 0
+#define CONFIG_LIBRUBBERBAND 0
+#define CONFIG_LIBVIDSTAB 0
+#define CONFIG_LIBX264 0
+#define CONFIG_LIBX265 0
+#define CONFIG_LIBXAVS 0
+#define CONFIG_LIBXAVS2 0
+#define CONFIG_LIBXVID 0
+#define CONFIG_DECKLINK 0
+#define CONFIG_LIBFDK_AAC 0
+#define CONFIG_OPENSSL 0
+#define CONFIG_LIBTLS 0
+#define CONFIG_GMP 0
+#define CONFIG_LIBARIBB24 0
+#define CONFIG_LIBLENSFUN 0
+#define CONFIG_LIBOPENCORE_AMRNB 0
+#define CONFIG_LIBOPENCORE_AMRWB 0
+#define CONFIG_LIBVMAF 0
+#define CONFIG_LIBVO_AMRWBENC 0
+#define CONFIG_MBEDTLS 0
+#define CONFIG_RKMPP 0
+#define CONFIG_LIBSMBCLIENT 0
+#define CONFIG_CHROMAPRINT 0
+#define CONFIG_GCRYPT 0
+#define CONFIG_GNUTLS 0
+#define CONFIG_JNI 0
+#define CONFIG_LADSPA 0
+#define CONFIG_LIBAOM 0
+#define CONFIG_LIBASS 0
+#define CONFIG_LIBBLURAY 0
+#define CONFIG_LIBBS2B 0
+#define CONFIG_LIBCACA 0
+#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
+#define CONFIG_LIBDAV1D 0
+#define CONFIG_LIBDC1394 0
+#define CONFIG_LIBDRM 0
+#define CONFIG_LIBFLITE 0
+#define CONFIG_LIBFONTCONFIG 0
+#define CONFIG_LIBFREETYPE 0
+#define CONFIG_LIBFRIBIDI 0
+#define CONFIG_LIBGLSLANG 0
+#define CONFIG_LIBGME 0
+#define CONFIG_LIBGSM 0
+#define CONFIG_LIBIEC61883 0
+#define CONFIG_LIBILBC 0
+#define CONFIG_LIBJACK 0
+#define CONFIG_LIBKLVANC 0
+#define CONFIG_LIBKVAZAAR 0
+#define CONFIG_LIBMODPLUG 0
+#define CONFIG_LIBMP3LAME 0
+#define CONFIG_LIBMYSOFA 0
+#define CONFIG_LIBOPENCV 0
+#define CONFIG_LIBOPENH264 0
+#define CONFIG_LIBOPENJPEG 0
+#define CONFIG_LIBOPENMPT 0
+#define CONFIG_LIBOPUS 1
+#define CONFIG_LIBPULSE 0
+#define CONFIG_LIBRABBITMQ 0
+#define CONFIG_LIBRAV1E 0
+#define CONFIG_LIBRSVG 0
+#define CONFIG_LIBRTMP 0
+#define CONFIG_LIBSHINE 0
+#define CONFIG_LIBSMBCLIENT 0
+#define CONFIG_LIBSNAPPY 0
+#define CONFIG_LIBSOXR 0
+#define CONFIG_LIBSPEEX 0
+#define CONFIG_LIBSRT 0
+#define CONFIG_LIBSSH 0
+#define CONFIG_LIBTENSORFLOW 0
+#define CONFIG_LIBTESSERACT 0
+#define CONFIG_LIBTHEORA 0
+#define CONFIG_LIBTWOLAME 0
+#define CONFIG_LIBV4L2 0
+#define CONFIG_LIBVORBIS 0
+#define CONFIG_LIBVPX 0
+#define CONFIG_LIBWAVPACK 0
+#define CONFIG_LIBWEBP 0
+#define CONFIG_LIBXML2 0
+#define CONFIG_LIBZIMG 0
+#define CONFIG_LIBZMQ 0
+#define CONFIG_LIBZVBI 0
+#define CONFIG_LV2 0
+#define CONFIG_MEDIACODEC 0
+#define CONFIG_OPENAL 0
+#define CONFIG_OPENGL 0
+#define CONFIG_POCKETSPHINX 0
+#define CONFIG_VAPOURSYNTH 0
+#define CONFIG_ALSA 0
+#define CONFIG_APPKIT 0
+#define CONFIG_AVFOUNDATION 0
+#define CONFIG_BZLIB 0
+#define CONFIG_COREIMAGE 0
+#define CONFIG_ICONV 0
+#define CONFIG_LIBXCB 0
+#define CONFIG_LIBXCB_SHM 0
+#define CONFIG_LIBXCB_SHAPE 0
+#define CONFIG_LIBXCB_XFIXES 0
+#define CONFIG_LZMA 0
+#define CONFIG_SCHANNEL 0
+#define CONFIG_SDL2 0
+#define CONFIG_SECURETRANSPORT 0
+#define CONFIG_SNDIO 0
+#define CONFIG_XLIB 0
+#define CONFIG_ZLIB 0
+#define CONFIG_CUDA_NVCC 0
+#define CONFIG_CUDA_SDK 0
+#define CONFIG_LIBNPP 0
+#define CONFIG_LIBMFX 0
+#define CONFIG_MMAL 0
+#define CONFIG_OMX 0
+#define CONFIG_OPENCL 0
+#define CONFIG_VULKAN 0
+#define CONFIG_AMF 0
+#define CONFIG_AUDIOTOOLBOX 0
+#define CONFIG_CRYSTALHD 0
+#define CONFIG_CUDA 0
+#define CONFIG_CUDA_LLVM 0
+#define CONFIG_CUVID 0
+#define CONFIG_D3D11VA 0
+#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
+#define CONFIG_NVDEC 0
+#define CONFIG_NVENC 0
+#define CONFIG_VAAPI 0
+#define CONFIG_VDPAU 0
+#define CONFIG_VIDEOTOOLBOX 0
+#define CONFIG_V4L2_M2M 0
+#define CONFIG_XVMC 0
+#define CONFIG_FTRAPV 0
+#define CONFIG_GRAY 0
+#define CONFIG_HARDCODED_TABLES 0
+#define CONFIG_OMX_RPI 0
+#define CONFIG_RUNTIME_CPUDETECT 1
+#define CONFIG_SAFE_BITSTREAM_READER 1
+#define CONFIG_SHARED 0
+#define CONFIG_SMALL 0
+#define CONFIG_STATIC 1
+#define CONFIG_SWSCALE_ALPHA 1
+#define CONFIG_GPL 0
+#define CONFIG_NONFREE 0
+#define CONFIG_VERSION3 0
+#define CONFIG_AVDEVICE 0
+#define CONFIG_AVFILTER 0
+#define CONFIG_SWSCALE 0
+#define CONFIG_POSTPROC 0
+#define CONFIG_AVFORMAT 1
+#define CONFIG_AVCODEC 1
+#define CONFIG_SWRESAMPLE 0
+#define CONFIG_AVRESAMPLE 0
+#define CONFIG_AVUTIL 1
+#define CONFIG_FFPLAY 0
+#define CONFIG_FFPROBE 0
+#define CONFIG_FFMPEG 0
+#define CONFIG_DCT 1
+#define CONFIG_DWT 0
+#define CONFIG_ERROR_RESILIENCE 0
+#define CONFIG_FAAN 0
+#define CONFIG_FAST_UNALIGNED 1
+#define CONFIG_FFT 1
+#define CONFIG_LSP 0
+#define CONFIG_LZO 0
+#define CONFIG_MDCT 1
+#define CONFIG_PIXELUTILS 0
+#define CONFIG_NETWORK 0
+#define CONFIG_RDFT 1
+#define CONFIG_AUTODETECT 0
+#define CONFIG_FONTCONFIG 0
+#define CONFIG_LARGE_TESTS 1
+#define CONFIG_LINUX_PERF 0
+#define CONFIG_MEMORY_POISONING 0
+#define CONFIG_NEON_CLOBBER_TEST 0
+#define CONFIG_OSSFUZZ 0
+#define CONFIG_PIC 1
+#define CONFIG_THUMB 0
+#define CONFIG_VALGRIND_BACKTRACE 0
+#define CONFIG_XMM_CLOBBER_TEST 0
+#define CONFIG_BSFS 1
+#define CONFIG_DECODERS 1
+#define CONFIG_ENCODERS 0
+#define CONFIG_HWACCELS 0
+#define CONFIG_PARSERS 1
+#define CONFIG_INDEVS 0
+#define CONFIG_OUTDEVS 0
+#define CONFIG_FILTERS 0
+#define CONFIG_DEMUXERS 1
+#define CONFIG_MUXERS 0
+#define CONFIG_PROTOCOLS 0
+#define CONFIG_AANDCTTABLES 0
+#define CONFIG_AC3DSP 0
+#define CONFIG_ADTS_HEADER 0
+#define CONFIG_AUDIO_FRAME_QUEUE 1
+#define CONFIG_AUDIODSP 0
+#define CONFIG_BLOCKDSP 0
+#define CONFIG_BSWAPDSP 0
+#define CONFIG_CABAC 0
+#define CONFIG_CBS 0
+#define CONFIG_CBS_AV1 0
+#define CONFIG_CBS_H264 0
+#define CONFIG_CBS_H265 0
+#define CONFIG_CBS_JPEG 0
+#define CONFIG_CBS_MPEG2 0
+#define CONFIG_CBS_VP9 0
+#define CONFIG_DIRAC_PARSE 1
+#define CONFIG_DNN 0
+#define CONFIG_DVPROFILE 0
+#define CONFIG_EXIF 0
+#define CONFIG_FAANDCT 0
+#define CONFIG_FAANIDCT 0
+#define CONFIG_FDCTDSP 0
+#define CONFIG_FLACDSP 1
+#define CONFIG_FMTCONVERT 0
+#define CONFIG_FRAME_THREAD_ENCODER 0
+#define CONFIG_G722DSP 0
+#define CONFIG_GOLOMB 1
+#define CONFIG_GPLV3 0
+#define CONFIG_H263DSP 0
+#define CONFIG_H264CHROMA 0
+#define CONFIG_H264DSP 0
+#define CONFIG_H264PARSE 0
+#define CONFIG_H264PRED 1
+#define CONFIG_H264QPEL 0
+#define CONFIG_HEVCPARSE 0
+#define CONFIG_HPELDSP 1
+#define CONFIG_HUFFMAN 0
+#define CONFIG_HUFFYUVDSP 0
+#define CONFIG_HUFFYUVENCDSP 0
+#define CONFIG_IDCTDSP 0
+#define CONFIG_IIRFILTER 0
+#define CONFIG_MDCT15 0
+#define CONFIG_INTRAX8 0
+#define CONFIG_ISO_MEDIA 1
+#define CONFIG_IVIDSP 0
+#define CONFIG_JPEGTABLES 0
+#define CONFIG_LGPLV3 0
+#define CONFIG_LIBX262 0
+#define CONFIG_LLAUDDSP 0
+#define CONFIG_LLVIDDSP 0
+#define CONFIG_LLVIDENCDSP 0
+#define CONFIG_LPC 0
+#define CONFIG_LZF 0
+#define CONFIG_ME_CMP 0
+#define CONFIG_MPEG_ER 0
+#define CONFIG_MPEGAUDIO 1
+#define CONFIG_MPEGAUDIODSP 1
+#define CONFIG_MPEGAUDIOHEADER 1
+#define CONFIG_MPEGVIDEO 0
+#define CONFIG_MPEGVIDEOENC 0
+#define CONFIG_MSS34DSP 0
+#define CONFIG_PIXBLOCKDSP 0
+#define CONFIG_QPELDSP 0
+#define CONFIG_QSV 0
+#define CONFIG_QSVDEC 0
+#define CONFIG_QSVENC 0
+#define CONFIG_QSVVPP 0
+#define CONFIG_RANGECODER 0
+#define CONFIG_RIFFDEC 1
+#define CONFIG_RIFFENC 0
+#define CONFIG_RTPDEC 0
+#define CONFIG_RTPENC_CHAIN 0
+#define CONFIG_RV34DSP 0
+#define CONFIG_SCENE_SAD 0
+#define CONFIG_SINEWIN 0
+#define CONFIG_SNAPPY 0
+#define CONFIG_SRTP 0
+#define CONFIG_STARTCODE 0
+#define CONFIG_TEXTUREDSP 0
+#define CONFIG_TEXTUREDSPENC 0
+#define CONFIG_TPELDSP 0
+#define CONFIG_VAAPI_1 0
+#define CONFIG_VAAPI_ENCODE 0
+#define CONFIG_VC1DSP 0
+#define CONFIG_VIDEODSP 1
+#define CONFIG_VP3DSP 1
+#define CONFIG_VP56DSP 0
+#define CONFIG_VP8DSP 1
+#define CONFIG_WMA_FREQS 0
+#define CONFIG_WMV2DSP 0
+#define CONFIG_AAC_ADTSTOASC_BSF 0
+#define CONFIG_AV1_FRAME_MERGE_BSF 0
+#define CONFIG_AV1_FRAME_SPLIT_BSF 0
+#define CONFIG_AV1_METADATA_BSF 0
+#define CONFIG_CHOMP_BSF 0
+#define CONFIG_DUMP_EXTRADATA_BSF 0
+#define CONFIG_DCA_CORE_BSF 0
+#define CONFIG_EAC3_CORE_BSF 0
+#define CONFIG_EXTRACT_EXTRADATA_BSF 0
+#define CONFIG_FILTER_UNITS_BSF 0
+#define CONFIG_H264_METADATA_BSF 0
+#define CONFIG_H264_MP4TOANNEXB_BSF 0
+#define CONFIG_H264_REDUNDANT_PPS_BSF 0
+#define CONFIG_HAPQA_EXTRACT_BSF 0
+#define CONFIG_HEVC_METADATA_BSF 0
+#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
+#define CONFIG_IMX_DUMP_HEADER_BSF 0
+#define CONFIG_MJPEG2JPEG_BSF 0
+#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
+#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
+#define CONFIG_MPEG2_METADATA_BSF 0
+#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
+#define CONFIG_MOV2TEXTSUB_BSF 0
+#define CONFIG_NOISE_BSF 0
+#define CONFIG_NULL_BSF 1
+#define CONFIG_PRORES_METADATA_BSF 0
+#define CONFIG_REMOVE_EXTRADATA_BSF 0
+#define CONFIG_TEXT2MOVSUB_BSF 0
+#define CONFIG_TRACE_HEADERS_BSF 0
+#define CONFIG_TRUEHD_CORE_BSF 0
+#define CONFIG_VP9_METADATA_BSF 0
+#define CONFIG_VP9_RAW_REORDER_BSF 0
+#define CONFIG_VP9_SUPERFRAME_BSF 0
+#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
+#define CONFIG_AASC_DECODER 0
+#define CONFIG_AIC_DECODER 0
+#define CONFIG_ALIAS_PIX_DECODER 0
+#define CONFIG_AGM_DECODER 0
+#define CONFIG_AMV_DECODER 0
+#define CONFIG_ANM_DECODER 0
+#define CONFIG_ANSI_DECODER 0
+#define CONFIG_APNG_DECODER 0
+#define CONFIG_ARBC_DECODER 0
+#define CONFIG_ASV1_DECODER 0
+#define CONFIG_ASV2_DECODER 0
+#define CONFIG_AURA_DECODER 0
+#define CONFIG_AURA2_DECODER 0
+#define CONFIG_AVRP_DECODER 0
+#define CONFIG_AVRN_DECODER 0
+#define CONFIG_AVS_DECODER 0
+#define CONFIG_AVUI_DECODER 0
+#define CONFIG_AYUV_DECODER 0
+#define CONFIG_BETHSOFTVID_DECODER 0
+#define CONFIG_BFI_DECODER 0
+#define CONFIG_BINK_DECODER 0
+#define CONFIG_BITPACKED_DECODER 0
+#define CONFIG_BMP_DECODER 0
+#define CONFIG_BMV_VIDEO_DECODER 0
+#define CONFIG_BRENDER_PIX_DECODER 0
+#define CONFIG_C93_DECODER 0
+#define CONFIG_CAVS_DECODER 0
+#define CONFIG_CDGRAPHICS_DECODER 0
+#define CONFIG_CDTOONS_DECODER 0
+#define CONFIG_CDXL_DECODER 0
+#define CONFIG_CFHD_DECODER 0
+#define CONFIG_CINEPAK_DECODER 0
+#define CONFIG_CLEARVIDEO_DECODER 0
+#define CONFIG_CLJR_DECODER 0
+#define CONFIG_CLLC_DECODER 0
+#define CONFIG_COMFORTNOISE_DECODER 0
+#define CONFIG_CPIA_DECODER 0
+#define CONFIG_CSCD_DECODER 0
+#define CONFIG_CYUV_DECODER 0
+#define CONFIG_DDS_DECODER 0
+#define CONFIG_DFA_DECODER 0
+#define CONFIG_DIRAC_DECODER 0
+#define CONFIG_DNXHD_DECODER 0
+#define CONFIG_DPX_DECODER 0
+#define CONFIG_DSICINVIDEO_DECODER 0
+#define CONFIG_DVAUDIO_DECODER 0
+#define CONFIG_DVVIDEO_DECODER 0
+#define CONFIG_DXA_DECODER 0
+#define CONFIG_DXTORY_DECODER 0
+#define CONFIG_DXV_DECODER 0
+#define CONFIG_EACMV_DECODER 0
+#define CONFIG_EAMAD_DECODER 0
+#define CONFIG_EATGQ_DECODER 0
+#define CONFIG_EATGV_DECODER 0
+#define CONFIG_EATQI_DECODER 0
+#define CONFIG_EIGHTBPS_DECODER 0
+#define CONFIG_EIGHTSVX_EXP_DECODER 0
+#define CONFIG_EIGHTSVX_FIB_DECODER 0
+#define CONFIG_ESCAPE124_DECODER 0
+#define CONFIG_ESCAPE130_DECODER 0
+#define CONFIG_EXR_DECODER 0
+#define CONFIG_FFV1_DECODER 0
+#define CONFIG_FFVHUFF_DECODER 0
+#define CONFIG_FIC_DECODER 0
+#define CONFIG_FITS_DECODER 0
+#define CONFIG_FLASHSV_DECODER 0
+#define CONFIG_FLASHSV2_DECODER 0
+#define CONFIG_FLIC_DECODER 0
+#define CONFIG_FLV_DECODER 0
+#define CONFIG_FMVC_DECODER 0
+#define CONFIG_FOURXM_DECODER 0
+#define CONFIG_FRAPS_DECODER 0
+#define CONFIG_FRWU_DECODER 0
+#define CONFIG_G2M_DECODER 0
+#define CONFIG_GDV_DECODER 0
+#define CONFIG_GIF_DECODER 0
+#define CONFIG_H261_DECODER 0
+#define CONFIG_H263_DECODER 0
+#define CONFIG_H263I_DECODER 0
+#define CONFIG_H263P_DECODER 0
+#define CONFIG_H263_V4L2M2M_DECODER 0
+#define CONFIG_H264_DECODER 0
+#define CONFIG_H264_CRYSTALHD_DECODER 0
+#define CONFIG_H264_V4L2M2M_DECODER 0
+#define CONFIG_H264_MEDIACODEC_DECODER 0
+#define CONFIG_H264_MMAL_DECODER 0
+#define CONFIG_H264_QSV_DECODER 0
+#define CONFIG_H264_RKMPP_DECODER 0
+#define CONFIG_HAP_DECODER 0
+#define CONFIG_HEVC_DECODER 0
+#define CONFIG_HEVC_QSV_DECODER 0
+#define CONFIG_HEVC_RKMPP_DECODER 0
+#define CONFIG_HEVC_V4L2M2M_DECODER 0
+#define CONFIG_HNM4_VIDEO_DECODER 0
+#define CONFIG_HQ_HQA_DECODER 0
+#define CONFIG_HQX_DECODER 0
+#define CONFIG_HUFFYUV_DECODER 0
+#define CONFIG_HYMT_DECODER 0
+#define CONFIG_IDCIN_DECODER 0
+#define CONFIG_IFF_ILBM_DECODER 0
+#define CONFIG_IMM4_DECODER 0
+#define CONFIG_IMM5_DECODER 0
+#define CONFIG_INDEO2_DECODER 0
+#define CONFIG_INDEO3_DECODER 0
+#define CONFIG_INDEO4_DECODER 0
+#define CONFIG_INDEO5_DECODER 0
+#define CONFIG_INTERPLAY_VIDEO_DECODER 0
+#define CONFIG_JPEG2000_DECODER 0
+#define CONFIG_JPEGLS_DECODER 0
+#define CONFIG_JV_DECODER 0
+#define CONFIG_KGV1_DECODER 0
+#define CONFIG_KMVC_DECODER 0
+#define CONFIG_LAGARITH_DECODER 0
+#define CONFIG_LOCO_DECODER 0
+#define CONFIG_LSCR_DECODER 0
+#define CONFIG_M101_DECODER 0
+#define CONFIG_MAGICYUV_DECODER 0
+#define CONFIG_MDEC_DECODER 0
+#define CONFIG_MIMIC_DECODER 0
+#define CONFIG_MJPEG_DECODER 0
+#define CONFIG_MJPEGB_DECODER 0
+#define CONFIG_MMVIDEO_DECODER 0
+#define CONFIG_MOTIONPIXELS_DECODER 0
+#define CONFIG_MPEG1VIDEO_DECODER 0
+#define CONFIG_MPEG2VIDEO_DECODER 0
+#define CONFIG_MPEG4_DECODER 0
+#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
+#define CONFIG_MPEG4_V4L2M2M_DECODER 0
+#define CONFIG_MPEG4_MMAL_DECODER 0
+#define CONFIG_MPEGVIDEO_DECODER 0
+#define CONFIG_MPEG1_V4L2M2M_DECODER 0
+#define CONFIG_MPEG2_MMAL_DECODER 0
+#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
+#define CONFIG_MPEG2_V4L2M2M_DECODER 0
+#define CONFIG_MPEG2_QSV_DECODER 0
+#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
+#define CONFIG_MSA1_DECODER 0
+#define CONFIG_MSCC_DECODER 0
+#define CONFIG_MSMPEG4V1_DECODER 0
+#define CONFIG_MSMPEG4V2_DECODER 0
+#define CONFIG_MSMPEG4V3_DECODER 0
+#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
+#define CONFIG_MSRLE_DECODER 0
+#define CONFIG_MSS1_DECODER 0
+#define CONFIG_MSS2_DECODER 0
+#define CONFIG_MSVIDEO1_DECODER 0
+#define CONFIG_MSZH_DECODER 0
+#define CONFIG_MTS2_DECODER 0
+#define CONFIG_MV30_DECODER 0
+#define CONFIG_MVC1_DECODER 0
+#define CONFIG_MVC2_DECODER 0
+#define CONFIG_MVDV_DECODER 0
+#define CONFIG_MVHA_DECODER 0
+#define CONFIG_MWSC_DECODER 0
+#define CONFIG_MXPEG_DECODER 0
+#define CONFIG_NUV_DECODER 0
+#define CONFIG_PAF_VIDEO_DECODER 0
+#define CONFIG_PAM_DECODER 0
+#define CONFIG_PBM_DECODER 0
+#define CONFIG_PCX_DECODER 0
+#define CONFIG_PGM_DECODER 0
+#define CONFIG_PGMYUV_DECODER 0
+#define CONFIG_PICTOR_DECODER 0
+#define CONFIG_PIXLET_DECODER 0
+#define CONFIG_PNG_DECODER 0
+#define CONFIG_PPM_DECODER 0
+#define CONFIG_PRORES_DECODER 0
+#define CONFIG_PROSUMER_DECODER 0
+#define CONFIG_PSD_DECODER 0
+#define CONFIG_PTX_DECODER 0
+#define CONFIG_QDRAW_DECODER 0
+#define CONFIG_QPEG_DECODER 0
+#define CONFIG_QTRLE_DECODER 0
+#define CONFIG_R10K_DECODER 0
+#define CONFIG_R210_DECODER 0
+#define CONFIG_RASC_DECODER 0
+#define CONFIG_RAWVIDEO_DECODER 0
+#define CONFIG_RL2_DECODER 0
+#define CONFIG_ROQ_DECODER 0
+#define CONFIG_RPZA_DECODER 0
+#define CONFIG_RSCC_DECODER 0
+#define CONFIG_RV10_DECODER 0
+#define CONFIG_RV20_DECODER 0
+#define CONFIG_RV30_DECODER 0
+#define CONFIG_RV40_DECODER 0
+#define CONFIG_S302M_DECODER 0
+#define CONFIG_SANM_DECODER 0
+#define CONFIG_SCPR_DECODER 0
+#define CONFIG_SCREENPRESSO_DECODER 0
+#define CONFIG_SGI_DECODER 0
+#define CONFIG_SGIRLE_DECODER 0
+#define CONFIG_SHEERVIDEO_DECODER 0
+#define CONFIG_SMACKER_DECODER 0
+#define CONFIG_SMC_DECODER 0
+#define CONFIG_SMVJPEG_DECODER 0
+#define CONFIG_SNOW_DECODER 0
+#define CONFIG_SP5X_DECODER 0
+#define CONFIG_SPEEDHQ_DECODER 0
+#define CONFIG_SRGC_DECODER 0
+#define CONFIG_SUNRAST_DECODER 0
+#define CONFIG_SVQ1_DECODER 0
+#define CONFIG_SVQ3_DECODER 0
+#define CONFIG_TARGA_DECODER 0
+#define CONFIG_TARGA_Y216_DECODER 0
+#define CONFIG_TDSC_DECODER 0
+#define CONFIG_THEORA_DECODER 1
+#define CONFIG_THP_DECODER 0
+#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
+#define CONFIG_TIFF_DECODER 0
+#define CONFIG_TMV_DECODER 0
+#define CONFIG_TRUEMOTION1_DECODER 0
+#define CONFIG_TRUEMOTION2_DECODER 0
+#define CONFIG_TRUEMOTION2RT_DECODER 0
+#define CONFIG_TSCC_DECODER 0
+#define CONFIG_TSCC2_DECODER 0
+#define CONFIG_TXD_DECODER 0
+#define CONFIG_ULTI_DECODER 0
+#define CONFIG_UTVIDEO_DECODER 0
+#define CONFIG_V210_DECODER 0
+#define CONFIG_V210X_DECODER 0
+#define CONFIG_V308_DECODER 0
+#define CONFIG_V408_DECODER 0
+#define CONFIG_V410_DECODER 0
+#define CONFIG_VB_DECODER 0
+#define CONFIG_VBLE_DECODER 0
+#define CONFIG_VC1_DECODER 0
+#define CONFIG_VC1_CRYSTALHD_DECODER 0
+#define CONFIG_VC1IMAGE_DECODER 0
+#define CONFIG_VC1_MMAL_DECODER 0
+#define CONFIG_VC1_QSV_DECODER 0
+#define CONFIG_VC1_V4L2M2M_DECODER 0
+#define CONFIG_VCR1_DECODER 0
+#define CONFIG_VMDVIDEO_DECODER 0
+#define CONFIG_VMNC_DECODER 0
+#define CONFIG_VP3_DECODER 1
+#define CONFIG_VP4_DECODER 0
+#define CONFIG_VP5_DECODER 0
+#define CONFIG_VP6_DECODER 0
+#define CONFIG_VP6A_DECODER 0
+#define CONFIG_VP6F_DECODER 0
+#define CONFIG_VP7_DECODER 0
+#define CONFIG_VP8_DECODER 1
+#define CONFIG_VP8_RKMPP_DECODER 0
+#define CONFIG_VP8_V4L2M2M_DECODER 0
+#define CONFIG_VP9_DECODER 0
+#define CONFIG_VP9_RKMPP_DECODER 0
+#define CONFIG_VP9_V4L2M2M_DECODER 0
+#define CONFIG_VQA_DECODER 0
+#define CONFIG_WEBP_DECODER 0
+#define CONFIG_WCMV_DECODER 0
+#define CONFIG_WRAPPED_AVFRAME_DECODER 0
+#define CONFIG_WMV1_DECODER 0
+#define CONFIG_WMV2_DECODER 0
+#define CONFIG_WMV3_DECODER 0
+#define CONFIG_WMV3_CRYSTALHD_DECODER 0
+#define CONFIG_WMV3IMAGE_DECODER 0
+#define CONFIG_WNV1_DECODER 0
+#define CONFIG_XAN_WC3_DECODER 0
+#define CONFIG_XAN_WC4_DECODER 0
+#define CONFIG_XBM_DECODER 0
+#define CONFIG_XFACE_DECODER 0
+#define CONFIG_XL_DECODER 0
+#define CONFIG_XPM_DECODER 0
+#define CONFIG_XWD_DECODER 0
+#define CONFIG_Y41P_DECODER 0
+#define CONFIG_YLC_DECODER 0
+#define CONFIG_YOP_DECODER 0
+#define CONFIG_YUV4_DECODER 0
+#define CONFIG_ZERO12V_DECODER 0
+#define CONFIG_ZEROCODEC_DECODER 0
+#define CONFIG_ZLIB_DECODER 0
+#define CONFIG_ZMBV_DECODER 0
+#define CONFIG_AAC_DECODER 0
+#define CONFIG_AAC_FIXED_DECODER 0
+#define CONFIG_AAC_LATM_DECODER 0
+#define CONFIG_AC3_DECODER 0
+#define CONFIG_AC3_FIXED_DECODER 0
+#define CONFIG_ACELP_KELVIN_DECODER 0
+#define CONFIG_ALAC_DECODER 0
+#define CONFIG_ALS_DECODER 0
+#define CONFIG_AMRNB_DECODER 0
+#define CONFIG_AMRWB_DECODER 0
+#define CONFIG_APE_DECODER 0
+#define CONFIG_APTX_DECODER 1
+#define CONFIG_APTX_HD_DECODER 0
+#define CONFIG_ATRAC1_DECODER 0
+#define CONFIG_ATRAC3_DECODER 0
+#define CONFIG_ATRAC3AL_DECODER 0
+#define CONFIG_ATRAC3P_DECODER 0
+#define CONFIG_ATRAC3PAL_DECODER 0
+#define CONFIG_ATRAC9_DECODER 0
+#define CONFIG_BINKAUDIO_DCT_DECODER 0
+#define CONFIG_BINKAUDIO_RDFT_DECODER 0
+#define CONFIG_BMV_AUDIO_DECODER 0
+#define CONFIG_COOK_DECODER 0
+#define CONFIG_DCA_DECODER 0
+#define CONFIG_DOLBY_E_DECODER 0
+#define CONFIG_DSD_LSBF_DECODER 0
+#define CONFIG_DSD_MSBF_DECODER 0
+#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
+#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
+#define CONFIG_DSICINAUDIO_DECODER 0
+#define CONFIG_DSS_SP_DECODER 0
+#define CONFIG_DST_DECODER 0
+#define CONFIG_EAC3_DECODER 0
+#define CONFIG_EVRC_DECODER 0
+#define CONFIG_FFWAVESYNTH_DECODER 0
+#define CONFIG_FLAC_DECODER 1
+#define CONFIG_G723_1_DECODER 0
+#define CONFIG_G729_DECODER 0
+#define CONFIG_GSM_DECODER 0
+#define CONFIG_GSM_MS_DECODER 0
+#define CONFIG_HCA_DECODER 0
+#define CONFIG_HCOM_DECODER 0
+#define CONFIG_IAC_DECODER 0
+#define CONFIG_ILBC_DECODER 0
+#define CONFIG_IMC_DECODER 0
+#define CONFIG_INTERPLAY_ACM_DECODER 0
+#define CONFIG_MACE3_DECODER 0
+#define CONFIG_MACE6_DECODER 0
+#define CONFIG_METASOUND_DECODER 0
+#define CONFIG_MLP_DECODER 0
+#define CONFIG_MP1_DECODER 0
+#define CONFIG_MP1FLOAT_DECODER 0
+#define CONFIG_MP2_DECODER 0
+#define CONFIG_MP2FLOAT_DECODER 0
+#define CONFIG_MP3FLOAT_DECODER 0
+#define CONFIG_MP3_DECODER 1
+#define CONFIG_MP3ADUFLOAT_DECODER 0
+#define CONFIG_MP3ADU_DECODER 0
+#define CONFIG_MP3ON4FLOAT_DECODER 0
+#define CONFIG_MP3ON4_DECODER 0
+#define CONFIG_MPC7_DECODER 0
+#define CONFIG_MPC8_DECODER 0
+#define CONFIG_NELLYMOSER_DECODER 0
+#define CONFIG_ON2AVC_DECODER 0
+#define CONFIG_OPUS_DECODER 0
+#define CONFIG_PAF_AUDIO_DECODER 0
+#define CONFIG_QCELP_DECODER 0
+#define CONFIG_QDM2_DECODER 0
+#define CONFIG_QDMC_DECODER 0
+#define CONFIG_RA_144_DECODER 0
+#define CONFIG_RA_288_DECODER 0
+#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 1
+#define CONFIG_SHORTEN_DECODER 0
+#define CONFIG_SIPR_DECODER 0
+#define CONFIG_SIREN_DECODER 0
+#define CONFIG_SMACKAUD_DECODER 0
+#define CONFIG_SONIC_DECODER 0
+#define CONFIG_TAK_DECODER 0
+#define CONFIG_TRUEHD_DECODER 0
+#define CONFIG_TRUESPEECH_DECODER 0
+#define CONFIG_TTA_DECODER 0
+#define CONFIG_TWINVQ_DECODER 0
+#define CONFIG_VMDAUDIO_DECODER 0
+#define CONFIG_VORBIS_DECODER 1
+#define CONFIG_WAVPACK_DECODER 0
+#define CONFIG_WMALOSSLESS_DECODER 0
+#define CONFIG_WMAPRO_DECODER 0
+#define CONFIG_WMAV1_DECODER 0
+#define CONFIG_WMAV2_DECODER 0
+#define CONFIG_WMAVOICE_DECODER 0
+#define CONFIG_WS_SND1_DECODER 0
+#define CONFIG_XMA1_DECODER 0
+#define CONFIG_XMA2_DECODER 0
+#define CONFIG_PCM_ALAW_DECODER 1
+#define CONFIG_PCM_BLURAY_DECODER 0
+#define CONFIG_PCM_DVD_DECODER 0
+#define CONFIG_PCM_F16LE_DECODER 0
+#define CONFIG_PCM_F24LE_DECODER 0
+#define CONFIG_PCM_F32BE_DECODER 0
+#define CONFIG_PCM_F32LE_DECODER 1
+#define CONFIG_PCM_F64BE_DECODER 0
+#define CONFIG_PCM_F64LE_DECODER 0
+#define CONFIG_PCM_LXF_DECODER 0
+#define CONFIG_PCM_MULAW_DECODER 1
+#define CONFIG_PCM_S8_DECODER 0
+#define CONFIG_PCM_S8_PLANAR_DECODER 0
+#define CONFIG_PCM_S16BE_DECODER 1
+#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
+#define CONFIG_PCM_S16LE_DECODER 1
+#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S24BE_DECODER 1
+#define CONFIG_PCM_S24DAUD_DECODER 0
+#define CONFIG_PCM_S24LE_DECODER 1
+#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S32BE_DECODER 0
+#define CONFIG_PCM_S32LE_DECODER 1
+#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S64BE_DECODER 0
+#define CONFIG_PCM_S64LE_DECODER 0
+#define CONFIG_PCM_U8_DECODER 1
+#define CONFIG_PCM_U16BE_DECODER 0
+#define CONFIG_PCM_U16LE_DECODER 0
+#define CONFIG_PCM_U24BE_DECODER 0
+#define CONFIG_PCM_U24LE_DECODER 0
+#define CONFIG_PCM_U32BE_DECODER 0
+#define CONFIG_PCM_U32LE_DECODER 0
+#define CONFIG_PCM_VIDC_DECODER 0
+#define CONFIG_DERF_DPCM_DECODER 0
+#define CONFIG_GREMLIN_DPCM_DECODER 0
+#define CONFIG_INTERPLAY_DPCM_DECODER 0
+#define CONFIG_ROQ_DPCM_DECODER 0
+#define CONFIG_SDX2_DPCM_DECODER 0
+#define CONFIG_SOL_DPCM_DECODER 0
+#define CONFIG_XAN_DPCM_DECODER 0
+#define CONFIG_ADPCM_4XM_DECODER 0
+#define CONFIG_ADPCM_ADX_DECODER 0
+#define CONFIG_ADPCM_AFC_DECODER 0
+#define CONFIG_ADPCM_AGM_DECODER 0
+#define CONFIG_ADPCM_AICA_DECODER 0
+#define CONFIG_ADPCM_ARGO_DECODER 0
+#define CONFIG_ADPCM_CT_DECODER 0
+#define CONFIG_ADPCM_DTK_DECODER 0
+#define CONFIG_ADPCM_EA_DECODER 0
+#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
+#define CONFIG_ADPCM_EA_R1_DECODER 0
+#define CONFIG_ADPCM_EA_R2_DECODER 0
+#define CONFIG_ADPCM_EA_R3_DECODER 0
+#define CONFIG_ADPCM_EA_XAS_DECODER 0
+#define CONFIG_ADPCM_G722_DECODER 0
+#define CONFIG_ADPCM_G726_DECODER 0
+#define CONFIG_ADPCM_G726LE_DECODER 0
+#define CONFIG_ADPCM_IMA_AMV_DECODER 0
+#define CONFIG_ADPCM_IMA_ALP_DECODER 0
+#define CONFIG_ADPCM_IMA_APC_DECODER 0
+#define CONFIG_ADPCM_IMA_APM_DECODER 0
+#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
+#define CONFIG_ADPCM_IMA_DK3_DECODER 0
+#define CONFIG_ADPCM_IMA_DK4_DECODER 0
+#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
+#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
+#define CONFIG_ADPCM_IMA_ISS_DECODER 0
+#define CONFIG_ADPCM_IMA_MTF_DECODER 0
+#define CONFIG_ADPCM_IMA_OKI_DECODER 0
+#define CONFIG_ADPCM_IMA_QT_DECODER 0
+#define CONFIG_ADPCM_IMA_RAD_DECODER 0
+#define CONFIG_ADPCM_IMA_SSI_DECODER 0
+#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
+#define CONFIG_ADPCM_IMA_WAV_DECODER 0
+#define CONFIG_ADPCM_IMA_WS_DECODER 0
+#define CONFIG_ADPCM_MS_DECODER 0
+#define CONFIG_ADPCM_MTAF_DECODER 0
+#define CONFIG_ADPCM_PSX_DECODER 0
+#define CONFIG_ADPCM_SBPRO_2_DECODER 0
+#define CONFIG_ADPCM_SBPRO_3_DECODER 0
+#define CONFIG_ADPCM_SBPRO_4_DECODER 0
+#define CONFIG_ADPCM_SWF_DECODER 0
+#define CONFIG_ADPCM_THP_DECODER 0
+#define CONFIG_ADPCM_THP_LE_DECODER 0
+#define CONFIG_ADPCM_VIMA_DECODER 0
+#define CONFIG_ADPCM_XA_DECODER 0
+#define CONFIG_ADPCM_YAMAHA_DECODER 0
+#define CONFIG_ADPCM_ZORK_DECODER 0
+#define CONFIG_SSA_DECODER 0
+#define CONFIG_ASS_DECODER 0
+#define CONFIG_CCAPTION_DECODER 0
+#define CONFIG_DVBSUB_DECODER 0
+#define CONFIG_DVDSUB_DECODER 0
+#define CONFIG_JACOSUB_DECODER 0
+#define CONFIG_MICRODVD_DECODER 0
+#define CONFIG_MOVTEXT_DECODER 0
+#define CONFIG_MPL2_DECODER 0
+#define CONFIG_PGSSUB_DECODER 0
+#define CONFIG_PJS_DECODER 0
+#define CONFIG_REALTEXT_DECODER 0
+#define CONFIG_SAMI_DECODER 0
+#define CONFIG_SRT_DECODER 0
+#define CONFIG_STL_DECODER 0
+#define CONFIG_SUBRIP_DECODER 0
+#define CONFIG_SUBVIEWER_DECODER 0
+#define CONFIG_SUBVIEWER1_DECODER 0
+#define CONFIG_TEXT_DECODER 0
+#define CONFIG_VPLAYER_DECODER 0
+#define CONFIG_WEBVTT_DECODER 0
+#define CONFIG_XSUB_DECODER 0
+#define CONFIG_AAC_AT_DECODER 0
+#define CONFIG_AC3_AT_DECODER 0
+#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
+#define CONFIG_ALAC_AT_DECODER 0
+#define CONFIG_AMR_NB_AT_DECODER 0
+#define CONFIG_EAC3_AT_DECODER 0
+#define CONFIG_GSM_MS_AT_DECODER 0
+#define CONFIG_ILBC_AT_DECODER 0
+#define CONFIG_MP1_AT_DECODER 0
+#define CONFIG_MP2_AT_DECODER 0
+#define CONFIG_MP3_AT_DECODER 0
+#define CONFIG_PCM_ALAW_AT_DECODER 0
+#define CONFIG_PCM_MULAW_AT_DECODER 0
+#define CONFIG_QDMC_AT_DECODER 0
+#define CONFIG_QDM2_AT_DECODER 0
+#define CONFIG_LIBARIBB24_DECODER 0
+#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
+#define CONFIG_LIBDAV1D_DECODER 0
+#define CONFIG_LIBDAVS2_DECODER 0
+#define CONFIG_LIBFDK_AAC_DECODER 0
+#define CONFIG_LIBGSM_DECODER 0
+#define CONFIG_LIBGSM_MS_DECODER 0
+#define CONFIG_LIBILBC_DECODER 0
+#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
+#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
+#define CONFIG_LIBOPENJPEG_DECODER 0
+#define CONFIG_LIBOPUS_DECODER 1
+#define CONFIG_LIBRSVG_DECODER 0
+#define CONFIG_LIBSPEEX_DECODER 0
+#define CONFIG_LIBVORBIS_DECODER 0
+#define CONFIG_LIBVPX_VP8_DECODER 0
+#define CONFIG_LIBVPX_VP9_DECODER 0
+#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
+#define CONFIG_BINTEXT_DECODER 0
+#define CONFIG_XBIN_DECODER 0
+#define CONFIG_IDF_DECODER 0
+#define CONFIG_LIBAOM_AV1_DECODER 0
+#define CONFIG_LIBOPENH264_DECODER 0
+#define CONFIG_H264_CUVID_DECODER 0
+#define CONFIG_HEVC_CUVID_DECODER 0
+#define CONFIG_HEVC_MEDIACODEC_DECODER 0
+#define CONFIG_MJPEG_CUVID_DECODER 0
+#define CONFIG_MJPEG_QSV_DECODER 0
+#define CONFIG_MPEG1_CUVID_DECODER 0
+#define CONFIG_MPEG2_CUVID_DECODER 0
+#define CONFIG_MPEG4_CUVID_DECODER 0
+#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
+#define CONFIG_VC1_CUVID_DECODER 0
+#define CONFIG_VP8_CUVID_DECODER 0
+#define CONFIG_VP8_MEDIACODEC_DECODER 0
+#define CONFIG_VP8_QSV_DECODER 0
+#define CONFIG_VP9_CUVID_DECODER 0
+#define CONFIG_VP9_MEDIACODEC_DECODER 0
+#define CONFIG_VP9_QSV_DECODER 0
+#define CONFIG_A64MULTI_ENCODER 0
+#define CONFIG_A64MULTI5_ENCODER 0
+#define CONFIG_ALIAS_PIX_ENCODER 0
+#define CONFIG_AMV_ENCODER 0
+#define CONFIG_APNG_ENCODER 0
+#define CONFIG_ASV1_ENCODER 0
+#define CONFIG_ASV2_ENCODER 0
+#define CONFIG_AVRP_ENCODER 0
+#define CONFIG_AVUI_ENCODER 0
+#define CONFIG_AYUV_ENCODER 0
+#define CONFIG_BMP_ENCODER 0
+#define CONFIG_CINEPAK_ENCODER 0
+#define CONFIG_CLJR_ENCODER 0
+#define CONFIG_COMFORTNOISE_ENCODER 0
+#define CONFIG_DNXHD_ENCODER 0
+#define CONFIG_DPX_ENCODER 0
+#define CONFIG_DVVIDEO_ENCODER 0
+#define CONFIG_FFV1_ENCODER 0
+#define CONFIG_FFVHUFF_ENCODER 0
+#define CONFIG_FITS_ENCODER 0
+#define CONFIG_FLASHSV_ENCODER 0
+#define CONFIG_FLASHSV2_ENCODER 0
+#define CONFIG_FLV_ENCODER 0
+#define CONFIG_GIF_ENCODER 0
+#define CONFIG_H261_ENCODER 0
+#define CONFIG_H263_ENCODER 0
+#define CONFIG_H263P_ENCODER 0
+#define CONFIG_HAP_ENCODER 0
+#define CONFIG_HUFFYUV_ENCODER 0
+#define CONFIG_JPEG2000_ENCODER 0
+#define CONFIG_JPEGLS_ENCODER 0
+#define CONFIG_LJPEG_ENCODER 0
+#define CONFIG_MAGICYUV_ENCODER 0
+#define CONFIG_MJPEG_ENCODER 0
+#define CONFIG_MPEG1VIDEO_ENCODER 0
+#define CONFIG_MPEG2VIDEO_ENCODER 0
+#define CONFIG_MPEG4_ENCODER 0
+#define CONFIG_MSMPEG4V2_ENCODER 0
+#define CONFIG_MSMPEG4V3_ENCODER 0
+#define CONFIG_MSVIDEO1_ENCODER 0
+#define CONFIG_PAM_ENCODER 0
+#define CONFIG_PBM_ENCODER 0
+#define CONFIG_PCX_ENCODER 0
+#define CONFIG_PGM_ENCODER 0
+#define CONFIG_PGMYUV_ENCODER 0
+#define CONFIG_PNG_ENCODER 0
+#define CONFIG_PPM_ENCODER 0
+#define CONFIG_PRORES_ENCODER 0
+#define CONFIG_PRORES_AW_ENCODER 0
+#define CONFIG_PRORES_KS_ENCODER 0
+#define CONFIG_QTRLE_ENCODER 0
+#define CONFIG_R10K_ENCODER 0
+#define CONFIG_R210_ENCODER 0
+#define CONFIG_RAWVIDEO_ENCODER 0
+#define CONFIG_ROQ_ENCODER 0
+#define CONFIG_RV10_ENCODER 0
+#define CONFIG_RV20_ENCODER 0
+#define CONFIG_S302M_ENCODER 0
+#define CONFIG_SGI_ENCODER 0
+#define CONFIG_SNOW_ENCODER 0
+#define CONFIG_SUNRAST_ENCODER 0
+#define CONFIG_SVQ1_ENCODER 0
+#define CONFIG_TARGA_ENCODER 0
+#define CONFIG_TIFF_ENCODER 0
+#define CONFIG_UTVIDEO_ENCODER 0
+#define CONFIG_V210_ENCODER 0
+#define CONFIG_V308_ENCODER 0
+#define CONFIG_V408_ENCODER 0
+#define CONFIG_V410_ENCODER 0
+#define CONFIG_VC2_ENCODER 0
+#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
+#define CONFIG_WMV1_ENCODER 0
+#define CONFIG_WMV2_ENCODER 0
+#define CONFIG_XBM_ENCODER 0
+#define CONFIG_XFACE_ENCODER 0
+#define CONFIG_XWD_ENCODER 0
+#define CONFIG_Y41P_ENCODER 0
+#define CONFIG_YUV4_ENCODER 0
+#define CONFIG_ZLIB_ENCODER 0
+#define CONFIG_ZMBV_ENCODER 0
+#define CONFIG_AAC_ENCODER 0
+#define CONFIG_AC3_ENCODER 0
+#define CONFIG_AC3_FIXED_ENCODER 0
+#define CONFIG_ALAC_ENCODER 0
+#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
+#define CONFIG_DCA_ENCODER 0
+#define CONFIG_EAC3_ENCODER 0
+#define CONFIG_FLAC_ENCODER 0
+#define CONFIG_G723_1_ENCODER 0
+#define CONFIG_MLP_ENCODER 0
+#define CONFIG_MP2_ENCODER 0
+#define CONFIG_MP2FIXED_ENCODER 0
+#define CONFIG_NELLYMOSER_ENCODER 0
+#define CONFIG_OPUS_ENCODER 0
+#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
+#define CONFIG_SONIC_ENCODER 0
+#define CONFIG_SONIC_LS_ENCODER 0
+#define CONFIG_TRUEHD_ENCODER 0
+#define CONFIG_TTA_ENCODER 0
+#define CONFIG_VORBIS_ENCODER 0
+#define CONFIG_WAVPACK_ENCODER 0
+#define CONFIG_WMAV1_ENCODER 0
+#define CONFIG_WMAV2_ENCODER 0
+#define CONFIG_PCM_ALAW_ENCODER 0
+#define CONFIG_PCM_DVD_ENCODER 0
+#define CONFIG_PCM_F32BE_ENCODER 0
+#define CONFIG_PCM_F32LE_ENCODER 0
+#define CONFIG_PCM_F64BE_ENCODER 0
+#define CONFIG_PCM_F64LE_ENCODER 0
+#define CONFIG_PCM_MULAW_ENCODER 0
+#define CONFIG_PCM_S8_ENCODER 0
+#define CONFIG_PCM_S8_PLANAR_ENCODER 0
+#define CONFIG_PCM_S16BE_ENCODER 0
+#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S16LE_ENCODER 0
+#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S24BE_ENCODER 0
+#define CONFIG_PCM_S24DAUD_ENCODER 0
+#define CONFIG_PCM_S24LE_ENCODER 0
+#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S32BE_ENCODER 0
+#define CONFIG_PCM_S32LE_ENCODER 0
+#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S64BE_ENCODER 0
+#define CONFIG_PCM_S64LE_ENCODER 0
+#define CONFIG_PCM_U8_ENCODER 0
+#define CONFIG_PCM_U16BE_ENCODER 0
+#define CONFIG_PCM_U16LE_ENCODER 0
+#define CONFIG_PCM_U24BE_ENCODER 0
+#define CONFIG_PCM_U24LE_ENCODER 0
+#define CONFIG_PCM_U32BE_ENCODER 0
+#define CONFIG_PCM_U32LE_ENCODER 0
+#define CONFIG_PCM_VIDC_ENCODER 0
+#define CONFIG_ROQ_DPCM_ENCODER 0
+#define CONFIG_ADPCM_ADX_ENCODER 0
+#define CONFIG_ADPCM_G722_ENCODER 0
+#define CONFIG_ADPCM_G726_ENCODER 0
+#define CONFIG_ADPCM_G726LE_ENCODER 0
+#define CONFIG_ADPCM_IMA_QT_ENCODER 0
+#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
+#define CONFIG_ADPCM_MS_ENCODER 0
+#define CONFIG_ADPCM_SWF_ENCODER 0
+#define CONFIG_ADPCM_YAMAHA_ENCODER 0
+#define CONFIG_SSA_ENCODER 0
+#define CONFIG_ASS_ENCODER 0
+#define CONFIG_DVBSUB_ENCODER 0
+#define CONFIG_DVDSUB_ENCODER 0
+#define CONFIG_MOVTEXT_ENCODER 0
+#define CONFIG_SRT_ENCODER 0
+#define CONFIG_SUBRIP_ENCODER 0
+#define CONFIG_TEXT_ENCODER 0
+#define CONFIG_WEBVTT_ENCODER 0
+#define CONFIG_XSUB_ENCODER 0
+#define CONFIG_AAC_AT_ENCODER 0
+#define CONFIG_ALAC_AT_ENCODER 0
+#define CONFIG_ILBC_AT_ENCODER 0
+#define CONFIG_PCM_ALAW_AT_ENCODER 0
+#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBAOM_AV1_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
+#define CONFIG_LIBFDK_AAC_ENCODER 0
+#define CONFIG_LIBGSM_ENCODER 0
+#define CONFIG_LIBGSM_MS_ENCODER 0
+#define CONFIG_LIBILBC_ENCODER 0
+#define CONFIG_LIBMP3LAME_ENCODER 0
+#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
+#define CONFIG_LIBOPENJPEG_ENCODER 0
+#define CONFIG_LIBOPUS_ENCODER 0
+#define CONFIG_LIBRAV1E_ENCODER 0
+#define CONFIG_LIBSHINE_ENCODER 0
+#define CONFIG_LIBSPEEX_ENCODER 0
+#define CONFIG_LIBTHEORA_ENCODER 0
+#define CONFIG_LIBTWOLAME_ENCODER 0
+#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
+#define CONFIG_LIBVORBIS_ENCODER 0
+#define CONFIG_LIBVPX_VP8_ENCODER 0
+#define CONFIG_LIBVPX_VP9_ENCODER 0
+#define CONFIG_LIBWAVPACK_ENCODER 0
+#define CONFIG_LIBWEBP_ANIM_ENCODER 0
+#define CONFIG_LIBWEBP_ENCODER 0
+#define CONFIG_LIBX262_ENCODER 0
+#define CONFIG_LIBX264_ENCODER 0
+#define CONFIG_LIBX264RGB_ENCODER 0
+#define CONFIG_LIBX265_ENCODER 0
+#define CONFIG_LIBXAVS_ENCODER 0
+#define CONFIG_LIBXAVS2_ENCODER 0
+#define CONFIG_LIBXVID_ENCODER 0
+#define CONFIG_H263_V4L2M2M_ENCODER 0
+#define CONFIG_LIBOPENH264_ENCODER 0
+#define CONFIG_H264_AMF_ENCODER 0
+#define CONFIG_H264_NVENC_ENCODER 0
+#define CONFIG_H264_OMX_ENCODER 0
+#define CONFIG_H264_QSV_ENCODER 0
+#define CONFIG_H264_V4L2M2M_ENCODER 0
+#define CONFIG_H264_VAAPI_ENCODER 0
+#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
+#define CONFIG_NVENC_ENCODER 0
+#define CONFIG_NVENC_H264_ENCODER 0
+#define CONFIG_NVENC_HEVC_ENCODER 0
+#define CONFIG_HEVC_AMF_ENCODER 0
+#define CONFIG_HEVC_NVENC_ENCODER 0
+#define CONFIG_HEVC_QSV_ENCODER 0
+#define CONFIG_HEVC_V4L2M2M_ENCODER 0
+#define CONFIG_HEVC_VAAPI_ENCODER 0
+#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
+#define CONFIG_LIBKVAZAAR_ENCODER 0
+#define CONFIG_MJPEG_QSV_ENCODER 0
+#define CONFIG_MJPEG_VAAPI_ENCODER 0
+#define CONFIG_MPEG2_QSV_ENCODER 0
+#define CONFIG_MPEG2_VAAPI_ENCODER 0
+#define CONFIG_MPEG4_OMX_ENCODER 0
+#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
+#define CONFIG_VP8_V4L2M2M_ENCODER 0
+#define CONFIG_VP8_VAAPI_ENCODER 0
+#define CONFIG_VP9_VAAPI_ENCODER 0
+#define CONFIG_VP9_QSV_ENCODER 0
+#define CONFIG_H263_VAAPI_HWACCEL 0
+#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_H264_D3D11VA_HWACCEL 0
+#define CONFIG_H264_D3D11VA2_HWACCEL 0
+#define CONFIG_H264_DXVA2_HWACCEL 0
+#define CONFIG_H264_NVDEC_HWACCEL 0
+#define CONFIG_H264_VAAPI_HWACCEL 0
+#define CONFIG_H264_VDPAU_HWACCEL 0
+#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_HEVC_D3D11VA_HWACCEL 0
+#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
+#define CONFIG_HEVC_DXVA2_HWACCEL 0
+#define CONFIG_HEVC_NVDEC_HWACCEL 0
+#define CONFIG_HEVC_VAAPI_HWACCEL 0
+#define CONFIG_HEVC_VDPAU_HWACCEL 0
+#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
+#define CONFIG_MPEG1_NVDEC_HWACCEL 0
+#define CONFIG_MPEG1_VDPAU_HWACCEL 0
+#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MPEG1_XVMC_HWACCEL 0
+#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
+#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
+#define CONFIG_MPEG2_NVDEC_HWACCEL 0
+#define CONFIG_MPEG2_DXVA2_HWACCEL 0
+#define CONFIG_MPEG2_VAAPI_HWACCEL 0
+#define CONFIG_MPEG2_VDPAU_HWACCEL 0
+#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MPEG2_XVMC_HWACCEL 0
+#define CONFIG_MPEG4_NVDEC_HWACCEL 0
+#define CONFIG_MPEG4_VAAPI_HWACCEL 0
+#define CONFIG_MPEG4_VDPAU_HWACCEL 0
+#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_VC1_D3D11VA_HWACCEL 0
+#define CONFIG_VC1_D3D11VA2_HWACCEL 0
+#define CONFIG_VC1_DXVA2_HWACCEL 0
+#define CONFIG_VC1_NVDEC_HWACCEL 0
+#define CONFIG_VC1_VAAPI_HWACCEL 0
+#define CONFIG_VC1_VDPAU_HWACCEL 0
+#define CONFIG_VP8_NVDEC_HWACCEL 0
+#define CONFIG_VP8_VAAPI_HWACCEL 0
+#define CONFIG_VP9_D3D11VA_HWACCEL 0
+#define CONFIG_VP9_D3D11VA2_HWACCEL 0
+#define CONFIG_VP9_DXVA2_HWACCEL 0
+#define CONFIG_VP9_NVDEC_HWACCEL 0
+#define CONFIG_VP9_VAAPI_HWACCEL 0
+#define CONFIG_VP9_VDPAU_HWACCEL 0
+#define CONFIG_WMV3_D3D11VA_HWACCEL 0
+#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
+#define CONFIG_WMV3_DXVA2_HWACCEL 0
+#define CONFIG_WMV3_NVDEC_HWACCEL 0
+#define CONFIG_WMV3_VAAPI_HWACCEL 0
+#define CONFIG_WMV3_VDPAU_HWACCEL 0
+#define CONFIG_AAC_PARSER 0
+#define CONFIG_AAC_LATM_PARSER 0
+#define CONFIG_AC3_PARSER 0
+#define CONFIG_ADX_PARSER 0
+#define CONFIG_AV1_PARSER 0
+#define CONFIG_AVS2_PARSER 0
+#define CONFIG_BMP_PARSER 0
+#define CONFIG_CAVSVIDEO_PARSER 0
+#define CONFIG_COOK_PARSER 0
+#define CONFIG_DCA_PARSER 0
+#define CONFIG_DIRAC_PARSER 0
+#define CONFIG_DNXHD_PARSER 0
+#define CONFIG_DPX_PARSER 0
+#define CONFIG_DVAUDIO_PARSER 0
+#define CONFIG_DVBSUB_PARSER 0
+#define CONFIG_DVDSUB_PARSER 0
+#define CONFIG_DVD_NAV_PARSER 0
+#define CONFIG_FLAC_PARSER 1
+#define CONFIG_G723_1_PARSER 0
+#define CONFIG_G729_PARSER 0
+#define CONFIG_GIF_PARSER 0
+#define CONFIG_GSM_PARSER 0
+#define CONFIG_H261_PARSER 0
+#define CONFIG_H263_PARSER 0
+#define CONFIG_H264_PARSER 0
+#define CONFIG_HEVC_PARSER 0
+#define CONFIG_MJPEG_PARSER 0
+#define CONFIG_MLP_PARSER 0
+#define CONFIG_MPEG4VIDEO_PARSER 0
+#define CONFIG_MPEGAUDIO_PARSER 1
+#define CONFIG_MPEGVIDEO_PARSER 0
+#define CONFIG_OPUS_PARSER 1
+#define CONFIG_PNG_PARSER 0
+#define CONFIG_PNM_PARSER 0
+#define CONFIG_RV30_PARSER 0
+#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
+#define CONFIG_SIPR_PARSER 0
+#define CONFIG_TAK_PARSER 0
+#define CONFIG_VC1_PARSER 0
+#define CONFIG_VORBIS_PARSER 1
+#define CONFIG_VP3_PARSER 1
+#define CONFIG_VP8_PARSER 1
+#define CONFIG_VP9_PARSER 0
+#define CONFIG_WEBP_PARSER 0
+#define CONFIG_XMA_PARSER 0
+#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
+#define CONFIG_AVFOUNDATION_INDEV 0
+#define CONFIG_BKTR_INDEV 0
+#define CONFIG_DECKLINK_INDEV 0
+#define CONFIG_DSHOW_INDEV 0
+#define CONFIG_FBDEV_INDEV 0
+#define CONFIG_GDIGRAB_INDEV 0
+#define CONFIG_IEC61883_INDEV 0
+#define CONFIG_JACK_INDEV 0
+#define CONFIG_KMSGRAB_INDEV 0
+#define CONFIG_LAVFI_INDEV 0
+#define CONFIG_OPENAL_INDEV 0
+#define CONFIG_OSS_INDEV 0
+#define CONFIG_PULSE_INDEV 0
+#define CONFIG_SNDIO_INDEV 0
+#define CONFIG_V4L2_INDEV 0
+#define CONFIG_VFWCAP_INDEV 0
+#define CONFIG_XCBGRAB_INDEV 0
+#define CONFIG_LIBCDIO_INDEV 0
+#define CONFIG_LIBDC1394_INDEV 0
+#define CONFIG_ALSA_OUTDEV 0
+#define CONFIG_CACA_OUTDEV 0
+#define CONFIG_DECKLINK_OUTDEV 0
+#define CONFIG_FBDEV_OUTDEV 0
+#define CONFIG_OPENGL_OUTDEV 0
+#define CONFIG_OSS_OUTDEV 0
+#define CONFIG_PULSE_OUTDEV 0
+#define CONFIG_SDL2_OUTDEV 0
+#define CONFIG_SNDIO_OUTDEV 0
+#define CONFIG_V4L2_OUTDEV 0
+#define CONFIG_XV_OUTDEV 0
+#define CONFIG_ABENCH_FILTER 0
+#define CONFIG_ACOMPRESSOR_FILTER 0
+#define CONFIG_ACONTRAST_FILTER 0
+#define CONFIG_ACOPY_FILTER 0
+#define CONFIG_ACUE_FILTER 0
+#define CONFIG_ACROSSFADE_FILTER 0
+#define CONFIG_ACROSSOVER_FILTER 0
+#define CONFIG_ACRUSHER_FILTER 0
+#define CONFIG_ADECLICK_FILTER 0
+#define CONFIG_ADECLIP_FILTER 0
+#define CONFIG_ADELAY_FILTER 0
+#define CONFIG_ADERIVATIVE_FILTER 0
+#define CONFIG_AECHO_FILTER 0
+#define CONFIG_AEMPHASIS_FILTER 0
+#define CONFIG_AEVAL_FILTER 0
+#define CONFIG_AFADE_FILTER 0
+#define CONFIG_AFFTDN_FILTER 0
+#define CONFIG_AFFTFILT_FILTER 0
+#define CONFIG_AFIR_FILTER 0
+#define CONFIG_AFORMAT_FILTER 0
+#define CONFIG_AGATE_FILTER 0
+#define CONFIG_AIIR_FILTER 0
+#define CONFIG_AINTEGRAL_FILTER 0
+#define CONFIG_AINTERLEAVE_FILTER 0
+#define CONFIG_ALIMITER_FILTER 0
+#define CONFIG_ALLPASS_FILTER 0
+#define CONFIG_ALOOP_FILTER 0
+#define CONFIG_AMERGE_FILTER 0
+#define CONFIG_AMETADATA_FILTER 0
+#define CONFIG_AMIX_FILTER 0
+#define CONFIG_AMULTIPLY_FILTER 0
+#define CONFIG_ANEQUALIZER_FILTER 0
+#define CONFIG_ANLMDN_FILTER 0
+#define CONFIG_ANLMS_FILTER 0
+#define CONFIG_ANULL_FILTER 0
+#define CONFIG_APAD_FILTER 0
+#define CONFIG_APERMS_FILTER 0
+#define CONFIG_APHASER_FILTER 0
+#define CONFIG_APULSATOR_FILTER 0
+#define CONFIG_AREALTIME_FILTER 0
+#define CONFIG_ARESAMPLE_FILTER 0
+#define CONFIG_AREVERSE_FILTER 0
+#define CONFIG_ARNNDN_FILTER 0
+#define CONFIG_ASELECT_FILTER 0
+#define CONFIG_ASENDCMD_FILTER 0
+#define CONFIG_ASETNSAMPLES_FILTER 0
+#define CONFIG_ASETPTS_FILTER 0
+#define CONFIG_ASETRATE_FILTER 0
+#define CONFIG_ASETTB_FILTER 0
+#define CONFIG_ASHOWINFO_FILTER 0
+#define CONFIG_ASIDEDATA_FILTER 0
+#define CONFIG_ASOFTCLIP_FILTER 0
+#define CONFIG_ASPLIT_FILTER 0
+#define CONFIG_ASR_FILTER 0
+#define CONFIG_ASTATS_FILTER 0
+#define CONFIG_ASTREAMSELECT_FILTER 0
+#define CONFIG_ATEMPO_FILTER 0
+#define CONFIG_ATRIM_FILTER 0
+#define CONFIG_AXCORRELATE_FILTER 0
+#define CONFIG_AZMQ_FILTER 0
+#define CONFIG_BANDPASS_FILTER 0
+#define CONFIG_BANDREJECT_FILTER 0
+#define CONFIG_BASS_FILTER 0
+#define CONFIG_BIQUAD_FILTER 0
+#define CONFIG_BS2B_FILTER 0
+#define CONFIG_CHROMABER_VULKAN_FILTER 0
+#define CONFIG_CHANNELMAP_FILTER 0
+#define CONFIG_CHANNELSPLIT_FILTER 0
+#define CONFIG_CHORUS_FILTER 0
+#define CONFIG_COMPAND_FILTER 0
+#define CONFIG_COMPENSATIONDELAY_FILTER 0
+#define CONFIG_CROSSFEED_FILTER 0
+#define CONFIG_CRYSTALIZER_FILTER 0
+#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DEESSER_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
+#define CONFIG_DYNAUDNORM_FILTER 0
+#define CONFIG_EARWAX_FILTER 0
+#define CONFIG_EBUR128_FILTER 0
+#define CONFIG_EQUALIZER_FILTER 0
+#define CONFIG_EXTRASTEREO_FILTER 0
+#define CONFIG_FIREQUALIZER_FILTER 0
+#define CONFIG_FLANGER_FILTER 0
+#define CONFIG_HAAS_FILTER 0
+#define CONFIG_HDCD_FILTER 0
+#define CONFIG_HEADPHONE_FILTER 0
+#define CONFIG_HIGHPASS_FILTER 0
+#define CONFIG_HIGHSHELF_FILTER 0
+#define CONFIG_JOIN_FILTER 0
+#define CONFIG_LADSPA_FILTER 0
+#define CONFIG_LOUDNORM_FILTER 0
+#define CONFIG_LOWPASS_FILTER 0
+#define CONFIG_LOWSHELF_FILTER 0
+#define CONFIG_LV2_FILTER 0
+#define CONFIG_MCOMPAND_FILTER 0
+#define CONFIG_PAN_FILTER 0
+#define CONFIG_REPLAYGAIN_FILTER 0
+#define CONFIG_RESAMPLE_FILTER 0
+#define CONFIG_RUBBERBAND_FILTER 0
+#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
+#define CONFIG_SIDECHAINGATE_FILTER 0
+#define CONFIG_SILENCEDETECT_FILTER 0
+#define CONFIG_SILENCEREMOVE_FILTER 0
+#define CONFIG_SOFALIZER_FILTER 0
+#define CONFIG_STEREOTOOLS_FILTER 0
+#define CONFIG_STEREOWIDEN_FILTER 0
+#define CONFIG_SUPEREQUALIZER_FILTER 0
+#define CONFIG_SURROUND_FILTER 0
+#define CONFIG_TREBLE_FILTER 0
+#define CONFIG_TREMOLO_FILTER 0
+#define CONFIG_VIBRATO_FILTER 0
+#define CONFIG_VOLUME_FILTER 0
+#define CONFIG_VOLUMEDETECT_FILTER 0
+#define CONFIG_AEVALSRC_FILTER 0
+#define CONFIG_AFIRSRC_FILTER 0
+#define CONFIG_ANOISESRC_FILTER 0
+#define CONFIG_ANULLSRC_FILTER 0
+#define CONFIG_FLITE_FILTER 0
+#define CONFIG_HILBERT_FILTER 0
+#define CONFIG_SINC_FILTER 0
+#define CONFIG_SINE_FILTER 0
+#define CONFIG_ANULLSINK_FILTER 0
+#define CONFIG_ADDROI_FILTER 0
+#define CONFIG_ALPHAEXTRACT_FILTER 0
+#define CONFIG_ALPHAMERGE_FILTER 0
+#define CONFIG_AMPLIFY_FILTER 0
+#define CONFIG_ASS_FILTER 0
+#define CONFIG_ATADENOISE_FILTER 0
+#define CONFIG_AVGBLUR_FILTER 0
+#define CONFIG_AVGBLUR_OPENCL_FILTER 0
+#define CONFIG_AVGBLUR_VULKAN_FILTER 0
+#define CONFIG_BBOX_FILTER 0
+#define CONFIG_BENCH_FILTER 0
+#define CONFIG_BILATERAL_FILTER 0
+#define CONFIG_BITPLANENOISE_FILTER 0
+#define CONFIG_BLACKDETECT_FILTER 0
+#define CONFIG_BLACKFRAME_FILTER 0
+#define CONFIG_BLEND_FILTER 0
+#define CONFIG_BM3D_FILTER 0
+#define CONFIG_BOXBLUR_FILTER 0
+#define CONFIG_BOXBLUR_OPENCL_FILTER 0
+#define CONFIG_BWDIF_FILTER 0
+#define CONFIG_CAS_FILTER 0
+#define CONFIG_CHROMAHOLD_FILTER 0
+#define CONFIG_CHROMAKEY_FILTER 0
+#define CONFIG_CHROMASHIFT_FILTER 0
+#define CONFIG_CIESCOPE_FILTER 0
+#define CONFIG_CODECVIEW_FILTER 0
+#define CONFIG_COLORBALANCE_FILTER 0
+#define CONFIG_COLORCHANNELMIXER_FILTER 0
+#define CONFIG_COLORKEY_FILTER 0
+#define CONFIG_COLORKEY_OPENCL_FILTER 0
+#define CONFIG_COLORHOLD_FILTER 0
+#define CONFIG_COLORLEVELS_FILTER 0
+#define CONFIG_COLORMATRIX_FILTER 0
+#define CONFIG_COLORSPACE_FILTER 0
+#define CONFIG_CONVOLUTION_FILTER 0
+#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
+#define CONFIG_CONVOLVE_FILTER 0
+#define CONFIG_COPY_FILTER 0
+#define CONFIG_COREIMAGE_FILTER 0
+#define CONFIG_COVER_RECT_FILTER 0
+#define CONFIG_CROP_FILTER 0
+#define CONFIG_CROPDETECT_FILTER 0
+#define CONFIG_CUE_FILTER 0
+#define CONFIG_CURVES_FILTER 0
+#define CONFIG_DATASCOPE_FILTER 0
+#define CONFIG_DCTDNOIZ_FILTER 0
+#define CONFIG_DEBAND_FILTER 0
+#define CONFIG_DEBLOCK_FILTER 0
+#define CONFIG_DECIMATE_FILTER 0
+#define CONFIG_DECONVOLVE_FILTER 0
+#define CONFIG_DEDOT_FILTER 0
+#define CONFIG_DEFLATE_FILTER 0
+#define CONFIG_DEFLICKER_FILTER 0
+#define CONFIG_DEINTERLACE_QSV_FILTER 0
+#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
+#define CONFIG_DEJUDDER_FILTER 0
+#define CONFIG_DELOGO_FILTER 0
+#define CONFIG_DENOISE_VAAPI_FILTER 0
+#define CONFIG_DERAIN_FILTER 0
+#define CONFIG_DESHAKE_FILTER 0
+#define CONFIG_DESHAKE_OPENCL_FILTER 0
+#define CONFIG_DESPILL_FILTER 0
+#define CONFIG_DETELECINE_FILTER 0
+#define CONFIG_DILATION_FILTER 0
+#define CONFIG_DILATION_OPENCL_FILTER 0
+#define CONFIG_DISPLACE_FILTER 0
+#define CONFIG_DNN_PROCESSING_FILTER 0
+#define CONFIG_DOUBLEWEAVE_FILTER 0
+#define CONFIG_DRAWBOX_FILTER 0
+#define CONFIG_DRAWGRAPH_FILTER 0
+#define CONFIG_DRAWGRID_FILTER 0
+#define CONFIG_DRAWTEXT_FILTER 0
+#define CONFIG_EDGEDETECT_FILTER 0
+#define CONFIG_ELBG_FILTER 0
+#define CONFIG_ENTROPY_FILTER 0
+#define CONFIG_EQ_FILTER 0
+#define CONFIG_EROSION_FILTER 0
+#define CONFIG_EROSION_OPENCL_FILTER 0
+#define CONFIG_EXTRACTPLANES_FILTER 0
+#define CONFIG_FADE_FILTER 0
+#define CONFIG_FFTDNOIZ_FILTER 0
+#define CONFIG_FFTFILT_FILTER 0
+#define CONFIG_FIELD_FILTER 0
+#define CONFIG_FIELDHINT_FILTER 0
+#define CONFIG_FIELDMATCH_FILTER 0
+#define CONFIG_FIELDORDER_FILTER 0
+#define CONFIG_FILLBORDERS_FILTER 0
+#define CONFIG_FIND_RECT_FILTER 0
+#define CONFIG_FLOODFILL_FILTER 0
+#define CONFIG_FORMAT_FILTER 0
+#define CONFIG_FPS_FILTER 0
+#define CONFIG_FRAMEPACK_FILTER 0
+#define CONFIG_FRAMERATE_FILTER 0
+#define CONFIG_FRAMESTEP_FILTER 0
+#define CONFIG_FREEZEDETECT_FILTER 0
+#define CONFIG_FREEZEFRAMES_FILTER 0
+#define CONFIG_FREI0R_FILTER 0
+#define CONFIG_FSPP_FILTER 0
+#define CONFIG_GBLUR_FILTER 0
+#define CONFIG_GEQ_FILTER 0
+#define CONFIG_GRADFUN_FILTER 0
+#define CONFIG_GRAPHMONITOR_FILTER 0
+#define CONFIG_GREYEDGE_FILTER 0
+#define CONFIG_HALDCLUT_FILTER 0
+#define CONFIG_HFLIP_FILTER 0
+#define CONFIG_HISTEQ_FILTER 0
+#define CONFIG_HISTOGRAM_FILTER 0
+#define CONFIG_HQDN3D_FILTER 0
+#define CONFIG_HQX_FILTER 0
+#define CONFIG_HSTACK_FILTER 0
+#define CONFIG_HUE_FILTER 0
+#define CONFIG_HWDOWNLOAD_FILTER 0
+#define CONFIG_HWMAP_FILTER 0
+#define CONFIG_HWUPLOAD_FILTER 0
+#define CONFIG_HWUPLOAD_CUDA_FILTER 0
+#define CONFIG_HYSTERESIS_FILTER 0
+#define CONFIG_IDET_FILTER 0
+#define CONFIG_IL_FILTER 0
+#define CONFIG_INFLATE_FILTER 0
+#define CONFIG_INTERLACE_FILTER 0
+#define CONFIG_INTERLEAVE_FILTER 0
+#define CONFIG_KERNDEINT_FILTER 0
+#define CONFIG_LAGFUN_FILTER 0
+#define CONFIG_LENSCORRECTION_FILTER 0
+#define CONFIG_LENSFUN_FILTER 0
+#define CONFIG_LIBVMAF_FILTER 0
+#define CONFIG_LIMITER_FILTER 0
+#define CONFIG_LOOP_FILTER 0
+#define CONFIG_LUMAKEY_FILTER 0
+#define CONFIG_LUT_FILTER 0
+#define CONFIG_LUT1D_FILTER 0
+#define CONFIG_LUT2_FILTER 0
+#define CONFIG_LUT3D_FILTER 0
+#define CONFIG_LUTRGB_FILTER 0
+#define CONFIG_LUTYUV_FILTER 0
+#define CONFIG_MASKEDCLAMP_FILTER 0
+#define CONFIG_MASKEDMAX_FILTER 0
+#define CONFIG_MASKEDMERGE_FILTER 0
+#define CONFIG_MASKEDMIN_FILTER 0
+#define CONFIG_MASKEDTHRESHOLD_FILTER 0
+#define CONFIG_MASKFUN_FILTER 0
+#define CONFIG_MCDEINT_FILTER 0
+#define CONFIG_MEDIAN_FILTER 0
+#define CONFIG_MERGEPLANES_FILTER 0
+#define CONFIG_MESTIMATE_FILTER 0
+#define CONFIG_METADATA_FILTER 0
+#define CONFIG_MIDEQUALIZER_FILTER 0
+#define CONFIG_MINTERPOLATE_FILTER 0
+#define CONFIG_MIX_FILTER 0
+#define CONFIG_MPDECIMATE_FILTER 0
+#define CONFIG_NEGATE_FILTER 0
+#define CONFIG_NLMEANS_FILTER 0
+#define CONFIG_NLMEANS_OPENCL_FILTER 0
+#define CONFIG_NNEDI_FILTER 0
+#define CONFIG_NOFORMAT_FILTER 0
+#define CONFIG_NOISE_FILTER 0
+#define CONFIG_NORMALIZE_FILTER 0
+#define CONFIG_NULL_FILTER 0
+#define CONFIG_OCR_FILTER 0
+#define CONFIG_OCV_FILTER 0
+#define CONFIG_OSCILLOSCOPE_FILTER 0
+#define CONFIG_OVERLAY_FILTER 0
+#define CONFIG_OVERLAY_OPENCL_FILTER 0
+#define CONFIG_OVERLAY_QSV_FILTER 0
+#define CONFIG_OVERLAY_VULKAN_FILTER 0
+#define CONFIG_OVERLAY_CUDA_FILTER 0
+#define CONFIG_OWDENOISE_FILTER 0
+#define CONFIG_PAD_FILTER 0
+#define CONFIG_PAD_OPENCL_FILTER 0
+#define CONFIG_PALETTEGEN_FILTER 0
+#define CONFIG_PALETTEUSE_FILTER 0
+#define CONFIG_PERMS_FILTER 0
+#define CONFIG_PERSPECTIVE_FILTER 0
+#define CONFIG_PHASE_FILTER 0
+#define CONFIG_PHOTOSENSITIVITY_FILTER 0
+#define CONFIG_PIXDESCTEST_FILTER 0
+#define CONFIG_PIXSCOPE_FILTER 0
+#define CONFIG_PP_FILTER 0
+#define CONFIG_PP7_FILTER 0
+#define CONFIG_PREMULTIPLY_FILTER 0
+#define CONFIG_PREWITT_FILTER 0
+#define CONFIG_PREWITT_OPENCL_FILTER 0
+#define CONFIG_PROCAMP_VAAPI_FILTER 0
+#define CONFIG_PROGRAM_OPENCL_FILTER 0
+#define CONFIG_PSEUDOCOLOR_FILTER 0
+#define CONFIG_PSNR_FILTER 0
+#define CONFIG_PULLUP_FILTER 0
+#define CONFIG_QP_FILTER 0
+#define CONFIG_RANDOM_FILTER 0
+#define CONFIG_READEIA608_FILTER 0
+#define CONFIG_READVITC_FILTER 0
+#define CONFIG_REALTIME_FILTER 0
+#define CONFIG_REMAP_FILTER 0
+#define CONFIG_REMOVEGRAIN_FILTER 0
+#define CONFIG_REMOVELOGO_FILTER 0
+#define CONFIG_REPEATFIELDS_FILTER 0
+#define CONFIG_REVERSE_FILTER 0
+#define CONFIG_RGBASHIFT_FILTER 0
+#define CONFIG_ROBERTS_FILTER 0
+#define CONFIG_ROBERTS_OPENCL_FILTER 0
+#define CONFIG_ROTATE_FILTER 0
+#define CONFIG_SAB_FILTER 0
+#define CONFIG_SCALE_FILTER 0
+#define CONFIG_SCALE_CUDA_FILTER 0
+#define CONFIG_SCALE_NPP_FILTER 0
+#define CONFIG_SCALE_QSV_FILTER 0
+#define CONFIG_SCALE_VAAPI_FILTER 0
+#define CONFIG_SCALE_VULKAN_FILTER 0
+#define CONFIG_SCALE2REF_FILTER 0
+#define CONFIG_SCROLL_FILTER 0
+#define CONFIG_SELECT_FILTER 0
+#define CONFIG_SELECTIVECOLOR_FILTER 0
+#define CONFIG_SENDCMD_FILTER 0
+#define CONFIG_SEPARATEFIELDS_FILTER 0
+#define CONFIG_SETDAR_FILTER 0
+#define CONFIG_SETFIELD_FILTER 0
+#define CONFIG_SETPARAMS_FILTER 0
+#define CONFIG_SETPTS_FILTER 0
+#define CONFIG_SETRANGE_FILTER 0
+#define CONFIG_SETSAR_FILTER 0
+#define CONFIG_SETTB_FILTER 0
+#define CONFIG_SHARPNESS_VAAPI_FILTER 0
+#define CONFIG_SHOWINFO_FILTER 0
+#define CONFIG_SHOWPALETTE_FILTER 0
+#define CONFIG_SHUFFLEFRAMES_FILTER 0
+#define CONFIG_SHUFFLEPLANES_FILTER 0
+#define CONFIG_SIDEDATA_FILTER 0
+#define CONFIG_SIGNALSTATS_FILTER 0
+#define CONFIG_SIGNATURE_FILTER 0
+#define CONFIG_SMARTBLUR_FILTER 0
+#define CONFIG_SOBEL_FILTER 0
+#define CONFIG_SOBEL_OPENCL_FILTER 0
+#define CONFIG_SPLIT_FILTER 0
+#define CONFIG_SPP_FILTER 0
+#define CONFIG_SR_FILTER 0
+#define CONFIG_SSIM_FILTER 0
+#define CONFIG_STEREO3D_FILTER 0
+#define CONFIG_STREAMSELECT_FILTER 0
+#define CONFIG_SUBTITLES_FILTER 0
+#define CONFIG_SUPER2XSAI_FILTER 0
+#define CONFIG_SWAPRECT_FILTER 0
+#define CONFIG_SWAPUV_FILTER 0
+#define CONFIG_TBLEND_FILTER 0
+#define CONFIG_TELECINE_FILTER 0
+#define CONFIG_THISTOGRAM_FILTER 0
+#define CONFIG_THRESHOLD_FILTER 0
+#define CONFIG_THUMBNAIL_FILTER 0
+#define CONFIG_THUMBNAIL_CUDA_FILTER 0
+#define CONFIG_TILE_FILTER 0
+#define CONFIG_TINTERLACE_FILTER 0
+#define CONFIG_TLUT2_FILTER 0
+#define CONFIG_TMEDIAN_FILTER 0
+#define CONFIG_TMIX_FILTER 0
+#define CONFIG_TONEMAP_FILTER 0
+#define CONFIG_TONEMAP_OPENCL_FILTER 0
+#define CONFIG_TONEMAP_VAAPI_FILTER 0
+#define CONFIG_TPAD_FILTER 0
+#define CONFIG_TRANSPOSE_FILTER 0
+#define CONFIG_TRANSPOSE_NPP_FILTER 0
+#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
+#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
+#define CONFIG_TRIM_FILTER 0
+#define CONFIG_UNPREMULTIPLY_FILTER 0
+#define CONFIG_UNSHARP_FILTER 0
+#define CONFIG_UNSHARP_OPENCL_FILTER 0
+#define CONFIG_USPP_FILTER 0
+#define CONFIG_V360_FILTER 0
+#define CONFIG_VAGUEDENOISER_FILTER 0
+#define CONFIG_VECTORSCOPE_FILTER 0
+#define CONFIG_VFLIP_FILTER 0
+#define CONFIG_VFRDET_FILTER 0
+#define CONFIG_VIBRANCE_FILTER 0
+#define CONFIG_VIDSTABDETECT_FILTER 0
+#define CONFIG_VIDSTABTRANSFORM_FILTER 0
+#define CONFIG_VIGNETTE_FILTER 0
+#define CONFIG_VMAFMOTION_FILTER 0
+#define CONFIG_VPP_QSV_FILTER 0
+#define CONFIG_VSTACK_FILTER 0
+#define CONFIG_W3FDIF_FILTER 0
+#define CONFIG_WAVEFORM_FILTER 0
+#define CONFIG_WEAVE_FILTER 0
+#define CONFIG_XBR_FILTER 0
+#define CONFIG_XFADE_FILTER 0
+#define CONFIG_XFADE_OPENCL_FILTER 0
+#define CONFIG_XMEDIAN_FILTER 0
+#define CONFIG_XSTACK_FILTER 0
+#define CONFIG_YADIF_FILTER 0
+#define CONFIG_YADIF_CUDA_FILTER 0
+#define CONFIG_YAEPBLUR_FILTER 0
+#define CONFIG_ZMQ_FILTER 0
+#define CONFIG_ZOOMPAN_FILTER 0
+#define CONFIG_ZSCALE_FILTER 0
+#define CONFIG_ALLRGB_FILTER 0
+#define CONFIG_ALLYUV_FILTER 0
+#define CONFIG_CELLAUTO_FILTER 0
+#define CONFIG_COLOR_FILTER 0
+#define CONFIG_COREIMAGESRC_FILTER 0
+#define CONFIG_FREI0R_SRC_FILTER 0
+#define CONFIG_HALDCLUTSRC_FILTER 0
+#define CONFIG_LIFE_FILTER 0
+#define CONFIG_MANDELBROT_FILTER 0
+#define CONFIG_MPTESTSRC_FILTER 0
+#define CONFIG_NULLSRC_FILTER 0
+#define CONFIG_OPENCLSRC_FILTER 0
+#define CONFIG_PAL75BARS_FILTER 0
+#define CONFIG_PAL100BARS_FILTER 0
+#define CONFIG_RGBTESTSRC_FILTER 0
+#define CONFIG_SIERPINSKI_FILTER 0
+#define CONFIG_SMPTEBARS_FILTER 0
+#define CONFIG_SMPTEHDBARS_FILTER 0
+#define CONFIG_TESTSRC_FILTER 0
+#define CONFIG_TESTSRC2_FILTER 0
+#define CONFIG_YUVTESTSRC_FILTER 0
+#define CONFIG_NULLSINK_FILTER 0
+#define CONFIG_ABITSCOPE_FILTER 0
+#define CONFIG_ADRAWGRAPH_FILTER 0
+#define CONFIG_AGRAPHMONITOR_FILTER 0
+#define CONFIG_AHISTOGRAM_FILTER 0
+#define CONFIG_APHASEMETER_FILTER 0
+#define CONFIG_AVECTORSCOPE_FILTER 0
+#define CONFIG_CONCAT_FILTER 0
+#define CONFIG_SHOWCQT_FILTER 0
+#define CONFIG_SHOWFREQS_FILTER 0
+#define CONFIG_SHOWSPATIAL_FILTER 0
+#define CONFIG_SHOWSPECTRUM_FILTER 0
+#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
+#define CONFIG_SHOWVOLUME_FILTER 0
+#define CONFIG_SHOWWAVES_FILTER 0
+#define CONFIG_SHOWWAVESPIC_FILTER 0
+#define CONFIG_SPECTRUMSYNTH_FILTER 0
+#define CONFIG_AMOVIE_FILTER 0
+#define CONFIG_MOVIE_FILTER 0
+#define CONFIG_AFIFO_FILTER 0
+#define CONFIG_FIFO_FILTER 0
+#define CONFIG_AA_DEMUXER 0
+#define CONFIG_AAC_DEMUXER 0
+#define CONFIG_AC3_DEMUXER 0
+#define CONFIG_ACM_DEMUXER 0
+#define CONFIG_ACT_DEMUXER 0
+#define CONFIG_ADF_DEMUXER 0
+#define CONFIG_ADP_DEMUXER 0
+#define CONFIG_ADS_DEMUXER 0
+#define CONFIG_ADX_DEMUXER 0
+#define CONFIG_AEA_DEMUXER 0
+#define CONFIG_AFC_DEMUXER 0
+#define CONFIG_AIFF_DEMUXER 0
+#define CONFIG_AIX_DEMUXER 0
+#define CONFIG_ALP_DEMUXER 0
+#define CONFIG_AMR_DEMUXER 0
+#define CONFIG_AMRNB_DEMUXER 0
+#define CONFIG_AMRWB_DEMUXER 0
+#define CONFIG_ANM_DEMUXER 0
+#define CONFIG_APC_DEMUXER 0
+#define CONFIG_APE_DEMUXER 0
+#define CONFIG_APM_DEMUXER 0
+#define CONFIG_APNG_DEMUXER 0
+#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
+#define CONFIG_AQTITLE_DEMUXER 0
+#define CONFIG_ARGO_ASF_DEMUXER 0
+#define CONFIG_ASF_DEMUXER 0
+#define CONFIG_ASF_O_DEMUXER 0
+#define CONFIG_ASS_DEMUXER 0
+#define CONFIG_AST_DEMUXER 0
+#define CONFIG_AU_DEMUXER 0
+#define CONFIG_AV1_DEMUXER 0
+#define CONFIG_AVI_DEMUXER 0
+#define CONFIG_AVISYNTH_DEMUXER 0
+#define CONFIG_AVR_DEMUXER 0
+#define CONFIG_AVS_DEMUXER 0
+#define CONFIG_AVS2_DEMUXER 0
+#define CONFIG_BETHSOFTVID_DEMUXER 0
+#define CONFIG_BFI_DEMUXER 0
+#define CONFIG_BINTEXT_DEMUXER 0
+#define CONFIG_BINK_DEMUXER 0
+#define CONFIG_BIT_DEMUXER 0
+#define CONFIG_BMV_DEMUXER 0
+#define CONFIG_BFSTM_DEMUXER 0
+#define CONFIG_BRSTM_DEMUXER 0
+#define CONFIG_BOA_DEMUXER 0
+#define CONFIG_C93_DEMUXER 0
+#define CONFIG_CAF_DEMUXER 0
+#define CONFIG_CAVSVIDEO_DEMUXER 0
+#define CONFIG_CDG_DEMUXER 0
+#define CONFIG_CDXL_DEMUXER 0
+#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
+#define CONFIG_CONCAT_DEMUXER 0
+#define CONFIG_DASH_DEMUXER 0
+#define CONFIG_DATA_DEMUXER 0
+#define CONFIG_DAUD_DEMUXER 0
+#define CONFIG_DCSTR_DEMUXER 0
+#define CONFIG_DERF_DEMUXER 0
+#define CONFIG_DFA_DEMUXER 0
+#define CONFIG_DHAV_DEMUXER 0
+#define CONFIG_DIRAC_DEMUXER 0
+#define CONFIG_DNXHD_DEMUXER 0
+#define CONFIG_DSF_DEMUXER 0
+#define CONFIG_DSICIN_DEMUXER 0
+#define CONFIG_DSS_DEMUXER 0
+#define CONFIG_DTS_DEMUXER 0
+#define CONFIG_DTSHD_DEMUXER 0
+#define CONFIG_DV_DEMUXER 0
+#define CONFIG_DVBSUB_DEMUXER 0
+#define CONFIG_DVBTXT_DEMUXER 0
+#define CONFIG_DXA_DEMUXER 0
+#define CONFIG_EA_DEMUXER 0
+#define CONFIG_EA_CDATA_DEMUXER 0
+#define CONFIG_EAC3_DEMUXER 0
+#define CONFIG_EPAF_DEMUXER 0
+#define CONFIG_FFMETADATA_DEMUXER 0
+#define CONFIG_FILMSTRIP_DEMUXER 0
+#define CONFIG_FITS_DEMUXER 0
+#define CONFIG_FLAC_DEMUXER 1
+#define CONFIG_FLIC_DEMUXER 0
+#define CONFIG_FLV_DEMUXER 0
+#define CONFIG_LIVE_FLV_DEMUXER 0
+#define CONFIG_FOURXM_DEMUXER 0
+#define CONFIG_FRM_DEMUXER 0
+#define CONFIG_FSB_DEMUXER 0
+#define CONFIG_FWSE_DEMUXER 0
+#define CONFIG_G722_DEMUXER 0
+#define CONFIG_G723_1_DEMUXER 0
+#define CONFIG_G726_DEMUXER 0
+#define CONFIG_G726LE_DEMUXER 0
+#define CONFIG_G729_DEMUXER 0
+#define CONFIG_GDV_DEMUXER 0
+#define CONFIG_GENH_DEMUXER 0
+#define CONFIG_GIF_DEMUXER 0
+#define CONFIG_GSM_DEMUXER 0
+#define CONFIG_GXF_DEMUXER 0
+#define CONFIG_H261_DEMUXER 0
+#define CONFIG_H263_DEMUXER 0
+#define CONFIG_H264_DEMUXER 0
+#define CONFIG_HCA_DEMUXER 0
+#define CONFIG_HCOM_DEMUXER 0
+#define CONFIG_HEVC_DEMUXER 0
+#define CONFIG_HLS_DEMUXER 0
+#define CONFIG_HNM_DEMUXER 0
+#define CONFIG_ICO_DEMUXER 0
+#define CONFIG_IDCIN_DEMUXER 0
+#define CONFIG_IDF_DEMUXER 0
+#define CONFIG_IFF_DEMUXER 0
+#define CONFIG_IFV_DEMUXER 0
+#define CONFIG_ILBC_DEMUXER 0
+#define CONFIG_IMAGE2_DEMUXER 0
+#define CONFIG_IMAGE2PIPE_DEMUXER 0
+#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
+#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
+#define CONFIG_INGENIENT_DEMUXER 0
+#define CONFIG_IPMOVIE_DEMUXER 0
+#define CONFIG_IRCAM_DEMUXER 0
+#define CONFIG_ISS_DEMUXER 0
+#define CONFIG_IV8_DEMUXER 0
+#define CONFIG_IVF_DEMUXER 0
+#define CONFIG_IVR_DEMUXER 0
+#define CONFIG_JACOSUB_DEMUXER 0
+#define CONFIG_JV_DEMUXER 0
+#define CONFIG_KUX_DEMUXER 0
+#define CONFIG_KVAG_DEMUXER 0
+#define CONFIG_LMLM4_DEMUXER 0
+#define CONFIG_LOAS_DEMUXER 0
+#define CONFIG_LRC_DEMUXER 0
+#define CONFIG_LVF_DEMUXER 0
+#define CONFIG_LXF_DEMUXER 0
+#define CONFIG_M4V_DEMUXER 0
+#define CONFIG_MATROSKA_DEMUXER 1
+#define CONFIG_MGSTS_DEMUXER 0
+#define CONFIG_MICRODVD_DEMUXER 0
+#define CONFIG_MJPEG_DEMUXER 0
+#define CONFIG_MJPEG_2000_DEMUXER 0
+#define CONFIG_MLP_DEMUXER 0
+#define CONFIG_MLV_DEMUXER 0
+#define CONFIG_MM_DEMUXER 0
+#define CONFIG_MMF_DEMUXER 0
+#define CONFIG_MOV_DEMUXER 1
+#define CONFIG_MP3_DEMUXER 1
+#define CONFIG_MPC_DEMUXER 0
+#define CONFIG_MPC8_DEMUXER 0
+#define CONFIG_MPEGPS_DEMUXER 0
+#define CONFIG_MPEGTS_DEMUXER 0
+#define CONFIG_MPEGTSRAW_DEMUXER 0
+#define CONFIG_MPEGVIDEO_DEMUXER 0
+#define CONFIG_MPJPEG_DEMUXER 0
+#define CONFIG_MPL2_DEMUXER 0
+#define CONFIG_MPSUB_DEMUXER 0
+#define CONFIG_MSF_DEMUXER 0
+#define CONFIG_MSNWC_TCP_DEMUXER 0
+#define CONFIG_MTAF_DEMUXER 0
+#define CONFIG_MTV_DEMUXER 0
+#define CONFIG_MUSX_DEMUXER 0
+#define CONFIG_MV_DEMUXER 0
+#define CONFIG_MVI_DEMUXER 0
+#define CONFIG_MXF_DEMUXER 0
+#define CONFIG_MXG_DEMUXER 0
+#define CONFIG_NC_DEMUXER 0
+#define CONFIG_NISTSPHERE_DEMUXER 0
+#define CONFIG_NSP_DEMUXER 0
+#define CONFIG_NSV_DEMUXER 0
+#define CONFIG_NUT_DEMUXER 0
+#define CONFIG_NUV_DEMUXER 0
+#define CONFIG_OGG_DEMUXER 1
+#define CONFIG_OMA_DEMUXER 0
+#define CONFIG_PAF_DEMUXER 0
+#define CONFIG_PCM_ALAW_DEMUXER 0
+#define CONFIG_PCM_MULAW_DEMUXER 0
+#define CONFIG_PCM_VIDC_DEMUXER 0
+#define CONFIG_PCM_F64BE_DEMUXER 0
+#define CONFIG_PCM_F64LE_DEMUXER 0
+#define CONFIG_PCM_F32BE_DEMUXER 0
+#define CONFIG_PCM_F32LE_DEMUXER 0
+#define CONFIG_PCM_S32BE_DEMUXER 0
+#define CONFIG_PCM_S32LE_DEMUXER 0
+#define CONFIG_PCM_S24BE_DEMUXER 0
+#define CONFIG_PCM_S24LE_DEMUXER 0
+#define CONFIG_PCM_S16BE_DEMUXER 0
+#define CONFIG_PCM_S16LE_DEMUXER 0
+#define CONFIG_PCM_S8_DEMUXER 0
+#define CONFIG_PCM_U32BE_DEMUXER 0
+#define CONFIG_PCM_U32LE_DEMUXER 0
+#define CONFIG_PCM_U24BE_DEMUXER 0
+#define CONFIG_PCM_U24LE_DEMUXER 0
+#define CONFIG_PCM_U16BE_DEMUXER 0
+#define CONFIG_PCM_U16LE_DEMUXER 0
+#define CONFIG_PCM_U8_DEMUXER 0
+#define CONFIG_PJS_DEMUXER 0
+#define CONFIG_PMP_DEMUXER 0
+#define CONFIG_PVA_DEMUXER 0
+#define CONFIG_PVF_DEMUXER 0
+#define CONFIG_QCP_DEMUXER 0
+#define CONFIG_R3D_DEMUXER 0
+#define CONFIG_RAWVIDEO_DEMUXER 0
+#define CONFIG_REALTEXT_DEMUXER 0
+#define CONFIG_REDSPARK_DEMUXER 0
+#define CONFIG_RL2_DEMUXER 0
+#define CONFIG_RM_DEMUXER 0
+#define CONFIG_ROQ_DEMUXER 0
+#define CONFIG_RPL_DEMUXER 0
+#define CONFIG_RSD_DEMUXER 0
+#define CONFIG_RSO_DEMUXER 0
+#define CONFIG_RTP_DEMUXER 0
+#define CONFIG_RTSP_DEMUXER 0
+#define CONFIG_S337M_DEMUXER 0
+#define CONFIG_SAMI_DEMUXER 0
+#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
+#define CONFIG_SBG_DEMUXER 0
+#define CONFIG_SCC_DEMUXER 0
+#define CONFIG_SDP_DEMUXER 0
+#define CONFIG_SDR2_DEMUXER 0
+#define CONFIG_SDS_DEMUXER 0
+#define CONFIG_SDX_DEMUXER 0
+#define CONFIG_SEGAFILM_DEMUXER 0
+#define CONFIG_SER_DEMUXER 0
+#define CONFIG_SHORTEN_DEMUXER 0
+#define CONFIG_SIFF_DEMUXER 0
+#define CONFIG_SLN_DEMUXER 0
+#define CONFIG_SMACKER_DEMUXER 0
+#define CONFIG_SMJPEG_DEMUXER 0
+#define CONFIG_SMUSH_DEMUXER 0
+#define CONFIG_SOL_DEMUXER 0
+#define CONFIG_SOX_DEMUXER 0
+#define CONFIG_SPDIF_DEMUXER 0
+#define CONFIG_SRT_DEMUXER 0
+#define CONFIG_STR_DEMUXER 0
+#define CONFIG_STL_DEMUXER 0
+#define CONFIG_SUBVIEWER1_DEMUXER 0
+#define CONFIG_SUBVIEWER_DEMUXER 0
+#define CONFIG_SUP_DEMUXER 0
+#define CONFIG_SVAG_DEMUXER 0
+#define CONFIG_SWF_DEMUXER 0
+#define CONFIG_TAK_DEMUXER 0
+#define CONFIG_TEDCAPTIONS_DEMUXER 0
+#define CONFIG_THP_DEMUXER 0
+#define CONFIG_THREEDOSTR_DEMUXER 0
+#define CONFIG_TIERTEXSEQ_DEMUXER 0
+#define CONFIG_TMV_DEMUXER 0
+#define CONFIG_TRUEHD_DEMUXER 0
+#define CONFIG_TTA_DEMUXER 0
+#define CONFIG_TXD_DEMUXER 0
+#define CONFIG_TTY_DEMUXER 0
+#define CONFIG_TY_DEMUXER 0
+#define CONFIG_V210_DEMUXER 0
+#define CONFIG_V210X_DEMUXER 0
+#define CONFIG_VAG_DEMUXER 0
+#define CONFIG_VC1_DEMUXER 0
+#define CONFIG_VC1T_DEMUXER 0
+#define CONFIG_VIVIDAS_DEMUXER 0
+#define CONFIG_VIVO_DEMUXER 0
+#define CONFIG_VMD_DEMUXER 0
+#define CONFIG_VOBSUB_DEMUXER 0
+#define CONFIG_VOC_DEMUXER 0
+#define CONFIG_VPK_DEMUXER 0
+#define CONFIG_VPLAYER_DEMUXER 0
+#define CONFIG_VQF_DEMUXER 0
+#define CONFIG_W64_DEMUXER 0
+#define CONFIG_WAV_DEMUXER 1
+#define CONFIG_WC3_DEMUXER 0
+#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
+#define CONFIG_WEBVTT_DEMUXER 0
+#define CONFIG_WSAUD_DEMUXER 0
+#define CONFIG_WSD_DEMUXER 0
+#define CONFIG_WSVQA_DEMUXER 0
+#define CONFIG_WTV_DEMUXER 0
+#define CONFIG_WVE_DEMUXER 0
+#define CONFIG_WV_DEMUXER 0
+#define CONFIG_XA_DEMUXER 0
+#define CONFIG_XBIN_DEMUXER 0
+#define CONFIG_XMV_DEMUXER 0
+#define CONFIG_XVAG_DEMUXER 0
+#define CONFIG_XWMA_DEMUXER 0
+#define CONFIG_YOP_DEMUXER 0
+#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
+#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
+#define CONFIG_LIBGME_DEMUXER 0
+#define CONFIG_LIBMODPLUG_DEMUXER 0
+#define CONFIG_LIBOPENMPT_DEMUXER 0
+#define CONFIG_VAPOURSYNTH_DEMUXER 0
+#define CONFIG_A64_MUXER 0
+#define CONFIG_AC3_MUXER 0
+#define CONFIG_ADTS_MUXER 0
+#define CONFIG_ADX_MUXER 0
+#define CONFIG_AIFF_MUXER 0
+#define CONFIG_AMR_MUXER 0
+#define CONFIG_APNG_MUXER 0
+#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
+#define CONFIG_ASF_MUXER 0
+#define CONFIG_ASS_MUXER 0
+#define CONFIG_AST_MUXER 0
+#define CONFIG_ASF_STREAM_MUXER 0
+#define CONFIG_AU_MUXER 0
+#define CONFIG_AVI_MUXER 0
+#define CONFIG_AVM2_MUXER 0
+#define CONFIG_AVS2_MUXER 0
+#define CONFIG_BIT_MUXER 0
+#define CONFIG_CAF_MUXER 0
+#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
+#define CONFIG_CRC_MUXER 0
+#define CONFIG_DASH_MUXER 0
+#define CONFIG_DATA_MUXER 0
+#define CONFIG_DAUD_MUXER 0
+#define CONFIG_DIRAC_MUXER 0
+#define CONFIG_DNXHD_MUXER 0
+#define CONFIG_DTS_MUXER 0
+#define CONFIG_DV_MUXER 0
+#define CONFIG_EAC3_MUXER 0
+#define CONFIG_F4V_MUXER 0
+#define CONFIG_FFMETADATA_MUXER 0
+#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
+#define CONFIG_FILMSTRIP_MUXER 0
+#define CONFIG_FITS_MUXER 0
+#define CONFIG_FLAC_MUXER 0
+#define CONFIG_FLV_MUXER 0
+#define CONFIG_FRAMECRC_MUXER 0
+#define CONFIG_FRAMEHASH_MUXER 0
+#define CONFIG_FRAMEMD5_MUXER 0
+#define CONFIG_G722_MUXER 0
+#define CONFIG_G723_1_MUXER 0
+#define CONFIG_G726_MUXER 0
+#define CONFIG_G726LE_MUXER 0
+#define CONFIG_GIF_MUXER 0
+#define CONFIG_GSM_MUXER 0
+#define CONFIG_GXF_MUXER 0
+#define CONFIG_H261_MUXER 0
+#define CONFIG_H263_MUXER 0
+#define CONFIG_H264_MUXER 0
+#define CONFIG_HASH_MUXER 0
+#define CONFIG_HDS_MUXER 0
+#define CONFIG_HEVC_MUXER 0
+#define CONFIG_HLS_MUXER 0
+#define CONFIG_ICO_MUXER 0
+#define CONFIG_ILBC_MUXER 0
+#define CONFIG_IMAGE2_MUXER 0
+#define CONFIG_IMAGE2PIPE_MUXER 0
+#define CONFIG_IPOD_MUXER 0
+#define CONFIG_IRCAM_MUXER 0
+#define CONFIG_ISMV_MUXER 0
+#define CONFIG_IVF_MUXER 0
+#define CONFIG_JACOSUB_MUXER 0
+#define CONFIG_LATM_MUXER 0
+#define CONFIG_LRC_MUXER 0
+#define CONFIG_M4V_MUXER 0
+#define CONFIG_MD5_MUXER 0
+#define CONFIG_MATROSKA_MUXER 0
+#define CONFIG_MATROSKA_AUDIO_MUXER 0
+#define CONFIG_MICRODVD_MUXER 0
+#define CONFIG_MJPEG_MUXER 0
+#define CONFIG_MLP_MUXER 0
+#define CONFIG_MMF_MUXER 0
+#define CONFIG_MOV_MUXER 0
+#define CONFIG_MP2_MUXER 0
+#define CONFIG_MP3_MUXER 0
+#define CONFIG_MP4_MUXER 0
+#define CONFIG_MPEG1SYSTEM_MUXER 0
+#define CONFIG_MPEG1VCD_MUXER 0
+#define CONFIG_MPEG1VIDEO_MUXER 0
+#define CONFIG_MPEG2DVD_MUXER 0
+#define CONFIG_MPEG2SVCD_MUXER 0
+#define CONFIG_MPEG2VIDEO_MUXER 0
+#define CONFIG_MPEG2VOB_MUXER 0
+#define CONFIG_MPEGTS_MUXER 0
+#define CONFIG_MPJPEG_MUXER 0
+#define CONFIG_MXF_MUXER 0
+#define CONFIG_MXF_D10_MUXER 0
+#define CONFIG_MXF_OPATOM_MUXER 0
+#define CONFIG_NULL_MUXER 0
+#define CONFIG_NUT_MUXER 0
+#define CONFIG_OGA_MUXER 0
+#define CONFIG_OGG_MUXER 0
+#define CONFIG_OGV_MUXER 0
+#define CONFIG_OMA_MUXER 0
+#define CONFIG_OPUS_MUXER 0
+#define CONFIG_PCM_ALAW_MUXER 0
+#define CONFIG_PCM_MULAW_MUXER 0
+#define CONFIG_PCM_VIDC_MUXER 0
+#define CONFIG_PCM_F64BE_MUXER 0
+#define CONFIG_PCM_F64LE_MUXER 0
+#define CONFIG_PCM_F32BE_MUXER 0
+#define CONFIG_PCM_F32LE_MUXER 0
+#define CONFIG_PCM_S32BE_MUXER 0
+#define CONFIG_PCM_S32LE_MUXER 0
+#define CONFIG_PCM_S24BE_MUXER 0
+#define CONFIG_PCM_S24LE_MUXER 0
+#define CONFIG_PCM_S16BE_MUXER 0
+#define CONFIG_PCM_S16LE_MUXER 0
+#define CONFIG_PCM_S8_MUXER 0
+#define CONFIG_PCM_U32BE_MUXER 0
+#define CONFIG_PCM_U32LE_MUXER 0
+#define CONFIG_PCM_U24BE_MUXER 0
+#define CONFIG_PCM_U24LE_MUXER 0
+#define CONFIG_PCM_U16BE_MUXER 0
+#define CONFIG_PCM_U16LE_MUXER 0
+#define CONFIG_PCM_U8_MUXER 0
+#define CONFIG_PSP_MUXER 0
+#define CONFIG_RAWVIDEO_MUXER 0
+#define CONFIG_RM_MUXER 0
+#define CONFIG_ROQ_MUXER 0
+#define CONFIG_RSO_MUXER 0
+#define CONFIG_RTP_MUXER 0
+#define CONFIG_RTP_MPEGTS_MUXER 0
+#define CONFIG_RTSP_MUXER 0
+#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
+#define CONFIG_SCC_MUXER 0
+#define CONFIG_SEGAFILM_MUXER 0
+#define CONFIG_SEGMENT_MUXER 0
+#define CONFIG_STREAM_SEGMENT_MUXER 0
+#define CONFIG_SINGLEJPEG_MUXER 0
+#define CONFIG_SMJPEG_MUXER 0
+#define CONFIG_SMOOTHSTREAMING_MUXER 0
+#define CONFIG_SOX_MUXER 0
+#define CONFIG_SPX_MUXER 0
+#define CONFIG_SPDIF_MUXER 0
+#define CONFIG_SRT_MUXER 0
+#define CONFIG_STREAMHASH_MUXER 0
+#define CONFIG_SUP_MUXER 0
+#define CONFIG_SWF_MUXER 0
+#define CONFIG_TEE_MUXER 0
+#define CONFIG_TG2_MUXER 0
+#define CONFIG_TGP_MUXER 0
+#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
+#define CONFIG_TRUEHD_MUXER 0
+#define CONFIG_TTA_MUXER 0
+#define CONFIG_UNCODEDFRAMECRC_MUXER 0
+#define CONFIG_VC1_MUXER 0
+#define CONFIG_VC1T_MUXER 0
+#define CONFIG_VOC_MUXER 0
+#define CONFIG_W64_MUXER 0
+#define CONFIG_WAV_MUXER 0
+#define CONFIG_WEBM_MUXER 0
+#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
+#define CONFIG_WEBM_CHUNK_MUXER 0
+#define CONFIG_WEBP_MUXER 0
+#define CONFIG_WEBVTT_MUXER 0
+#define CONFIG_WTV_MUXER 0
+#define CONFIG_WV_MUXER 0
+#define CONFIG_YUV4MPEGPIPE_MUXER 0
+#define CONFIG_CHROMAPRINT_MUXER 0
+#define CONFIG_ASYNC_PROTOCOL 0
+#define CONFIG_BLURAY_PROTOCOL 0
+#define CONFIG_CACHE_PROTOCOL 0
+#define CONFIG_CONCAT_PROTOCOL 0
+#define CONFIG_CRYPTO_PROTOCOL 0
+#define CONFIG_DATA_PROTOCOL 0
+#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
+#define CONFIG_FFRTMPHTTP_PROTOCOL 0
+#define CONFIG_FILE_PROTOCOL 0
+#define CONFIG_FTP_PROTOCOL 0
+#define CONFIG_GOPHER_PROTOCOL 0
+#define CONFIG_HLS_PROTOCOL 0
+#define CONFIG_HTTP_PROTOCOL 0
+#define CONFIG_HTTPPROXY_PROTOCOL 0
+#define CONFIG_HTTPS_PROTOCOL 0
+#define CONFIG_ICECAST_PROTOCOL 0
+#define CONFIG_MMSH_PROTOCOL 0
+#define CONFIG_MMST_PROTOCOL 0
+#define CONFIG_MD5_PROTOCOL 0
+#define CONFIG_PIPE_PROTOCOL 0
+#define CONFIG_PROMPEG_PROTOCOL 0
+#define CONFIG_RTMP_PROTOCOL 0
+#define CONFIG_RTMPE_PROTOCOL 0
+#define CONFIG_RTMPS_PROTOCOL 0
+#define CONFIG_RTMPT_PROTOCOL 0
+#define CONFIG_RTMPTE_PROTOCOL 0
+#define CONFIG_RTMPTS_PROTOCOL 0
+#define CONFIG_RTP_PROTOCOL 0
+#define CONFIG_SCTP_PROTOCOL 0
+#define CONFIG_SRTP_PROTOCOL 0
+#define CONFIG_SUBFILE_PROTOCOL 0
+#define CONFIG_TEE_PROTOCOL 0
+#define CONFIG_TCP_PROTOCOL 0
+#define CONFIG_TLS_PROTOCOL 0
+#define CONFIG_UDP_PROTOCOL 0
+#define CONFIG_UDPLITE_PROTOCOL 0
+#define CONFIG_UNIX_PROTOCOL 0
+#define CONFIG_LIBAMQP_PROTOCOL 0
+#define CONFIG_LIBRTMP_PROTOCOL 0
+#define CONFIG_LIBRTMPE_PROTOCOL 0
+#define CONFIG_LIBRTMPS_PROTOCOL 0
+#define CONFIG_LIBRTMPT_PROTOCOL 0
+#define CONFIG_LIBRTMPTE_PROTOCOL 0
+#define CONFIG_LIBSRT_PROTOCOL 0
+#define CONFIG_LIBSSH_PROTOCOL 0
+#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
+#define CONFIG_LIBZMQ_PROTOCOL 0
+#endif /* FFMPEG_CONFIG_H */
diff --git a/fuchsia/config/default/arm64/libavcodec/bsf_list.c b/fuchsia/config/default/arm64/libavcodec/bsf_list.c
new file mode 100644
index 0000000..d31ece9
--- /dev/null
+++ b/fuchsia/config/default/arm64/libavcodec/bsf_list.c
@@ -0,0 +1,3 @@
+static const AVBitStreamFilter * const bitstream_filters[] = {
+    &ff_null_bsf,
+    NULL };
diff --git a/fuchsia/config/default/arm64/libavcodec/codec_list.c b/fuchsia/config/default/arm64/libavcodec/codec_list.c
new file mode 100644
index 0000000..6c53695
--- /dev/null
+++ b/fuchsia/config/default/arm64/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+    &ff_theora_decoder,
+    &ff_vp3_decoder,
+    &ff_vp8_decoder,
+    &ff_aptx_decoder,
+    &ff_flac_decoder,
+    &ff_mp3_decoder,
+    &ff_sbc_decoder,
+    &ff_vorbis_decoder,
+    &ff_pcm_alaw_decoder,
+    &ff_pcm_f32le_decoder,
+    &ff_pcm_mulaw_decoder,
+    &ff_pcm_s16be_decoder,
+    &ff_pcm_s16le_decoder,
+    &ff_pcm_s24be_decoder,
+    &ff_pcm_s24le_decoder,
+    &ff_pcm_s32le_decoder,
+    &ff_pcm_u8_decoder,
+    &ff_libopus_decoder,
+    NULL };
diff --git a/fuchsia/config/default/arm64/libavcodec/parser_list.c b/fuchsia/config/default/arm64/libavcodec/parser_list.c
new file mode 100644
index 0000000..4c59b89
--- /dev/null
+++ b/fuchsia/config/default/arm64/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+    &ff_flac_parser,
+    &ff_mpegaudio_parser,
+    &ff_opus_parser,
+    &ff_vorbis_parser,
+    &ff_vp3_parser,
+    &ff_vp8_parser,
+    NULL };
diff --git a/fuchsia/config/default/arm64/libavformat/demuxer_list.c b/fuchsia/config/default/arm64/libavformat/demuxer_list.c
new file mode 100644
index 0000000..1908ba1
--- /dev/null
+++ b/fuchsia/config/default/arm64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+    &ff_flac_demuxer,
+    &ff_matroska_demuxer,
+    &ff_mov_demuxer,
+    &ff_mp3_demuxer,
+    &ff_ogg_demuxer,
+    &ff_wav_demuxer,
+    NULL };
diff --git a/fuchsia/config/default/arm64/libavformat/muxer_list.c b/fuchsia/config/default/arm64/libavformat/muxer_list.c
new file mode 100644
index 0000000..f36d949
--- /dev/null
+++ b/fuchsia/config/default/arm64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+    NULL };
diff --git a/fuchsia/config/default/arm64/libavformat/protocol_list.c b/fuchsia/config/default/arm64/libavformat/protocol_list.c
new file mode 100644
index 0000000..247e1e4
--- /dev/null
+++ b/fuchsia/config/default/arm64/libavformat/protocol_list.c
@@ -0,0 +1,2 @@
+static const URLProtocol * const url_protocols[] = {
+    NULL };
diff --git a/fuchsia/config/default/arm64/libavutil/avconfig.h b/fuchsia/config/default/arm64/libavutil/avconfig.h
new file mode 100644
index 0000000..c289fbb
--- /dev/null
+++ b/fuchsia/config/default/arm64/libavutil/avconfig.h
@@ -0,0 +1,6 @@
+/* Generated by ffmpeg configure */
+#ifndef AVUTIL_AVCONFIG_H
+#define AVUTIL_AVCONFIG_H
+#define AV_HAVE_BIGENDIAN 0
+#define AV_HAVE_FAST_UNALIGNED 1
+#endif /* AVUTIL_AVCONFIG_H */
diff --git a/fuchsia/config/default/arm64/libavutil/ffversion.h b/fuchsia/config/default/arm64/libavutil/ffversion.h
new file mode 100644
index 0000000..fc76199
--- /dev/null
+++ b/fuchsia/config/default/arm64/libavutil/ffversion.h
@@ -0,0 +1,5 @@
+/* Automatically generated by version.sh, do not manually edit! */
+#ifndef AVUTIL_FFVERSION_H
+#define AVUTIL_FFVERSION_H
+#define FFMPEG_VERSION "N-97662-gaaac2c26d9"
+#endif /* AVUTIL_FFVERSION_H */
diff --git a/fuchsia/config/default/x64/config.asm b/fuchsia/config/default/x64/config.asm
new file mode 100644
index 0000000..46239d0
--- /dev/null
+++ b/fuchsia/config/default/x64/config.asm
@@ -0,0 +1,2572 @@
+; Automatically generated by configure - do not modify!
+%define ARCH_AARCH64 0
+%define ARCH_ALPHA 0
+%define ARCH_ARM 0
+%define ARCH_AVR32 0
+%define ARCH_AVR32_AP 0
+%define ARCH_AVR32_UC 0
+%define ARCH_BFIN 0
+%define ARCH_IA64 0
+%define ARCH_M68K 0
+%define ARCH_MIPS 0
+%define ARCH_MIPS64 0
+%define ARCH_PARISC 0
+%define ARCH_PPC 0
+%define ARCH_PPC64 0
+%define ARCH_S390 0
+%define ARCH_SH4 0
+%define ARCH_SPARC 0
+%define ARCH_SPARC64 0
+%define ARCH_TILEGX 0
+%define ARCH_TILEPRO 0
+%define ARCH_TOMI 0
+%define ARCH_X86 1
+%define ARCH_X86_32 0
+%define ARCH_X86_64 1
+%define HAVE_ARMV5TE 0
+%define HAVE_ARMV6 0
+%define HAVE_ARMV6T2 0
+%define HAVE_ARMV8 0
+%define HAVE_NEON 0
+%define HAVE_VFP 0
+%define HAVE_VFPV3 0
+%define HAVE_SETEND 0
+%define HAVE_ALTIVEC 0
+%define HAVE_DCBZL 0
+%define HAVE_LDBRX 0
+%define HAVE_POWER8 0
+%define HAVE_PPC4XX 0
+%define HAVE_VSX 0
+%define HAVE_AESNI 1
+%define HAVE_AMD3DNOW 1
+%define HAVE_AMD3DNOWEXT 1
+%define HAVE_AVX 1
+%define HAVE_AVX2 1
+%define HAVE_AVX512 1
+%define HAVE_FMA3 1
+%define HAVE_FMA4 1
+%define HAVE_MMX 1
+%define HAVE_MMXEXT 1
+%define HAVE_SSE 1
+%define HAVE_SSE2 1
+%define HAVE_SSE3 1
+%define HAVE_SSE4 1
+%define HAVE_SSE42 1
+%define HAVE_SSSE3 1
+%define HAVE_XOP 1
+%define HAVE_CPUNOP 1
+%define HAVE_I686 1
+%define HAVE_MIPSFPU 0
+%define HAVE_MIPS32R2 0
+%define HAVE_MIPS32R5 0
+%define HAVE_MIPS64R2 0
+%define HAVE_MIPS32R6 0
+%define HAVE_MIPS64R6 0
+%define HAVE_MIPSDSP 0
+%define HAVE_MIPSDSPR2 0
+%define HAVE_MSA 0
+%define HAVE_MSA2 0
+%define HAVE_LOONGSON2 0
+%define HAVE_LOONGSON3 0
+%define HAVE_MMI 0
+%define HAVE_ARMV5TE_EXTERNAL 0
+%define HAVE_ARMV6_EXTERNAL 0
+%define HAVE_ARMV6T2_EXTERNAL 0
+%define HAVE_ARMV8_EXTERNAL 0
+%define HAVE_NEON_EXTERNAL 0
+%define HAVE_VFP_EXTERNAL 0
+%define HAVE_VFPV3_EXTERNAL 0
+%define HAVE_SETEND_EXTERNAL 0
+%define HAVE_ALTIVEC_EXTERNAL 0
+%define HAVE_DCBZL_EXTERNAL 0
+%define HAVE_LDBRX_EXTERNAL 0
+%define HAVE_POWER8_EXTERNAL 0
+%define HAVE_PPC4XX_EXTERNAL 0
+%define HAVE_VSX_EXTERNAL 0
+%define HAVE_AESNI_EXTERNAL 1
+%define HAVE_AMD3DNOW_EXTERNAL 1
+%define HAVE_AMD3DNOWEXT_EXTERNAL 1
+%define HAVE_AVX_EXTERNAL 1
+%define HAVE_AVX2_EXTERNAL 1
+%define HAVE_AVX512_EXTERNAL 0
+%define HAVE_FMA3_EXTERNAL 1
+%define HAVE_FMA4_EXTERNAL 1
+%define HAVE_MMX_EXTERNAL 1
+%define HAVE_MMXEXT_EXTERNAL 1
+%define HAVE_SSE_EXTERNAL 1
+%define HAVE_SSE2_EXTERNAL 1
+%define HAVE_SSE3_EXTERNAL 1
+%define HAVE_SSE4_EXTERNAL 1
+%define HAVE_SSE42_EXTERNAL 1
+%define HAVE_SSSE3_EXTERNAL 1
+%define HAVE_XOP_EXTERNAL 1
+%define HAVE_CPUNOP_EXTERNAL 0
+%define HAVE_I686_EXTERNAL 0
+%define HAVE_MIPSFPU_EXTERNAL 0
+%define HAVE_MIPS32R2_EXTERNAL 0
+%define HAVE_MIPS32R5_EXTERNAL 0
+%define HAVE_MIPS64R2_EXTERNAL 0
+%define HAVE_MIPS32R6_EXTERNAL 0
+%define HAVE_MIPS64R6_EXTERNAL 0
+%define HAVE_MIPSDSP_EXTERNAL 0
+%define HAVE_MIPSDSPR2_EXTERNAL 0
+%define HAVE_MSA_EXTERNAL 0
+%define HAVE_MSA2_EXTERNAL 0
+%define HAVE_LOONGSON2_EXTERNAL 0
+%define HAVE_LOONGSON3_EXTERNAL 0
+%define HAVE_MMI_EXTERNAL 0
+%define HAVE_ARMV5TE_INLINE 0
+%define HAVE_ARMV6_INLINE 0
+%define HAVE_ARMV6T2_INLINE 0
+%define HAVE_ARMV8_INLINE 0
+%define HAVE_NEON_INLINE 0
+%define HAVE_VFP_INLINE 0
+%define HAVE_VFPV3_INLINE 0
+%define HAVE_SETEND_INLINE 0
+%define HAVE_ALTIVEC_INLINE 0
+%define HAVE_DCBZL_INLINE 0
+%define HAVE_LDBRX_INLINE 0
+%define HAVE_POWER8_INLINE 0
+%define HAVE_PPC4XX_INLINE 0
+%define HAVE_VSX_INLINE 0
+%define HAVE_AESNI_INLINE 1
+%define HAVE_AMD3DNOW_INLINE 1
+%define HAVE_AMD3DNOWEXT_INLINE 1
+%define HAVE_AVX_INLINE 1
+%define HAVE_AVX2_INLINE 1
+%define HAVE_AVX512_INLINE 1
+%define HAVE_FMA3_INLINE 1
+%define HAVE_FMA4_INLINE 1
+%define HAVE_MMX_INLINE 1
+%define HAVE_MMXEXT_INLINE 1
+%define HAVE_SSE_INLINE 1
+%define HAVE_SSE2_INLINE 1
+%define HAVE_SSE3_INLINE 1
+%define HAVE_SSE4_INLINE 1
+%define HAVE_SSE42_INLINE 1
+%define HAVE_SSSE3_INLINE 1
+%define HAVE_XOP_INLINE 1
+%define HAVE_CPUNOP_INLINE 0
+%define HAVE_I686_INLINE 0
+%define HAVE_MIPSFPU_INLINE 0
+%define HAVE_MIPS32R2_INLINE 0
+%define HAVE_MIPS32R5_INLINE 0
+%define HAVE_MIPS64R2_INLINE 0
+%define HAVE_MIPS32R6_INLINE 0
+%define HAVE_MIPS64R6_INLINE 0
+%define HAVE_MIPSDSP_INLINE 0
+%define HAVE_MIPSDSPR2_INLINE 0
+%define HAVE_MSA_INLINE 0
+%define HAVE_MSA2_INLINE 0
+%define HAVE_LOONGSON2_INLINE 0
+%define HAVE_LOONGSON3_INLINE 0
+%define HAVE_MMI_INLINE 0
+%define HAVE_ALIGNED_STACK 1
+%define HAVE_FAST_64BIT 1
+%define HAVE_FAST_CLZ 1
+%define HAVE_FAST_CMOV 1
+%define HAVE_LOCAL_ALIGNED 1
+%define HAVE_SIMD_ALIGN_16 1
+%define HAVE_SIMD_ALIGN_32 1
+%define HAVE_SIMD_ALIGN_64 1
+%define HAVE_ATOMIC_CAS_PTR 0
+%define HAVE_MACHINE_RW_BARRIER 0
+%define HAVE_MEMORYBARRIER 0
+%define HAVE_MM_EMPTY 1
+%define HAVE_RDTSC 0
+%define HAVE_SEM_TIMEDWAIT 1
+%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
+%define HAVE_CABS 0
+%define HAVE_CEXP 0
+%define HAVE_INLINE_ASM 1
+%define HAVE_SYMVER 0
+%define HAVE_X86ASM 1
+%define HAVE_BIGENDIAN 0
+%define HAVE_FAST_UNALIGNED 1
+%define HAVE_ARPA_INET_H 0
+%define HAVE_ASM_TYPES_H 1
+%define HAVE_CDIO_PARANOIA_H 0
+%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
+%define HAVE_CUDA_H 0
+%define HAVE_DISPATCH_DISPATCH_H 0
+%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
+%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
+%define HAVE_DEV_IC_BT8XX_H 0
+%define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
+%define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
+%define HAVE_DIRECT_H 0
+%define HAVE_DIRENT_H 1
+%define HAVE_DXGIDEBUG_H 0
+%define HAVE_DXVA_H 0
+%define HAVE_ES2_GL_H 0
+%define HAVE_GSM_H 0
+%define HAVE_IO_H 0
+%define HAVE_LINUX_PERF_EVENT_H 1
+%define HAVE_MACHINE_IOCTL_BT848_H 0
+%define HAVE_MACHINE_IOCTL_METEOR_H 0
+%define HAVE_MALLOC_H 1
+%define HAVE_OPENCV2_CORE_CORE_C_H 0
+%define HAVE_OPENGL_GL3_H 0
+%define HAVE_POLL_H 1
+%define HAVE_SYS_PARAM_H 1
+%define HAVE_SYS_RESOURCE_H 1
+%define HAVE_SYS_SELECT_H 1
+%define HAVE_SYS_SOUNDCARD_H 1
+%define HAVE_SYS_TIME_H 1
+%define HAVE_SYS_UN_H 1
+%define HAVE_SYS_VIDEOIO_H 0
+%define HAVE_TERMIOS_H 1
+%define HAVE_UDPLITE_H 0
+%define HAVE_UNISTD_H 1
+%define HAVE_VALGRIND_VALGRIND_H 0
+%define HAVE_WINDOWS_H 0
+%define HAVE_WINSOCK2_H 0
+%define HAVE_INTRINSICS_NEON 0
+%define HAVE_ATANF 1
+%define HAVE_ATAN2F 1
+%define HAVE_CBRT 1
+%define HAVE_CBRTF 1
+%define HAVE_COPYSIGN 1
+%define HAVE_COSF 1
+%define HAVE_ERF 1
+%define HAVE_EXP2 1
+%define HAVE_EXP2F 1
+%define HAVE_EXPF 1
+%define HAVE_HYPOT 1
+%define HAVE_ISFINITE 1
+%define HAVE_ISINF 1
+%define HAVE_ISNAN 1
+%define HAVE_LDEXPF 1
+%define HAVE_LLRINT 1
+%define HAVE_LLRINTF 1
+%define HAVE_LOG2 1
+%define HAVE_LOG2F 1
+%define HAVE_LOG10F 1
+%define HAVE_LRINT 1
+%define HAVE_LRINTF 1
+%define HAVE_POWF 1
+%define HAVE_RINT 1
+%define HAVE_ROUND 1
+%define HAVE_ROUNDF 1
+%define HAVE_SINF 1
+%define HAVE_TRUNC 1
+%define HAVE_TRUNCF 1
+%define HAVE_DOS_PATHS 0
+%define HAVE_LIBC_MSVCRT 0
+%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
+%define HAVE_SECTION_DATA_REL_RO 1
+%define HAVE_THREADS 1
+%define HAVE_UWP 0
+%define HAVE_WINRT 0
+%define HAVE_ACCESS 1
+%define HAVE_ALIGNED_MALLOC 0
+%define HAVE_ARC4RANDOM 0
+%define HAVE_CLOCK_GETTIME 1
+%define HAVE_CLOSESOCKET 0
+%define HAVE_COMMANDLINETOARGVW 0
+%define HAVE_FCNTL 1
+%define HAVE_GETADDRINFO 0
+%define HAVE_GETHRTIME 0
+%define HAVE_GETOPT 1
+%define HAVE_GETMODULEHANDLE 0
+%define HAVE_GETPROCESSAFFINITYMASK 0
+%define HAVE_GETPROCESSMEMORYINFO 0
+%define HAVE_GETPROCESSTIMES 0
+%define HAVE_GETRUSAGE 1
+%define HAVE_GETSTDHANDLE 0
+%define HAVE_GETSYSTEMTIMEASFILETIME 0
+%define HAVE_GETTIMEOFDAY 1
+%define HAVE_GLOB 1
+%define HAVE_GLXGETPROCADDRESS 0
+%define HAVE_GMTIME_R 1
+%define HAVE_INET_ATON 0
+%define HAVE_ISATTY 1
+%define HAVE_KBHIT 0
+%define HAVE_LOCALTIME_R 1
+%define HAVE_LSTAT 1
+%define HAVE_LZO1X_999_COMPRESS 0
+%define HAVE_MACH_ABSOLUTE_TIME 0
+%define HAVE_MAPVIEWOFFILE 0
+%define HAVE_MEMALIGN 1
+%define HAVE_MKSTEMP 1
+%define HAVE_MMAP 1
+%define HAVE_MPROTECT 1
+%define HAVE_NANOSLEEP 1
+%define HAVE_PEEKNAMEDPIPE 0
+%define HAVE_POSIX_MEMALIGN 1
+%define HAVE_PTHREAD_CANCEL 1
+%define HAVE_SCHED_GETAFFINITY 1
+%define HAVE_SECITEMIMPORT 0
+%define HAVE_SETCONSOLETEXTATTRIBUTE 0
+%define HAVE_SETCONSOLECTRLHANDLER 0
+%define HAVE_SETDLLDIRECTORY 0
+%define HAVE_SETMODE 0
+%define HAVE_SETRLIMIT 1
+%define HAVE_SLEEP 0
+%define HAVE_STRERROR_R 1
+%define HAVE_SYSCONF 1
+%define HAVE_SYSCTL 1
+%define HAVE_USLEEP 1
+%define HAVE_UTGETOSTYPEFROMSTRING 0
+%define HAVE_VIRTUALALLOC 0
+%define HAVE_WGLGETPROCADDRESS 0
+%define HAVE_BCRYPT 0
+%define HAVE_VAAPI_DRM 0
+%define HAVE_VAAPI_X11 0
+%define HAVE_VDPAU_X11 0
+%define HAVE_PTHREADS 1
+%define HAVE_OS2THREADS 0
+%define HAVE_W32THREADS 0
+%define HAVE_AS_ARCH_DIRECTIVE 0
+%define HAVE_AS_DN_DIRECTIVE 0
+%define HAVE_AS_FPU_DIRECTIVE 0
+%define HAVE_AS_FUNC 0
+%define HAVE_AS_OBJECT_ARCH 0
+%define HAVE_ASM_MOD_Q 0
+%define HAVE_BLOCKS_EXTENSION 0
+%define HAVE_EBP_AVAILABLE 1
+%define HAVE_EBX_AVAILABLE 1
+%define HAVE_GNU_AS 0
+%define HAVE_GNU_WINDRES 0
+%define HAVE_IBM_ASM 0
+%define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+%define HAVE_INLINE_ASM_LABELS 1
+%define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+%define HAVE_PRAGMA_DEPRECATED 1
+%define HAVE_RSYNC_CONTIMEOUT 1
+%define HAVE_SYMVER_ASM_LABEL 1
+%define HAVE_SYMVER_GNU_ASM 1
+%define HAVE_VFP_ARGS 0
+%define HAVE_XFORM_ASM 0
+%define HAVE_XMM_CLOBBERS 1
+%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
+%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
+%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
+%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
+%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
+%define HAVE_SOCKLEN_T 0
+%define HAVE_STRUCT_ADDRINFO 0
+%define HAVE_STRUCT_GROUP_SOURCE_REQ 0
+%define HAVE_STRUCT_IP_MREQ_SOURCE 0
+%define HAVE_STRUCT_IPV6_MREQ 0
+%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
+%define HAVE_STRUCT_POLLFD 0
+%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
+%define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
+%define HAVE_STRUCT_SOCKADDR_IN6 0
+%define HAVE_STRUCT_SOCKADDR_SA_LEN 0
+%define HAVE_STRUCT_SOCKADDR_STORAGE 0
+%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
+%define HAVE_MAKEINFO 0
+%define HAVE_MAKEINFO_HTML 0
+%define HAVE_OPENCL_D3D11 0
+%define HAVE_OPENCL_DRM_ARM 0
+%define HAVE_OPENCL_DRM_BEIGNET 0
+%define HAVE_OPENCL_DXVA2 0
+%define HAVE_OPENCL_VAAPI_BEIGNET 0
+%define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
+%define HAVE_PERL 1
+%define HAVE_POD2MAN 1
+%define HAVE_TEXI2HTML 0
+%define CONFIG_DOC 0
+%define CONFIG_HTMLPAGES 0
+%define CONFIG_MANPAGES 0
+%define CONFIG_PODPAGES 0
+%define CONFIG_TXTPAGES 0
+%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
+%define CONFIG_AVIO_READING_EXAMPLE 1
+%define CONFIG_DECODE_AUDIO_EXAMPLE 1
+%define CONFIG_DECODE_VIDEO_EXAMPLE 1
+%define CONFIG_DEMUXING_DECODING_EXAMPLE 1
+%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
+%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
+%define CONFIG_EXTRACT_MVS_EXAMPLE 1
+%define CONFIG_FILTER_AUDIO_EXAMPLE 0
+%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
+%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
+%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
+%define CONFIG_HW_DECODE_EXAMPLE 1
+%define CONFIG_METADATA_EXAMPLE 1
+%define CONFIG_MUXING_EXAMPLE 0
+%define CONFIG_QSVDEC_EXAMPLE 0
+%define CONFIG_REMUXING_EXAMPLE 1
+%define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
+%define CONFIG_SCALING_VIDEO_EXAMPLE 0
+%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
+%define CONFIG_TRANSCODING_EXAMPLE 0
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
+%define CONFIG_AVISYNTH 0
+%define CONFIG_FREI0R 0
+%define CONFIG_LIBCDIO 0
+%define CONFIG_LIBDAVS2 0
+%define CONFIG_LIBRUBBERBAND 0
+%define CONFIG_LIBVIDSTAB 0
+%define CONFIG_LIBX264 0
+%define CONFIG_LIBX265 0
+%define CONFIG_LIBXAVS 0
+%define CONFIG_LIBXAVS2 0
+%define CONFIG_LIBXVID 0
+%define CONFIG_DECKLINK 0
+%define CONFIG_LIBFDK_AAC 0
+%define CONFIG_OPENSSL 0
+%define CONFIG_LIBTLS 0
+%define CONFIG_GMP 0
+%define CONFIG_LIBARIBB24 0
+%define CONFIG_LIBLENSFUN 0
+%define CONFIG_LIBOPENCORE_AMRNB 0
+%define CONFIG_LIBOPENCORE_AMRWB 0
+%define CONFIG_LIBVMAF 0
+%define CONFIG_LIBVO_AMRWBENC 0
+%define CONFIG_MBEDTLS 0
+%define CONFIG_RKMPP 0
+%define CONFIG_LIBSMBCLIENT 0
+%define CONFIG_CHROMAPRINT 0
+%define CONFIG_GCRYPT 0
+%define CONFIG_GNUTLS 0
+%define CONFIG_JNI 0
+%define CONFIG_LADSPA 0
+%define CONFIG_LIBAOM 0
+%define CONFIG_LIBASS 0
+%define CONFIG_LIBBLURAY 0
+%define CONFIG_LIBBS2B 0
+%define CONFIG_LIBCACA 0
+%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
+%define CONFIG_LIBDAV1D 0
+%define CONFIG_LIBDC1394 0
+%define CONFIG_LIBDRM 0
+%define CONFIG_LIBFLITE 0
+%define CONFIG_LIBFONTCONFIG 0
+%define CONFIG_LIBFREETYPE 0
+%define CONFIG_LIBFRIBIDI 0
+%define CONFIG_LIBGLSLANG 0
+%define CONFIG_LIBGME 0
+%define CONFIG_LIBGSM 0
+%define CONFIG_LIBIEC61883 0
+%define CONFIG_LIBILBC 0
+%define CONFIG_LIBJACK 0
+%define CONFIG_LIBKLVANC 0
+%define CONFIG_LIBKVAZAAR 0
+%define CONFIG_LIBMODPLUG 0
+%define CONFIG_LIBMP3LAME 0
+%define CONFIG_LIBMYSOFA 0
+%define CONFIG_LIBOPENCV 0
+%define CONFIG_LIBOPENH264 0
+%define CONFIG_LIBOPENJPEG 0
+%define CONFIG_LIBOPENMPT 0
+%define CONFIG_LIBOPUS 1
+%define CONFIG_LIBPULSE 0
+%define CONFIG_LIBRABBITMQ 0
+%define CONFIG_LIBRAV1E 0
+%define CONFIG_LIBRSVG 0
+%define CONFIG_LIBRTMP 0
+%define CONFIG_LIBSHINE 0
+%define CONFIG_LIBSMBCLIENT 0
+%define CONFIG_LIBSNAPPY 0
+%define CONFIG_LIBSOXR 0
+%define CONFIG_LIBSPEEX 0
+%define CONFIG_LIBSRT 0
+%define CONFIG_LIBSSH 0
+%define CONFIG_LIBTENSORFLOW 0
+%define CONFIG_LIBTESSERACT 0
+%define CONFIG_LIBTHEORA 0
+%define CONFIG_LIBTWOLAME 0
+%define CONFIG_LIBV4L2 0
+%define CONFIG_LIBVORBIS 0
+%define CONFIG_LIBVPX 0
+%define CONFIG_LIBWAVPACK 0
+%define CONFIG_LIBWEBP 0
+%define CONFIG_LIBXML2 0
+%define CONFIG_LIBZIMG 0
+%define CONFIG_LIBZMQ 0
+%define CONFIG_LIBZVBI 0
+%define CONFIG_LV2 0
+%define CONFIG_MEDIACODEC 0
+%define CONFIG_OPENAL 0
+%define CONFIG_OPENGL 0
+%define CONFIG_POCKETSPHINX 0
+%define CONFIG_VAPOURSYNTH 0
+%define CONFIG_ALSA 0
+%define CONFIG_APPKIT 0
+%define CONFIG_AVFOUNDATION 0
+%define CONFIG_BZLIB 0
+%define CONFIG_COREIMAGE 0
+%define CONFIG_ICONV 0
+%define CONFIG_LIBXCB 0
+%define CONFIG_LIBXCB_SHM 0
+%define CONFIG_LIBXCB_SHAPE 0
+%define CONFIG_LIBXCB_XFIXES 0
+%define CONFIG_LZMA 0
+%define CONFIG_SCHANNEL 0
+%define CONFIG_SDL2 0
+%define CONFIG_SECURETRANSPORT 0
+%define CONFIG_SNDIO 0
+%define CONFIG_XLIB 0
+%define CONFIG_ZLIB 0
+%define CONFIG_CUDA_NVCC 0
+%define CONFIG_CUDA_SDK 0
+%define CONFIG_LIBNPP 0
+%define CONFIG_LIBMFX 0
+%define CONFIG_MMAL 0
+%define CONFIG_OMX 0
+%define CONFIG_OPENCL 0
+%define CONFIG_VULKAN 0
+%define CONFIG_AMF 0
+%define CONFIG_AUDIOTOOLBOX 0
+%define CONFIG_CRYSTALHD 0
+%define CONFIG_CUDA 0
+%define CONFIG_CUDA_LLVM 0
+%define CONFIG_CUVID 0
+%define CONFIG_D3D11VA 0
+%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
+%define CONFIG_NVDEC 0
+%define CONFIG_NVENC 0
+%define CONFIG_VAAPI 0
+%define CONFIG_VDPAU 0
+%define CONFIG_VIDEOTOOLBOX 0
+%define CONFIG_V4L2_M2M 0
+%define CONFIG_XVMC 0
+%define CONFIG_FTRAPV 0
+%define CONFIG_GRAY 0
+%define CONFIG_HARDCODED_TABLES 0
+%define CONFIG_OMX_RPI 0
+%define CONFIG_RUNTIME_CPUDETECT 1
+%define CONFIG_SAFE_BITSTREAM_READER 1
+%define CONFIG_SHARED 0
+%define CONFIG_SMALL 0
+%define CONFIG_STATIC 1
+%define CONFIG_SWSCALE_ALPHA 1
+%define CONFIG_GPL 0
+%define CONFIG_NONFREE 0
+%define CONFIG_VERSION3 0
+%define CONFIG_AVDEVICE 0
+%define CONFIG_AVFILTER 0
+%define CONFIG_SWSCALE 0
+%define CONFIG_POSTPROC 0
+%define CONFIG_AVFORMAT 1
+%define CONFIG_AVCODEC 1
+%define CONFIG_SWRESAMPLE 0
+%define CONFIG_AVRESAMPLE 0
+%define CONFIG_AVUTIL 1
+%define CONFIG_FFPLAY 0
+%define CONFIG_FFPROBE 0
+%define CONFIG_FFMPEG 0
+%define CONFIG_DCT 1
+%define CONFIG_DWT 0
+%define CONFIG_ERROR_RESILIENCE 0
+%define CONFIG_FAAN 0
+%define CONFIG_FAST_UNALIGNED 1
+%define CONFIG_FFT 1
+%define CONFIG_LSP 0
+%define CONFIG_LZO 0
+%define CONFIG_MDCT 1
+%define CONFIG_PIXELUTILS 0
+%define CONFIG_NETWORK 0
+%define CONFIG_RDFT 1
+%define CONFIG_AUTODETECT 0
+%define CONFIG_FONTCONFIG 0
+%define CONFIG_LARGE_TESTS 1
+%define CONFIG_LINUX_PERF 0
+%define CONFIG_MEMORY_POISONING 0
+%define CONFIG_NEON_CLOBBER_TEST 0
+%define CONFIG_OSSFUZZ 0
+%define CONFIG_PIC 1
+%define CONFIG_THUMB 0
+%define CONFIG_VALGRIND_BACKTRACE 0
+%define CONFIG_XMM_CLOBBER_TEST 0
+%define CONFIG_BSFS 1
+%define CONFIG_DECODERS 1
+%define CONFIG_ENCODERS 0
+%define CONFIG_HWACCELS 0
+%define CONFIG_PARSERS 1
+%define CONFIG_INDEVS 0
+%define CONFIG_OUTDEVS 0
+%define CONFIG_FILTERS 0
+%define CONFIG_DEMUXERS 1
+%define CONFIG_MUXERS 0
+%define CONFIG_PROTOCOLS 0
+%define CONFIG_AANDCTTABLES 0
+%define CONFIG_AC3DSP 0
+%define CONFIG_ADTS_HEADER 0
+%define CONFIG_AUDIO_FRAME_QUEUE 1
+%define CONFIG_AUDIODSP 0
+%define CONFIG_BLOCKDSP 0
+%define CONFIG_BSWAPDSP 0
+%define CONFIG_CABAC 0
+%define CONFIG_CBS 0
+%define CONFIG_CBS_AV1 0
+%define CONFIG_CBS_H264 0
+%define CONFIG_CBS_H265 0
+%define CONFIG_CBS_JPEG 0
+%define CONFIG_CBS_MPEG2 0
+%define CONFIG_CBS_VP9 0
+%define CONFIG_DIRAC_PARSE 1
+%define CONFIG_DNN 0
+%define CONFIG_DVPROFILE 0
+%define CONFIG_EXIF 0
+%define CONFIG_FAANDCT 0
+%define CONFIG_FAANIDCT 0
+%define CONFIG_FDCTDSP 0
+%define CONFIG_FLACDSP 1
+%define CONFIG_FMTCONVERT 0
+%define CONFIG_FRAME_THREAD_ENCODER 0
+%define CONFIG_G722DSP 0
+%define CONFIG_GOLOMB 1
+%define CONFIG_GPLV3 0
+%define CONFIG_H263DSP 0
+%define CONFIG_H264CHROMA 0
+%define CONFIG_H264DSP 0
+%define CONFIG_H264PARSE 0
+%define CONFIG_H264PRED 1
+%define CONFIG_H264QPEL 0
+%define CONFIG_HEVCPARSE 0
+%define CONFIG_HPELDSP 1
+%define CONFIG_HUFFMAN 0
+%define CONFIG_HUFFYUVDSP 0
+%define CONFIG_HUFFYUVENCDSP 0
+%define CONFIG_IDCTDSP 0
+%define CONFIG_IIRFILTER 0
+%define CONFIG_MDCT15 0
+%define CONFIG_INTRAX8 0
+%define CONFIG_ISO_MEDIA 1
+%define CONFIG_IVIDSP 0
+%define CONFIG_JPEGTABLES 0
+%define CONFIG_LGPLV3 0
+%define CONFIG_LIBX262 0
+%define CONFIG_LLAUDDSP 0
+%define CONFIG_LLVIDDSP 0
+%define CONFIG_LLVIDENCDSP 0
+%define CONFIG_LPC 0
+%define CONFIG_LZF 0
+%define CONFIG_ME_CMP 0
+%define CONFIG_MPEG_ER 0
+%define CONFIG_MPEGAUDIO 1
+%define CONFIG_MPEGAUDIODSP 1
+%define CONFIG_MPEGAUDIOHEADER 1
+%define CONFIG_MPEGVIDEO 0
+%define CONFIG_MPEGVIDEOENC 0
+%define CONFIG_MSS34DSP 0
+%define CONFIG_PIXBLOCKDSP 0
+%define CONFIG_QPELDSP 0
+%define CONFIG_QSV 0
+%define CONFIG_QSVDEC 0
+%define CONFIG_QSVENC 0
+%define CONFIG_QSVVPP 0
+%define CONFIG_RANGECODER 0
+%define CONFIG_RIFFDEC 1
+%define CONFIG_RIFFENC 0
+%define CONFIG_RTPDEC 0
+%define CONFIG_RTPENC_CHAIN 0
+%define CONFIG_RV34DSP 0
+%define CONFIG_SCENE_SAD 0
+%define CONFIG_SINEWIN 0
+%define CONFIG_SNAPPY 0
+%define CONFIG_SRTP 0
+%define CONFIG_STARTCODE 0
+%define CONFIG_TEXTUREDSP 0
+%define CONFIG_TEXTUREDSPENC 0
+%define CONFIG_TPELDSP 0
+%define CONFIG_VAAPI_1 0
+%define CONFIG_VAAPI_ENCODE 0
+%define CONFIG_VC1DSP 0
+%define CONFIG_VIDEODSP 1
+%define CONFIG_VP3DSP 1
+%define CONFIG_VP56DSP 0
+%define CONFIG_VP8DSP 1
+%define CONFIG_WMA_FREQS 0
+%define CONFIG_WMV2DSP 0
+%define CONFIG_AAC_ADTSTOASC_BSF 0
+%define CONFIG_AV1_FRAME_MERGE_BSF 0
+%define CONFIG_AV1_FRAME_SPLIT_BSF 0
+%define CONFIG_AV1_METADATA_BSF 0
+%define CONFIG_CHOMP_BSF 0
+%define CONFIG_DUMP_EXTRADATA_BSF 0
+%define CONFIG_DCA_CORE_BSF 0
+%define CONFIG_EAC3_CORE_BSF 0
+%define CONFIG_EXTRACT_EXTRADATA_BSF 0
+%define CONFIG_FILTER_UNITS_BSF 0
+%define CONFIG_H264_METADATA_BSF 0
+%define CONFIG_H264_MP4TOANNEXB_BSF 0
+%define CONFIG_H264_REDUNDANT_PPS_BSF 0
+%define CONFIG_HAPQA_EXTRACT_BSF 0
+%define CONFIG_HEVC_METADATA_BSF 0
+%define CONFIG_HEVC_MP4TOANNEXB_BSF 0
+%define CONFIG_IMX_DUMP_HEADER_BSF 0
+%define CONFIG_MJPEG2JPEG_BSF 0
+%define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
+%define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
+%define CONFIG_MPEG2_METADATA_BSF 0
+%define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
+%define CONFIG_MOV2TEXTSUB_BSF 0
+%define CONFIG_NOISE_BSF 0
+%define CONFIG_NULL_BSF 1
+%define CONFIG_PRORES_METADATA_BSF 0
+%define CONFIG_REMOVE_EXTRADATA_BSF 0
+%define CONFIG_TEXT2MOVSUB_BSF 0
+%define CONFIG_TRACE_HEADERS_BSF 0
+%define CONFIG_TRUEHD_CORE_BSF 0
+%define CONFIG_VP9_METADATA_BSF 0
+%define CONFIG_VP9_RAW_REORDER_BSF 0
+%define CONFIG_VP9_SUPERFRAME_BSF 0
+%define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
+%define CONFIG_AASC_DECODER 0
+%define CONFIG_AIC_DECODER 0
+%define CONFIG_ALIAS_PIX_DECODER 0
+%define CONFIG_AGM_DECODER 0
+%define CONFIG_AMV_DECODER 0
+%define CONFIG_ANM_DECODER 0
+%define CONFIG_ANSI_DECODER 0
+%define CONFIG_APNG_DECODER 0
+%define CONFIG_ARBC_DECODER 0
+%define CONFIG_ASV1_DECODER 0
+%define CONFIG_ASV2_DECODER 0
+%define CONFIG_AURA_DECODER 0
+%define CONFIG_AURA2_DECODER 0
+%define CONFIG_AVRP_DECODER 0
+%define CONFIG_AVRN_DECODER 0
+%define CONFIG_AVS_DECODER 0
+%define CONFIG_AVUI_DECODER 0
+%define CONFIG_AYUV_DECODER 0
+%define CONFIG_BETHSOFTVID_DECODER 0
+%define CONFIG_BFI_DECODER 0
+%define CONFIG_BINK_DECODER 0
+%define CONFIG_BITPACKED_DECODER 0
+%define CONFIG_BMP_DECODER 0
+%define CONFIG_BMV_VIDEO_DECODER 0
+%define CONFIG_BRENDER_PIX_DECODER 0
+%define CONFIG_C93_DECODER 0
+%define CONFIG_CAVS_DECODER 0
+%define CONFIG_CDGRAPHICS_DECODER 0
+%define CONFIG_CDTOONS_DECODER 0
+%define CONFIG_CDXL_DECODER 0
+%define CONFIG_CFHD_DECODER 0
+%define CONFIG_CINEPAK_DECODER 0
+%define CONFIG_CLEARVIDEO_DECODER 0
+%define CONFIG_CLJR_DECODER 0
+%define CONFIG_CLLC_DECODER 0
+%define CONFIG_COMFORTNOISE_DECODER 0
+%define CONFIG_CPIA_DECODER 0
+%define CONFIG_CSCD_DECODER 0
+%define CONFIG_CYUV_DECODER 0
+%define CONFIG_DDS_DECODER 0
+%define CONFIG_DFA_DECODER 0
+%define CONFIG_DIRAC_DECODER 0
+%define CONFIG_DNXHD_DECODER 0
+%define CONFIG_DPX_DECODER 0
+%define CONFIG_DSICINVIDEO_DECODER 0
+%define CONFIG_DVAUDIO_DECODER 0
+%define CONFIG_DVVIDEO_DECODER 0
+%define CONFIG_DXA_DECODER 0
+%define CONFIG_DXTORY_DECODER 0
+%define CONFIG_DXV_DECODER 0
+%define CONFIG_EACMV_DECODER 0
+%define CONFIG_EAMAD_DECODER 0
+%define CONFIG_EATGQ_DECODER 0
+%define CONFIG_EATGV_DECODER 0
+%define CONFIG_EATQI_DECODER 0
+%define CONFIG_EIGHTBPS_DECODER 0
+%define CONFIG_EIGHTSVX_EXP_DECODER 0
+%define CONFIG_EIGHTSVX_FIB_DECODER 0
+%define CONFIG_ESCAPE124_DECODER 0
+%define CONFIG_ESCAPE130_DECODER 0
+%define CONFIG_EXR_DECODER 0
+%define CONFIG_FFV1_DECODER 0
+%define CONFIG_FFVHUFF_DECODER 0
+%define CONFIG_FIC_DECODER 0
+%define CONFIG_FITS_DECODER 0
+%define CONFIG_FLASHSV_DECODER 0
+%define CONFIG_FLASHSV2_DECODER 0
+%define CONFIG_FLIC_DECODER 0
+%define CONFIG_FLV_DECODER 0
+%define CONFIG_FMVC_DECODER 0
+%define CONFIG_FOURXM_DECODER 0
+%define CONFIG_FRAPS_DECODER 0
+%define CONFIG_FRWU_DECODER 0
+%define CONFIG_G2M_DECODER 0
+%define CONFIG_GDV_DECODER 0
+%define CONFIG_GIF_DECODER 0
+%define CONFIG_H261_DECODER 0
+%define CONFIG_H263_DECODER 0
+%define CONFIG_H263I_DECODER 0
+%define CONFIG_H263P_DECODER 0
+%define CONFIG_H263_V4L2M2M_DECODER 0
+%define CONFIG_H264_DECODER 0
+%define CONFIG_H264_CRYSTALHD_DECODER 0
+%define CONFIG_H264_V4L2M2M_DECODER 0
+%define CONFIG_H264_MEDIACODEC_DECODER 0
+%define CONFIG_H264_MMAL_DECODER 0
+%define CONFIG_H264_QSV_DECODER 0
+%define CONFIG_H264_RKMPP_DECODER 0
+%define CONFIG_HAP_DECODER 0
+%define CONFIG_HEVC_DECODER 0
+%define CONFIG_HEVC_QSV_DECODER 0
+%define CONFIG_HEVC_RKMPP_DECODER 0
+%define CONFIG_HEVC_V4L2M2M_DECODER 0
+%define CONFIG_HNM4_VIDEO_DECODER 0
+%define CONFIG_HQ_HQA_DECODER 0
+%define CONFIG_HQX_DECODER 0
+%define CONFIG_HUFFYUV_DECODER 0
+%define CONFIG_HYMT_DECODER 0
+%define CONFIG_IDCIN_DECODER 0
+%define CONFIG_IFF_ILBM_DECODER 0
+%define CONFIG_IMM4_DECODER 0
+%define CONFIG_IMM5_DECODER 0
+%define CONFIG_INDEO2_DECODER 0
+%define CONFIG_INDEO3_DECODER 0
+%define CONFIG_INDEO4_DECODER 0
+%define CONFIG_INDEO5_DECODER 0
+%define CONFIG_INTERPLAY_VIDEO_DECODER 0
+%define CONFIG_JPEG2000_DECODER 0
+%define CONFIG_JPEGLS_DECODER 0
+%define CONFIG_JV_DECODER 0
+%define CONFIG_KGV1_DECODER 0
+%define CONFIG_KMVC_DECODER 0
+%define CONFIG_LAGARITH_DECODER 0
+%define CONFIG_LOCO_DECODER 0
+%define CONFIG_LSCR_DECODER 0
+%define CONFIG_M101_DECODER 0
+%define CONFIG_MAGICYUV_DECODER 0
+%define CONFIG_MDEC_DECODER 0
+%define CONFIG_MIMIC_DECODER 0
+%define CONFIG_MJPEG_DECODER 0
+%define CONFIG_MJPEGB_DECODER 0
+%define CONFIG_MMVIDEO_DECODER 0
+%define CONFIG_MOTIONPIXELS_DECODER 0
+%define CONFIG_MPEG1VIDEO_DECODER 0
+%define CONFIG_MPEG2VIDEO_DECODER 0
+%define CONFIG_MPEG4_DECODER 0
+%define CONFIG_MPEG4_CRYSTALHD_DECODER 0
+%define CONFIG_MPEG4_V4L2M2M_DECODER 0
+%define CONFIG_MPEG4_MMAL_DECODER 0
+%define CONFIG_MPEGVIDEO_DECODER 0
+%define CONFIG_MPEG1_V4L2M2M_DECODER 0
+%define CONFIG_MPEG2_MMAL_DECODER 0
+%define CONFIG_MPEG2_CRYSTALHD_DECODER 0
+%define CONFIG_MPEG2_V4L2M2M_DECODER 0
+%define CONFIG_MPEG2_QSV_DECODER 0
+%define CONFIG_MPEG2_MEDIACODEC_DECODER 0
+%define CONFIG_MSA1_DECODER 0
+%define CONFIG_MSCC_DECODER 0
+%define CONFIG_MSMPEG4V1_DECODER 0
+%define CONFIG_MSMPEG4V2_DECODER 0
+%define CONFIG_MSMPEG4V3_DECODER 0
+%define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
+%define CONFIG_MSRLE_DECODER 0
+%define CONFIG_MSS1_DECODER 0
+%define CONFIG_MSS2_DECODER 0
+%define CONFIG_MSVIDEO1_DECODER 0
+%define CONFIG_MSZH_DECODER 0
+%define CONFIG_MTS2_DECODER 0
+%define CONFIG_MV30_DECODER 0
+%define CONFIG_MVC1_DECODER 0
+%define CONFIG_MVC2_DECODER 0
+%define CONFIG_MVDV_DECODER 0
+%define CONFIG_MVHA_DECODER 0
+%define CONFIG_MWSC_DECODER 0
+%define CONFIG_MXPEG_DECODER 0
+%define CONFIG_NUV_DECODER 0
+%define CONFIG_PAF_VIDEO_DECODER 0
+%define CONFIG_PAM_DECODER 0
+%define CONFIG_PBM_DECODER 0
+%define CONFIG_PCX_DECODER 0
+%define CONFIG_PGM_DECODER 0
+%define CONFIG_PGMYUV_DECODER 0
+%define CONFIG_PICTOR_DECODER 0
+%define CONFIG_PIXLET_DECODER 0
+%define CONFIG_PNG_DECODER 0
+%define CONFIG_PPM_DECODER 0
+%define CONFIG_PRORES_DECODER 0
+%define CONFIG_PROSUMER_DECODER 0
+%define CONFIG_PSD_DECODER 0
+%define CONFIG_PTX_DECODER 0
+%define CONFIG_QDRAW_DECODER 0
+%define CONFIG_QPEG_DECODER 0
+%define CONFIG_QTRLE_DECODER 0
+%define CONFIG_R10K_DECODER 0
+%define CONFIG_R210_DECODER 0
+%define CONFIG_RASC_DECODER 0
+%define CONFIG_RAWVIDEO_DECODER 0
+%define CONFIG_RL2_DECODER 0
+%define CONFIG_ROQ_DECODER 0
+%define CONFIG_RPZA_DECODER 0
+%define CONFIG_RSCC_DECODER 0
+%define CONFIG_RV10_DECODER 0
+%define CONFIG_RV20_DECODER 0
+%define CONFIG_RV30_DECODER 0
+%define CONFIG_RV40_DECODER 0
+%define CONFIG_S302M_DECODER 0
+%define CONFIG_SANM_DECODER 0
+%define CONFIG_SCPR_DECODER 0
+%define CONFIG_SCREENPRESSO_DECODER 0
+%define CONFIG_SGI_DECODER 0
+%define CONFIG_SGIRLE_DECODER 0
+%define CONFIG_SHEERVIDEO_DECODER 0
+%define CONFIG_SMACKER_DECODER 0
+%define CONFIG_SMC_DECODER 0
+%define CONFIG_SMVJPEG_DECODER 0
+%define CONFIG_SNOW_DECODER 0
+%define CONFIG_SP5X_DECODER 0
+%define CONFIG_SPEEDHQ_DECODER 0
+%define CONFIG_SRGC_DECODER 0
+%define CONFIG_SUNRAST_DECODER 0
+%define CONFIG_SVQ1_DECODER 0
+%define CONFIG_SVQ3_DECODER 0
+%define CONFIG_TARGA_DECODER 0
+%define CONFIG_TARGA_Y216_DECODER 0
+%define CONFIG_TDSC_DECODER 0
+%define CONFIG_THEORA_DECODER 1
+%define CONFIG_THP_DECODER 0
+%define CONFIG_TIERTEXSEQVIDEO_DECODER 0
+%define CONFIG_TIFF_DECODER 0
+%define CONFIG_TMV_DECODER 0
+%define CONFIG_TRUEMOTION1_DECODER 0
+%define CONFIG_TRUEMOTION2_DECODER 0
+%define CONFIG_TRUEMOTION2RT_DECODER 0
+%define CONFIG_TSCC_DECODER 0
+%define CONFIG_TSCC2_DECODER 0
+%define CONFIG_TXD_DECODER 0
+%define CONFIG_ULTI_DECODER 0
+%define CONFIG_UTVIDEO_DECODER 0
+%define CONFIG_V210_DECODER 0
+%define CONFIG_V210X_DECODER 0
+%define CONFIG_V308_DECODER 0
+%define CONFIG_V408_DECODER 0
+%define CONFIG_V410_DECODER 0
+%define CONFIG_VB_DECODER 0
+%define CONFIG_VBLE_DECODER 0
+%define CONFIG_VC1_DECODER 0
+%define CONFIG_VC1_CRYSTALHD_DECODER 0
+%define CONFIG_VC1IMAGE_DECODER 0
+%define CONFIG_VC1_MMAL_DECODER 0
+%define CONFIG_VC1_QSV_DECODER 0
+%define CONFIG_VC1_V4L2M2M_DECODER 0
+%define CONFIG_VCR1_DECODER 0
+%define CONFIG_VMDVIDEO_DECODER 0
+%define CONFIG_VMNC_DECODER 0
+%define CONFIG_VP3_DECODER 1
+%define CONFIG_VP4_DECODER 0
+%define CONFIG_VP5_DECODER 0
+%define CONFIG_VP6_DECODER 0
+%define CONFIG_VP6A_DECODER 0
+%define CONFIG_VP6F_DECODER 0
+%define CONFIG_VP7_DECODER 0
+%define CONFIG_VP8_DECODER 1
+%define CONFIG_VP8_RKMPP_DECODER 0
+%define CONFIG_VP8_V4L2M2M_DECODER 0
+%define CONFIG_VP9_DECODER 1
+%define CONFIG_VP9_RKMPP_DECODER 0
+%define CONFIG_VP9_V4L2M2M_DECODER 0
+%define CONFIG_VQA_DECODER 0
+%define CONFIG_WEBP_DECODER 0
+%define CONFIG_WCMV_DECODER 0
+%define CONFIG_WRAPPED_AVFRAME_DECODER 0
+%define CONFIG_WMV1_DECODER 0
+%define CONFIG_WMV2_DECODER 0
+%define CONFIG_WMV3_DECODER 0
+%define CONFIG_WMV3_CRYSTALHD_DECODER 0
+%define CONFIG_WMV3IMAGE_DECODER 0
+%define CONFIG_WNV1_DECODER 0
+%define CONFIG_XAN_WC3_DECODER 0
+%define CONFIG_XAN_WC4_DECODER 0
+%define CONFIG_XBM_DECODER 0
+%define CONFIG_XFACE_DECODER 0
+%define CONFIG_XL_DECODER 0
+%define CONFIG_XPM_DECODER 0
+%define CONFIG_XWD_DECODER 0
+%define CONFIG_Y41P_DECODER 0
+%define CONFIG_YLC_DECODER 0
+%define CONFIG_YOP_DECODER 0
+%define CONFIG_YUV4_DECODER 0
+%define CONFIG_ZERO12V_DECODER 0
+%define CONFIG_ZEROCODEC_DECODER 0
+%define CONFIG_ZLIB_DECODER 0
+%define CONFIG_ZMBV_DECODER 0
+%define CONFIG_AAC_DECODER 0
+%define CONFIG_AAC_FIXED_DECODER 0
+%define CONFIG_AAC_LATM_DECODER 0
+%define CONFIG_AC3_DECODER 0
+%define CONFIG_AC3_FIXED_DECODER 0
+%define CONFIG_ACELP_KELVIN_DECODER 0
+%define CONFIG_ALAC_DECODER 0
+%define CONFIG_ALS_DECODER 0
+%define CONFIG_AMRNB_DECODER 0
+%define CONFIG_AMRWB_DECODER 0
+%define CONFIG_APE_DECODER 0
+%define CONFIG_APTX_DECODER 1
+%define CONFIG_APTX_HD_DECODER 0
+%define CONFIG_ATRAC1_DECODER 0
+%define CONFIG_ATRAC3_DECODER 0
+%define CONFIG_ATRAC3AL_DECODER 0
+%define CONFIG_ATRAC3P_DECODER 0
+%define CONFIG_ATRAC3PAL_DECODER 0
+%define CONFIG_ATRAC9_DECODER 0
+%define CONFIG_BINKAUDIO_DCT_DECODER 0
+%define CONFIG_BINKAUDIO_RDFT_DECODER 0
+%define CONFIG_BMV_AUDIO_DECODER 0
+%define CONFIG_COOK_DECODER 0
+%define CONFIG_DCA_DECODER 0
+%define CONFIG_DOLBY_E_DECODER 0
+%define CONFIG_DSD_LSBF_DECODER 0
+%define CONFIG_DSD_MSBF_DECODER 0
+%define CONFIG_DSD_LSBF_PLANAR_DECODER 0
+%define CONFIG_DSD_MSBF_PLANAR_DECODER 0
+%define CONFIG_DSICINAUDIO_DECODER 0
+%define CONFIG_DSS_SP_DECODER 0
+%define CONFIG_DST_DECODER 0
+%define CONFIG_EAC3_DECODER 0
+%define CONFIG_EVRC_DECODER 0
+%define CONFIG_FFWAVESYNTH_DECODER 0
+%define CONFIG_FLAC_DECODER 1
+%define CONFIG_G723_1_DECODER 0
+%define CONFIG_G729_DECODER 0
+%define CONFIG_GSM_DECODER 0
+%define CONFIG_GSM_MS_DECODER 0
+%define CONFIG_HCA_DECODER 0
+%define CONFIG_HCOM_DECODER 0
+%define CONFIG_IAC_DECODER 0
+%define CONFIG_ILBC_DECODER 0
+%define CONFIG_IMC_DECODER 0
+%define CONFIG_INTERPLAY_ACM_DECODER 0
+%define CONFIG_MACE3_DECODER 0
+%define CONFIG_MACE6_DECODER 0
+%define CONFIG_METASOUND_DECODER 0
+%define CONFIG_MLP_DECODER 0
+%define CONFIG_MP1_DECODER 0
+%define CONFIG_MP1FLOAT_DECODER 0
+%define CONFIG_MP2_DECODER 0
+%define CONFIG_MP2FLOAT_DECODER 0
+%define CONFIG_MP3FLOAT_DECODER 0
+%define CONFIG_MP3_DECODER 1
+%define CONFIG_MP3ADUFLOAT_DECODER 0
+%define CONFIG_MP3ADU_DECODER 0
+%define CONFIG_MP3ON4FLOAT_DECODER 0
+%define CONFIG_MP3ON4_DECODER 0
+%define CONFIG_MPC7_DECODER 0
+%define CONFIG_MPC8_DECODER 0
+%define CONFIG_NELLYMOSER_DECODER 0
+%define CONFIG_ON2AVC_DECODER 0
+%define CONFIG_OPUS_DECODER 0
+%define CONFIG_PAF_AUDIO_DECODER 0
+%define CONFIG_QCELP_DECODER 0
+%define CONFIG_QDM2_DECODER 0
+%define CONFIG_QDMC_DECODER 0
+%define CONFIG_RA_144_DECODER 0
+%define CONFIG_RA_288_DECODER 0
+%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 1
+%define CONFIG_SHORTEN_DECODER 0
+%define CONFIG_SIPR_DECODER 0
+%define CONFIG_SIREN_DECODER 0
+%define CONFIG_SMACKAUD_DECODER 0
+%define CONFIG_SONIC_DECODER 0
+%define CONFIG_TAK_DECODER 0
+%define CONFIG_TRUEHD_DECODER 0
+%define CONFIG_TRUESPEECH_DECODER 0
+%define CONFIG_TTA_DECODER 0
+%define CONFIG_TWINVQ_DECODER 0
+%define CONFIG_VMDAUDIO_DECODER 0
+%define CONFIG_VORBIS_DECODER 1
+%define CONFIG_WAVPACK_DECODER 0
+%define CONFIG_WMALOSSLESS_DECODER 0
+%define CONFIG_WMAPRO_DECODER 0
+%define CONFIG_WMAV1_DECODER 0
+%define CONFIG_WMAV2_DECODER 0
+%define CONFIG_WMAVOICE_DECODER 0
+%define CONFIG_WS_SND1_DECODER 0
+%define CONFIG_XMA1_DECODER 0
+%define CONFIG_XMA2_DECODER 0
+%define CONFIG_PCM_ALAW_DECODER 1
+%define CONFIG_PCM_BLURAY_DECODER 0
+%define CONFIG_PCM_DVD_DECODER 0
+%define CONFIG_PCM_F16LE_DECODER 0
+%define CONFIG_PCM_F24LE_DECODER 0
+%define CONFIG_PCM_F32BE_DECODER 0
+%define CONFIG_PCM_F32LE_DECODER 1
+%define CONFIG_PCM_F64BE_DECODER 0
+%define CONFIG_PCM_F64LE_DECODER 0
+%define CONFIG_PCM_LXF_DECODER 0
+%define CONFIG_PCM_MULAW_DECODER 1
+%define CONFIG_PCM_S8_DECODER 0
+%define CONFIG_PCM_S8_PLANAR_DECODER 0
+%define CONFIG_PCM_S16BE_DECODER 1
+%define CONFIG_PCM_S16BE_PLANAR_DECODER 0
+%define CONFIG_PCM_S16LE_DECODER 1
+%define CONFIG_PCM_S16LE_PLANAR_DECODER 0
+%define CONFIG_PCM_S24BE_DECODER 1
+%define CONFIG_PCM_S24DAUD_DECODER 0
+%define CONFIG_PCM_S24LE_DECODER 1
+%define CONFIG_PCM_S24LE_PLANAR_DECODER 0
+%define CONFIG_PCM_S32BE_DECODER 0
+%define CONFIG_PCM_S32LE_DECODER 1
+%define CONFIG_PCM_S32LE_PLANAR_DECODER 0
+%define CONFIG_PCM_S64BE_DECODER 0
+%define CONFIG_PCM_S64LE_DECODER 0
+%define CONFIG_PCM_U8_DECODER 1
+%define CONFIG_PCM_U16BE_DECODER 0
+%define CONFIG_PCM_U16LE_DECODER 0
+%define CONFIG_PCM_U24BE_DECODER 0
+%define CONFIG_PCM_U24LE_DECODER 0
+%define CONFIG_PCM_U32BE_DECODER 0
+%define CONFIG_PCM_U32LE_DECODER 0
+%define CONFIG_PCM_VIDC_DECODER 0
+%define CONFIG_DERF_DPCM_DECODER 0
+%define CONFIG_GREMLIN_DPCM_DECODER 0
+%define CONFIG_INTERPLAY_DPCM_DECODER 0
+%define CONFIG_ROQ_DPCM_DECODER 0
+%define CONFIG_SDX2_DPCM_DECODER 0
+%define CONFIG_SOL_DPCM_DECODER 0
+%define CONFIG_XAN_DPCM_DECODER 0
+%define CONFIG_ADPCM_4XM_DECODER 0
+%define CONFIG_ADPCM_ADX_DECODER 0
+%define CONFIG_ADPCM_AFC_DECODER 0
+%define CONFIG_ADPCM_AGM_DECODER 0
+%define CONFIG_ADPCM_AICA_DECODER 0
+%define CONFIG_ADPCM_ARGO_DECODER 0
+%define CONFIG_ADPCM_CT_DECODER 0
+%define CONFIG_ADPCM_DTK_DECODER 0
+%define CONFIG_ADPCM_EA_DECODER 0
+%define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
+%define CONFIG_ADPCM_EA_R1_DECODER 0
+%define CONFIG_ADPCM_EA_R2_DECODER 0
+%define CONFIG_ADPCM_EA_R3_DECODER 0
+%define CONFIG_ADPCM_EA_XAS_DECODER 0
+%define CONFIG_ADPCM_G722_DECODER 0
+%define CONFIG_ADPCM_G726_DECODER 0
+%define CONFIG_ADPCM_G726LE_DECODER 0
+%define CONFIG_ADPCM_IMA_AMV_DECODER 0
+%define CONFIG_ADPCM_IMA_ALP_DECODER 0
+%define CONFIG_ADPCM_IMA_APC_DECODER 0
+%define CONFIG_ADPCM_IMA_APM_DECODER 0
+%define CONFIG_ADPCM_IMA_DAT4_DECODER 0
+%define CONFIG_ADPCM_IMA_DK3_DECODER 0
+%define CONFIG_ADPCM_IMA_DK4_DECODER 0
+%define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
+%define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
+%define CONFIG_ADPCM_IMA_ISS_DECODER 0
+%define CONFIG_ADPCM_IMA_MTF_DECODER 0
+%define CONFIG_ADPCM_IMA_OKI_DECODER 0
+%define CONFIG_ADPCM_IMA_QT_DECODER 0
+%define CONFIG_ADPCM_IMA_RAD_DECODER 0
+%define CONFIG_ADPCM_IMA_SSI_DECODER 0
+%define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
+%define CONFIG_ADPCM_IMA_WAV_DECODER 0
+%define CONFIG_ADPCM_IMA_WS_DECODER 0
+%define CONFIG_ADPCM_MS_DECODER 0
+%define CONFIG_ADPCM_MTAF_DECODER 0
+%define CONFIG_ADPCM_PSX_DECODER 0
+%define CONFIG_ADPCM_SBPRO_2_DECODER 0
+%define CONFIG_ADPCM_SBPRO_3_DECODER 0
+%define CONFIG_ADPCM_SBPRO_4_DECODER 0
+%define CONFIG_ADPCM_SWF_DECODER 0
+%define CONFIG_ADPCM_THP_DECODER 0
+%define CONFIG_ADPCM_THP_LE_DECODER 0
+%define CONFIG_ADPCM_VIMA_DECODER 0
+%define CONFIG_ADPCM_XA_DECODER 0
+%define CONFIG_ADPCM_YAMAHA_DECODER 0
+%define CONFIG_ADPCM_ZORK_DECODER 0
+%define CONFIG_SSA_DECODER 0
+%define CONFIG_ASS_DECODER 0
+%define CONFIG_CCAPTION_DECODER 0
+%define CONFIG_DVBSUB_DECODER 0
+%define CONFIG_DVDSUB_DECODER 0
+%define CONFIG_JACOSUB_DECODER 0
+%define CONFIG_MICRODVD_DECODER 0
+%define CONFIG_MOVTEXT_DECODER 0
+%define CONFIG_MPL2_DECODER 0
+%define CONFIG_PGSSUB_DECODER 0
+%define CONFIG_PJS_DECODER 0
+%define CONFIG_REALTEXT_DECODER 0
+%define CONFIG_SAMI_DECODER 0
+%define CONFIG_SRT_DECODER 0
+%define CONFIG_STL_DECODER 0
+%define CONFIG_SUBRIP_DECODER 0
+%define CONFIG_SUBVIEWER_DECODER 0
+%define CONFIG_SUBVIEWER1_DECODER 0
+%define CONFIG_TEXT_DECODER 0
+%define CONFIG_VPLAYER_DECODER 0
+%define CONFIG_WEBVTT_DECODER 0
+%define CONFIG_XSUB_DECODER 0
+%define CONFIG_AAC_AT_DECODER 0
+%define CONFIG_AC3_AT_DECODER 0
+%define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
+%define CONFIG_ALAC_AT_DECODER 0
+%define CONFIG_AMR_NB_AT_DECODER 0
+%define CONFIG_EAC3_AT_DECODER 0
+%define CONFIG_GSM_MS_AT_DECODER 0
+%define CONFIG_ILBC_AT_DECODER 0
+%define CONFIG_MP1_AT_DECODER 0
+%define CONFIG_MP2_AT_DECODER 0
+%define CONFIG_MP3_AT_DECODER 0
+%define CONFIG_PCM_ALAW_AT_DECODER 0
+%define CONFIG_PCM_MULAW_AT_DECODER 0
+%define CONFIG_QDMC_AT_DECODER 0
+%define CONFIG_QDM2_AT_DECODER 0
+%define CONFIG_LIBARIBB24_DECODER 0
+%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
+%define CONFIG_LIBDAV1D_DECODER 0
+%define CONFIG_LIBDAVS2_DECODER 0
+%define CONFIG_LIBFDK_AAC_DECODER 0
+%define CONFIG_LIBGSM_DECODER 0
+%define CONFIG_LIBGSM_MS_DECODER 0
+%define CONFIG_LIBILBC_DECODER 0
+%define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
+%define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
+%define CONFIG_LIBOPENJPEG_DECODER 0
+%define CONFIG_LIBOPUS_DECODER 1
+%define CONFIG_LIBRSVG_DECODER 0
+%define CONFIG_LIBSPEEX_DECODER 0
+%define CONFIG_LIBVORBIS_DECODER 0
+%define CONFIG_LIBVPX_VP8_DECODER 0
+%define CONFIG_LIBVPX_VP9_DECODER 0
+%define CONFIG_LIBZVBI_TELETEXT_DECODER 0
+%define CONFIG_BINTEXT_DECODER 0
+%define CONFIG_XBIN_DECODER 0
+%define CONFIG_IDF_DECODER 0
+%define CONFIG_LIBAOM_AV1_DECODER 0
+%define CONFIG_LIBOPENH264_DECODER 0
+%define CONFIG_H264_CUVID_DECODER 0
+%define CONFIG_HEVC_CUVID_DECODER 0
+%define CONFIG_HEVC_MEDIACODEC_DECODER 0
+%define CONFIG_MJPEG_CUVID_DECODER 0
+%define CONFIG_MJPEG_QSV_DECODER 0
+%define CONFIG_MPEG1_CUVID_DECODER 0
+%define CONFIG_MPEG2_CUVID_DECODER 0
+%define CONFIG_MPEG4_CUVID_DECODER 0
+%define CONFIG_MPEG4_MEDIACODEC_DECODER 0
+%define CONFIG_VC1_CUVID_DECODER 0
+%define CONFIG_VP8_CUVID_DECODER 0
+%define CONFIG_VP8_MEDIACODEC_DECODER 0
+%define CONFIG_VP8_QSV_DECODER 0
+%define CONFIG_VP9_CUVID_DECODER 0
+%define CONFIG_VP9_MEDIACODEC_DECODER 0
+%define CONFIG_VP9_QSV_DECODER 0
+%define CONFIG_A64MULTI_ENCODER 0
+%define CONFIG_A64MULTI5_ENCODER 0
+%define CONFIG_ALIAS_PIX_ENCODER 0
+%define CONFIG_AMV_ENCODER 0
+%define CONFIG_APNG_ENCODER 0
+%define CONFIG_ASV1_ENCODER 0
+%define CONFIG_ASV2_ENCODER 0
+%define CONFIG_AVRP_ENCODER 0
+%define CONFIG_AVUI_ENCODER 0
+%define CONFIG_AYUV_ENCODER 0
+%define CONFIG_BMP_ENCODER 0
+%define CONFIG_CINEPAK_ENCODER 0
+%define CONFIG_CLJR_ENCODER 0
+%define CONFIG_COMFORTNOISE_ENCODER 0
+%define CONFIG_DNXHD_ENCODER 0
+%define CONFIG_DPX_ENCODER 0
+%define CONFIG_DVVIDEO_ENCODER 0
+%define CONFIG_FFV1_ENCODER 0
+%define CONFIG_FFVHUFF_ENCODER 0
+%define CONFIG_FITS_ENCODER 0
+%define CONFIG_FLASHSV_ENCODER 0
+%define CONFIG_FLASHSV2_ENCODER 0
+%define CONFIG_FLV_ENCODER 0
+%define CONFIG_GIF_ENCODER 0
+%define CONFIG_H261_ENCODER 0
+%define CONFIG_H263_ENCODER 0
+%define CONFIG_H263P_ENCODER 0
+%define CONFIG_HAP_ENCODER 0
+%define CONFIG_HUFFYUV_ENCODER 0
+%define CONFIG_JPEG2000_ENCODER 0
+%define CONFIG_JPEGLS_ENCODER 0
+%define CONFIG_LJPEG_ENCODER 0
+%define CONFIG_MAGICYUV_ENCODER 0
+%define CONFIG_MJPEG_ENCODER 0
+%define CONFIG_MPEG1VIDEO_ENCODER 0
+%define CONFIG_MPEG2VIDEO_ENCODER 0
+%define CONFIG_MPEG4_ENCODER 0
+%define CONFIG_MSMPEG4V2_ENCODER 0
+%define CONFIG_MSMPEG4V3_ENCODER 0
+%define CONFIG_MSVIDEO1_ENCODER 0
+%define CONFIG_PAM_ENCODER 0
+%define CONFIG_PBM_ENCODER 0
+%define CONFIG_PCX_ENCODER 0
+%define CONFIG_PGM_ENCODER 0
+%define CONFIG_PGMYUV_ENCODER 0
+%define CONFIG_PNG_ENCODER 0
+%define CONFIG_PPM_ENCODER 0
+%define CONFIG_PRORES_ENCODER 0
+%define CONFIG_PRORES_AW_ENCODER 0
+%define CONFIG_PRORES_KS_ENCODER 0
+%define CONFIG_QTRLE_ENCODER 0
+%define CONFIG_R10K_ENCODER 0
+%define CONFIG_R210_ENCODER 0
+%define CONFIG_RAWVIDEO_ENCODER 0
+%define CONFIG_ROQ_ENCODER 0
+%define CONFIG_RV10_ENCODER 0
+%define CONFIG_RV20_ENCODER 0
+%define CONFIG_S302M_ENCODER 0
+%define CONFIG_SGI_ENCODER 0
+%define CONFIG_SNOW_ENCODER 0
+%define CONFIG_SUNRAST_ENCODER 0
+%define CONFIG_SVQ1_ENCODER 0
+%define CONFIG_TARGA_ENCODER 0
+%define CONFIG_TIFF_ENCODER 0
+%define CONFIG_UTVIDEO_ENCODER 0
+%define CONFIG_V210_ENCODER 0
+%define CONFIG_V308_ENCODER 0
+%define CONFIG_V408_ENCODER 0
+%define CONFIG_V410_ENCODER 0
+%define CONFIG_VC2_ENCODER 0
+%define CONFIG_WRAPPED_AVFRAME_ENCODER 0
+%define CONFIG_WMV1_ENCODER 0
+%define CONFIG_WMV2_ENCODER 0
+%define CONFIG_XBM_ENCODER 0
+%define CONFIG_XFACE_ENCODER 0
+%define CONFIG_XWD_ENCODER 0
+%define CONFIG_Y41P_ENCODER 0
+%define CONFIG_YUV4_ENCODER 0
+%define CONFIG_ZLIB_ENCODER 0
+%define CONFIG_ZMBV_ENCODER 0
+%define CONFIG_AAC_ENCODER 0
+%define CONFIG_AC3_ENCODER 0
+%define CONFIG_AC3_FIXED_ENCODER 0
+%define CONFIG_ALAC_ENCODER 0
+%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
+%define CONFIG_DCA_ENCODER 0
+%define CONFIG_EAC3_ENCODER 0
+%define CONFIG_FLAC_ENCODER 0
+%define CONFIG_G723_1_ENCODER 0
+%define CONFIG_MLP_ENCODER 0
+%define CONFIG_MP2_ENCODER 0
+%define CONFIG_MP2FIXED_ENCODER 0
+%define CONFIG_NELLYMOSER_ENCODER 0
+%define CONFIG_OPUS_ENCODER 0
+%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
+%define CONFIG_SONIC_ENCODER 0
+%define CONFIG_SONIC_LS_ENCODER 0
+%define CONFIG_TRUEHD_ENCODER 0
+%define CONFIG_TTA_ENCODER 0
+%define CONFIG_VORBIS_ENCODER 0
+%define CONFIG_WAVPACK_ENCODER 0
+%define CONFIG_WMAV1_ENCODER 0
+%define CONFIG_WMAV2_ENCODER 0
+%define CONFIG_PCM_ALAW_ENCODER 0
+%define CONFIG_PCM_DVD_ENCODER 0
+%define CONFIG_PCM_F32BE_ENCODER 0
+%define CONFIG_PCM_F32LE_ENCODER 0
+%define CONFIG_PCM_F64BE_ENCODER 0
+%define CONFIG_PCM_F64LE_ENCODER 0
+%define CONFIG_PCM_MULAW_ENCODER 0
+%define CONFIG_PCM_S8_ENCODER 0
+%define CONFIG_PCM_S8_PLANAR_ENCODER 0
+%define CONFIG_PCM_S16BE_ENCODER 0
+%define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
+%define CONFIG_PCM_S16LE_ENCODER 0
+%define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
+%define CONFIG_PCM_S24BE_ENCODER 0
+%define CONFIG_PCM_S24DAUD_ENCODER 0
+%define CONFIG_PCM_S24LE_ENCODER 0
+%define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
+%define CONFIG_PCM_S32BE_ENCODER 0
+%define CONFIG_PCM_S32LE_ENCODER 0
+%define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
+%define CONFIG_PCM_S64BE_ENCODER 0
+%define CONFIG_PCM_S64LE_ENCODER 0
+%define CONFIG_PCM_U8_ENCODER 0
+%define CONFIG_PCM_U16BE_ENCODER 0
+%define CONFIG_PCM_U16LE_ENCODER 0
+%define CONFIG_PCM_U24BE_ENCODER 0
+%define CONFIG_PCM_U24LE_ENCODER 0
+%define CONFIG_PCM_U32BE_ENCODER 0
+%define CONFIG_PCM_U32LE_ENCODER 0
+%define CONFIG_PCM_VIDC_ENCODER 0
+%define CONFIG_ROQ_DPCM_ENCODER 0
+%define CONFIG_ADPCM_ADX_ENCODER 0
+%define CONFIG_ADPCM_G722_ENCODER 0
+%define CONFIG_ADPCM_G726_ENCODER 0
+%define CONFIG_ADPCM_G726LE_ENCODER 0
+%define CONFIG_ADPCM_IMA_QT_ENCODER 0
+%define CONFIG_ADPCM_IMA_WAV_ENCODER 0
+%define CONFIG_ADPCM_MS_ENCODER 0
+%define CONFIG_ADPCM_SWF_ENCODER 0
+%define CONFIG_ADPCM_YAMAHA_ENCODER 0
+%define CONFIG_SSA_ENCODER 0
+%define CONFIG_ASS_ENCODER 0
+%define CONFIG_DVBSUB_ENCODER 0
+%define CONFIG_DVDSUB_ENCODER 0
+%define CONFIG_MOVTEXT_ENCODER 0
+%define CONFIG_SRT_ENCODER 0
+%define CONFIG_SUBRIP_ENCODER 0
+%define CONFIG_TEXT_ENCODER 0
+%define CONFIG_WEBVTT_ENCODER 0
+%define CONFIG_XSUB_ENCODER 0
+%define CONFIG_AAC_AT_ENCODER 0
+%define CONFIG_ALAC_AT_ENCODER 0
+%define CONFIG_ILBC_AT_ENCODER 0
+%define CONFIG_PCM_ALAW_AT_ENCODER 0
+%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBAOM_AV1_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
+%define CONFIG_LIBFDK_AAC_ENCODER 0
+%define CONFIG_LIBGSM_ENCODER 0
+%define CONFIG_LIBGSM_MS_ENCODER 0
+%define CONFIG_LIBILBC_ENCODER 0
+%define CONFIG_LIBMP3LAME_ENCODER 0
+%define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
+%define CONFIG_LIBOPENJPEG_ENCODER 0
+%define CONFIG_LIBOPUS_ENCODER 0
+%define CONFIG_LIBRAV1E_ENCODER 0
+%define CONFIG_LIBSHINE_ENCODER 0
+%define CONFIG_LIBSPEEX_ENCODER 0
+%define CONFIG_LIBTHEORA_ENCODER 0
+%define CONFIG_LIBTWOLAME_ENCODER 0
+%define CONFIG_LIBVO_AMRWBENC_ENCODER 0
+%define CONFIG_LIBVORBIS_ENCODER 0
+%define CONFIG_LIBVPX_VP8_ENCODER 0
+%define CONFIG_LIBVPX_VP9_ENCODER 0
+%define CONFIG_LIBWAVPACK_ENCODER 0
+%define CONFIG_LIBWEBP_ANIM_ENCODER 0
+%define CONFIG_LIBWEBP_ENCODER 0
+%define CONFIG_LIBX262_ENCODER 0
+%define CONFIG_LIBX264_ENCODER 0
+%define CONFIG_LIBX264RGB_ENCODER 0
+%define CONFIG_LIBX265_ENCODER 0
+%define CONFIG_LIBXAVS_ENCODER 0
+%define CONFIG_LIBXAVS2_ENCODER 0
+%define CONFIG_LIBXVID_ENCODER 0
+%define CONFIG_H263_V4L2M2M_ENCODER 0
+%define CONFIG_LIBOPENH264_ENCODER 0
+%define CONFIG_H264_AMF_ENCODER 0
+%define CONFIG_H264_NVENC_ENCODER 0
+%define CONFIG_H264_OMX_ENCODER 0
+%define CONFIG_H264_QSV_ENCODER 0
+%define CONFIG_H264_V4L2M2M_ENCODER 0
+%define CONFIG_H264_VAAPI_ENCODER 0
+%define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
+%define CONFIG_NVENC_ENCODER 0
+%define CONFIG_NVENC_H264_ENCODER 0
+%define CONFIG_NVENC_HEVC_ENCODER 0
+%define CONFIG_HEVC_AMF_ENCODER 0
+%define CONFIG_HEVC_NVENC_ENCODER 0
+%define CONFIG_HEVC_QSV_ENCODER 0
+%define CONFIG_HEVC_V4L2M2M_ENCODER 0
+%define CONFIG_HEVC_VAAPI_ENCODER 0
+%define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
+%define CONFIG_LIBKVAZAAR_ENCODER 0
+%define CONFIG_MJPEG_QSV_ENCODER 0
+%define CONFIG_MJPEG_VAAPI_ENCODER 0
+%define CONFIG_MPEG2_QSV_ENCODER 0
+%define CONFIG_MPEG2_VAAPI_ENCODER 0
+%define CONFIG_MPEG4_OMX_ENCODER 0
+%define CONFIG_MPEG4_V4L2M2M_ENCODER 0
+%define CONFIG_VP8_V4L2M2M_ENCODER 0
+%define CONFIG_VP8_VAAPI_ENCODER 0
+%define CONFIG_VP9_VAAPI_ENCODER 0
+%define CONFIG_VP9_QSV_ENCODER 0
+%define CONFIG_H263_VAAPI_HWACCEL 0
+%define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_H264_D3D11VA_HWACCEL 0
+%define CONFIG_H264_D3D11VA2_HWACCEL 0
+%define CONFIG_H264_DXVA2_HWACCEL 0
+%define CONFIG_H264_NVDEC_HWACCEL 0
+%define CONFIG_H264_VAAPI_HWACCEL 0
+%define CONFIG_H264_VDPAU_HWACCEL 0
+%define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_HEVC_D3D11VA_HWACCEL 0
+%define CONFIG_HEVC_D3D11VA2_HWACCEL 0
+%define CONFIG_HEVC_DXVA2_HWACCEL 0
+%define CONFIG_HEVC_NVDEC_HWACCEL 0
+%define CONFIG_HEVC_VAAPI_HWACCEL 0
+%define CONFIG_HEVC_VDPAU_HWACCEL 0
+%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
+%define CONFIG_MPEG1_NVDEC_HWACCEL 0
+%define CONFIG_MPEG1_VDPAU_HWACCEL 0
+%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MPEG1_XVMC_HWACCEL 0
+%define CONFIG_MPEG2_D3D11VA_HWACCEL 0
+%define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
+%define CONFIG_MPEG2_NVDEC_HWACCEL 0
+%define CONFIG_MPEG2_DXVA2_HWACCEL 0
+%define CONFIG_MPEG2_VAAPI_HWACCEL 0
+%define CONFIG_MPEG2_VDPAU_HWACCEL 0
+%define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MPEG2_XVMC_HWACCEL 0
+%define CONFIG_MPEG4_NVDEC_HWACCEL 0
+%define CONFIG_MPEG4_VAAPI_HWACCEL 0
+%define CONFIG_MPEG4_VDPAU_HWACCEL 0
+%define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_VC1_D3D11VA_HWACCEL 0
+%define CONFIG_VC1_D3D11VA2_HWACCEL 0
+%define CONFIG_VC1_DXVA2_HWACCEL 0
+%define CONFIG_VC1_NVDEC_HWACCEL 0
+%define CONFIG_VC1_VAAPI_HWACCEL 0
+%define CONFIG_VC1_VDPAU_HWACCEL 0
+%define CONFIG_VP8_NVDEC_HWACCEL 0
+%define CONFIG_VP8_VAAPI_HWACCEL 0
+%define CONFIG_VP9_D3D11VA_HWACCEL 0
+%define CONFIG_VP9_D3D11VA2_HWACCEL 0
+%define CONFIG_VP9_DXVA2_HWACCEL 0
+%define CONFIG_VP9_NVDEC_HWACCEL 0
+%define CONFIG_VP9_VAAPI_HWACCEL 0
+%define CONFIG_VP9_VDPAU_HWACCEL 0
+%define CONFIG_WMV3_D3D11VA_HWACCEL 0
+%define CONFIG_WMV3_D3D11VA2_HWACCEL 0
+%define CONFIG_WMV3_DXVA2_HWACCEL 0
+%define CONFIG_WMV3_NVDEC_HWACCEL 0
+%define CONFIG_WMV3_VAAPI_HWACCEL 0
+%define CONFIG_WMV3_VDPAU_HWACCEL 0
+%define CONFIG_AAC_PARSER 0
+%define CONFIG_AAC_LATM_PARSER 0
+%define CONFIG_AC3_PARSER 0
+%define CONFIG_ADX_PARSER 0
+%define CONFIG_AV1_PARSER 0
+%define CONFIG_AVS2_PARSER 0
+%define CONFIG_BMP_PARSER 0
+%define CONFIG_CAVSVIDEO_PARSER 0
+%define CONFIG_COOK_PARSER 0
+%define CONFIG_DCA_PARSER 0
+%define CONFIG_DIRAC_PARSER 0
+%define CONFIG_DNXHD_PARSER 0
+%define CONFIG_DPX_PARSER 0
+%define CONFIG_DVAUDIO_PARSER 0
+%define CONFIG_DVBSUB_PARSER 0
+%define CONFIG_DVDSUB_PARSER 0
+%define CONFIG_DVD_NAV_PARSER 0
+%define CONFIG_FLAC_PARSER 1
+%define CONFIG_G723_1_PARSER 0
+%define CONFIG_G729_PARSER 0
+%define CONFIG_GIF_PARSER 0
+%define CONFIG_GSM_PARSER 0
+%define CONFIG_H261_PARSER 0
+%define CONFIG_H263_PARSER 0
+%define CONFIG_H264_PARSER 0
+%define CONFIG_HEVC_PARSER 0
+%define CONFIG_MJPEG_PARSER 0
+%define CONFIG_MLP_PARSER 0
+%define CONFIG_MPEG4VIDEO_PARSER 0
+%define CONFIG_MPEGAUDIO_PARSER 1
+%define CONFIG_MPEGVIDEO_PARSER 0
+%define CONFIG_OPUS_PARSER 1
+%define CONFIG_PNG_PARSER 0
+%define CONFIG_PNM_PARSER 0
+%define CONFIG_RV30_PARSER 0
+%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
+%define CONFIG_SIPR_PARSER 0
+%define CONFIG_TAK_PARSER 0
+%define CONFIG_VC1_PARSER 0
+%define CONFIG_VORBIS_PARSER 1
+%define CONFIG_VP3_PARSER 1
+%define CONFIG_VP8_PARSER 1
+%define CONFIG_VP9_PARSER 1
+%define CONFIG_WEBP_PARSER 0
+%define CONFIG_XMA_PARSER 0
+%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
+%define CONFIG_AVFOUNDATION_INDEV 0
+%define CONFIG_BKTR_INDEV 0
+%define CONFIG_DECKLINK_INDEV 0
+%define CONFIG_DSHOW_INDEV 0
+%define CONFIG_FBDEV_INDEV 0
+%define CONFIG_GDIGRAB_INDEV 0
+%define CONFIG_IEC61883_INDEV 0
+%define CONFIG_JACK_INDEV 0
+%define CONFIG_KMSGRAB_INDEV 0
+%define CONFIG_LAVFI_INDEV 0
+%define CONFIG_OPENAL_INDEV 0
+%define CONFIG_OSS_INDEV 0
+%define CONFIG_PULSE_INDEV 0
+%define CONFIG_SNDIO_INDEV 0
+%define CONFIG_V4L2_INDEV 0
+%define CONFIG_VFWCAP_INDEV 0
+%define CONFIG_XCBGRAB_INDEV 0
+%define CONFIG_LIBCDIO_INDEV 0
+%define CONFIG_LIBDC1394_INDEV 0
+%define CONFIG_ALSA_OUTDEV 0
+%define CONFIG_CACA_OUTDEV 0
+%define CONFIG_DECKLINK_OUTDEV 0
+%define CONFIG_FBDEV_OUTDEV 0
+%define CONFIG_OPENGL_OUTDEV 0
+%define CONFIG_OSS_OUTDEV 0
+%define CONFIG_PULSE_OUTDEV 0
+%define CONFIG_SDL2_OUTDEV 0
+%define CONFIG_SNDIO_OUTDEV 0
+%define CONFIG_V4L2_OUTDEV 0
+%define CONFIG_XV_OUTDEV 0
+%define CONFIG_ABENCH_FILTER 0
+%define CONFIG_ACOMPRESSOR_FILTER 0
+%define CONFIG_ACONTRAST_FILTER 0
+%define CONFIG_ACOPY_FILTER 0
+%define CONFIG_ACUE_FILTER 0
+%define CONFIG_ACROSSFADE_FILTER 0
+%define CONFIG_ACROSSOVER_FILTER 0
+%define CONFIG_ACRUSHER_FILTER 0
+%define CONFIG_ADECLICK_FILTER 0
+%define CONFIG_ADECLIP_FILTER 0
+%define CONFIG_ADELAY_FILTER 0
+%define CONFIG_ADERIVATIVE_FILTER 0
+%define CONFIG_AECHO_FILTER 0
+%define CONFIG_AEMPHASIS_FILTER 0
+%define CONFIG_AEVAL_FILTER 0
+%define CONFIG_AFADE_FILTER 0
+%define CONFIG_AFFTDN_FILTER 0
+%define CONFIG_AFFTFILT_FILTER 0
+%define CONFIG_AFIR_FILTER 0
+%define CONFIG_AFORMAT_FILTER 0
+%define CONFIG_AGATE_FILTER 0
+%define CONFIG_AIIR_FILTER 0
+%define CONFIG_AINTEGRAL_FILTER 0
+%define CONFIG_AINTERLEAVE_FILTER 0
+%define CONFIG_ALIMITER_FILTER 0
+%define CONFIG_ALLPASS_FILTER 0
+%define CONFIG_ALOOP_FILTER 0
+%define CONFIG_AMERGE_FILTER 0
+%define CONFIG_AMETADATA_FILTER 0
+%define CONFIG_AMIX_FILTER 0
+%define CONFIG_AMULTIPLY_FILTER 0
+%define CONFIG_ANEQUALIZER_FILTER 0
+%define CONFIG_ANLMDN_FILTER 0
+%define CONFIG_ANLMS_FILTER 0
+%define CONFIG_ANULL_FILTER 0
+%define CONFIG_APAD_FILTER 0
+%define CONFIG_APERMS_FILTER 0
+%define CONFIG_APHASER_FILTER 0
+%define CONFIG_APULSATOR_FILTER 0
+%define CONFIG_AREALTIME_FILTER 0
+%define CONFIG_ARESAMPLE_FILTER 0
+%define CONFIG_AREVERSE_FILTER 0
+%define CONFIG_ARNNDN_FILTER 0
+%define CONFIG_ASELECT_FILTER 0
+%define CONFIG_ASENDCMD_FILTER 0
+%define CONFIG_ASETNSAMPLES_FILTER 0
+%define CONFIG_ASETPTS_FILTER 0
+%define CONFIG_ASETRATE_FILTER 0
+%define CONFIG_ASETTB_FILTER 0
+%define CONFIG_ASHOWINFO_FILTER 0
+%define CONFIG_ASIDEDATA_FILTER 0
+%define CONFIG_ASOFTCLIP_FILTER 0
+%define CONFIG_ASPLIT_FILTER 0
+%define CONFIG_ASR_FILTER 0
+%define CONFIG_ASTATS_FILTER 0
+%define CONFIG_ASTREAMSELECT_FILTER 0
+%define CONFIG_ATEMPO_FILTER 0
+%define CONFIG_ATRIM_FILTER 0
+%define CONFIG_AXCORRELATE_FILTER 0
+%define CONFIG_AZMQ_FILTER 0
+%define CONFIG_BANDPASS_FILTER 0
+%define CONFIG_BANDREJECT_FILTER 0
+%define CONFIG_BASS_FILTER 0
+%define CONFIG_BIQUAD_FILTER 0
+%define CONFIG_BS2B_FILTER 0
+%define CONFIG_CHROMABER_VULKAN_FILTER 0
+%define CONFIG_CHANNELMAP_FILTER 0
+%define CONFIG_CHANNELSPLIT_FILTER 0
+%define CONFIG_CHORUS_FILTER 0
+%define CONFIG_COMPAND_FILTER 0
+%define CONFIG_COMPENSATIONDELAY_FILTER 0
+%define CONFIG_CROSSFEED_FILTER 0
+%define CONFIG_CRYSTALIZER_FILTER 0
+%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DEESSER_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
+%define CONFIG_DYNAUDNORM_FILTER 0
+%define CONFIG_EARWAX_FILTER 0
+%define CONFIG_EBUR128_FILTER 0
+%define CONFIG_EQUALIZER_FILTER 0
+%define CONFIG_EXTRASTEREO_FILTER 0
+%define CONFIG_FIREQUALIZER_FILTER 0
+%define CONFIG_FLANGER_FILTER 0
+%define CONFIG_HAAS_FILTER 0
+%define CONFIG_HDCD_FILTER 0
+%define CONFIG_HEADPHONE_FILTER 0
+%define CONFIG_HIGHPASS_FILTER 0
+%define CONFIG_HIGHSHELF_FILTER 0
+%define CONFIG_JOIN_FILTER 0
+%define CONFIG_LADSPA_FILTER 0
+%define CONFIG_LOUDNORM_FILTER 0
+%define CONFIG_LOWPASS_FILTER 0
+%define CONFIG_LOWSHELF_FILTER 0
+%define CONFIG_LV2_FILTER 0
+%define CONFIG_MCOMPAND_FILTER 0
+%define CONFIG_PAN_FILTER 0
+%define CONFIG_REPLAYGAIN_FILTER 0
+%define CONFIG_RESAMPLE_FILTER 0
+%define CONFIG_RUBBERBAND_FILTER 0
+%define CONFIG_SIDECHAINCOMPRESS_FILTER 0
+%define CONFIG_SIDECHAINGATE_FILTER 0
+%define CONFIG_SILENCEDETECT_FILTER 0
+%define CONFIG_SILENCEREMOVE_FILTER 0
+%define CONFIG_SOFALIZER_FILTER 0
+%define CONFIG_STEREOTOOLS_FILTER 0
+%define CONFIG_STEREOWIDEN_FILTER 0
+%define CONFIG_SUPEREQUALIZER_FILTER 0
+%define CONFIG_SURROUND_FILTER 0
+%define CONFIG_TREBLE_FILTER 0
+%define CONFIG_TREMOLO_FILTER 0
+%define CONFIG_VIBRATO_FILTER 0
+%define CONFIG_VOLUME_FILTER 0
+%define CONFIG_VOLUMEDETECT_FILTER 0
+%define CONFIG_AEVALSRC_FILTER 0
+%define CONFIG_AFIRSRC_FILTER 0
+%define CONFIG_ANOISESRC_FILTER 0
+%define CONFIG_ANULLSRC_FILTER 0
+%define CONFIG_FLITE_FILTER 0
+%define CONFIG_HILBERT_FILTER 0
+%define CONFIG_SINC_FILTER 0
+%define CONFIG_SINE_FILTER 0
+%define CONFIG_ANULLSINK_FILTER 0
+%define CONFIG_ADDROI_FILTER 0
+%define CONFIG_ALPHAEXTRACT_FILTER 0
+%define CONFIG_ALPHAMERGE_FILTER 0
+%define CONFIG_AMPLIFY_FILTER 0
+%define CONFIG_ASS_FILTER 0
+%define CONFIG_ATADENOISE_FILTER 0
+%define CONFIG_AVGBLUR_FILTER 0
+%define CONFIG_AVGBLUR_OPENCL_FILTER 0
+%define CONFIG_AVGBLUR_VULKAN_FILTER 0
+%define CONFIG_BBOX_FILTER 0
+%define CONFIG_BENCH_FILTER 0
+%define CONFIG_BILATERAL_FILTER 0
+%define CONFIG_BITPLANENOISE_FILTER 0
+%define CONFIG_BLACKDETECT_FILTER 0
+%define CONFIG_BLACKFRAME_FILTER 0
+%define CONFIG_BLEND_FILTER 0
+%define CONFIG_BM3D_FILTER 0
+%define CONFIG_BOXBLUR_FILTER 0
+%define CONFIG_BOXBLUR_OPENCL_FILTER 0
+%define CONFIG_BWDIF_FILTER 0
+%define CONFIG_CAS_FILTER 0
+%define CONFIG_CHROMAHOLD_FILTER 0
+%define CONFIG_CHROMAKEY_FILTER 0
+%define CONFIG_CHROMASHIFT_FILTER 0
+%define CONFIG_CIESCOPE_FILTER 0
+%define CONFIG_CODECVIEW_FILTER 0
+%define CONFIG_COLORBALANCE_FILTER 0
+%define CONFIG_COLORCHANNELMIXER_FILTER 0
+%define CONFIG_COLORKEY_FILTER 0
+%define CONFIG_COLORKEY_OPENCL_FILTER 0
+%define CONFIG_COLORHOLD_FILTER 0
+%define CONFIG_COLORLEVELS_FILTER 0
+%define CONFIG_COLORMATRIX_FILTER 0
+%define CONFIG_COLORSPACE_FILTER 0
+%define CONFIG_CONVOLUTION_FILTER 0
+%define CONFIG_CONVOLUTION_OPENCL_FILTER 0
+%define CONFIG_CONVOLVE_FILTER 0
+%define CONFIG_COPY_FILTER 0
+%define CONFIG_COREIMAGE_FILTER 0
+%define CONFIG_COVER_RECT_FILTER 0
+%define CONFIG_CROP_FILTER 0
+%define CONFIG_CROPDETECT_FILTER 0
+%define CONFIG_CUE_FILTER 0
+%define CONFIG_CURVES_FILTER 0
+%define CONFIG_DATASCOPE_FILTER 0
+%define CONFIG_DCTDNOIZ_FILTER 0
+%define CONFIG_DEBAND_FILTER 0
+%define CONFIG_DEBLOCK_FILTER 0
+%define CONFIG_DECIMATE_FILTER 0
+%define CONFIG_DECONVOLVE_FILTER 0
+%define CONFIG_DEDOT_FILTER 0
+%define CONFIG_DEFLATE_FILTER 0
+%define CONFIG_DEFLICKER_FILTER 0
+%define CONFIG_DEINTERLACE_QSV_FILTER 0
+%define CONFIG_DEINTERLACE_VAAPI_FILTER 0
+%define CONFIG_DEJUDDER_FILTER 0
+%define CONFIG_DELOGO_FILTER 0
+%define CONFIG_DENOISE_VAAPI_FILTER 0
+%define CONFIG_DERAIN_FILTER 0
+%define CONFIG_DESHAKE_FILTER 0
+%define CONFIG_DESHAKE_OPENCL_FILTER 0
+%define CONFIG_DESPILL_FILTER 0
+%define CONFIG_DETELECINE_FILTER 0
+%define CONFIG_DILATION_FILTER 0
+%define CONFIG_DILATION_OPENCL_FILTER 0
+%define CONFIG_DISPLACE_FILTER 0
+%define CONFIG_DNN_PROCESSING_FILTER 0
+%define CONFIG_DOUBLEWEAVE_FILTER 0
+%define CONFIG_DRAWBOX_FILTER 0
+%define CONFIG_DRAWGRAPH_FILTER 0
+%define CONFIG_DRAWGRID_FILTER 0
+%define CONFIG_DRAWTEXT_FILTER 0
+%define CONFIG_EDGEDETECT_FILTER 0
+%define CONFIG_ELBG_FILTER 0
+%define CONFIG_ENTROPY_FILTER 0
+%define CONFIG_EQ_FILTER 0
+%define CONFIG_EROSION_FILTER 0
+%define CONFIG_EROSION_OPENCL_FILTER 0
+%define CONFIG_EXTRACTPLANES_FILTER 0
+%define CONFIG_FADE_FILTER 0
+%define CONFIG_FFTDNOIZ_FILTER 0
+%define CONFIG_FFTFILT_FILTER 0
+%define CONFIG_FIELD_FILTER 0
+%define CONFIG_FIELDHINT_FILTER 0
+%define CONFIG_FIELDMATCH_FILTER 0
+%define CONFIG_FIELDORDER_FILTER 0
+%define CONFIG_FILLBORDERS_FILTER 0
+%define CONFIG_FIND_RECT_FILTER 0
+%define CONFIG_FLOODFILL_FILTER 0
+%define CONFIG_FORMAT_FILTER 0
+%define CONFIG_FPS_FILTER 0
+%define CONFIG_FRAMEPACK_FILTER 0
+%define CONFIG_FRAMERATE_FILTER 0
+%define CONFIG_FRAMESTEP_FILTER 0
+%define CONFIG_FREEZEDETECT_FILTER 0
+%define CONFIG_FREEZEFRAMES_FILTER 0
+%define CONFIG_FREI0R_FILTER 0
+%define CONFIG_FSPP_FILTER 0
+%define CONFIG_GBLUR_FILTER 0
+%define CONFIG_GEQ_FILTER 0
+%define CONFIG_GRADFUN_FILTER 0
+%define CONFIG_GRAPHMONITOR_FILTER 0
+%define CONFIG_GREYEDGE_FILTER 0
+%define CONFIG_HALDCLUT_FILTER 0
+%define CONFIG_HFLIP_FILTER 0
+%define CONFIG_HISTEQ_FILTER 0
+%define CONFIG_HISTOGRAM_FILTER 0
+%define CONFIG_HQDN3D_FILTER 0
+%define CONFIG_HQX_FILTER 0
+%define CONFIG_HSTACK_FILTER 0
+%define CONFIG_HUE_FILTER 0
+%define CONFIG_HWDOWNLOAD_FILTER 0
+%define CONFIG_HWMAP_FILTER 0
+%define CONFIG_HWUPLOAD_FILTER 0
+%define CONFIG_HWUPLOAD_CUDA_FILTER 0
+%define CONFIG_HYSTERESIS_FILTER 0
+%define CONFIG_IDET_FILTER 0
+%define CONFIG_IL_FILTER 0
+%define CONFIG_INFLATE_FILTER 0
+%define CONFIG_INTERLACE_FILTER 0
+%define CONFIG_INTERLEAVE_FILTER 0
+%define CONFIG_KERNDEINT_FILTER 0
+%define CONFIG_LAGFUN_FILTER 0
+%define CONFIG_LENSCORRECTION_FILTER 0
+%define CONFIG_LENSFUN_FILTER 0
+%define CONFIG_LIBVMAF_FILTER 0
+%define CONFIG_LIMITER_FILTER 0
+%define CONFIG_LOOP_FILTER 0
+%define CONFIG_LUMAKEY_FILTER 0
+%define CONFIG_LUT_FILTER 0
+%define CONFIG_LUT1D_FILTER 0
+%define CONFIG_LUT2_FILTER 0
+%define CONFIG_LUT3D_FILTER 0
+%define CONFIG_LUTRGB_FILTER 0
+%define CONFIG_LUTYUV_FILTER 0
+%define CONFIG_MASKEDCLAMP_FILTER 0
+%define CONFIG_MASKEDMAX_FILTER 0
+%define CONFIG_MASKEDMERGE_FILTER 0
+%define CONFIG_MASKEDMIN_FILTER 0
+%define CONFIG_MASKEDTHRESHOLD_FILTER 0
+%define CONFIG_MASKFUN_FILTER 0
+%define CONFIG_MCDEINT_FILTER 0
+%define CONFIG_MEDIAN_FILTER 0
+%define CONFIG_MERGEPLANES_FILTER 0
+%define CONFIG_MESTIMATE_FILTER 0
+%define CONFIG_METADATA_FILTER 0
+%define CONFIG_MIDEQUALIZER_FILTER 0
+%define CONFIG_MINTERPOLATE_FILTER 0
+%define CONFIG_MIX_FILTER 0
+%define CONFIG_MPDECIMATE_FILTER 0
+%define CONFIG_NEGATE_FILTER 0
+%define CONFIG_NLMEANS_FILTER 0
+%define CONFIG_NLMEANS_OPENCL_FILTER 0
+%define CONFIG_NNEDI_FILTER 0
+%define CONFIG_NOFORMAT_FILTER 0
+%define CONFIG_NOISE_FILTER 0
+%define CONFIG_NORMALIZE_FILTER 0
+%define CONFIG_NULL_FILTER 0
+%define CONFIG_OCR_FILTER 0
+%define CONFIG_OCV_FILTER 0
+%define CONFIG_OSCILLOSCOPE_FILTER 0
+%define CONFIG_OVERLAY_FILTER 0
+%define CONFIG_OVERLAY_OPENCL_FILTER 0
+%define CONFIG_OVERLAY_QSV_FILTER 0
+%define CONFIG_OVERLAY_VULKAN_FILTER 0
+%define CONFIG_OVERLAY_CUDA_FILTER 0
+%define CONFIG_OWDENOISE_FILTER 0
+%define CONFIG_PAD_FILTER 0
+%define CONFIG_PAD_OPENCL_FILTER 0
+%define CONFIG_PALETTEGEN_FILTER 0
+%define CONFIG_PALETTEUSE_FILTER 0
+%define CONFIG_PERMS_FILTER 0
+%define CONFIG_PERSPECTIVE_FILTER 0
+%define CONFIG_PHASE_FILTER 0
+%define CONFIG_PHOTOSENSITIVITY_FILTER 0
+%define CONFIG_PIXDESCTEST_FILTER 0
+%define CONFIG_PIXSCOPE_FILTER 0
+%define CONFIG_PP_FILTER 0
+%define CONFIG_PP7_FILTER 0
+%define CONFIG_PREMULTIPLY_FILTER 0
+%define CONFIG_PREWITT_FILTER 0
+%define CONFIG_PREWITT_OPENCL_FILTER 0
+%define CONFIG_PROCAMP_VAAPI_FILTER 0
+%define CONFIG_PROGRAM_OPENCL_FILTER 0
+%define CONFIG_PSEUDOCOLOR_FILTER 0
+%define CONFIG_PSNR_FILTER 0
+%define CONFIG_PULLUP_FILTER 0
+%define CONFIG_QP_FILTER 0
+%define CONFIG_RANDOM_FILTER 0
+%define CONFIG_READEIA608_FILTER 0
+%define CONFIG_READVITC_FILTER 0
+%define CONFIG_REALTIME_FILTER 0
+%define CONFIG_REMAP_FILTER 0
+%define CONFIG_REMOVEGRAIN_FILTER 0
+%define CONFIG_REMOVELOGO_FILTER 0
+%define CONFIG_REPEATFIELDS_FILTER 0
+%define CONFIG_REVERSE_FILTER 0
+%define CONFIG_RGBASHIFT_FILTER 0
+%define CONFIG_ROBERTS_FILTER 0
+%define CONFIG_ROBERTS_OPENCL_FILTER 0
+%define CONFIG_ROTATE_FILTER 0
+%define CONFIG_SAB_FILTER 0
+%define CONFIG_SCALE_FILTER 0
+%define CONFIG_SCALE_CUDA_FILTER 0
+%define CONFIG_SCALE_NPP_FILTER 0
+%define CONFIG_SCALE_QSV_FILTER 0
+%define CONFIG_SCALE_VAAPI_FILTER 0
+%define CONFIG_SCALE_VULKAN_FILTER 0
+%define CONFIG_SCALE2REF_FILTER 0
+%define CONFIG_SCROLL_FILTER 0
+%define CONFIG_SELECT_FILTER 0
+%define CONFIG_SELECTIVECOLOR_FILTER 0
+%define CONFIG_SENDCMD_FILTER 0
+%define CONFIG_SEPARATEFIELDS_FILTER 0
+%define CONFIG_SETDAR_FILTER 0
+%define CONFIG_SETFIELD_FILTER 0
+%define CONFIG_SETPARAMS_FILTER 0
+%define CONFIG_SETPTS_FILTER 0
+%define CONFIG_SETRANGE_FILTER 0
+%define CONFIG_SETSAR_FILTER 0
+%define CONFIG_SETTB_FILTER 0
+%define CONFIG_SHARPNESS_VAAPI_FILTER 0
+%define CONFIG_SHOWINFO_FILTER 0
+%define CONFIG_SHOWPALETTE_FILTER 0
+%define CONFIG_SHUFFLEFRAMES_FILTER 0
+%define CONFIG_SHUFFLEPLANES_FILTER 0
+%define CONFIG_SIDEDATA_FILTER 0
+%define CONFIG_SIGNALSTATS_FILTER 0
+%define CONFIG_SIGNATURE_FILTER 0
+%define CONFIG_SMARTBLUR_FILTER 0
+%define CONFIG_SOBEL_FILTER 0
+%define CONFIG_SOBEL_OPENCL_FILTER 0
+%define CONFIG_SPLIT_FILTER 0
+%define CONFIG_SPP_FILTER 0
+%define CONFIG_SR_FILTER 0
+%define CONFIG_SSIM_FILTER 0
+%define CONFIG_STEREO3D_FILTER 0
+%define CONFIG_STREAMSELECT_FILTER 0
+%define CONFIG_SUBTITLES_FILTER 0
+%define CONFIG_SUPER2XSAI_FILTER 0
+%define CONFIG_SWAPRECT_FILTER 0
+%define CONFIG_SWAPUV_FILTER 0
+%define CONFIG_TBLEND_FILTER 0
+%define CONFIG_TELECINE_FILTER 0
+%define CONFIG_THISTOGRAM_FILTER 0
+%define CONFIG_THRESHOLD_FILTER 0
+%define CONFIG_THUMBNAIL_FILTER 0
+%define CONFIG_THUMBNAIL_CUDA_FILTER 0
+%define CONFIG_TILE_FILTER 0
+%define CONFIG_TINTERLACE_FILTER 0
+%define CONFIG_TLUT2_FILTER 0
+%define CONFIG_TMEDIAN_FILTER 0
+%define CONFIG_TMIX_FILTER 0
+%define CONFIG_TONEMAP_FILTER 0
+%define CONFIG_TONEMAP_OPENCL_FILTER 0
+%define CONFIG_TONEMAP_VAAPI_FILTER 0
+%define CONFIG_TPAD_FILTER 0
+%define CONFIG_TRANSPOSE_FILTER 0
+%define CONFIG_TRANSPOSE_NPP_FILTER 0
+%define CONFIG_TRANSPOSE_OPENCL_FILTER 0
+%define CONFIG_TRANSPOSE_VAAPI_FILTER 0
+%define CONFIG_TRIM_FILTER 0
+%define CONFIG_UNPREMULTIPLY_FILTER 0
+%define CONFIG_UNSHARP_FILTER 0
+%define CONFIG_UNSHARP_OPENCL_FILTER 0
+%define CONFIG_USPP_FILTER 0
+%define CONFIG_V360_FILTER 0
+%define CONFIG_VAGUEDENOISER_FILTER 0
+%define CONFIG_VECTORSCOPE_FILTER 0
+%define CONFIG_VFLIP_FILTER 0
+%define CONFIG_VFRDET_FILTER 0
+%define CONFIG_VIBRANCE_FILTER 0
+%define CONFIG_VIDSTABDETECT_FILTER 0
+%define CONFIG_VIDSTABTRANSFORM_FILTER 0
+%define CONFIG_VIGNETTE_FILTER 0
+%define CONFIG_VMAFMOTION_FILTER 0
+%define CONFIG_VPP_QSV_FILTER 0
+%define CONFIG_VSTACK_FILTER 0
+%define CONFIG_W3FDIF_FILTER 0
+%define CONFIG_WAVEFORM_FILTER 0
+%define CONFIG_WEAVE_FILTER 0
+%define CONFIG_XBR_FILTER 0
+%define CONFIG_XFADE_FILTER 0
+%define CONFIG_XFADE_OPENCL_FILTER 0
+%define CONFIG_XMEDIAN_FILTER 0
+%define CONFIG_XSTACK_FILTER 0
+%define CONFIG_YADIF_FILTER 0
+%define CONFIG_YADIF_CUDA_FILTER 0
+%define CONFIG_YAEPBLUR_FILTER 0
+%define CONFIG_ZMQ_FILTER 0
+%define CONFIG_ZOOMPAN_FILTER 0
+%define CONFIG_ZSCALE_FILTER 0
+%define CONFIG_ALLRGB_FILTER 0
+%define CONFIG_ALLYUV_FILTER 0
+%define CONFIG_CELLAUTO_FILTER 0
+%define CONFIG_COLOR_FILTER 0
+%define CONFIG_COREIMAGESRC_FILTER 0
+%define CONFIG_FREI0R_SRC_FILTER 0
+%define CONFIG_HALDCLUTSRC_FILTER 0
+%define CONFIG_LIFE_FILTER 0
+%define CONFIG_MANDELBROT_FILTER 0
+%define CONFIG_MPTESTSRC_FILTER 0
+%define CONFIG_NULLSRC_FILTER 0
+%define CONFIG_OPENCLSRC_FILTER 0
+%define CONFIG_PAL75BARS_FILTER 0
+%define CONFIG_PAL100BARS_FILTER 0
+%define CONFIG_RGBTESTSRC_FILTER 0
+%define CONFIG_SIERPINSKI_FILTER 0
+%define CONFIG_SMPTEBARS_FILTER 0
+%define CONFIG_SMPTEHDBARS_FILTER 0
+%define CONFIG_TESTSRC_FILTER 0
+%define CONFIG_TESTSRC2_FILTER 0
+%define CONFIG_YUVTESTSRC_FILTER 0
+%define CONFIG_NULLSINK_FILTER 0
+%define CONFIG_ABITSCOPE_FILTER 0
+%define CONFIG_ADRAWGRAPH_FILTER 0
+%define CONFIG_AGRAPHMONITOR_FILTER 0
+%define CONFIG_AHISTOGRAM_FILTER 0
+%define CONFIG_APHASEMETER_FILTER 0
+%define CONFIG_AVECTORSCOPE_FILTER 0
+%define CONFIG_CONCAT_FILTER 0
+%define CONFIG_SHOWCQT_FILTER 0
+%define CONFIG_SHOWFREQS_FILTER 0
+%define CONFIG_SHOWSPATIAL_FILTER 0
+%define CONFIG_SHOWSPECTRUM_FILTER 0
+%define CONFIG_SHOWSPECTRUMPIC_FILTER 0
+%define CONFIG_SHOWVOLUME_FILTER 0
+%define CONFIG_SHOWWAVES_FILTER 0
+%define CONFIG_SHOWWAVESPIC_FILTER 0
+%define CONFIG_SPECTRUMSYNTH_FILTER 0
+%define CONFIG_AMOVIE_FILTER 0
+%define CONFIG_MOVIE_FILTER 0
+%define CONFIG_AFIFO_FILTER 0
+%define CONFIG_FIFO_FILTER 0
+%define CONFIG_AA_DEMUXER 0
+%define CONFIG_AAC_DEMUXER 0
+%define CONFIG_AC3_DEMUXER 0
+%define CONFIG_ACM_DEMUXER 0
+%define CONFIG_ACT_DEMUXER 0
+%define CONFIG_ADF_DEMUXER 0
+%define CONFIG_ADP_DEMUXER 0
+%define CONFIG_ADS_DEMUXER 0
+%define CONFIG_ADX_DEMUXER 0
+%define CONFIG_AEA_DEMUXER 0
+%define CONFIG_AFC_DEMUXER 0
+%define CONFIG_AIFF_DEMUXER 0
+%define CONFIG_AIX_DEMUXER 0
+%define CONFIG_ALP_DEMUXER 0
+%define CONFIG_AMR_DEMUXER 0
+%define CONFIG_AMRNB_DEMUXER 0
+%define CONFIG_AMRWB_DEMUXER 0
+%define CONFIG_ANM_DEMUXER 0
+%define CONFIG_APC_DEMUXER 0
+%define CONFIG_APE_DEMUXER 0
+%define CONFIG_APM_DEMUXER 0
+%define CONFIG_APNG_DEMUXER 0
+%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
+%define CONFIG_AQTITLE_DEMUXER 0
+%define CONFIG_ARGO_ASF_DEMUXER 0
+%define CONFIG_ASF_DEMUXER 0
+%define CONFIG_ASF_O_DEMUXER 0
+%define CONFIG_ASS_DEMUXER 0
+%define CONFIG_AST_DEMUXER 0
+%define CONFIG_AU_DEMUXER 0
+%define CONFIG_AV1_DEMUXER 0
+%define CONFIG_AVI_DEMUXER 0
+%define CONFIG_AVISYNTH_DEMUXER 0
+%define CONFIG_AVR_DEMUXER 0
+%define CONFIG_AVS_DEMUXER 0
+%define CONFIG_AVS2_DEMUXER 0
+%define CONFIG_BETHSOFTVID_DEMUXER 0
+%define CONFIG_BFI_DEMUXER 0
+%define CONFIG_BINTEXT_DEMUXER 0
+%define CONFIG_BINK_DEMUXER 0
+%define CONFIG_BIT_DEMUXER 0
+%define CONFIG_BMV_DEMUXER 0
+%define CONFIG_BFSTM_DEMUXER 0
+%define CONFIG_BRSTM_DEMUXER 0
+%define CONFIG_BOA_DEMUXER 0
+%define CONFIG_C93_DEMUXER 0
+%define CONFIG_CAF_DEMUXER 0
+%define CONFIG_CAVSVIDEO_DEMUXER 0
+%define CONFIG_CDG_DEMUXER 0
+%define CONFIG_CDXL_DEMUXER 0
+%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
+%define CONFIG_CONCAT_DEMUXER 0
+%define CONFIG_DASH_DEMUXER 0
+%define CONFIG_DATA_DEMUXER 0
+%define CONFIG_DAUD_DEMUXER 0
+%define CONFIG_DCSTR_DEMUXER 0
+%define CONFIG_DERF_DEMUXER 0
+%define CONFIG_DFA_DEMUXER 0
+%define CONFIG_DHAV_DEMUXER 0
+%define CONFIG_DIRAC_DEMUXER 0
+%define CONFIG_DNXHD_DEMUXER 0
+%define CONFIG_DSF_DEMUXER 0
+%define CONFIG_DSICIN_DEMUXER 0
+%define CONFIG_DSS_DEMUXER 0
+%define CONFIG_DTS_DEMUXER 0
+%define CONFIG_DTSHD_DEMUXER 0
+%define CONFIG_DV_DEMUXER 0
+%define CONFIG_DVBSUB_DEMUXER 0
+%define CONFIG_DVBTXT_DEMUXER 0
+%define CONFIG_DXA_DEMUXER 0
+%define CONFIG_EA_DEMUXER 0
+%define CONFIG_EA_CDATA_DEMUXER 0
+%define CONFIG_EAC3_DEMUXER 0
+%define CONFIG_EPAF_DEMUXER 0
+%define CONFIG_FFMETADATA_DEMUXER 0
+%define CONFIG_FILMSTRIP_DEMUXER 0
+%define CONFIG_FITS_DEMUXER 0
+%define CONFIG_FLAC_DEMUXER 1
+%define CONFIG_FLIC_DEMUXER 0
+%define CONFIG_FLV_DEMUXER 0
+%define CONFIG_LIVE_FLV_DEMUXER 0
+%define CONFIG_FOURXM_DEMUXER 0
+%define CONFIG_FRM_DEMUXER 0
+%define CONFIG_FSB_DEMUXER 0
+%define CONFIG_FWSE_DEMUXER 0
+%define CONFIG_G722_DEMUXER 0
+%define CONFIG_G723_1_DEMUXER 0
+%define CONFIG_G726_DEMUXER 0
+%define CONFIG_G726LE_DEMUXER 0
+%define CONFIG_G729_DEMUXER 0
+%define CONFIG_GDV_DEMUXER 0
+%define CONFIG_GENH_DEMUXER 0
+%define CONFIG_GIF_DEMUXER 0
+%define CONFIG_GSM_DEMUXER 0
+%define CONFIG_GXF_DEMUXER 0
+%define CONFIG_H261_DEMUXER 0
+%define CONFIG_H263_DEMUXER 0
+%define CONFIG_H264_DEMUXER 0
+%define CONFIG_HCA_DEMUXER 0
+%define CONFIG_HCOM_DEMUXER 0
+%define CONFIG_HEVC_DEMUXER 0
+%define CONFIG_HLS_DEMUXER 0
+%define CONFIG_HNM_DEMUXER 0
+%define CONFIG_ICO_DEMUXER 0
+%define CONFIG_IDCIN_DEMUXER 0
+%define CONFIG_IDF_DEMUXER 0
+%define CONFIG_IFF_DEMUXER 0
+%define CONFIG_IFV_DEMUXER 0
+%define CONFIG_ILBC_DEMUXER 0
+%define CONFIG_IMAGE2_DEMUXER 0
+%define CONFIG_IMAGE2PIPE_DEMUXER 0
+%define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
+%define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
+%define CONFIG_INGENIENT_DEMUXER 0
+%define CONFIG_IPMOVIE_DEMUXER 0
+%define CONFIG_IRCAM_DEMUXER 0
+%define CONFIG_ISS_DEMUXER 0
+%define CONFIG_IV8_DEMUXER 0
+%define CONFIG_IVF_DEMUXER 0
+%define CONFIG_IVR_DEMUXER 0
+%define CONFIG_JACOSUB_DEMUXER 0
+%define CONFIG_JV_DEMUXER 0
+%define CONFIG_KUX_DEMUXER 0
+%define CONFIG_KVAG_DEMUXER 0
+%define CONFIG_LMLM4_DEMUXER 0
+%define CONFIG_LOAS_DEMUXER 0
+%define CONFIG_LRC_DEMUXER 0
+%define CONFIG_LVF_DEMUXER 0
+%define CONFIG_LXF_DEMUXER 0
+%define CONFIG_M4V_DEMUXER 0
+%define CONFIG_MATROSKA_DEMUXER 1
+%define CONFIG_MGSTS_DEMUXER 0
+%define CONFIG_MICRODVD_DEMUXER 0
+%define CONFIG_MJPEG_DEMUXER 0
+%define CONFIG_MJPEG_2000_DEMUXER 0
+%define CONFIG_MLP_DEMUXER 0
+%define CONFIG_MLV_DEMUXER 0
+%define CONFIG_MM_DEMUXER 0
+%define CONFIG_MMF_DEMUXER 0
+%define CONFIG_MOV_DEMUXER 1
+%define CONFIG_MP3_DEMUXER 1
+%define CONFIG_MPC_DEMUXER 0
+%define CONFIG_MPC8_DEMUXER 0
+%define CONFIG_MPEGPS_DEMUXER 0
+%define CONFIG_MPEGTS_DEMUXER 0
+%define CONFIG_MPEGTSRAW_DEMUXER 0
+%define CONFIG_MPEGVIDEO_DEMUXER 0
+%define CONFIG_MPJPEG_DEMUXER 0
+%define CONFIG_MPL2_DEMUXER 0
+%define CONFIG_MPSUB_DEMUXER 0
+%define CONFIG_MSF_DEMUXER 0
+%define CONFIG_MSNWC_TCP_DEMUXER 0
+%define CONFIG_MTAF_DEMUXER 0
+%define CONFIG_MTV_DEMUXER 0
+%define CONFIG_MUSX_DEMUXER 0
+%define CONFIG_MV_DEMUXER 0
+%define CONFIG_MVI_DEMUXER 0
+%define CONFIG_MXF_DEMUXER 0
+%define CONFIG_MXG_DEMUXER 0
+%define CONFIG_NC_DEMUXER 0
+%define CONFIG_NISTSPHERE_DEMUXER 0
+%define CONFIG_NSP_DEMUXER 0
+%define CONFIG_NSV_DEMUXER 0
+%define CONFIG_NUT_DEMUXER 0
+%define CONFIG_NUV_DEMUXER 0
+%define CONFIG_OGG_DEMUXER 1
+%define CONFIG_OMA_DEMUXER 0
+%define CONFIG_PAF_DEMUXER 0
+%define CONFIG_PCM_ALAW_DEMUXER 0
+%define CONFIG_PCM_MULAW_DEMUXER 0
+%define CONFIG_PCM_VIDC_DEMUXER 0
+%define CONFIG_PCM_F64BE_DEMUXER 0
+%define CONFIG_PCM_F64LE_DEMUXER 0
+%define CONFIG_PCM_F32BE_DEMUXER 0
+%define CONFIG_PCM_F32LE_DEMUXER 0
+%define CONFIG_PCM_S32BE_DEMUXER 0
+%define CONFIG_PCM_S32LE_DEMUXER 0
+%define CONFIG_PCM_S24BE_DEMUXER 0
+%define CONFIG_PCM_S24LE_DEMUXER 0
+%define CONFIG_PCM_S16BE_DEMUXER 0
+%define CONFIG_PCM_S16LE_DEMUXER 0
+%define CONFIG_PCM_S8_DEMUXER 0
+%define CONFIG_PCM_U32BE_DEMUXER 0
+%define CONFIG_PCM_U32LE_DEMUXER 0
+%define CONFIG_PCM_U24BE_DEMUXER 0
+%define CONFIG_PCM_U24LE_DEMUXER 0
+%define CONFIG_PCM_U16BE_DEMUXER 0
+%define CONFIG_PCM_U16LE_DEMUXER 0
+%define CONFIG_PCM_U8_DEMUXER 0
+%define CONFIG_PJS_DEMUXER 0
+%define CONFIG_PMP_DEMUXER 0
+%define CONFIG_PVA_DEMUXER 0
+%define CONFIG_PVF_DEMUXER 0
+%define CONFIG_QCP_DEMUXER 0
+%define CONFIG_R3D_DEMUXER 0
+%define CONFIG_RAWVIDEO_DEMUXER 0
+%define CONFIG_REALTEXT_DEMUXER 0
+%define CONFIG_REDSPARK_DEMUXER 0
+%define CONFIG_RL2_DEMUXER 0
+%define CONFIG_RM_DEMUXER 0
+%define CONFIG_ROQ_DEMUXER 0
+%define CONFIG_RPL_DEMUXER 0
+%define CONFIG_RSD_DEMUXER 0
+%define CONFIG_RSO_DEMUXER 0
+%define CONFIG_RTP_DEMUXER 0
+%define CONFIG_RTSP_DEMUXER 0
+%define CONFIG_S337M_DEMUXER 0
+%define CONFIG_SAMI_DEMUXER 0
+%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
+%define CONFIG_SBG_DEMUXER 0
+%define CONFIG_SCC_DEMUXER 0
+%define CONFIG_SDP_DEMUXER 0
+%define CONFIG_SDR2_DEMUXER 0
+%define CONFIG_SDS_DEMUXER 0
+%define CONFIG_SDX_DEMUXER 0
+%define CONFIG_SEGAFILM_DEMUXER 0
+%define CONFIG_SER_DEMUXER 0
+%define CONFIG_SHORTEN_DEMUXER 0
+%define CONFIG_SIFF_DEMUXER 0
+%define CONFIG_SLN_DEMUXER 0
+%define CONFIG_SMACKER_DEMUXER 0
+%define CONFIG_SMJPEG_DEMUXER 0
+%define CONFIG_SMUSH_DEMUXER 0
+%define CONFIG_SOL_DEMUXER 0
+%define CONFIG_SOX_DEMUXER 0
+%define CONFIG_SPDIF_DEMUXER 0
+%define CONFIG_SRT_DEMUXER 0
+%define CONFIG_STR_DEMUXER 0
+%define CONFIG_STL_DEMUXER 0
+%define CONFIG_SUBVIEWER1_DEMUXER 0
+%define CONFIG_SUBVIEWER_DEMUXER 0
+%define CONFIG_SUP_DEMUXER 0
+%define CONFIG_SVAG_DEMUXER 0
+%define CONFIG_SWF_DEMUXER 0
+%define CONFIG_TAK_DEMUXER 0
+%define CONFIG_TEDCAPTIONS_DEMUXER 0
+%define CONFIG_THP_DEMUXER 0
+%define CONFIG_THREEDOSTR_DEMUXER 0
+%define CONFIG_TIERTEXSEQ_DEMUXER 0
+%define CONFIG_TMV_DEMUXER 0
+%define CONFIG_TRUEHD_DEMUXER 0
+%define CONFIG_TTA_DEMUXER 0
+%define CONFIG_TXD_DEMUXER 0
+%define CONFIG_TTY_DEMUXER 0
+%define CONFIG_TY_DEMUXER 0
+%define CONFIG_V210_DEMUXER 0
+%define CONFIG_V210X_DEMUXER 0
+%define CONFIG_VAG_DEMUXER 0
+%define CONFIG_VC1_DEMUXER 0
+%define CONFIG_VC1T_DEMUXER 0
+%define CONFIG_VIVIDAS_DEMUXER 0
+%define CONFIG_VIVO_DEMUXER 0
+%define CONFIG_VMD_DEMUXER 0
+%define CONFIG_VOBSUB_DEMUXER 0
+%define CONFIG_VOC_DEMUXER 0
+%define CONFIG_VPK_DEMUXER 0
+%define CONFIG_VPLAYER_DEMUXER 0
+%define CONFIG_VQF_DEMUXER 0
+%define CONFIG_W64_DEMUXER 0
+%define CONFIG_WAV_DEMUXER 1
+%define CONFIG_WC3_DEMUXER 0
+%define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
+%define CONFIG_WEBVTT_DEMUXER 0
+%define CONFIG_WSAUD_DEMUXER 0
+%define CONFIG_WSD_DEMUXER 0
+%define CONFIG_WSVQA_DEMUXER 0
+%define CONFIG_WTV_DEMUXER 0
+%define CONFIG_WVE_DEMUXER 0
+%define CONFIG_WV_DEMUXER 0
+%define CONFIG_XA_DEMUXER 0
+%define CONFIG_XBIN_DEMUXER 0
+%define CONFIG_XMV_DEMUXER 0
+%define CONFIG_XVAG_DEMUXER 0
+%define CONFIG_XWMA_DEMUXER 0
+%define CONFIG_YOP_DEMUXER 0
+%define CONFIG_YUV4MPEGPIPE_DEMUXER 0
+%define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
+%define CONFIG_LIBGME_DEMUXER 0
+%define CONFIG_LIBMODPLUG_DEMUXER 0
+%define CONFIG_LIBOPENMPT_DEMUXER 0
+%define CONFIG_VAPOURSYNTH_DEMUXER 0
+%define CONFIG_A64_MUXER 0
+%define CONFIG_AC3_MUXER 0
+%define CONFIG_ADTS_MUXER 0
+%define CONFIG_ADX_MUXER 0
+%define CONFIG_AIFF_MUXER 0
+%define CONFIG_AMR_MUXER 0
+%define CONFIG_APNG_MUXER 0
+%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
+%define CONFIG_ASF_MUXER 0
+%define CONFIG_ASS_MUXER 0
+%define CONFIG_AST_MUXER 0
+%define CONFIG_ASF_STREAM_MUXER 0
+%define CONFIG_AU_MUXER 0
+%define CONFIG_AVI_MUXER 0
+%define CONFIG_AVM2_MUXER 0
+%define CONFIG_AVS2_MUXER 0
+%define CONFIG_BIT_MUXER 0
+%define CONFIG_CAF_MUXER 0
+%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
+%define CONFIG_CRC_MUXER 0
+%define CONFIG_DASH_MUXER 0
+%define CONFIG_DATA_MUXER 0
+%define CONFIG_DAUD_MUXER 0
+%define CONFIG_DIRAC_MUXER 0
+%define CONFIG_DNXHD_MUXER 0
+%define CONFIG_DTS_MUXER 0
+%define CONFIG_DV_MUXER 0
+%define CONFIG_EAC3_MUXER 0
+%define CONFIG_F4V_MUXER 0
+%define CONFIG_FFMETADATA_MUXER 0
+%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
+%define CONFIG_FILMSTRIP_MUXER 0
+%define CONFIG_FITS_MUXER 0
+%define CONFIG_FLAC_MUXER 0
+%define CONFIG_FLV_MUXER 0
+%define CONFIG_FRAMECRC_MUXER 0
+%define CONFIG_FRAMEHASH_MUXER 0
+%define CONFIG_FRAMEMD5_MUXER 0
+%define CONFIG_G722_MUXER 0
+%define CONFIG_G723_1_MUXER 0
+%define CONFIG_G726_MUXER 0
+%define CONFIG_G726LE_MUXER 0
+%define CONFIG_GIF_MUXER 0
+%define CONFIG_GSM_MUXER 0
+%define CONFIG_GXF_MUXER 0
+%define CONFIG_H261_MUXER 0
+%define CONFIG_H263_MUXER 0
+%define CONFIG_H264_MUXER 0
+%define CONFIG_HASH_MUXER 0
+%define CONFIG_HDS_MUXER 0
+%define CONFIG_HEVC_MUXER 0
+%define CONFIG_HLS_MUXER 0
+%define CONFIG_ICO_MUXER 0
+%define CONFIG_ILBC_MUXER 0
+%define CONFIG_IMAGE2_MUXER 0
+%define CONFIG_IMAGE2PIPE_MUXER 0
+%define CONFIG_IPOD_MUXER 0
+%define CONFIG_IRCAM_MUXER 0
+%define CONFIG_ISMV_MUXER 0
+%define CONFIG_IVF_MUXER 0
+%define CONFIG_JACOSUB_MUXER 0
+%define CONFIG_LATM_MUXER 0
+%define CONFIG_LRC_MUXER 0
+%define CONFIG_M4V_MUXER 0
+%define CONFIG_MD5_MUXER 0
+%define CONFIG_MATROSKA_MUXER 0
+%define CONFIG_MATROSKA_AUDIO_MUXER 0
+%define CONFIG_MICRODVD_MUXER 0
+%define CONFIG_MJPEG_MUXER 0
+%define CONFIG_MLP_MUXER 0
+%define CONFIG_MMF_MUXER 0
+%define CONFIG_MOV_MUXER 0
+%define CONFIG_MP2_MUXER 0
+%define CONFIG_MP3_MUXER 0
+%define CONFIG_MP4_MUXER 0
+%define CONFIG_MPEG1SYSTEM_MUXER 0
+%define CONFIG_MPEG1VCD_MUXER 0
+%define CONFIG_MPEG1VIDEO_MUXER 0
+%define CONFIG_MPEG2DVD_MUXER 0
+%define CONFIG_MPEG2SVCD_MUXER 0
+%define CONFIG_MPEG2VIDEO_MUXER 0
+%define CONFIG_MPEG2VOB_MUXER 0
+%define CONFIG_MPEGTS_MUXER 0
+%define CONFIG_MPJPEG_MUXER 0
+%define CONFIG_MXF_MUXER 0
+%define CONFIG_MXF_D10_MUXER 0
+%define CONFIG_MXF_OPATOM_MUXER 0
+%define CONFIG_NULL_MUXER 0
+%define CONFIG_NUT_MUXER 0
+%define CONFIG_OGA_MUXER 0
+%define CONFIG_OGG_MUXER 0
+%define CONFIG_OGV_MUXER 0
+%define CONFIG_OMA_MUXER 0
+%define CONFIG_OPUS_MUXER 0
+%define CONFIG_PCM_ALAW_MUXER 0
+%define CONFIG_PCM_MULAW_MUXER 0
+%define CONFIG_PCM_VIDC_MUXER 0
+%define CONFIG_PCM_F64BE_MUXER 0
+%define CONFIG_PCM_F64LE_MUXER 0
+%define CONFIG_PCM_F32BE_MUXER 0
+%define CONFIG_PCM_F32LE_MUXER 0
+%define CONFIG_PCM_S32BE_MUXER 0
+%define CONFIG_PCM_S32LE_MUXER 0
+%define CONFIG_PCM_S24BE_MUXER 0
+%define CONFIG_PCM_S24LE_MUXER 0
+%define CONFIG_PCM_S16BE_MUXER 0
+%define CONFIG_PCM_S16LE_MUXER 0
+%define CONFIG_PCM_S8_MUXER 0
+%define CONFIG_PCM_U32BE_MUXER 0
+%define CONFIG_PCM_U32LE_MUXER 0
+%define CONFIG_PCM_U24BE_MUXER 0
+%define CONFIG_PCM_U24LE_MUXER 0
+%define CONFIG_PCM_U16BE_MUXER 0
+%define CONFIG_PCM_U16LE_MUXER 0
+%define CONFIG_PCM_U8_MUXER 0
+%define CONFIG_PSP_MUXER 0
+%define CONFIG_RAWVIDEO_MUXER 0
+%define CONFIG_RM_MUXER 0
+%define CONFIG_ROQ_MUXER 0
+%define CONFIG_RSO_MUXER 0
+%define CONFIG_RTP_MUXER 0
+%define CONFIG_RTP_MPEGTS_MUXER 0
+%define CONFIG_RTSP_MUXER 0
+%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
+%define CONFIG_SCC_MUXER 0
+%define CONFIG_SEGAFILM_MUXER 0
+%define CONFIG_SEGMENT_MUXER 0
+%define CONFIG_STREAM_SEGMENT_MUXER 0
+%define CONFIG_SINGLEJPEG_MUXER 0
+%define CONFIG_SMJPEG_MUXER 0
+%define CONFIG_SMOOTHSTREAMING_MUXER 0
+%define CONFIG_SOX_MUXER 0
+%define CONFIG_SPX_MUXER 0
+%define CONFIG_SPDIF_MUXER 0
+%define CONFIG_SRT_MUXER 0
+%define CONFIG_STREAMHASH_MUXER 0
+%define CONFIG_SUP_MUXER 0
+%define CONFIG_SWF_MUXER 0
+%define CONFIG_TEE_MUXER 0
+%define CONFIG_TG2_MUXER 0
+%define CONFIG_TGP_MUXER 0
+%define CONFIG_MKVTIMESTAMP_V2_MUXER 0
+%define CONFIG_TRUEHD_MUXER 0
+%define CONFIG_TTA_MUXER 0
+%define CONFIG_UNCODEDFRAMECRC_MUXER 0
+%define CONFIG_VC1_MUXER 0
+%define CONFIG_VC1T_MUXER 0
+%define CONFIG_VOC_MUXER 0
+%define CONFIG_W64_MUXER 0
+%define CONFIG_WAV_MUXER 0
+%define CONFIG_WEBM_MUXER 0
+%define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
+%define CONFIG_WEBM_CHUNK_MUXER 0
+%define CONFIG_WEBP_MUXER 0
+%define CONFIG_WEBVTT_MUXER 0
+%define CONFIG_WTV_MUXER 0
+%define CONFIG_WV_MUXER 0
+%define CONFIG_YUV4MPEGPIPE_MUXER 0
+%define CONFIG_CHROMAPRINT_MUXER 0
+%define CONFIG_ASYNC_PROTOCOL 0
+%define CONFIG_BLURAY_PROTOCOL 0
+%define CONFIG_CACHE_PROTOCOL 0
+%define CONFIG_CONCAT_PROTOCOL 0
+%define CONFIG_CRYPTO_PROTOCOL 0
+%define CONFIG_DATA_PROTOCOL 0
+%define CONFIG_FFRTMPCRYPT_PROTOCOL 0
+%define CONFIG_FFRTMPHTTP_PROTOCOL 0
+%define CONFIG_FILE_PROTOCOL 0
+%define CONFIG_FTP_PROTOCOL 0
+%define CONFIG_GOPHER_PROTOCOL 0
+%define CONFIG_HLS_PROTOCOL 0
+%define CONFIG_HTTP_PROTOCOL 0
+%define CONFIG_HTTPPROXY_PROTOCOL 0
+%define CONFIG_HTTPS_PROTOCOL 0
+%define CONFIG_ICECAST_PROTOCOL 0
+%define CONFIG_MMSH_PROTOCOL 0
+%define CONFIG_MMST_PROTOCOL 0
+%define CONFIG_MD5_PROTOCOL 0
+%define CONFIG_PIPE_PROTOCOL 0
+%define CONFIG_PROMPEG_PROTOCOL 0
+%define CONFIG_RTMP_PROTOCOL 0
+%define CONFIG_RTMPE_PROTOCOL 0
+%define CONFIG_RTMPS_PROTOCOL 0
+%define CONFIG_RTMPT_PROTOCOL 0
+%define CONFIG_RTMPTE_PROTOCOL 0
+%define CONFIG_RTMPTS_PROTOCOL 0
+%define CONFIG_RTP_PROTOCOL 0
+%define CONFIG_SCTP_PROTOCOL 0
+%define CONFIG_SRTP_PROTOCOL 0
+%define CONFIG_SUBFILE_PROTOCOL 0
+%define CONFIG_TEE_PROTOCOL 0
+%define CONFIG_TCP_PROTOCOL 0
+%define CONFIG_TLS_PROTOCOL 0
+%define CONFIG_UDP_PROTOCOL 0
+%define CONFIG_UDPLITE_PROTOCOL 0
+%define CONFIG_UNIX_PROTOCOL 0
+%define CONFIG_LIBAMQP_PROTOCOL 0
+%define CONFIG_LIBRTMP_PROTOCOL 0
+%define CONFIG_LIBRTMPE_PROTOCOL 0
+%define CONFIG_LIBRTMPS_PROTOCOL 0
+%define CONFIG_LIBRTMPT_PROTOCOL 0
+%define CONFIG_LIBRTMPTE_PROTOCOL 0
+%define CONFIG_LIBSRT_PROTOCOL 0
+%define CONFIG_LIBSSH_PROTOCOL 0
+%define CONFIG_LIBSMBCLIENT_PROTOCOL 0
+%define CONFIG_LIBZMQ_PROTOCOL 0
diff --git a/fuchsia/config/default/x64/config.h b/fuchsia/config/default/x64/config.h
new file mode 100644
index 0000000..b9d250d
--- /dev/null
+++ b/fuchsia/config/default/x64/config.h
@@ -0,0 +1,2588 @@
+/* Automatically generated by configure - do not modify! */
+#ifndef FFMPEG_CONFIG_H
+#define FFMPEG_CONFIG_H
+#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/dalesat/fuchsia/third_party/opus/include --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-decoder=vp9 --enable-parser=vp9 --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-ldflags='-fuse-ld=lld' --disable-error-resilience"
+#define FFMPEG_LICENSE "LGPL version 2.1 or later"
+#define CONFIG_THIS_YEAR 2020
+#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
+#define CC_IDENT "Fuchsia clang version 11.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project dd484baffdf4a92e564c38a17d35a742e633b0e0)"
+#define av_restrict restrict
+#define EXTERN_PREFIX ""
+#define EXTERN_ASM 
+#define BUILDSUF ""
+#define SLIBSUF ".so"
+#define HAVE_MMX2 HAVE_MMXEXT
+#define SWS_MAX_FILTER_SIZE 256
+#define ARCH_AARCH64 0
+#define ARCH_ALPHA 0
+#define ARCH_ARM 0
+#define ARCH_AVR32 0
+#define ARCH_AVR32_AP 0
+#define ARCH_AVR32_UC 0
+#define ARCH_BFIN 0
+#define ARCH_IA64 0
+#define ARCH_M68K 0
+#define ARCH_MIPS 0
+#define ARCH_MIPS64 0
+#define ARCH_PARISC 0
+#define ARCH_PPC 0
+#define ARCH_PPC64 0
+#define ARCH_S390 0
+#define ARCH_SH4 0
+#define ARCH_SPARC 0
+#define ARCH_SPARC64 0
+#define ARCH_TILEGX 0
+#define ARCH_TILEPRO 0
+#define ARCH_TOMI 0
+#define ARCH_X86 1
+#define ARCH_X86_32 0
+#define ARCH_X86_64 1
+#define HAVE_ARMV5TE 0
+#define HAVE_ARMV6 0
+#define HAVE_ARMV6T2 0
+#define HAVE_ARMV8 0
+#define HAVE_NEON 0
+#define HAVE_VFP 0
+#define HAVE_VFPV3 0
+#define HAVE_SETEND 0
+#define HAVE_ALTIVEC 0
+#define HAVE_DCBZL 0
+#define HAVE_LDBRX 0
+#define HAVE_POWER8 0
+#define HAVE_PPC4XX 0
+#define HAVE_VSX 0
+#define HAVE_AESNI 1
+#define HAVE_AMD3DNOW 1
+#define HAVE_AMD3DNOWEXT 1
+#define HAVE_AVX 1
+#define HAVE_AVX2 1
+#define HAVE_AVX512 1
+#define HAVE_FMA3 1
+#define HAVE_FMA4 1
+#define HAVE_MMX 1
+#define HAVE_MMXEXT 1
+#define HAVE_SSE 1
+#define HAVE_SSE2 1
+#define HAVE_SSE3 1
+#define HAVE_SSE4 1
+#define HAVE_SSE42 1
+#define HAVE_SSSE3 1
+#define HAVE_XOP 1
+#define HAVE_CPUNOP 1
+#define HAVE_I686 1
+#define HAVE_MIPSFPU 0
+#define HAVE_MIPS32R2 0
+#define HAVE_MIPS32R5 0
+#define HAVE_MIPS64R2 0
+#define HAVE_MIPS32R6 0
+#define HAVE_MIPS64R6 0
+#define HAVE_MIPSDSP 0
+#define HAVE_MIPSDSPR2 0
+#define HAVE_MSA 0
+#define HAVE_MSA2 0
+#define HAVE_LOONGSON2 0
+#define HAVE_LOONGSON3 0
+#define HAVE_MMI 0
+#define HAVE_ARMV5TE_EXTERNAL 0
+#define HAVE_ARMV6_EXTERNAL 0
+#define HAVE_ARMV6T2_EXTERNAL 0
+#define HAVE_ARMV8_EXTERNAL 0
+#define HAVE_NEON_EXTERNAL 0
+#define HAVE_VFP_EXTERNAL 0
+#define HAVE_VFPV3_EXTERNAL 0
+#define HAVE_SETEND_EXTERNAL 0
+#define HAVE_ALTIVEC_EXTERNAL 0
+#define HAVE_DCBZL_EXTERNAL 0
+#define HAVE_LDBRX_EXTERNAL 0
+#define HAVE_POWER8_EXTERNAL 0
+#define HAVE_PPC4XX_EXTERNAL 0
+#define HAVE_VSX_EXTERNAL 0
+#define HAVE_AESNI_EXTERNAL 1
+#define HAVE_AMD3DNOW_EXTERNAL 1
+#define HAVE_AMD3DNOWEXT_EXTERNAL 1
+#define HAVE_AVX_EXTERNAL 1
+#define HAVE_AVX2_EXTERNAL 1
+#define HAVE_AVX512_EXTERNAL 0
+#define HAVE_FMA3_EXTERNAL 1
+#define HAVE_FMA4_EXTERNAL 1
+#define HAVE_MMX_EXTERNAL 1
+#define HAVE_MMXEXT_EXTERNAL 1
+#define HAVE_SSE_EXTERNAL 1
+#define HAVE_SSE2_EXTERNAL 1
+#define HAVE_SSE3_EXTERNAL 1
+#define HAVE_SSE4_EXTERNAL 1
+#define HAVE_SSE42_EXTERNAL 1
+#define HAVE_SSSE3_EXTERNAL 1
+#define HAVE_XOP_EXTERNAL 1
+#define HAVE_CPUNOP_EXTERNAL 0
+#define HAVE_I686_EXTERNAL 0
+#define HAVE_MIPSFPU_EXTERNAL 0
+#define HAVE_MIPS32R2_EXTERNAL 0
+#define HAVE_MIPS32R5_EXTERNAL 0
+#define HAVE_MIPS64R2_EXTERNAL 0
+#define HAVE_MIPS32R6_EXTERNAL 0
+#define HAVE_MIPS64R6_EXTERNAL 0
+#define HAVE_MIPSDSP_EXTERNAL 0
+#define HAVE_MIPSDSPR2_EXTERNAL 0
+#define HAVE_MSA_EXTERNAL 0
+#define HAVE_MSA2_EXTERNAL 0
+#define HAVE_LOONGSON2_EXTERNAL 0
+#define HAVE_LOONGSON3_EXTERNAL 0
+#define HAVE_MMI_EXTERNAL 0
+#define HAVE_ARMV5TE_INLINE 0
+#define HAVE_ARMV6_INLINE 0
+#define HAVE_ARMV6T2_INLINE 0
+#define HAVE_ARMV8_INLINE 0
+#define HAVE_NEON_INLINE 0
+#define HAVE_VFP_INLINE 0
+#define HAVE_VFPV3_INLINE 0
+#define HAVE_SETEND_INLINE 0
+#define HAVE_ALTIVEC_INLINE 0
+#define HAVE_DCBZL_INLINE 0
+#define HAVE_LDBRX_INLINE 0
+#define HAVE_POWER8_INLINE 0
+#define HAVE_PPC4XX_INLINE 0
+#define HAVE_VSX_INLINE 0
+#define HAVE_AESNI_INLINE 1
+#define HAVE_AMD3DNOW_INLINE 1
+#define HAVE_AMD3DNOWEXT_INLINE 1
+#define HAVE_AVX_INLINE 1
+#define HAVE_AVX2_INLINE 1
+#define HAVE_AVX512_INLINE 1
+#define HAVE_FMA3_INLINE 1
+#define HAVE_FMA4_INLINE 1
+#define HAVE_MMX_INLINE 1
+#define HAVE_MMXEXT_INLINE 1
+#define HAVE_SSE_INLINE 1
+#define HAVE_SSE2_INLINE 1
+#define HAVE_SSE3_INLINE 1
+#define HAVE_SSE4_INLINE 1
+#define HAVE_SSE42_INLINE 1
+#define HAVE_SSSE3_INLINE 1
+#define HAVE_XOP_INLINE 1
+#define HAVE_CPUNOP_INLINE 0
+#define HAVE_I686_INLINE 0
+#define HAVE_MIPSFPU_INLINE 0
+#define HAVE_MIPS32R2_INLINE 0
+#define HAVE_MIPS32R5_INLINE 0
+#define HAVE_MIPS64R2_INLINE 0
+#define HAVE_MIPS32R6_INLINE 0
+#define HAVE_MIPS64R6_INLINE 0
+#define HAVE_MIPSDSP_INLINE 0
+#define HAVE_MIPSDSPR2_INLINE 0
+#define HAVE_MSA_INLINE 0
+#define HAVE_MSA2_INLINE 0
+#define HAVE_LOONGSON2_INLINE 0
+#define HAVE_LOONGSON3_INLINE 0
+#define HAVE_MMI_INLINE 0
+#define HAVE_ALIGNED_STACK 1
+#define HAVE_FAST_64BIT 1
+#define HAVE_FAST_CLZ 1
+#define HAVE_FAST_CMOV 1
+#define HAVE_LOCAL_ALIGNED 1
+#define HAVE_SIMD_ALIGN_16 1
+#define HAVE_SIMD_ALIGN_32 1
+#define HAVE_SIMD_ALIGN_64 1
+#define HAVE_ATOMIC_CAS_PTR 0
+#define HAVE_MACHINE_RW_BARRIER 0
+#define HAVE_MEMORYBARRIER 0
+#define HAVE_MM_EMPTY 1
+#define HAVE_RDTSC 0
+#define HAVE_SEM_TIMEDWAIT 1
+#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
+#define HAVE_CABS 0
+#define HAVE_CEXP 0
+#define HAVE_INLINE_ASM 1
+#define HAVE_SYMVER 0
+#define HAVE_X86ASM 1
+#define HAVE_BIGENDIAN 0
+#define HAVE_FAST_UNALIGNED 1
+#define HAVE_ARPA_INET_H 0
+#define HAVE_ASM_TYPES_H 1
+#define HAVE_CDIO_PARANOIA_H 0
+#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
+#define HAVE_CUDA_H 0
+#define HAVE_DISPATCH_DISPATCH_H 0
+#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
+#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
+#define HAVE_DEV_IC_BT8XX_H 0
+#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
+#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
+#define HAVE_DIRECT_H 0
+#define HAVE_DIRENT_H 1
+#define HAVE_DXGIDEBUG_H 0
+#define HAVE_DXVA_H 0
+#define HAVE_ES2_GL_H 0
+#define HAVE_GSM_H 0
+#define HAVE_IO_H 0
+#define HAVE_LINUX_PERF_EVENT_H 1
+#define HAVE_MACHINE_IOCTL_BT848_H 0
+#define HAVE_MACHINE_IOCTL_METEOR_H 0
+#define HAVE_MALLOC_H 1
+#define HAVE_OPENCV2_CORE_CORE_C_H 0
+#define HAVE_OPENGL_GL3_H 0
+#define HAVE_POLL_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_SOUNDCARD_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_UN_H 1
+#define HAVE_SYS_VIDEOIO_H 0
+#define HAVE_TERMIOS_H 1
+#define HAVE_UDPLITE_H 0
+#define HAVE_UNISTD_H 1
+#define HAVE_VALGRIND_VALGRIND_H 0
+#define HAVE_WINDOWS_H 0
+#define HAVE_WINSOCK2_H 0
+#define HAVE_INTRINSICS_NEON 0
+#define HAVE_ATANF 1
+#define HAVE_ATAN2F 1
+#define HAVE_CBRT 1
+#define HAVE_CBRTF 1
+#define HAVE_COPYSIGN 1
+#define HAVE_COSF 1
+#define HAVE_ERF 1
+#define HAVE_EXP2 1
+#define HAVE_EXP2F 1
+#define HAVE_EXPF 1
+#define HAVE_HYPOT 1
+#define HAVE_ISFINITE 1
+#define HAVE_ISINF 1
+#define HAVE_ISNAN 1
+#define HAVE_LDEXPF 1
+#define HAVE_LLRINT 1
+#define HAVE_LLRINTF 1
+#define HAVE_LOG2 1
+#define HAVE_LOG2F 1
+#define HAVE_LOG10F 1
+#define HAVE_LRINT 1
+#define HAVE_LRINTF 1
+#define HAVE_POWF 1
+#define HAVE_RINT 1
+#define HAVE_ROUND 1
+#define HAVE_ROUNDF 1
+#define HAVE_SINF 1
+#define HAVE_TRUNC 1
+#define HAVE_TRUNCF 1
+#define HAVE_DOS_PATHS 0
+#define HAVE_LIBC_MSVCRT 0
+#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
+#define HAVE_SECTION_DATA_REL_RO 1
+#define HAVE_THREADS 1
+#define HAVE_UWP 0
+#define HAVE_WINRT 0
+#define HAVE_ACCESS 1
+#define HAVE_ALIGNED_MALLOC 0
+#define HAVE_ARC4RANDOM 0
+#define HAVE_CLOCK_GETTIME 1
+#define HAVE_CLOSESOCKET 0
+#define HAVE_COMMANDLINETOARGVW 0
+#define HAVE_FCNTL 1
+#define HAVE_GETADDRINFO 0
+#define HAVE_GETHRTIME 0
+#define HAVE_GETOPT 1
+#define HAVE_GETMODULEHANDLE 0
+#define HAVE_GETPROCESSAFFINITYMASK 0
+#define HAVE_GETPROCESSMEMORYINFO 0
+#define HAVE_GETPROCESSTIMES 0
+#define HAVE_GETRUSAGE 1
+#define HAVE_GETSTDHANDLE 0
+#define HAVE_GETSYSTEMTIMEASFILETIME 0
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GLOB 1
+#define HAVE_GLXGETPROCADDRESS 0
+#define HAVE_GMTIME_R 1
+#define HAVE_INET_ATON 0
+#define HAVE_ISATTY 1
+#define HAVE_KBHIT 0
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LSTAT 1
+#define HAVE_LZO1X_999_COMPRESS 0
+#define HAVE_MACH_ABSOLUTE_TIME 0
+#define HAVE_MAPVIEWOFFILE 0
+#define HAVE_MEMALIGN 1
+#define HAVE_MKSTEMP 1
+#define HAVE_MMAP 1
+#define HAVE_MPROTECT 1
+#define HAVE_NANOSLEEP 1
+#define HAVE_PEEKNAMEDPIPE 0
+#define HAVE_POSIX_MEMALIGN 1
+#define HAVE_PTHREAD_CANCEL 1
+#define HAVE_SCHED_GETAFFINITY 1
+#define HAVE_SECITEMIMPORT 0
+#define HAVE_SETCONSOLETEXTATTRIBUTE 0
+#define HAVE_SETCONSOLECTRLHANDLER 0
+#define HAVE_SETDLLDIRECTORY 0
+#define HAVE_SETMODE 0
+#define HAVE_SETRLIMIT 1
+#define HAVE_SLEEP 0
+#define HAVE_STRERROR_R 1
+#define HAVE_SYSCONF 1
+#define HAVE_SYSCTL 0
+#define HAVE_USLEEP 1
+#define HAVE_UTGETOSTYPEFROMSTRING 0
+#define HAVE_VIRTUALALLOC 0
+#define HAVE_WGLGETPROCADDRESS 0
+#define HAVE_BCRYPT 0
+#define HAVE_VAAPI_DRM 0
+#define HAVE_VAAPI_X11 0
+#define HAVE_VDPAU_X11 0
+#define HAVE_PTHREADS 1
+#define HAVE_OS2THREADS 0
+#define HAVE_W32THREADS 0
+#define HAVE_AS_ARCH_DIRECTIVE 0
+#define HAVE_AS_DN_DIRECTIVE 0
+#define HAVE_AS_FPU_DIRECTIVE 0
+#define HAVE_AS_FUNC 0
+#define HAVE_AS_OBJECT_ARCH 0
+#define HAVE_ASM_MOD_Q 0
+#define HAVE_BLOCKS_EXTENSION 0
+#define HAVE_EBP_AVAILABLE 1
+#define HAVE_EBX_AVAILABLE 1
+#define HAVE_GNU_AS 0
+#define HAVE_GNU_WINDRES 0
+#define HAVE_IBM_ASM 0
+#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+#define HAVE_INLINE_ASM_LABELS 1
+#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+#define HAVE_PRAGMA_DEPRECATED 1
+#define HAVE_RSYNC_CONTIMEOUT 1
+#define HAVE_SYMVER_ASM_LABEL 1
+#define HAVE_SYMVER_GNU_ASM 1
+#define HAVE_VFP_ARGS 0
+#define HAVE_XFORM_ASM 0
+#define HAVE_XMM_CLOBBERS 1
+#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
+#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
+#define HAVE_SOCKLEN_T 0
+#define HAVE_STRUCT_ADDRINFO 0
+#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
+#define HAVE_STRUCT_IP_MREQ_SOURCE 0
+#define HAVE_STRUCT_IPV6_MREQ 0
+#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
+#define HAVE_STRUCT_POLLFD 0
+#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
+#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
+#define HAVE_STRUCT_SOCKADDR_IN6 0
+#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
+#define HAVE_STRUCT_SOCKADDR_STORAGE 0
+#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
+#define HAVE_MAKEINFO 0
+#define HAVE_MAKEINFO_HTML 0
+#define HAVE_OPENCL_D3D11 0
+#define HAVE_OPENCL_DRM_ARM 0
+#define HAVE_OPENCL_DRM_BEIGNET 0
+#define HAVE_OPENCL_DXVA2 0
+#define HAVE_OPENCL_VAAPI_BEIGNET 0
+#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
+#define HAVE_PERL 1
+#define HAVE_POD2MAN 1
+#define HAVE_TEXI2HTML 0
+#define CONFIG_DOC 0
+#define CONFIG_HTMLPAGES 0
+#define CONFIG_MANPAGES 0
+#define CONFIG_PODPAGES 0
+#define CONFIG_TXTPAGES 0
+#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
+#define CONFIG_AVIO_READING_EXAMPLE 1
+#define CONFIG_DECODE_AUDIO_EXAMPLE 1
+#define CONFIG_DECODE_VIDEO_EXAMPLE 1
+#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
+#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
+#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
+#define CONFIG_EXTRACT_MVS_EXAMPLE 1
+#define CONFIG_FILTER_AUDIO_EXAMPLE 0
+#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
+#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
+#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
+#define CONFIG_HW_DECODE_EXAMPLE 1
+#define CONFIG_METADATA_EXAMPLE 1
+#define CONFIG_MUXING_EXAMPLE 0
+#define CONFIG_QSVDEC_EXAMPLE 0
+#define CONFIG_REMUXING_EXAMPLE 1
+#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
+#define CONFIG_SCALING_VIDEO_EXAMPLE 0
+#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
+#define CONFIG_TRANSCODING_EXAMPLE 0
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
+#define CONFIG_AVISYNTH 0
+#define CONFIG_FREI0R 0
+#define CONFIG_LIBCDIO 0
+#define CONFIG_LIBDAVS2 0
+#define CONFIG_LIBRUBBERBAND 0
+#define CONFIG_LIBVIDSTAB 0
+#define CONFIG_LIBX264 0
+#define CONFIG_LIBX265 0
+#define CONFIG_LIBXAVS 0
+#define CONFIG_LIBXAVS2 0
+#define CONFIG_LIBXVID 0
+#define CONFIG_DECKLINK 0
+#define CONFIG_LIBFDK_AAC 0
+#define CONFIG_OPENSSL 0
+#define CONFIG_LIBTLS 0
+#define CONFIG_GMP 0
+#define CONFIG_LIBARIBB24 0
+#define CONFIG_LIBLENSFUN 0
+#define CONFIG_LIBOPENCORE_AMRNB 0
+#define CONFIG_LIBOPENCORE_AMRWB 0
+#define CONFIG_LIBVMAF 0
+#define CONFIG_LIBVO_AMRWBENC 0
+#define CONFIG_MBEDTLS 0
+#define CONFIG_RKMPP 0
+#define CONFIG_LIBSMBCLIENT 0
+#define CONFIG_CHROMAPRINT 0
+#define CONFIG_GCRYPT 0
+#define CONFIG_GNUTLS 0
+#define CONFIG_JNI 0
+#define CONFIG_LADSPA 0
+#define CONFIG_LIBAOM 0
+#define CONFIG_LIBASS 0
+#define CONFIG_LIBBLURAY 0
+#define CONFIG_LIBBS2B 0
+#define CONFIG_LIBCACA 0
+#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
+#define CONFIG_LIBDAV1D 0
+#define CONFIG_LIBDC1394 0
+#define CONFIG_LIBDRM 0
+#define CONFIG_LIBFLITE 0
+#define CONFIG_LIBFONTCONFIG 0
+#define CONFIG_LIBFREETYPE 0
+#define CONFIG_LIBFRIBIDI 0
+#define CONFIG_LIBGLSLANG 0
+#define CONFIG_LIBGME 0
+#define CONFIG_LIBGSM 0
+#define CONFIG_LIBIEC61883 0
+#define CONFIG_LIBILBC 0
+#define CONFIG_LIBJACK 0
+#define CONFIG_LIBKLVANC 0
+#define CONFIG_LIBKVAZAAR 0
+#define CONFIG_LIBMODPLUG 0
+#define CONFIG_LIBMP3LAME 0
+#define CONFIG_LIBMYSOFA 0
+#define CONFIG_LIBOPENCV 0
+#define CONFIG_LIBOPENH264 0
+#define CONFIG_LIBOPENJPEG 0
+#define CONFIG_LIBOPENMPT 0
+#define CONFIG_LIBOPUS 1
+#define CONFIG_LIBPULSE 0
+#define CONFIG_LIBRABBITMQ 0
+#define CONFIG_LIBRAV1E 0
+#define CONFIG_LIBRSVG 0
+#define CONFIG_LIBRTMP 0
+#define CONFIG_LIBSHINE 0
+#define CONFIG_LIBSMBCLIENT 0
+#define CONFIG_LIBSNAPPY 0
+#define CONFIG_LIBSOXR 0
+#define CONFIG_LIBSPEEX 0
+#define CONFIG_LIBSRT 0
+#define CONFIG_LIBSSH 0
+#define CONFIG_LIBTENSORFLOW 0
+#define CONFIG_LIBTESSERACT 0
+#define CONFIG_LIBTHEORA 0
+#define CONFIG_LIBTWOLAME 0
+#define CONFIG_LIBV4L2 0
+#define CONFIG_LIBVORBIS 0
+#define CONFIG_LIBVPX 0
+#define CONFIG_LIBWAVPACK 0
+#define CONFIG_LIBWEBP 0
+#define CONFIG_LIBXML2 0
+#define CONFIG_LIBZIMG 0
+#define CONFIG_LIBZMQ 0
+#define CONFIG_LIBZVBI 0
+#define CONFIG_LV2 0
+#define CONFIG_MEDIACODEC 0
+#define CONFIG_OPENAL 0
+#define CONFIG_OPENGL 0
+#define CONFIG_POCKETSPHINX 0
+#define CONFIG_VAPOURSYNTH 0
+#define CONFIG_ALSA 0
+#define CONFIG_APPKIT 0
+#define CONFIG_AVFOUNDATION 0
+#define CONFIG_BZLIB 0
+#define CONFIG_COREIMAGE 0
+#define CONFIG_ICONV 0
+#define CONFIG_LIBXCB 0
+#define CONFIG_LIBXCB_SHM 0
+#define CONFIG_LIBXCB_SHAPE 0
+#define CONFIG_LIBXCB_XFIXES 0
+#define CONFIG_LZMA 0
+#define CONFIG_SCHANNEL 0
+#define CONFIG_SDL2 0
+#define CONFIG_SECURETRANSPORT 0
+#define CONFIG_SNDIO 0
+#define CONFIG_XLIB 0
+#define CONFIG_ZLIB 0
+#define CONFIG_CUDA_NVCC 0
+#define CONFIG_CUDA_SDK 0
+#define CONFIG_LIBNPP 0
+#define CONFIG_LIBMFX 0
+#define CONFIG_MMAL 0
+#define CONFIG_OMX 0
+#define CONFIG_OPENCL 0
+#define CONFIG_VULKAN 0
+#define CONFIG_AMF 0
+#define CONFIG_AUDIOTOOLBOX 0
+#define CONFIG_CRYSTALHD 0
+#define CONFIG_CUDA 0
+#define CONFIG_CUDA_LLVM 0
+#define CONFIG_CUVID 0
+#define CONFIG_D3D11VA 0
+#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
+#define CONFIG_NVDEC 0
+#define CONFIG_NVENC 0
+#define CONFIG_VAAPI 0
+#define CONFIG_VDPAU 0
+#define CONFIG_VIDEOTOOLBOX 0
+#define CONFIG_V4L2_M2M 0
+#define CONFIG_XVMC 0
+#define CONFIG_FTRAPV 0
+#define CONFIG_GRAY 0
+#define CONFIG_HARDCODED_TABLES 0
+#define CONFIG_OMX_RPI 0
+#define CONFIG_RUNTIME_CPUDETECT 1
+#define CONFIG_SAFE_BITSTREAM_READER 1
+#define CONFIG_SHARED 0
+#define CONFIG_SMALL 0
+#define CONFIG_STATIC 1
+#define CONFIG_SWSCALE_ALPHA 1
+#define CONFIG_GPL 0
+#define CONFIG_NONFREE 0
+#define CONFIG_VERSION3 0
+#define CONFIG_AVDEVICE 0
+#define CONFIG_AVFILTER 0
+#define CONFIG_SWSCALE 0
+#define CONFIG_POSTPROC 0
+#define CONFIG_AVFORMAT 1
+#define CONFIG_AVCODEC 1
+#define CONFIG_SWRESAMPLE 0
+#define CONFIG_AVRESAMPLE 0
+#define CONFIG_AVUTIL 1
+#define CONFIG_FFPLAY 0
+#define CONFIG_FFPROBE 0
+#define CONFIG_FFMPEG 0
+#define CONFIG_DCT 1
+#define CONFIG_DWT 0
+#define CONFIG_ERROR_RESILIENCE 0
+#define CONFIG_FAAN 0
+#define CONFIG_FAST_UNALIGNED 1
+#define CONFIG_FFT 1
+#define CONFIG_LSP 0
+#define CONFIG_LZO 0
+#define CONFIG_MDCT 1
+#define CONFIG_PIXELUTILS 0
+#define CONFIG_NETWORK 0
+#define CONFIG_RDFT 1
+#define CONFIG_AUTODETECT 0
+#define CONFIG_FONTCONFIG 0
+#define CONFIG_LARGE_TESTS 1
+#define CONFIG_LINUX_PERF 0
+#define CONFIG_MEMORY_POISONING 0
+#define CONFIG_NEON_CLOBBER_TEST 0
+#define CONFIG_OSSFUZZ 0
+#define CONFIG_PIC 1
+#define CONFIG_THUMB 0
+#define CONFIG_VALGRIND_BACKTRACE 0
+#define CONFIG_XMM_CLOBBER_TEST 0
+#define CONFIG_BSFS 1
+#define CONFIG_DECODERS 1
+#define CONFIG_ENCODERS 0
+#define CONFIG_HWACCELS 0
+#define CONFIG_PARSERS 1
+#define CONFIG_INDEVS 0
+#define CONFIG_OUTDEVS 0
+#define CONFIG_FILTERS 0
+#define CONFIG_DEMUXERS 1
+#define CONFIG_MUXERS 0
+#define CONFIG_PROTOCOLS 0
+#define CONFIG_AANDCTTABLES 0
+#define CONFIG_AC3DSP 0
+#define CONFIG_ADTS_HEADER 0
+#define CONFIG_AUDIO_FRAME_QUEUE 1
+#define CONFIG_AUDIODSP 0
+#define CONFIG_BLOCKDSP 0
+#define CONFIG_BSWAPDSP 0
+#define CONFIG_CABAC 0
+#define CONFIG_CBS 0
+#define CONFIG_CBS_AV1 0
+#define CONFIG_CBS_H264 0
+#define CONFIG_CBS_H265 0
+#define CONFIG_CBS_JPEG 0
+#define CONFIG_CBS_MPEG2 0
+#define CONFIG_CBS_VP9 0
+#define CONFIG_DIRAC_PARSE 1
+#define CONFIG_DNN 0
+#define CONFIG_DVPROFILE 0
+#define CONFIG_EXIF 0
+#define CONFIG_FAANDCT 0
+#define CONFIG_FAANIDCT 0
+#define CONFIG_FDCTDSP 0
+#define CONFIG_FLACDSP 1
+#define CONFIG_FMTCONVERT 0
+#define CONFIG_FRAME_THREAD_ENCODER 0
+#define CONFIG_G722DSP 0
+#define CONFIG_GOLOMB 1
+#define CONFIG_GPLV3 0
+#define CONFIG_H263DSP 0
+#define CONFIG_H264CHROMA 0
+#define CONFIG_H264DSP 0
+#define CONFIG_H264PARSE 0
+#define CONFIG_H264PRED 1
+#define CONFIG_H264QPEL 0
+#define CONFIG_HEVCPARSE 0
+#define CONFIG_HPELDSP 1
+#define CONFIG_HUFFMAN 0
+#define CONFIG_HUFFYUVDSP 0
+#define CONFIG_HUFFYUVENCDSP 0
+#define CONFIG_IDCTDSP 0
+#define CONFIG_IIRFILTER 0
+#define CONFIG_MDCT15 0
+#define CONFIG_INTRAX8 0
+#define CONFIG_ISO_MEDIA 1
+#define CONFIG_IVIDSP 0
+#define CONFIG_JPEGTABLES 0
+#define CONFIG_LGPLV3 0
+#define CONFIG_LIBX262 0
+#define CONFIG_LLAUDDSP 0
+#define CONFIG_LLVIDDSP 0
+#define CONFIG_LLVIDENCDSP 0
+#define CONFIG_LPC 0
+#define CONFIG_LZF 0
+#define CONFIG_ME_CMP 0
+#define CONFIG_MPEG_ER 0
+#define CONFIG_MPEGAUDIO 1
+#define CONFIG_MPEGAUDIODSP 1
+#define CONFIG_MPEGAUDIOHEADER 1
+#define CONFIG_MPEGVIDEO 0
+#define CONFIG_MPEGVIDEOENC 0
+#define CONFIG_MSS34DSP 0
+#define CONFIG_PIXBLOCKDSP 0
+#define CONFIG_QPELDSP 0
+#define CONFIG_QSV 0
+#define CONFIG_QSVDEC 0
+#define CONFIG_QSVENC 0
+#define CONFIG_QSVVPP 0
+#define CONFIG_RANGECODER 0
+#define CONFIG_RIFFDEC 1
+#define CONFIG_RIFFENC 0
+#define CONFIG_RTPDEC 0
+#define CONFIG_RTPENC_CHAIN 0
+#define CONFIG_RV34DSP 0
+#define CONFIG_SCENE_SAD 0
+#define CONFIG_SINEWIN 0
+#define CONFIG_SNAPPY 0
+#define CONFIG_SRTP 0
+#define CONFIG_STARTCODE 0
+#define CONFIG_TEXTUREDSP 0
+#define CONFIG_TEXTUREDSPENC 0
+#define CONFIG_TPELDSP 0
+#define CONFIG_VAAPI_1 0
+#define CONFIG_VAAPI_ENCODE 0
+#define CONFIG_VC1DSP 0
+#define CONFIG_VIDEODSP 1
+#define CONFIG_VP3DSP 1
+#define CONFIG_VP56DSP 0
+#define CONFIG_VP8DSP 1
+#define CONFIG_WMA_FREQS 0
+#define CONFIG_WMV2DSP 0
+#define CONFIG_AAC_ADTSTOASC_BSF 0
+#define CONFIG_AV1_FRAME_MERGE_BSF 0
+#define CONFIG_AV1_FRAME_SPLIT_BSF 0
+#define CONFIG_AV1_METADATA_BSF 0
+#define CONFIG_CHOMP_BSF 0
+#define CONFIG_DUMP_EXTRADATA_BSF 0
+#define CONFIG_DCA_CORE_BSF 0
+#define CONFIG_EAC3_CORE_BSF 0
+#define CONFIG_EXTRACT_EXTRADATA_BSF 0
+#define CONFIG_FILTER_UNITS_BSF 0
+#define CONFIG_H264_METADATA_BSF 0
+#define CONFIG_H264_MP4TOANNEXB_BSF 0
+#define CONFIG_H264_REDUNDANT_PPS_BSF 0
+#define CONFIG_HAPQA_EXTRACT_BSF 0
+#define CONFIG_HEVC_METADATA_BSF 0
+#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
+#define CONFIG_IMX_DUMP_HEADER_BSF 0
+#define CONFIG_MJPEG2JPEG_BSF 0
+#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
+#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
+#define CONFIG_MPEG2_METADATA_BSF 0
+#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
+#define CONFIG_MOV2TEXTSUB_BSF 0
+#define CONFIG_NOISE_BSF 0
+#define CONFIG_NULL_BSF 1
+#define CONFIG_PRORES_METADATA_BSF 0
+#define CONFIG_REMOVE_EXTRADATA_BSF 0
+#define CONFIG_TEXT2MOVSUB_BSF 0
+#define CONFIG_TRACE_HEADERS_BSF 0
+#define CONFIG_TRUEHD_CORE_BSF 0
+#define CONFIG_VP9_METADATA_BSF 0
+#define CONFIG_VP9_RAW_REORDER_BSF 0
+#define CONFIG_VP9_SUPERFRAME_BSF 0
+#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
+#define CONFIG_AASC_DECODER 0
+#define CONFIG_AIC_DECODER 0
+#define CONFIG_ALIAS_PIX_DECODER 0
+#define CONFIG_AGM_DECODER 0
+#define CONFIG_AMV_DECODER 0
+#define CONFIG_ANM_DECODER 0
+#define CONFIG_ANSI_DECODER 0
+#define CONFIG_APNG_DECODER 0
+#define CONFIG_ARBC_DECODER 0
+#define CONFIG_ASV1_DECODER 0
+#define CONFIG_ASV2_DECODER 0
+#define CONFIG_AURA_DECODER 0
+#define CONFIG_AURA2_DECODER 0
+#define CONFIG_AVRP_DECODER 0
+#define CONFIG_AVRN_DECODER 0
+#define CONFIG_AVS_DECODER 0
+#define CONFIG_AVUI_DECODER 0
+#define CONFIG_AYUV_DECODER 0
+#define CONFIG_BETHSOFTVID_DECODER 0
+#define CONFIG_BFI_DECODER 0
+#define CONFIG_BINK_DECODER 0
+#define CONFIG_BITPACKED_DECODER 0
+#define CONFIG_BMP_DECODER 0
+#define CONFIG_BMV_VIDEO_DECODER 0
+#define CONFIG_BRENDER_PIX_DECODER 0
+#define CONFIG_C93_DECODER 0
+#define CONFIG_CAVS_DECODER 0
+#define CONFIG_CDGRAPHICS_DECODER 0
+#define CONFIG_CDTOONS_DECODER 0
+#define CONFIG_CDXL_DECODER 0
+#define CONFIG_CFHD_DECODER 0
+#define CONFIG_CINEPAK_DECODER 0
+#define CONFIG_CLEARVIDEO_DECODER 0
+#define CONFIG_CLJR_DECODER 0
+#define CONFIG_CLLC_DECODER 0
+#define CONFIG_COMFORTNOISE_DECODER 0
+#define CONFIG_CPIA_DECODER 0
+#define CONFIG_CSCD_DECODER 0
+#define CONFIG_CYUV_DECODER 0
+#define CONFIG_DDS_DECODER 0
+#define CONFIG_DFA_DECODER 0
+#define CONFIG_DIRAC_DECODER 0
+#define CONFIG_DNXHD_DECODER 0
+#define CONFIG_DPX_DECODER 0
+#define CONFIG_DSICINVIDEO_DECODER 0
+#define CONFIG_DVAUDIO_DECODER 0
+#define CONFIG_DVVIDEO_DECODER 0
+#define CONFIG_DXA_DECODER 0
+#define CONFIG_DXTORY_DECODER 0
+#define CONFIG_DXV_DECODER 0
+#define CONFIG_EACMV_DECODER 0
+#define CONFIG_EAMAD_DECODER 0
+#define CONFIG_EATGQ_DECODER 0
+#define CONFIG_EATGV_DECODER 0
+#define CONFIG_EATQI_DECODER 0
+#define CONFIG_EIGHTBPS_DECODER 0
+#define CONFIG_EIGHTSVX_EXP_DECODER 0
+#define CONFIG_EIGHTSVX_FIB_DECODER 0
+#define CONFIG_ESCAPE124_DECODER 0
+#define CONFIG_ESCAPE130_DECODER 0
+#define CONFIG_EXR_DECODER 0
+#define CONFIG_FFV1_DECODER 0
+#define CONFIG_FFVHUFF_DECODER 0
+#define CONFIG_FIC_DECODER 0
+#define CONFIG_FITS_DECODER 0
+#define CONFIG_FLASHSV_DECODER 0
+#define CONFIG_FLASHSV2_DECODER 0
+#define CONFIG_FLIC_DECODER 0
+#define CONFIG_FLV_DECODER 0
+#define CONFIG_FMVC_DECODER 0
+#define CONFIG_FOURXM_DECODER 0
+#define CONFIG_FRAPS_DECODER 0
+#define CONFIG_FRWU_DECODER 0
+#define CONFIG_G2M_DECODER 0
+#define CONFIG_GDV_DECODER 0
+#define CONFIG_GIF_DECODER 0
+#define CONFIG_H261_DECODER 0
+#define CONFIG_H263_DECODER 0
+#define CONFIG_H263I_DECODER 0
+#define CONFIG_H263P_DECODER 0
+#define CONFIG_H263_V4L2M2M_DECODER 0
+#define CONFIG_H264_DECODER 0
+#define CONFIG_H264_CRYSTALHD_DECODER 0
+#define CONFIG_H264_V4L2M2M_DECODER 0
+#define CONFIG_H264_MEDIACODEC_DECODER 0
+#define CONFIG_H264_MMAL_DECODER 0
+#define CONFIG_H264_QSV_DECODER 0
+#define CONFIG_H264_RKMPP_DECODER 0
+#define CONFIG_HAP_DECODER 0
+#define CONFIG_HEVC_DECODER 0
+#define CONFIG_HEVC_QSV_DECODER 0
+#define CONFIG_HEVC_RKMPP_DECODER 0
+#define CONFIG_HEVC_V4L2M2M_DECODER 0
+#define CONFIG_HNM4_VIDEO_DECODER 0
+#define CONFIG_HQ_HQA_DECODER 0
+#define CONFIG_HQX_DECODER 0
+#define CONFIG_HUFFYUV_DECODER 0
+#define CONFIG_HYMT_DECODER 0
+#define CONFIG_IDCIN_DECODER 0
+#define CONFIG_IFF_ILBM_DECODER 0
+#define CONFIG_IMM4_DECODER 0
+#define CONFIG_IMM5_DECODER 0
+#define CONFIG_INDEO2_DECODER 0
+#define CONFIG_INDEO3_DECODER 0
+#define CONFIG_INDEO4_DECODER 0
+#define CONFIG_INDEO5_DECODER 0
+#define CONFIG_INTERPLAY_VIDEO_DECODER 0
+#define CONFIG_JPEG2000_DECODER 0
+#define CONFIG_JPEGLS_DECODER 0
+#define CONFIG_JV_DECODER 0
+#define CONFIG_KGV1_DECODER 0
+#define CONFIG_KMVC_DECODER 0
+#define CONFIG_LAGARITH_DECODER 0
+#define CONFIG_LOCO_DECODER 0
+#define CONFIG_LSCR_DECODER 0
+#define CONFIG_M101_DECODER 0
+#define CONFIG_MAGICYUV_DECODER 0
+#define CONFIG_MDEC_DECODER 0
+#define CONFIG_MIMIC_DECODER 0
+#define CONFIG_MJPEG_DECODER 0
+#define CONFIG_MJPEGB_DECODER 0
+#define CONFIG_MMVIDEO_DECODER 0
+#define CONFIG_MOTIONPIXELS_DECODER 0
+#define CONFIG_MPEG1VIDEO_DECODER 0
+#define CONFIG_MPEG2VIDEO_DECODER 0
+#define CONFIG_MPEG4_DECODER 0
+#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
+#define CONFIG_MPEG4_V4L2M2M_DECODER 0
+#define CONFIG_MPEG4_MMAL_DECODER 0
+#define CONFIG_MPEGVIDEO_DECODER 0
+#define CONFIG_MPEG1_V4L2M2M_DECODER 0
+#define CONFIG_MPEG2_MMAL_DECODER 0
+#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
+#define CONFIG_MPEG2_V4L2M2M_DECODER 0
+#define CONFIG_MPEG2_QSV_DECODER 0
+#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
+#define CONFIG_MSA1_DECODER 0
+#define CONFIG_MSCC_DECODER 0
+#define CONFIG_MSMPEG4V1_DECODER 0
+#define CONFIG_MSMPEG4V2_DECODER 0
+#define CONFIG_MSMPEG4V3_DECODER 0
+#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
+#define CONFIG_MSRLE_DECODER 0
+#define CONFIG_MSS1_DECODER 0
+#define CONFIG_MSS2_DECODER 0
+#define CONFIG_MSVIDEO1_DECODER 0
+#define CONFIG_MSZH_DECODER 0
+#define CONFIG_MTS2_DECODER 0
+#define CONFIG_MV30_DECODER 0
+#define CONFIG_MVC1_DECODER 0
+#define CONFIG_MVC2_DECODER 0
+#define CONFIG_MVDV_DECODER 0
+#define CONFIG_MVHA_DECODER 0
+#define CONFIG_MWSC_DECODER 0
+#define CONFIG_MXPEG_DECODER 0
+#define CONFIG_NUV_DECODER 0
+#define CONFIG_PAF_VIDEO_DECODER 0
+#define CONFIG_PAM_DECODER 0
+#define CONFIG_PBM_DECODER 0
+#define CONFIG_PCX_DECODER 0
+#define CONFIG_PGM_DECODER 0
+#define CONFIG_PGMYUV_DECODER 0
+#define CONFIG_PICTOR_DECODER 0
+#define CONFIG_PIXLET_DECODER 0
+#define CONFIG_PNG_DECODER 0
+#define CONFIG_PPM_DECODER 0
+#define CONFIG_PRORES_DECODER 0
+#define CONFIG_PROSUMER_DECODER 0
+#define CONFIG_PSD_DECODER 0
+#define CONFIG_PTX_DECODER 0
+#define CONFIG_QDRAW_DECODER 0
+#define CONFIG_QPEG_DECODER 0
+#define CONFIG_QTRLE_DECODER 0
+#define CONFIG_R10K_DECODER 0
+#define CONFIG_R210_DECODER 0
+#define CONFIG_RASC_DECODER 0
+#define CONFIG_RAWVIDEO_DECODER 0
+#define CONFIG_RL2_DECODER 0
+#define CONFIG_ROQ_DECODER 0
+#define CONFIG_RPZA_DECODER 0
+#define CONFIG_RSCC_DECODER 0
+#define CONFIG_RV10_DECODER 0
+#define CONFIG_RV20_DECODER 0
+#define CONFIG_RV30_DECODER 0
+#define CONFIG_RV40_DECODER 0
+#define CONFIG_S302M_DECODER 0
+#define CONFIG_SANM_DECODER 0
+#define CONFIG_SCPR_DECODER 0
+#define CONFIG_SCREENPRESSO_DECODER 0
+#define CONFIG_SGI_DECODER 0
+#define CONFIG_SGIRLE_DECODER 0
+#define CONFIG_SHEERVIDEO_DECODER 0
+#define CONFIG_SMACKER_DECODER 0
+#define CONFIG_SMC_DECODER 0
+#define CONFIG_SMVJPEG_DECODER 0
+#define CONFIG_SNOW_DECODER 0
+#define CONFIG_SP5X_DECODER 0
+#define CONFIG_SPEEDHQ_DECODER 0
+#define CONFIG_SRGC_DECODER 0
+#define CONFIG_SUNRAST_DECODER 0
+#define CONFIG_SVQ1_DECODER 0
+#define CONFIG_SVQ3_DECODER 0
+#define CONFIG_TARGA_DECODER 0
+#define CONFIG_TARGA_Y216_DECODER 0
+#define CONFIG_TDSC_DECODER 0
+#define CONFIG_THEORA_DECODER 1
+#define CONFIG_THP_DECODER 0
+#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
+#define CONFIG_TIFF_DECODER 0
+#define CONFIG_TMV_DECODER 0
+#define CONFIG_TRUEMOTION1_DECODER 0
+#define CONFIG_TRUEMOTION2_DECODER 0
+#define CONFIG_TRUEMOTION2RT_DECODER 0
+#define CONFIG_TSCC_DECODER 0
+#define CONFIG_TSCC2_DECODER 0
+#define CONFIG_TXD_DECODER 0
+#define CONFIG_ULTI_DECODER 0
+#define CONFIG_UTVIDEO_DECODER 0
+#define CONFIG_V210_DECODER 0
+#define CONFIG_V210X_DECODER 0
+#define CONFIG_V308_DECODER 0
+#define CONFIG_V408_DECODER 0
+#define CONFIG_V410_DECODER 0
+#define CONFIG_VB_DECODER 0
+#define CONFIG_VBLE_DECODER 0
+#define CONFIG_VC1_DECODER 0
+#define CONFIG_VC1_CRYSTALHD_DECODER 0
+#define CONFIG_VC1IMAGE_DECODER 0
+#define CONFIG_VC1_MMAL_DECODER 0
+#define CONFIG_VC1_QSV_DECODER 0
+#define CONFIG_VC1_V4L2M2M_DECODER 0
+#define CONFIG_VCR1_DECODER 0
+#define CONFIG_VMDVIDEO_DECODER 0
+#define CONFIG_VMNC_DECODER 0
+#define CONFIG_VP3_DECODER 1
+#define CONFIG_VP4_DECODER 0
+#define CONFIG_VP5_DECODER 0
+#define CONFIG_VP6_DECODER 0
+#define CONFIG_VP6A_DECODER 0
+#define CONFIG_VP6F_DECODER 0
+#define CONFIG_VP7_DECODER 0
+#define CONFIG_VP8_DECODER 1
+#define CONFIG_VP8_RKMPP_DECODER 0
+#define CONFIG_VP8_V4L2M2M_DECODER 0
+#define CONFIG_VP9_DECODER 1
+#define CONFIG_VP9_RKMPP_DECODER 0
+#define CONFIG_VP9_V4L2M2M_DECODER 0
+#define CONFIG_VQA_DECODER 0
+#define CONFIG_WEBP_DECODER 0
+#define CONFIG_WCMV_DECODER 0
+#define CONFIG_WRAPPED_AVFRAME_DECODER 0
+#define CONFIG_WMV1_DECODER 0
+#define CONFIG_WMV2_DECODER 0
+#define CONFIG_WMV3_DECODER 0
+#define CONFIG_WMV3_CRYSTALHD_DECODER 0
+#define CONFIG_WMV3IMAGE_DECODER 0
+#define CONFIG_WNV1_DECODER 0
+#define CONFIG_XAN_WC3_DECODER 0
+#define CONFIG_XAN_WC4_DECODER 0
+#define CONFIG_XBM_DECODER 0
+#define CONFIG_XFACE_DECODER 0
+#define CONFIG_XL_DECODER 0
+#define CONFIG_XPM_DECODER 0
+#define CONFIG_XWD_DECODER 0
+#define CONFIG_Y41P_DECODER 0
+#define CONFIG_YLC_DECODER 0
+#define CONFIG_YOP_DECODER 0
+#define CONFIG_YUV4_DECODER 0
+#define CONFIG_ZERO12V_DECODER 0
+#define CONFIG_ZEROCODEC_DECODER 0
+#define CONFIG_ZLIB_DECODER 0
+#define CONFIG_ZMBV_DECODER 0
+#define CONFIG_AAC_DECODER 0
+#define CONFIG_AAC_FIXED_DECODER 0
+#define CONFIG_AAC_LATM_DECODER 0
+#define CONFIG_AC3_DECODER 0
+#define CONFIG_AC3_FIXED_DECODER 0
+#define CONFIG_ACELP_KELVIN_DECODER 0
+#define CONFIG_ALAC_DECODER 0
+#define CONFIG_ALS_DECODER 0
+#define CONFIG_AMRNB_DECODER 0
+#define CONFIG_AMRWB_DECODER 0
+#define CONFIG_APE_DECODER 0
+#define CONFIG_APTX_DECODER 1
+#define CONFIG_APTX_HD_DECODER 0
+#define CONFIG_ATRAC1_DECODER 0
+#define CONFIG_ATRAC3_DECODER 0
+#define CONFIG_ATRAC3AL_DECODER 0
+#define CONFIG_ATRAC3P_DECODER 0
+#define CONFIG_ATRAC3PAL_DECODER 0
+#define CONFIG_ATRAC9_DECODER 0
+#define CONFIG_BINKAUDIO_DCT_DECODER 0
+#define CONFIG_BINKAUDIO_RDFT_DECODER 0
+#define CONFIG_BMV_AUDIO_DECODER 0
+#define CONFIG_COOK_DECODER 0
+#define CONFIG_DCA_DECODER 0
+#define CONFIG_DOLBY_E_DECODER 0
+#define CONFIG_DSD_LSBF_DECODER 0
+#define CONFIG_DSD_MSBF_DECODER 0
+#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
+#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
+#define CONFIG_DSICINAUDIO_DECODER 0
+#define CONFIG_DSS_SP_DECODER 0
+#define CONFIG_DST_DECODER 0
+#define CONFIG_EAC3_DECODER 0
+#define CONFIG_EVRC_DECODER 0
+#define CONFIG_FFWAVESYNTH_DECODER 0
+#define CONFIG_FLAC_DECODER 1
+#define CONFIG_G723_1_DECODER 0
+#define CONFIG_G729_DECODER 0
+#define CONFIG_GSM_DECODER 0
+#define CONFIG_GSM_MS_DECODER 0
+#define CONFIG_HCA_DECODER 0
+#define CONFIG_HCOM_DECODER 0
+#define CONFIG_IAC_DECODER 0
+#define CONFIG_ILBC_DECODER 0
+#define CONFIG_IMC_DECODER 0
+#define CONFIG_INTERPLAY_ACM_DECODER 0
+#define CONFIG_MACE3_DECODER 0
+#define CONFIG_MACE6_DECODER 0
+#define CONFIG_METASOUND_DECODER 0
+#define CONFIG_MLP_DECODER 0
+#define CONFIG_MP1_DECODER 0
+#define CONFIG_MP1FLOAT_DECODER 0
+#define CONFIG_MP2_DECODER 0
+#define CONFIG_MP2FLOAT_DECODER 0
+#define CONFIG_MP3FLOAT_DECODER 0
+#define CONFIG_MP3_DECODER 1
+#define CONFIG_MP3ADUFLOAT_DECODER 0
+#define CONFIG_MP3ADU_DECODER 0
+#define CONFIG_MP3ON4FLOAT_DECODER 0
+#define CONFIG_MP3ON4_DECODER 0
+#define CONFIG_MPC7_DECODER 0
+#define CONFIG_MPC8_DECODER 0
+#define CONFIG_NELLYMOSER_DECODER 0
+#define CONFIG_ON2AVC_DECODER 0
+#define CONFIG_OPUS_DECODER 0
+#define CONFIG_PAF_AUDIO_DECODER 0
+#define CONFIG_QCELP_DECODER 0
+#define CONFIG_QDM2_DECODER 0
+#define CONFIG_QDMC_DECODER 0
+#define CONFIG_RA_144_DECODER 0
+#define CONFIG_RA_288_DECODER 0
+#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 1
+#define CONFIG_SHORTEN_DECODER 0
+#define CONFIG_SIPR_DECODER 0
+#define CONFIG_SIREN_DECODER 0
+#define CONFIG_SMACKAUD_DECODER 0
+#define CONFIG_SONIC_DECODER 0
+#define CONFIG_TAK_DECODER 0
+#define CONFIG_TRUEHD_DECODER 0
+#define CONFIG_TRUESPEECH_DECODER 0
+#define CONFIG_TTA_DECODER 0
+#define CONFIG_TWINVQ_DECODER 0
+#define CONFIG_VMDAUDIO_DECODER 0
+#define CONFIG_VORBIS_DECODER 1
+#define CONFIG_WAVPACK_DECODER 0
+#define CONFIG_WMALOSSLESS_DECODER 0
+#define CONFIG_WMAPRO_DECODER 0
+#define CONFIG_WMAV1_DECODER 0
+#define CONFIG_WMAV2_DECODER 0
+#define CONFIG_WMAVOICE_DECODER 0
+#define CONFIG_WS_SND1_DECODER 0
+#define CONFIG_XMA1_DECODER 0
+#define CONFIG_XMA2_DECODER 0
+#define CONFIG_PCM_ALAW_DECODER 1
+#define CONFIG_PCM_BLURAY_DECODER 0
+#define CONFIG_PCM_DVD_DECODER 0
+#define CONFIG_PCM_F16LE_DECODER 0
+#define CONFIG_PCM_F24LE_DECODER 0
+#define CONFIG_PCM_F32BE_DECODER 0
+#define CONFIG_PCM_F32LE_DECODER 1
+#define CONFIG_PCM_F64BE_DECODER 0
+#define CONFIG_PCM_F64LE_DECODER 0
+#define CONFIG_PCM_LXF_DECODER 0
+#define CONFIG_PCM_MULAW_DECODER 1
+#define CONFIG_PCM_S8_DECODER 0
+#define CONFIG_PCM_S8_PLANAR_DECODER 0
+#define CONFIG_PCM_S16BE_DECODER 1
+#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
+#define CONFIG_PCM_S16LE_DECODER 1
+#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S24BE_DECODER 1
+#define CONFIG_PCM_S24DAUD_DECODER 0
+#define CONFIG_PCM_S24LE_DECODER 1
+#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S32BE_DECODER 0
+#define CONFIG_PCM_S32LE_DECODER 1
+#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S64BE_DECODER 0
+#define CONFIG_PCM_S64LE_DECODER 0
+#define CONFIG_PCM_U8_DECODER 1
+#define CONFIG_PCM_U16BE_DECODER 0
+#define CONFIG_PCM_U16LE_DECODER 0
+#define CONFIG_PCM_U24BE_DECODER 0
+#define CONFIG_PCM_U24LE_DECODER 0
+#define CONFIG_PCM_U32BE_DECODER 0
+#define CONFIG_PCM_U32LE_DECODER 0
+#define CONFIG_PCM_VIDC_DECODER 0
+#define CONFIG_DERF_DPCM_DECODER 0
+#define CONFIG_GREMLIN_DPCM_DECODER 0
+#define CONFIG_INTERPLAY_DPCM_DECODER 0
+#define CONFIG_ROQ_DPCM_DECODER 0
+#define CONFIG_SDX2_DPCM_DECODER 0
+#define CONFIG_SOL_DPCM_DECODER 0
+#define CONFIG_XAN_DPCM_DECODER 0
+#define CONFIG_ADPCM_4XM_DECODER 0
+#define CONFIG_ADPCM_ADX_DECODER 0
+#define CONFIG_ADPCM_AFC_DECODER 0
+#define CONFIG_ADPCM_AGM_DECODER 0
+#define CONFIG_ADPCM_AICA_DECODER 0
+#define CONFIG_ADPCM_ARGO_DECODER 0
+#define CONFIG_ADPCM_CT_DECODER 0
+#define CONFIG_ADPCM_DTK_DECODER 0
+#define CONFIG_ADPCM_EA_DECODER 0
+#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
+#define CONFIG_ADPCM_EA_R1_DECODER 0
+#define CONFIG_ADPCM_EA_R2_DECODER 0
+#define CONFIG_ADPCM_EA_R3_DECODER 0
+#define CONFIG_ADPCM_EA_XAS_DECODER 0
+#define CONFIG_ADPCM_G722_DECODER 0
+#define CONFIG_ADPCM_G726_DECODER 0
+#define CONFIG_ADPCM_G726LE_DECODER 0
+#define CONFIG_ADPCM_IMA_AMV_DECODER 0
+#define CONFIG_ADPCM_IMA_ALP_DECODER 0
+#define CONFIG_ADPCM_IMA_APC_DECODER 0
+#define CONFIG_ADPCM_IMA_APM_DECODER 0
+#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
+#define CONFIG_ADPCM_IMA_DK3_DECODER 0
+#define CONFIG_ADPCM_IMA_DK4_DECODER 0
+#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
+#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
+#define CONFIG_ADPCM_IMA_ISS_DECODER 0
+#define CONFIG_ADPCM_IMA_MTF_DECODER 0
+#define CONFIG_ADPCM_IMA_OKI_DECODER 0
+#define CONFIG_ADPCM_IMA_QT_DECODER 0
+#define CONFIG_ADPCM_IMA_RAD_DECODER 0
+#define CONFIG_ADPCM_IMA_SSI_DECODER 0
+#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
+#define CONFIG_ADPCM_IMA_WAV_DECODER 0
+#define CONFIG_ADPCM_IMA_WS_DECODER 0
+#define CONFIG_ADPCM_MS_DECODER 0
+#define CONFIG_ADPCM_MTAF_DECODER 0
+#define CONFIG_ADPCM_PSX_DECODER 0
+#define CONFIG_ADPCM_SBPRO_2_DECODER 0
+#define CONFIG_ADPCM_SBPRO_3_DECODER 0
+#define CONFIG_ADPCM_SBPRO_4_DECODER 0
+#define CONFIG_ADPCM_SWF_DECODER 0
+#define CONFIG_ADPCM_THP_DECODER 0
+#define CONFIG_ADPCM_THP_LE_DECODER 0
+#define CONFIG_ADPCM_VIMA_DECODER 0
+#define CONFIG_ADPCM_XA_DECODER 0
+#define CONFIG_ADPCM_YAMAHA_DECODER 0
+#define CONFIG_ADPCM_ZORK_DECODER 0
+#define CONFIG_SSA_DECODER 0
+#define CONFIG_ASS_DECODER 0
+#define CONFIG_CCAPTION_DECODER 0
+#define CONFIG_DVBSUB_DECODER 0
+#define CONFIG_DVDSUB_DECODER 0
+#define CONFIG_JACOSUB_DECODER 0
+#define CONFIG_MICRODVD_DECODER 0
+#define CONFIG_MOVTEXT_DECODER 0
+#define CONFIG_MPL2_DECODER 0
+#define CONFIG_PGSSUB_DECODER 0
+#define CONFIG_PJS_DECODER 0
+#define CONFIG_REALTEXT_DECODER 0
+#define CONFIG_SAMI_DECODER 0
+#define CONFIG_SRT_DECODER 0
+#define CONFIG_STL_DECODER 0
+#define CONFIG_SUBRIP_DECODER 0
+#define CONFIG_SUBVIEWER_DECODER 0
+#define CONFIG_SUBVIEWER1_DECODER 0
+#define CONFIG_TEXT_DECODER 0
+#define CONFIG_VPLAYER_DECODER 0
+#define CONFIG_WEBVTT_DECODER 0
+#define CONFIG_XSUB_DECODER 0
+#define CONFIG_AAC_AT_DECODER 0
+#define CONFIG_AC3_AT_DECODER 0
+#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
+#define CONFIG_ALAC_AT_DECODER 0
+#define CONFIG_AMR_NB_AT_DECODER 0
+#define CONFIG_EAC3_AT_DECODER 0
+#define CONFIG_GSM_MS_AT_DECODER 0
+#define CONFIG_ILBC_AT_DECODER 0
+#define CONFIG_MP1_AT_DECODER 0
+#define CONFIG_MP2_AT_DECODER 0
+#define CONFIG_MP3_AT_DECODER 0
+#define CONFIG_PCM_ALAW_AT_DECODER 0
+#define CONFIG_PCM_MULAW_AT_DECODER 0
+#define CONFIG_QDMC_AT_DECODER 0
+#define CONFIG_QDM2_AT_DECODER 0
+#define CONFIG_LIBARIBB24_DECODER 0
+#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
+#define CONFIG_LIBDAV1D_DECODER 0
+#define CONFIG_LIBDAVS2_DECODER 0
+#define CONFIG_LIBFDK_AAC_DECODER 0
+#define CONFIG_LIBGSM_DECODER 0
+#define CONFIG_LIBGSM_MS_DECODER 0
+#define CONFIG_LIBILBC_DECODER 0
+#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
+#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
+#define CONFIG_LIBOPENJPEG_DECODER 0
+#define CONFIG_LIBOPUS_DECODER 1
+#define CONFIG_LIBRSVG_DECODER 0
+#define CONFIG_LIBSPEEX_DECODER 0
+#define CONFIG_LIBVORBIS_DECODER 0
+#define CONFIG_LIBVPX_VP8_DECODER 0
+#define CONFIG_LIBVPX_VP9_DECODER 0
+#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
+#define CONFIG_BINTEXT_DECODER 0
+#define CONFIG_XBIN_DECODER 0
+#define CONFIG_IDF_DECODER 0
+#define CONFIG_LIBAOM_AV1_DECODER 0
+#define CONFIG_LIBOPENH264_DECODER 0
+#define CONFIG_H264_CUVID_DECODER 0
+#define CONFIG_HEVC_CUVID_DECODER 0
+#define CONFIG_HEVC_MEDIACODEC_DECODER 0
+#define CONFIG_MJPEG_CUVID_DECODER 0
+#define CONFIG_MJPEG_QSV_DECODER 0
+#define CONFIG_MPEG1_CUVID_DECODER 0
+#define CONFIG_MPEG2_CUVID_DECODER 0
+#define CONFIG_MPEG4_CUVID_DECODER 0
+#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
+#define CONFIG_VC1_CUVID_DECODER 0
+#define CONFIG_VP8_CUVID_DECODER 0
+#define CONFIG_VP8_MEDIACODEC_DECODER 0
+#define CONFIG_VP8_QSV_DECODER 0
+#define CONFIG_VP9_CUVID_DECODER 0
+#define CONFIG_VP9_MEDIACODEC_DECODER 0
+#define CONFIG_VP9_QSV_DECODER 0
+#define CONFIG_A64MULTI_ENCODER 0
+#define CONFIG_A64MULTI5_ENCODER 0
+#define CONFIG_ALIAS_PIX_ENCODER 0
+#define CONFIG_AMV_ENCODER 0
+#define CONFIG_APNG_ENCODER 0
+#define CONFIG_ASV1_ENCODER 0
+#define CONFIG_ASV2_ENCODER 0
+#define CONFIG_AVRP_ENCODER 0
+#define CONFIG_AVUI_ENCODER 0
+#define CONFIG_AYUV_ENCODER 0
+#define CONFIG_BMP_ENCODER 0
+#define CONFIG_CINEPAK_ENCODER 0
+#define CONFIG_CLJR_ENCODER 0
+#define CONFIG_COMFORTNOISE_ENCODER 0
+#define CONFIG_DNXHD_ENCODER 0
+#define CONFIG_DPX_ENCODER 0
+#define CONFIG_DVVIDEO_ENCODER 0
+#define CONFIG_FFV1_ENCODER 0
+#define CONFIG_FFVHUFF_ENCODER 0
+#define CONFIG_FITS_ENCODER 0
+#define CONFIG_FLASHSV_ENCODER 0
+#define CONFIG_FLASHSV2_ENCODER 0
+#define CONFIG_FLV_ENCODER 0
+#define CONFIG_GIF_ENCODER 0
+#define CONFIG_H261_ENCODER 0
+#define CONFIG_H263_ENCODER 0
+#define CONFIG_H263P_ENCODER 0
+#define CONFIG_HAP_ENCODER 0
+#define CONFIG_HUFFYUV_ENCODER 0
+#define CONFIG_JPEG2000_ENCODER 0
+#define CONFIG_JPEGLS_ENCODER 0
+#define CONFIG_LJPEG_ENCODER 0
+#define CONFIG_MAGICYUV_ENCODER 0
+#define CONFIG_MJPEG_ENCODER 0
+#define CONFIG_MPEG1VIDEO_ENCODER 0
+#define CONFIG_MPEG2VIDEO_ENCODER 0
+#define CONFIG_MPEG4_ENCODER 0
+#define CONFIG_MSMPEG4V2_ENCODER 0
+#define CONFIG_MSMPEG4V3_ENCODER 0
+#define CONFIG_MSVIDEO1_ENCODER 0
+#define CONFIG_PAM_ENCODER 0
+#define CONFIG_PBM_ENCODER 0
+#define CONFIG_PCX_ENCODER 0
+#define CONFIG_PGM_ENCODER 0
+#define CONFIG_PGMYUV_ENCODER 0
+#define CONFIG_PNG_ENCODER 0
+#define CONFIG_PPM_ENCODER 0
+#define CONFIG_PRORES_ENCODER 0
+#define CONFIG_PRORES_AW_ENCODER 0
+#define CONFIG_PRORES_KS_ENCODER 0
+#define CONFIG_QTRLE_ENCODER 0
+#define CONFIG_R10K_ENCODER 0
+#define CONFIG_R210_ENCODER 0
+#define CONFIG_RAWVIDEO_ENCODER 0
+#define CONFIG_ROQ_ENCODER 0
+#define CONFIG_RV10_ENCODER 0
+#define CONFIG_RV20_ENCODER 0
+#define CONFIG_S302M_ENCODER 0
+#define CONFIG_SGI_ENCODER 0
+#define CONFIG_SNOW_ENCODER 0
+#define CONFIG_SUNRAST_ENCODER 0
+#define CONFIG_SVQ1_ENCODER 0
+#define CONFIG_TARGA_ENCODER 0
+#define CONFIG_TIFF_ENCODER 0
+#define CONFIG_UTVIDEO_ENCODER 0
+#define CONFIG_V210_ENCODER 0
+#define CONFIG_V308_ENCODER 0
+#define CONFIG_V408_ENCODER 0
+#define CONFIG_V410_ENCODER 0
+#define CONFIG_VC2_ENCODER 0
+#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
+#define CONFIG_WMV1_ENCODER 0
+#define CONFIG_WMV2_ENCODER 0
+#define CONFIG_XBM_ENCODER 0
+#define CONFIG_XFACE_ENCODER 0
+#define CONFIG_XWD_ENCODER 0
+#define CONFIG_Y41P_ENCODER 0
+#define CONFIG_YUV4_ENCODER 0
+#define CONFIG_ZLIB_ENCODER 0
+#define CONFIG_ZMBV_ENCODER 0
+#define CONFIG_AAC_ENCODER 0
+#define CONFIG_AC3_ENCODER 0
+#define CONFIG_AC3_FIXED_ENCODER 0
+#define CONFIG_ALAC_ENCODER 0
+#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
+#define CONFIG_DCA_ENCODER 0
+#define CONFIG_EAC3_ENCODER 0
+#define CONFIG_FLAC_ENCODER 0
+#define CONFIG_G723_1_ENCODER 0
+#define CONFIG_MLP_ENCODER 0
+#define CONFIG_MP2_ENCODER 0
+#define CONFIG_MP2FIXED_ENCODER 0
+#define CONFIG_NELLYMOSER_ENCODER 0
+#define CONFIG_OPUS_ENCODER 0
+#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
+#define CONFIG_SONIC_ENCODER 0
+#define CONFIG_SONIC_LS_ENCODER 0
+#define CONFIG_TRUEHD_ENCODER 0
+#define CONFIG_TTA_ENCODER 0
+#define CONFIG_VORBIS_ENCODER 0
+#define CONFIG_WAVPACK_ENCODER 0
+#define CONFIG_WMAV1_ENCODER 0
+#define CONFIG_WMAV2_ENCODER 0
+#define CONFIG_PCM_ALAW_ENCODER 0
+#define CONFIG_PCM_DVD_ENCODER 0
+#define CONFIG_PCM_F32BE_ENCODER 0
+#define CONFIG_PCM_F32LE_ENCODER 0
+#define CONFIG_PCM_F64BE_ENCODER 0
+#define CONFIG_PCM_F64LE_ENCODER 0
+#define CONFIG_PCM_MULAW_ENCODER 0
+#define CONFIG_PCM_S8_ENCODER 0
+#define CONFIG_PCM_S8_PLANAR_ENCODER 0
+#define CONFIG_PCM_S16BE_ENCODER 0
+#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S16LE_ENCODER 0
+#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S24BE_ENCODER 0
+#define CONFIG_PCM_S24DAUD_ENCODER 0
+#define CONFIG_PCM_S24LE_ENCODER 0
+#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S32BE_ENCODER 0
+#define CONFIG_PCM_S32LE_ENCODER 0
+#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S64BE_ENCODER 0
+#define CONFIG_PCM_S64LE_ENCODER 0
+#define CONFIG_PCM_U8_ENCODER 0
+#define CONFIG_PCM_U16BE_ENCODER 0
+#define CONFIG_PCM_U16LE_ENCODER 0
+#define CONFIG_PCM_U24BE_ENCODER 0
+#define CONFIG_PCM_U24LE_ENCODER 0
+#define CONFIG_PCM_U32BE_ENCODER 0
+#define CONFIG_PCM_U32LE_ENCODER 0
+#define CONFIG_PCM_VIDC_ENCODER 0
+#define CONFIG_ROQ_DPCM_ENCODER 0
+#define CONFIG_ADPCM_ADX_ENCODER 0
+#define CONFIG_ADPCM_G722_ENCODER 0
+#define CONFIG_ADPCM_G726_ENCODER 0
+#define CONFIG_ADPCM_G726LE_ENCODER 0
+#define CONFIG_ADPCM_IMA_QT_ENCODER 0
+#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
+#define CONFIG_ADPCM_MS_ENCODER 0
+#define CONFIG_ADPCM_SWF_ENCODER 0
+#define CONFIG_ADPCM_YAMAHA_ENCODER 0
+#define CONFIG_SSA_ENCODER 0
+#define CONFIG_ASS_ENCODER 0
+#define CONFIG_DVBSUB_ENCODER 0
+#define CONFIG_DVDSUB_ENCODER 0
+#define CONFIG_MOVTEXT_ENCODER 0
+#define CONFIG_SRT_ENCODER 0
+#define CONFIG_SUBRIP_ENCODER 0
+#define CONFIG_TEXT_ENCODER 0
+#define CONFIG_WEBVTT_ENCODER 0
+#define CONFIG_XSUB_ENCODER 0
+#define CONFIG_AAC_AT_ENCODER 0
+#define CONFIG_ALAC_AT_ENCODER 0
+#define CONFIG_ILBC_AT_ENCODER 0
+#define CONFIG_PCM_ALAW_AT_ENCODER 0
+#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBAOM_AV1_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
+#define CONFIG_LIBFDK_AAC_ENCODER 0
+#define CONFIG_LIBGSM_ENCODER 0
+#define CONFIG_LIBGSM_MS_ENCODER 0
+#define CONFIG_LIBILBC_ENCODER 0
+#define CONFIG_LIBMP3LAME_ENCODER 0
+#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
+#define CONFIG_LIBOPENJPEG_ENCODER 0
+#define CONFIG_LIBOPUS_ENCODER 0
+#define CONFIG_LIBRAV1E_ENCODER 0
+#define CONFIG_LIBSHINE_ENCODER 0
+#define CONFIG_LIBSPEEX_ENCODER 0
+#define CONFIG_LIBTHEORA_ENCODER 0
+#define CONFIG_LIBTWOLAME_ENCODER 0
+#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
+#define CONFIG_LIBVORBIS_ENCODER 0
+#define CONFIG_LIBVPX_VP8_ENCODER 0
+#define CONFIG_LIBVPX_VP9_ENCODER 0
+#define CONFIG_LIBWAVPACK_ENCODER 0
+#define CONFIG_LIBWEBP_ANIM_ENCODER 0
+#define CONFIG_LIBWEBP_ENCODER 0
+#define CONFIG_LIBX262_ENCODER 0
+#define CONFIG_LIBX264_ENCODER 0
+#define CONFIG_LIBX264RGB_ENCODER 0
+#define CONFIG_LIBX265_ENCODER 0
+#define CONFIG_LIBXAVS_ENCODER 0
+#define CONFIG_LIBXAVS2_ENCODER 0
+#define CONFIG_LIBXVID_ENCODER 0
+#define CONFIG_H263_V4L2M2M_ENCODER 0
+#define CONFIG_LIBOPENH264_ENCODER 0
+#define CONFIG_H264_AMF_ENCODER 0
+#define CONFIG_H264_NVENC_ENCODER 0
+#define CONFIG_H264_OMX_ENCODER 0
+#define CONFIG_H264_QSV_ENCODER 0
+#define CONFIG_H264_V4L2M2M_ENCODER 0
+#define CONFIG_H264_VAAPI_ENCODER 0
+#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
+#define CONFIG_NVENC_ENCODER 0
+#define CONFIG_NVENC_H264_ENCODER 0
+#define CONFIG_NVENC_HEVC_ENCODER 0
+#define CONFIG_HEVC_AMF_ENCODER 0
+#define CONFIG_HEVC_NVENC_ENCODER 0
+#define CONFIG_HEVC_QSV_ENCODER 0
+#define CONFIG_HEVC_V4L2M2M_ENCODER 0
+#define CONFIG_HEVC_VAAPI_ENCODER 0
+#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
+#define CONFIG_LIBKVAZAAR_ENCODER 0
+#define CONFIG_MJPEG_QSV_ENCODER 0
+#define CONFIG_MJPEG_VAAPI_ENCODER 0
+#define CONFIG_MPEG2_QSV_ENCODER 0
+#define CONFIG_MPEG2_VAAPI_ENCODER 0
+#define CONFIG_MPEG4_OMX_ENCODER 0
+#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
+#define CONFIG_VP8_V4L2M2M_ENCODER 0
+#define CONFIG_VP8_VAAPI_ENCODER 0
+#define CONFIG_VP9_VAAPI_ENCODER 0
+#define CONFIG_VP9_QSV_ENCODER 0
+#define CONFIG_H263_VAAPI_HWACCEL 0
+#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_H264_D3D11VA_HWACCEL 0
+#define CONFIG_H264_D3D11VA2_HWACCEL 0
+#define CONFIG_H264_DXVA2_HWACCEL 0
+#define CONFIG_H264_NVDEC_HWACCEL 0
+#define CONFIG_H264_VAAPI_HWACCEL 0
+#define CONFIG_H264_VDPAU_HWACCEL 0
+#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_HEVC_D3D11VA_HWACCEL 0
+#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
+#define CONFIG_HEVC_DXVA2_HWACCEL 0
+#define CONFIG_HEVC_NVDEC_HWACCEL 0
+#define CONFIG_HEVC_VAAPI_HWACCEL 0
+#define CONFIG_HEVC_VDPAU_HWACCEL 0
+#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
+#define CONFIG_MPEG1_NVDEC_HWACCEL 0
+#define CONFIG_MPEG1_VDPAU_HWACCEL 0
+#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MPEG1_XVMC_HWACCEL 0
+#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
+#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
+#define CONFIG_MPEG2_NVDEC_HWACCEL 0
+#define CONFIG_MPEG2_DXVA2_HWACCEL 0
+#define CONFIG_MPEG2_VAAPI_HWACCEL 0
+#define CONFIG_MPEG2_VDPAU_HWACCEL 0
+#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MPEG2_XVMC_HWACCEL 0
+#define CONFIG_MPEG4_NVDEC_HWACCEL 0
+#define CONFIG_MPEG4_VAAPI_HWACCEL 0
+#define CONFIG_MPEG4_VDPAU_HWACCEL 0
+#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_VC1_D3D11VA_HWACCEL 0
+#define CONFIG_VC1_D3D11VA2_HWACCEL 0
+#define CONFIG_VC1_DXVA2_HWACCEL 0
+#define CONFIG_VC1_NVDEC_HWACCEL 0
+#define CONFIG_VC1_VAAPI_HWACCEL 0
+#define CONFIG_VC1_VDPAU_HWACCEL 0
+#define CONFIG_VP8_NVDEC_HWACCEL 0
+#define CONFIG_VP8_VAAPI_HWACCEL 0
+#define CONFIG_VP9_D3D11VA_HWACCEL 0
+#define CONFIG_VP9_D3D11VA2_HWACCEL 0
+#define CONFIG_VP9_DXVA2_HWACCEL 0
+#define CONFIG_VP9_NVDEC_HWACCEL 0
+#define CONFIG_VP9_VAAPI_HWACCEL 0
+#define CONFIG_VP9_VDPAU_HWACCEL 0
+#define CONFIG_WMV3_D3D11VA_HWACCEL 0
+#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
+#define CONFIG_WMV3_DXVA2_HWACCEL 0
+#define CONFIG_WMV3_NVDEC_HWACCEL 0
+#define CONFIG_WMV3_VAAPI_HWACCEL 0
+#define CONFIG_WMV3_VDPAU_HWACCEL 0
+#define CONFIG_AAC_PARSER 0
+#define CONFIG_AAC_LATM_PARSER 0
+#define CONFIG_AC3_PARSER 0
+#define CONFIG_ADX_PARSER 0
+#define CONFIG_AV1_PARSER 0
+#define CONFIG_AVS2_PARSER 0
+#define CONFIG_BMP_PARSER 0
+#define CONFIG_CAVSVIDEO_PARSER 0
+#define CONFIG_COOK_PARSER 0
+#define CONFIG_DCA_PARSER 0
+#define CONFIG_DIRAC_PARSER 0
+#define CONFIG_DNXHD_PARSER 0
+#define CONFIG_DPX_PARSER 0
+#define CONFIG_DVAUDIO_PARSER 0
+#define CONFIG_DVBSUB_PARSER 0
+#define CONFIG_DVDSUB_PARSER 0
+#define CONFIG_DVD_NAV_PARSER 0
+#define CONFIG_FLAC_PARSER 1
+#define CONFIG_G723_1_PARSER 0
+#define CONFIG_G729_PARSER 0
+#define CONFIG_GIF_PARSER 0
+#define CONFIG_GSM_PARSER 0
+#define CONFIG_H261_PARSER 0
+#define CONFIG_H263_PARSER 0
+#define CONFIG_H264_PARSER 0
+#define CONFIG_HEVC_PARSER 0
+#define CONFIG_MJPEG_PARSER 0
+#define CONFIG_MLP_PARSER 0
+#define CONFIG_MPEG4VIDEO_PARSER 0
+#define CONFIG_MPEGAUDIO_PARSER 1
+#define CONFIG_MPEGVIDEO_PARSER 0
+#define CONFIG_OPUS_PARSER 1
+#define CONFIG_PNG_PARSER 0
+#define CONFIG_PNM_PARSER 0
+#define CONFIG_RV30_PARSER 0
+#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
+#define CONFIG_SIPR_PARSER 0
+#define CONFIG_TAK_PARSER 0
+#define CONFIG_VC1_PARSER 0
+#define CONFIG_VORBIS_PARSER 1
+#define CONFIG_VP3_PARSER 1
+#define CONFIG_VP8_PARSER 1
+#define CONFIG_VP9_PARSER 1
+#define CONFIG_WEBP_PARSER 0
+#define CONFIG_XMA_PARSER 0
+#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
+#define CONFIG_AVFOUNDATION_INDEV 0
+#define CONFIG_BKTR_INDEV 0
+#define CONFIG_DECKLINK_INDEV 0
+#define CONFIG_DSHOW_INDEV 0
+#define CONFIG_FBDEV_INDEV 0
+#define CONFIG_GDIGRAB_INDEV 0
+#define CONFIG_IEC61883_INDEV 0
+#define CONFIG_JACK_INDEV 0
+#define CONFIG_KMSGRAB_INDEV 0
+#define CONFIG_LAVFI_INDEV 0
+#define CONFIG_OPENAL_INDEV 0
+#define CONFIG_OSS_INDEV 0
+#define CONFIG_PULSE_INDEV 0
+#define CONFIG_SNDIO_INDEV 0
+#define CONFIG_V4L2_INDEV 0
+#define CONFIG_VFWCAP_INDEV 0
+#define CONFIG_XCBGRAB_INDEV 0
+#define CONFIG_LIBCDIO_INDEV 0
+#define CONFIG_LIBDC1394_INDEV 0
+#define CONFIG_ALSA_OUTDEV 0
+#define CONFIG_CACA_OUTDEV 0
+#define CONFIG_DECKLINK_OUTDEV 0
+#define CONFIG_FBDEV_OUTDEV 0
+#define CONFIG_OPENGL_OUTDEV 0
+#define CONFIG_OSS_OUTDEV 0
+#define CONFIG_PULSE_OUTDEV 0
+#define CONFIG_SDL2_OUTDEV 0
+#define CONFIG_SNDIO_OUTDEV 0
+#define CONFIG_V4L2_OUTDEV 0
+#define CONFIG_XV_OUTDEV 0
+#define CONFIG_ABENCH_FILTER 0
+#define CONFIG_ACOMPRESSOR_FILTER 0
+#define CONFIG_ACONTRAST_FILTER 0
+#define CONFIG_ACOPY_FILTER 0
+#define CONFIG_ACUE_FILTER 0
+#define CONFIG_ACROSSFADE_FILTER 0
+#define CONFIG_ACROSSOVER_FILTER 0
+#define CONFIG_ACRUSHER_FILTER 0
+#define CONFIG_ADECLICK_FILTER 0
+#define CONFIG_ADECLIP_FILTER 0
+#define CONFIG_ADELAY_FILTER 0
+#define CONFIG_ADERIVATIVE_FILTER 0
+#define CONFIG_AECHO_FILTER 0
+#define CONFIG_AEMPHASIS_FILTER 0
+#define CONFIG_AEVAL_FILTER 0
+#define CONFIG_AFADE_FILTER 0
+#define CONFIG_AFFTDN_FILTER 0
+#define CONFIG_AFFTFILT_FILTER 0
+#define CONFIG_AFIR_FILTER 0
+#define CONFIG_AFORMAT_FILTER 0
+#define CONFIG_AGATE_FILTER 0
+#define CONFIG_AIIR_FILTER 0
+#define CONFIG_AINTEGRAL_FILTER 0
+#define CONFIG_AINTERLEAVE_FILTER 0
+#define CONFIG_ALIMITER_FILTER 0
+#define CONFIG_ALLPASS_FILTER 0
+#define CONFIG_ALOOP_FILTER 0
+#define CONFIG_AMERGE_FILTER 0
+#define CONFIG_AMETADATA_FILTER 0
+#define CONFIG_AMIX_FILTER 0
+#define CONFIG_AMULTIPLY_FILTER 0
+#define CONFIG_ANEQUALIZER_FILTER 0
+#define CONFIG_ANLMDN_FILTER 0
+#define CONFIG_ANLMS_FILTER 0
+#define CONFIG_ANULL_FILTER 0
+#define CONFIG_APAD_FILTER 0
+#define CONFIG_APERMS_FILTER 0
+#define CONFIG_APHASER_FILTER 0
+#define CONFIG_APULSATOR_FILTER 0
+#define CONFIG_AREALTIME_FILTER 0
+#define CONFIG_ARESAMPLE_FILTER 0
+#define CONFIG_AREVERSE_FILTER 0
+#define CONFIG_ARNNDN_FILTER 0
+#define CONFIG_ASELECT_FILTER 0
+#define CONFIG_ASENDCMD_FILTER 0
+#define CONFIG_ASETNSAMPLES_FILTER 0
+#define CONFIG_ASETPTS_FILTER 0
+#define CONFIG_ASETRATE_FILTER 0
+#define CONFIG_ASETTB_FILTER 0
+#define CONFIG_ASHOWINFO_FILTER 0
+#define CONFIG_ASIDEDATA_FILTER 0
+#define CONFIG_ASOFTCLIP_FILTER 0
+#define CONFIG_ASPLIT_FILTER 0
+#define CONFIG_ASR_FILTER 0
+#define CONFIG_ASTATS_FILTER 0
+#define CONFIG_ASTREAMSELECT_FILTER 0
+#define CONFIG_ATEMPO_FILTER 0
+#define CONFIG_ATRIM_FILTER 0
+#define CONFIG_AXCORRELATE_FILTER 0
+#define CONFIG_AZMQ_FILTER 0
+#define CONFIG_BANDPASS_FILTER 0
+#define CONFIG_BANDREJECT_FILTER 0
+#define CONFIG_BASS_FILTER 0
+#define CONFIG_BIQUAD_FILTER 0
+#define CONFIG_BS2B_FILTER 0
+#define CONFIG_CHROMABER_VULKAN_FILTER 0
+#define CONFIG_CHANNELMAP_FILTER 0
+#define CONFIG_CHANNELSPLIT_FILTER 0
+#define CONFIG_CHORUS_FILTER 0
+#define CONFIG_COMPAND_FILTER 0
+#define CONFIG_COMPENSATIONDELAY_FILTER 0
+#define CONFIG_CROSSFEED_FILTER 0
+#define CONFIG_CRYSTALIZER_FILTER 0
+#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DEESSER_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
+#define CONFIG_DYNAUDNORM_FILTER 0
+#define CONFIG_EARWAX_FILTER 0
+#define CONFIG_EBUR128_FILTER 0
+#define CONFIG_EQUALIZER_FILTER 0
+#define CONFIG_EXTRASTEREO_FILTER 0
+#define CONFIG_FIREQUALIZER_FILTER 0
+#define CONFIG_FLANGER_FILTER 0
+#define CONFIG_HAAS_FILTER 0
+#define CONFIG_HDCD_FILTER 0
+#define CONFIG_HEADPHONE_FILTER 0
+#define CONFIG_HIGHPASS_FILTER 0
+#define CONFIG_HIGHSHELF_FILTER 0
+#define CONFIG_JOIN_FILTER 0
+#define CONFIG_LADSPA_FILTER 0
+#define CONFIG_LOUDNORM_FILTER 0
+#define CONFIG_LOWPASS_FILTER 0
+#define CONFIG_LOWSHELF_FILTER 0
+#define CONFIG_LV2_FILTER 0
+#define CONFIG_MCOMPAND_FILTER 0
+#define CONFIG_PAN_FILTER 0
+#define CONFIG_REPLAYGAIN_FILTER 0
+#define CONFIG_RESAMPLE_FILTER 0
+#define CONFIG_RUBBERBAND_FILTER 0
+#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
+#define CONFIG_SIDECHAINGATE_FILTER 0
+#define CONFIG_SILENCEDETECT_FILTER 0
+#define CONFIG_SILENCEREMOVE_FILTER 0
+#define CONFIG_SOFALIZER_FILTER 0
+#define CONFIG_STEREOTOOLS_FILTER 0
+#define CONFIG_STEREOWIDEN_FILTER 0
+#define CONFIG_SUPEREQUALIZER_FILTER 0
+#define CONFIG_SURROUND_FILTER 0
+#define CONFIG_TREBLE_FILTER 0
+#define CONFIG_TREMOLO_FILTER 0
+#define CONFIG_VIBRATO_FILTER 0
+#define CONFIG_VOLUME_FILTER 0
+#define CONFIG_VOLUMEDETECT_FILTER 0
+#define CONFIG_AEVALSRC_FILTER 0
+#define CONFIG_AFIRSRC_FILTER 0
+#define CONFIG_ANOISESRC_FILTER 0
+#define CONFIG_ANULLSRC_FILTER 0
+#define CONFIG_FLITE_FILTER 0
+#define CONFIG_HILBERT_FILTER 0
+#define CONFIG_SINC_FILTER 0
+#define CONFIG_SINE_FILTER 0
+#define CONFIG_ANULLSINK_FILTER 0
+#define CONFIG_ADDROI_FILTER 0
+#define CONFIG_ALPHAEXTRACT_FILTER 0
+#define CONFIG_ALPHAMERGE_FILTER 0
+#define CONFIG_AMPLIFY_FILTER 0
+#define CONFIG_ASS_FILTER 0
+#define CONFIG_ATADENOISE_FILTER 0
+#define CONFIG_AVGBLUR_FILTER 0
+#define CONFIG_AVGBLUR_OPENCL_FILTER 0
+#define CONFIG_AVGBLUR_VULKAN_FILTER 0
+#define CONFIG_BBOX_FILTER 0
+#define CONFIG_BENCH_FILTER 0
+#define CONFIG_BILATERAL_FILTER 0
+#define CONFIG_BITPLANENOISE_FILTER 0
+#define CONFIG_BLACKDETECT_FILTER 0
+#define CONFIG_BLACKFRAME_FILTER 0
+#define CONFIG_BLEND_FILTER 0
+#define CONFIG_BM3D_FILTER 0
+#define CONFIG_BOXBLUR_FILTER 0
+#define CONFIG_BOXBLUR_OPENCL_FILTER 0
+#define CONFIG_BWDIF_FILTER 0
+#define CONFIG_CAS_FILTER 0
+#define CONFIG_CHROMAHOLD_FILTER 0
+#define CONFIG_CHROMAKEY_FILTER 0
+#define CONFIG_CHROMASHIFT_FILTER 0
+#define CONFIG_CIESCOPE_FILTER 0
+#define CONFIG_CODECVIEW_FILTER 0
+#define CONFIG_COLORBALANCE_FILTER 0
+#define CONFIG_COLORCHANNELMIXER_FILTER 0
+#define CONFIG_COLORKEY_FILTER 0
+#define CONFIG_COLORKEY_OPENCL_FILTER 0
+#define CONFIG_COLORHOLD_FILTER 0
+#define CONFIG_COLORLEVELS_FILTER 0
+#define CONFIG_COLORMATRIX_FILTER 0
+#define CONFIG_COLORSPACE_FILTER 0
+#define CONFIG_CONVOLUTION_FILTER 0
+#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
+#define CONFIG_CONVOLVE_FILTER 0
+#define CONFIG_COPY_FILTER 0
+#define CONFIG_COREIMAGE_FILTER 0
+#define CONFIG_COVER_RECT_FILTER 0
+#define CONFIG_CROP_FILTER 0
+#define CONFIG_CROPDETECT_FILTER 0
+#define CONFIG_CUE_FILTER 0
+#define CONFIG_CURVES_FILTER 0
+#define CONFIG_DATASCOPE_FILTER 0
+#define CONFIG_DCTDNOIZ_FILTER 0
+#define CONFIG_DEBAND_FILTER 0
+#define CONFIG_DEBLOCK_FILTER 0
+#define CONFIG_DECIMATE_FILTER 0
+#define CONFIG_DECONVOLVE_FILTER 0
+#define CONFIG_DEDOT_FILTER 0
+#define CONFIG_DEFLATE_FILTER 0
+#define CONFIG_DEFLICKER_FILTER 0
+#define CONFIG_DEINTERLACE_QSV_FILTER 0
+#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
+#define CONFIG_DEJUDDER_FILTER 0
+#define CONFIG_DELOGO_FILTER 0
+#define CONFIG_DENOISE_VAAPI_FILTER 0
+#define CONFIG_DERAIN_FILTER 0
+#define CONFIG_DESHAKE_FILTER 0
+#define CONFIG_DESHAKE_OPENCL_FILTER 0
+#define CONFIG_DESPILL_FILTER 0
+#define CONFIG_DETELECINE_FILTER 0
+#define CONFIG_DILATION_FILTER 0
+#define CONFIG_DILATION_OPENCL_FILTER 0
+#define CONFIG_DISPLACE_FILTER 0
+#define CONFIG_DNN_PROCESSING_FILTER 0
+#define CONFIG_DOUBLEWEAVE_FILTER 0
+#define CONFIG_DRAWBOX_FILTER 0
+#define CONFIG_DRAWGRAPH_FILTER 0
+#define CONFIG_DRAWGRID_FILTER 0
+#define CONFIG_DRAWTEXT_FILTER 0
+#define CONFIG_EDGEDETECT_FILTER 0
+#define CONFIG_ELBG_FILTER 0
+#define CONFIG_ENTROPY_FILTER 0
+#define CONFIG_EQ_FILTER 0
+#define CONFIG_EROSION_FILTER 0
+#define CONFIG_EROSION_OPENCL_FILTER 0
+#define CONFIG_EXTRACTPLANES_FILTER 0
+#define CONFIG_FADE_FILTER 0
+#define CONFIG_FFTDNOIZ_FILTER 0
+#define CONFIG_FFTFILT_FILTER 0
+#define CONFIG_FIELD_FILTER 0
+#define CONFIG_FIELDHINT_FILTER 0
+#define CONFIG_FIELDMATCH_FILTER 0
+#define CONFIG_FIELDORDER_FILTER 0
+#define CONFIG_FILLBORDERS_FILTER 0
+#define CONFIG_FIND_RECT_FILTER 0
+#define CONFIG_FLOODFILL_FILTER 0
+#define CONFIG_FORMAT_FILTER 0
+#define CONFIG_FPS_FILTER 0
+#define CONFIG_FRAMEPACK_FILTER 0
+#define CONFIG_FRAMERATE_FILTER 0
+#define CONFIG_FRAMESTEP_FILTER 0
+#define CONFIG_FREEZEDETECT_FILTER 0
+#define CONFIG_FREEZEFRAMES_FILTER 0
+#define CONFIG_FREI0R_FILTER 0
+#define CONFIG_FSPP_FILTER 0
+#define CONFIG_GBLUR_FILTER 0
+#define CONFIG_GEQ_FILTER 0
+#define CONFIG_GRADFUN_FILTER 0
+#define CONFIG_GRAPHMONITOR_FILTER 0
+#define CONFIG_GREYEDGE_FILTER 0
+#define CONFIG_HALDCLUT_FILTER 0
+#define CONFIG_HFLIP_FILTER 0
+#define CONFIG_HISTEQ_FILTER 0
+#define CONFIG_HISTOGRAM_FILTER 0
+#define CONFIG_HQDN3D_FILTER 0
+#define CONFIG_HQX_FILTER 0
+#define CONFIG_HSTACK_FILTER 0
+#define CONFIG_HUE_FILTER 0
+#define CONFIG_HWDOWNLOAD_FILTER 0
+#define CONFIG_HWMAP_FILTER 0
+#define CONFIG_HWUPLOAD_FILTER 0
+#define CONFIG_HWUPLOAD_CUDA_FILTER 0
+#define CONFIG_HYSTERESIS_FILTER 0
+#define CONFIG_IDET_FILTER 0
+#define CONFIG_IL_FILTER 0
+#define CONFIG_INFLATE_FILTER 0
+#define CONFIG_INTERLACE_FILTER 0
+#define CONFIG_INTERLEAVE_FILTER 0
+#define CONFIG_KERNDEINT_FILTER 0
+#define CONFIG_LAGFUN_FILTER 0
+#define CONFIG_LENSCORRECTION_FILTER 0
+#define CONFIG_LENSFUN_FILTER 0
+#define CONFIG_LIBVMAF_FILTER 0
+#define CONFIG_LIMITER_FILTER 0
+#define CONFIG_LOOP_FILTER 0
+#define CONFIG_LUMAKEY_FILTER 0
+#define CONFIG_LUT_FILTER 0
+#define CONFIG_LUT1D_FILTER 0
+#define CONFIG_LUT2_FILTER 0
+#define CONFIG_LUT3D_FILTER 0
+#define CONFIG_LUTRGB_FILTER 0
+#define CONFIG_LUTYUV_FILTER 0
+#define CONFIG_MASKEDCLAMP_FILTER 0
+#define CONFIG_MASKEDMAX_FILTER 0
+#define CONFIG_MASKEDMERGE_FILTER 0
+#define CONFIG_MASKEDMIN_FILTER 0
+#define CONFIG_MASKEDTHRESHOLD_FILTER 0
+#define CONFIG_MASKFUN_FILTER 0
+#define CONFIG_MCDEINT_FILTER 0
+#define CONFIG_MEDIAN_FILTER 0
+#define CONFIG_MERGEPLANES_FILTER 0
+#define CONFIG_MESTIMATE_FILTER 0
+#define CONFIG_METADATA_FILTER 0
+#define CONFIG_MIDEQUALIZER_FILTER 0
+#define CONFIG_MINTERPOLATE_FILTER 0
+#define CONFIG_MIX_FILTER 0
+#define CONFIG_MPDECIMATE_FILTER 0
+#define CONFIG_NEGATE_FILTER 0
+#define CONFIG_NLMEANS_FILTER 0
+#define CONFIG_NLMEANS_OPENCL_FILTER 0
+#define CONFIG_NNEDI_FILTER 0
+#define CONFIG_NOFORMAT_FILTER 0
+#define CONFIG_NOISE_FILTER 0
+#define CONFIG_NORMALIZE_FILTER 0
+#define CONFIG_NULL_FILTER 0
+#define CONFIG_OCR_FILTER 0
+#define CONFIG_OCV_FILTER 0
+#define CONFIG_OSCILLOSCOPE_FILTER 0
+#define CONFIG_OVERLAY_FILTER 0
+#define CONFIG_OVERLAY_OPENCL_FILTER 0
+#define CONFIG_OVERLAY_QSV_FILTER 0
+#define CONFIG_OVERLAY_VULKAN_FILTER 0
+#define CONFIG_OVERLAY_CUDA_FILTER 0
+#define CONFIG_OWDENOISE_FILTER 0
+#define CONFIG_PAD_FILTER 0
+#define CONFIG_PAD_OPENCL_FILTER 0
+#define CONFIG_PALETTEGEN_FILTER 0
+#define CONFIG_PALETTEUSE_FILTER 0
+#define CONFIG_PERMS_FILTER 0
+#define CONFIG_PERSPECTIVE_FILTER 0
+#define CONFIG_PHASE_FILTER 0
+#define CONFIG_PHOTOSENSITIVITY_FILTER 0
+#define CONFIG_PIXDESCTEST_FILTER 0
+#define CONFIG_PIXSCOPE_FILTER 0
+#define CONFIG_PP_FILTER 0
+#define CONFIG_PP7_FILTER 0
+#define CONFIG_PREMULTIPLY_FILTER 0
+#define CONFIG_PREWITT_FILTER 0
+#define CONFIG_PREWITT_OPENCL_FILTER 0
+#define CONFIG_PROCAMP_VAAPI_FILTER 0
+#define CONFIG_PROGRAM_OPENCL_FILTER 0
+#define CONFIG_PSEUDOCOLOR_FILTER 0
+#define CONFIG_PSNR_FILTER 0
+#define CONFIG_PULLUP_FILTER 0
+#define CONFIG_QP_FILTER 0
+#define CONFIG_RANDOM_FILTER 0
+#define CONFIG_READEIA608_FILTER 0
+#define CONFIG_READVITC_FILTER 0
+#define CONFIG_REALTIME_FILTER 0
+#define CONFIG_REMAP_FILTER 0
+#define CONFIG_REMOVEGRAIN_FILTER 0
+#define CONFIG_REMOVELOGO_FILTER 0
+#define CONFIG_REPEATFIELDS_FILTER 0
+#define CONFIG_REVERSE_FILTER 0
+#define CONFIG_RGBASHIFT_FILTER 0
+#define CONFIG_ROBERTS_FILTER 0
+#define CONFIG_ROBERTS_OPENCL_FILTER 0
+#define CONFIG_ROTATE_FILTER 0
+#define CONFIG_SAB_FILTER 0
+#define CONFIG_SCALE_FILTER 0
+#define CONFIG_SCALE_CUDA_FILTER 0
+#define CONFIG_SCALE_NPP_FILTER 0
+#define CONFIG_SCALE_QSV_FILTER 0
+#define CONFIG_SCALE_VAAPI_FILTER 0
+#define CONFIG_SCALE_VULKAN_FILTER 0
+#define CONFIG_SCALE2REF_FILTER 0
+#define CONFIG_SCROLL_FILTER 0
+#define CONFIG_SELECT_FILTER 0
+#define CONFIG_SELECTIVECOLOR_FILTER 0
+#define CONFIG_SENDCMD_FILTER 0
+#define CONFIG_SEPARATEFIELDS_FILTER 0
+#define CONFIG_SETDAR_FILTER 0
+#define CONFIG_SETFIELD_FILTER 0
+#define CONFIG_SETPARAMS_FILTER 0
+#define CONFIG_SETPTS_FILTER 0
+#define CONFIG_SETRANGE_FILTER 0
+#define CONFIG_SETSAR_FILTER 0
+#define CONFIG_SETTB_FILTER 0
+#define CONFIG_SHARPNESS_VAAPI_FILTER 0
+#define CONFIG_SHOWINFO_FILTER 0
+#define CONFIG_SHOWPALETTE_FILTER 0
+#define CONFIG_SHUFFLEFRAMES_FILTER 0
+#define CONFIG_SHUFFLEPLANES_FILTER 0
+#define CONFIG_SIDEDATA_FILTER 0
+#define CONFIG_SIGNALSTATS_FILTER 0
+#define CONFIG_SIGNATURE_FILTER 0
+#define CONFIG_SMARTBLUR_FILTER 0
+#define CONFIG_SOBEL_FILTER 0
+#define CONFIG_SOBEL_OPENCL_FILTER 0
+#define CONFIG_SPLIT_FILTER 0
+#define CONFIG_SPP_FILTER 0
+#define CONFIG_SR_FILTER 0
+#define CONFIG_SSIM_FILTER 0
+#define CONFIG_STEREO3D_FILTER 0
+#define CONFIG_STREAMSELECT_FILTER 0
+#define CONFIG_SUBTITLES_FILTER 0
+#define CONFIG_SUPER2XSAI_FILTER 0
+#define CONFIG_SWAPRECT_FILTER 0
+#define CONFIG_SWAPUV_FILTER 0
+#define CONFIG_TBLEND_FILTER 0
+#define CONFIG_TELECINE_FILTER 0
+#define CONFIG_THISTOGRAM_FILTER 0
+#define CONFIG_THRESHOLD_FILTER 0
+#define CONFIG_THUMBNAIL_FILTER 0
+#define CONFIG_THUMBNAIL_CUDA_FILTER 0
+#define CONFIG_TILE_FILTER 0
+#define CONFIG_TINTERLACE_FILTER 0
+#define CONFIG_TLUT2_FILTER 0
+#define CONFIG_TMEDIAN_FILTER 0
+#define CONFIG_TMIX_FILTER 0
+#define CONFIG_TONEMAP_FILTER 0
+#define CONFIG_TONEMAP_OPENCL_FILTER 0
+#define CONFIG_TONEMAP_VAAPI_FILTER 0
+#define CONFIG_TPAD_FILTER 0
+#define CONFIG_TRANSPOSE_FILTER 0
+#define CONFIG_TRANSPOSE_NPP_FILTER 0
+#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
+#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
+#define CONFIG_TRIM_FILTER 0
+#define CONFIG_UNPREMULTIPLY_FILTER 0
+#define CONFIG_UNSHARP_FILTER 0
+#define CONFIG_UNSHARP_OPENCL_FILTER 0
+#define CONFIG_USPP_FILTER 0
+#define CONFIG_V360_FILTER 0
+#define CONFIG_VAGUEDENOISER_FILTER 0
+#define CONFIG_VECTORSCOPE_FILTER 0
+#define CONFIG_VFLIP_FILTER 0
+#define CONFIG_VFRDET_FILTER 0
+#define CONFIG_VIBRANCE_FILTER 0
+#define CONFIG_VIDSTABDETECT_FILTER 0
+#define CONFIG_VIDSTABTRANSFORM_FILTER 0
+#define CONFIG_VIGNETTE_FILTER 0
+#define CONFIG_VMAFMOTION_FILTER 0
+#define CONFIG_VPP_QSV_FILTER 0
+#define CONFIG_VSTACK_FILTER 0
+#define CONFIG_W3FDIF_FILTER 0
+#define CONFIG_WAVEFORM_FILTER 0
+#define CONFIG_WEAVE_FILTER 0
+#define CONFIG_XBR_FILTER 0
+#define CONFIG_XFADE_FILTER 0
+#define CONFIG_XFADE_OPENCL_FILTER 0
+#define CONFIG_XMEDIAN_FILTER 0
+#define CONFIG_XSTACK_FILTER 0
+#define CONFIG_YADIF_FILTER 0
+#define CONFIG_YADIF_CUDA_FILTER 0
+#define CONFIG_YAEPBLUR_FILTER 0
+#define CONFIG_ZMQ_FILTER 0
+#define CONFIG_ZOOMPAN_FILTER 0
+#define CONFIG_ZSCALE_FILTER 0
+#define CONFIG_ALLRGB_FILTER 0
+#define CONFIG_ALLYUV_FILTER 0
+#define CONFIG_CELLAUTO_FILTER 0
+#define CONFIG_COLOR_FILTER 0
+#define CONFIG_COREIMAGESRC_FILTER 0
+#define CONFIG_FREI0R_SRC_FILTER 0
+#define CONFIG_HALDCLUTSRC_FILTER 0
+#define CONFIG_LIFE_FILTER 0
+#define CONFIG_MANDELBROT_FILTER 0
+#define CONFIG_MPTESTSRC_FILTER 0
+#define CONFIG_NULLSRC_FILTER 0
+#define CONFIG_OPENCLSRC_FILTER 0
+#define CONFIG_PAL75BARS_FILTER 0
+#define CONFIG_PAL100BARS_FILTER 0
+#define CONFIG_RGBTESTSRC_FILTER 0
+#define CONFIG_SIERPINSKI_FILTER 0
+#define CONFIG_SMPTEBARS_FILTER 0
+#define CONFIG_SMPTEHDBARS_FILTER 0
+#define CONFIG_TESTSRC_FILTER 0
+#define CONFIG_TESTSRC2_FILTER 0
+#define CONFIG_YUVTESTSRC_FILTER 0
+#define CONFIG_NULLSINK_FILTER 0
+#define CONFIG_ABITSCOPE_FILTER 0
+#define CONFIG_ADRAWGRAPH_FILTER 0
+#define CONFIG_AGRAPHMONITOR_FILTER 0
+#define CONFIG_AHISTOGRAM_FILTER 0
+#define CONFIG_APHASEMETER_FILTER 0
+#define CONFIG_AVECTORSCOPE_FILTER 0
+#define CONFIG_CONCAT_FILTER 0
+#define CONFIG_SHOWCQT_FILTER 0
+#define CONFIG_SHOWFREQS_FILTER 0
+#define CONFIG_SHOWSPATIAL_FILTER 0
+#define CONFIG_SHOWSPECTRUM_FILTER 0
+#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
+#define CONFIG_SHOWVOLUME_FILTER 0
+#define CONFIG_SHOWWAVES_FILTER 0
+#define CONFIG_SHOWWAVESPIC_FILTER 0
+#define CONFIG_SPECTRUMSYNTH_FILTER 0
+#define CONFIG_AMOVIE_FILTER 0
+#define CONFIG_MOVIE_FILTER 0
+#define CONFIG_AFIFO_FILTER 0
+#define CONFIG_FIFO_FILTER 0
+#define CONFIG_AA_DEMUXER 0
+#define CONFIG_AAC_DEMUXER 0
+#define CONFIG_AC3_DEMUXER 0
+#define CONFIG_ACM_DEMUXER 0
+#define CONFIG_ACT_DEMUXER 0
+#define CONFIG_ADF_DEMUXER 0
+#define CONFIG_ADP_DEMUXER 0
+#define CONFIG_ADS_DEMUXER 0
+#define CONFIG_ADX_DEMUXER 0
+#define CONFIG_AEA_DEMUXER 0
+#define CONFIG_AFC_DEMUXER 0
+#define CONFIG_AIFF_DEMUXER 0
+#define CONFIG_AIX_DEMUXER 0
+#define CONFIG_ALP_DEMUXER 0
+#define CONFIG_AMR_DEMUXER 0
+#define CONFIG_AMRNB_DEMUXER 0
+#define CONFIG_AMRWB_DEMUXER 0
+#define CONFIG_ANM_DEMUXER 0
+#define CONFIG_APC_DEMUXER 0
+#define CONFIG_APE_DEMUXER 0
+#define CONFIG_APM_DEMUXER 0
+#define CONFIG_APNG_DEMUXER 0
+#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
+#define CONFIG_AQTITLE_DEMUXER 0
+#define CONFIG_ARGO_ASF_DEMUXER 0
+#define CONFIG_ASF_DEMUXER 0
+#define CONFIG_ASF_O_DEMUXER 0
+#define CONFIG_ASS_DEMUXER 0
+#define CONFIG_AST_DEMUXER 0
+#define CONFIG_AU_DEMUXER 0
+#define CONFIG_AV1_DEMUXER 0
+#define CONFIG_AVI_DEMUXER 0
+#define CONFIG_AVISYNTH_DEMUXER 0
+#define CONFIG_AVR_DEMUXER 0
+#define CONFIG_AVS_DEMUXER 0
+#define CONFIG_AVS2_DEMUXER 0
+#define CONFIG_BETHSOFTVID_DEMUXER 0
+#define CONFIG_BFI_DEMUXER 0
+#define CONFIG_BINTEXT_DEMUXER 0
+#define CONFIG_BINK_DEMUXER 0
+#define CONFIG_BIT_DEMUXER 0
+#define CONFIG_BMV_DEMUXER 0
+#define CONFIG_BFSTM_DEMUXER 0
+#define CONFIG_BRSTM_DEMUXER 0
+#define CONFIG_BOA_DEMUXER 0
+#define CONFIG_C93_DEMUXER 0
+#define CONFIG_CAF_DEMUXER 0
+#define CONFIG_CAVSVIDEO_DEMUXER 0
+#define CONFIG_CDG_DEMUXER 0
+#define CONFIG_CDXL_DEMUXER 0
+#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
+#define CONFIG_CONCAT_DEMUXER 0
+#define CONFIG_DASH_DEMUXER 0
+#define CONFIG_DATA_DEMUXER 0
+#define CONFIG_DAUD_DEMUXER 0
+#define CONFIG_DCSTR_DEMUXER 0
+#define CONFIG_DERF_DEMUXER 0
+#define CONFIG_DFA_DEMUXER 0
+#define CONFIG_DHAV_DEMUXER 0
+#define CONFIG_DIRAC_DEMUXER 0
+#define CONFIG_DNXHD_DEMUXER 0
+#define CONFIG_DSF_DEMUXER 0
+#define CONFIG_DSICIN_DEMUXER 0
+#define CONFIG_DSS_DEMUXER 0
+#define CONFIG_DTS_DEMUXER 0
+#define CONFIG_DTSHD_DEMUXER 0
+#define CONFIG_DV_DEMUXER 0
+#define CONFIG_DVBSUB_DEMUXER 0
+#define CONFIG_DVBTXT_DEMUXER 0
+#define CONFIG_DXA_DEMUXER 0
+#define CONFIG_EA_DEMUXER 0
+#define CONFIG_EA_CDATA_DEMUXER 0
+#define CONFIG_EAC3_DEMUXER 0
+#define CONFIG_EPAF_DEMUXER 0
+#define CONFIG_FFMETADATA_DEMUXER 0
+#define CONFIG_FILMSTRIP_DEMUXER 0
+#define CONFIG_FITS_DEMUXER 0
+#define CONFIG_FLAC_DEMUXER 1
+#define CONFIG_FLIC_DEMUXER 0
+#define CONFIG_FLV_DEMUXER 0
+#define CONFIG_LIVE_FLV_DEMUXER 0
+#define CONFIG_FOURXM_DEMUXER 0
+#define CONFIG_FRM_DEMUXER 0
+#define CONFIG_FSB_DEMUXER 0
+#define CONFIG_FWSE_DEMUXER 0
+#define CONFIG_G722_DEMUXER 0
+#define CONFIG_G723_1_DEMUXER 0
+#define CONFIG_G726_DEMUXER 0
+#define CONFIG_G726LE_DEMUXER 0
+#define CONFIG_G729_DEMUXER 0
+#define CONFIG_GDV_DEMUXER 0
+#define CONFIG_GENH_DEMUXER 0
+#define CONFIG_GIF_DEMUXER 0
+#define CONFIG_GSM_DEMUXER 0
+#define CONFIG_GXF_DEMUXER 0
+#define CONFIG_H261_DEMUXER 0
+#define CONFIG_H263_DEMUXER 0
+#define CONFIG_H264_DEMUXER 0
+#define CONFIG_HCA_DEMUXER 0
+#define CONFIG_HCOM_DEMUXER 0
+#define CONFIG_HEVC_DEMUXER 0
+#define CONFIG_HLS_DEMUXER 0
+#define CONFIG_HNM_DEMUXER 0
+#define CONFIG_ICO_DEMUXER 0
+#define CONFIG_IDCIN_DEMUXER 0
+#define CONFIG_IDF_DEMUXER 0
+#define CONFIG_IFF_DEMUXER 0
+#define CONFIG_IFV_DEMUXER 0
+#define CONFIG_ILBC_DEMUXER 0
+#define CONFIG_IMAGE2_DEMUXER 0
+#define CONFIG_IMAGE2PIPE_DEMUXER 0
+#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
+#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
+#define CONFIG_INGENIENT_DEMUXER 0
+#define CONFIG_IPMOVIE_DEMUXER 0
+#define CONFIG_IRCAM_DEMUXER 0
+#define CONFIG_ISS_DEMUXER 0
+#define CONFIG_IV8_DEMUXER 0
+#define CONFIG_IVF_DEMUXER 0
+#define CONFIG_IVR_DEMUXER 0
+#define CONFIG_JACOSUB_DEMUXER 0
+#define CONFIG_JV_DEMUXER 0
+#define CONFIG_KUX_DEMUXER 0
+#define CONFIG_KVAG_DEMUXER 0
+#define CONFIG_LMLM4_DEMUXER 0
+#define CONFIG_LOAS_DEMUXER 0
+#define CONFIG_LRC_DEMUXER 0
+#define CONFIG_LVF_DEMUXER 0
+#define CONFIG_LXF_DEMUXER 0
+#define CONFIG_M4V_DEMUXER 0
+#define CONFIG_MATROSKA_DEMUXER 1
+#define CONFIG_MGSTS_DEMUXER 0
+#define CONFIG_MICRODVD_DEMUXER 0
+#define CONFIG_MJPEG_DEMUXER 0
+#define CONFIG_MJPEG_2000_DEMUXER 0
+#define CONFIG_MLP_DEMUXER 0
+#define CONFIG_MLV_DEMUXER 0
+#define CONFIG_MM_DEMUXER 0
+#define CONFIG_MMF_DEMUXER 0
+#define CONFIG_MOV_DEMUXER 1
+#define CONFIG_MP3_DEMUXER 1
+#define CONFIG_MPC_DEMUXER 0
+#define CONFIG_MPC8_DEMUXER 0
+#define CONFIG_MPEGPS_DEMUXER 0
+#define CONFIG_MPEGTS_DEMUXER 0
+#define CONFIG_MPEGTSRAW_DEMUXER 0
+#define CONFIG_MPEGVIDEO_DEMUXER 0
+#define CONFIG_MPJPEG_DEMUXER 0
+#define CONFIG_MPL2_DEMUXER 0
+#define CONFIG_MPSUB_DEMUXER 0
+#define CONFIG_MSF_DEMUXER 0
+#define CONFIG_MSNWC_TCP_DEMUXER 0
+#define CONFIG_MTAF_DEMUXER 0
+#define CONFIG_MTV_DEMUXER 0
+#define CONFIG_MUSX_DEMUXER 0
+#define CONFIG_MV_DEMUXER 0
+#define CONFIG_MVI_DEMUXER 0
+#define CONFIG_MXF_DEMUXER 0
+#define CONFIG_MXG_DEMUXER 0
+#define CONFIG_NC_DEMUXER 0
+#define CONFIG_NISTSPHERE_DEMUXER 0
+#define CONFIG_NSP_DEMUXER 0
+#define CONFIG_NSV_DEMUXER 0
+#define CONFIG_NUT_DEMUXER 0
+#define CONFIG_NUV_DEMUXER 0
+#define CONFIG_OGG_DEMUXER 1
+#define CONFIG_OMA_DEMUXER 0
+#define CONFIG_PAF_DEMUXER 0
+#define CONFIG_PCM_ALAW_DEMUXER 0
+#define CONFIG_PCM_MULAW_DEMUXER 0
+#define CONFIG_PCM_VIDC_DEMUXER 0
+#define CONFIG_PCM_F64BE_DEMUXER 0
+#define CONFIG_PCM_F64LE_DEMUXER 0
+#define CONFIG_PCM_F32BE_DEMUXER 0
+#define CONFIG_PCM_F32LE_DEMUXER 0
+#define CONFIG_PCM_S32BE_DEMUXER 0
+#define CONFIG_PCM_S32LE_DEMUXER 0
+#define CONFIG_PCM_S24BE_DEMUXER 0
+#define CONFIG_PCM_S24LE_DEMUXER 0
+#define CONFIG_PCM_S16BE_DEMUXER 0
+#define CONFIG_PCM_S16LE_DEMUXER 0
+#define CONFIG_PCM_S8_DEMUXER 0
+#define CONFIG_PCM_U32BE_DEMUXER 0
+#define CONFIG_PCM_U32LE_DEMUXER 0
+#define CONFIG_PCM_U24BE_DEMUXER 0
+#define CONFIG_PCM_U24LE_DEMUXER 0
+#define CONFIG_PCM_U16BE_DEMUXER 0
+#define CONFIG_PCM_U16LE_DEMUXER 0
+#define CONFIG_PCM_U8_DEMUXER 0
+#define CONFIG_PJS_DEMUXER 0
+#define CONFIG_PMP_DEMUXER 0
+#define CONFIG_PVA_DEMUXER 0
+#define CONFIG_PVF_DEMUXER 0
+#define CONFIG_QCP_DEMUXER 0
+#define CONFIG_R3D_DEMUXER 0
+#define CONFIG_RAWVIDEO_DEMUXER 0
+#define CONFIG_REALTEXT_DEMUXER 0
+#define CONFIG_REDSPARK_DEMUXER 0
+#define CONFIG_RL2_DEMUXER 0
+#define CONFIG_RM_DEMUXER 0
+#define CONFIG_ROQ_DEMUXER 0
+#define CONFIG_RPL_DEMUXER 0
+#define CONFIG_RSD_DEMUXER 0
+#define CONFIG_RSO_DEMUXER 0
+#define CONFIG_RTP_DEMUXER 0
+#define CONFIG_RTSP_DEMUXER 0
+#define CONFIG_S337M_DEMUXER 0
+#define CONFIG_SAMI_DEMUXER 0
+#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
+#define CONFIG_SBG_DEMUXER 0
+#define CONFIG_SCC_DEMUXER 0
+#define CONFIG_SDP_DEMUXER 0
+#define CONFIG_SDR2_DEMUXER 0
+#define CONFIG_SDS_DEMUXER 0
+#define CONFIG_SDX_DEMUXER 0
+#define CONFIG_SEGAFILM_DEMUXER 0
+#define CONFIG_SER_DEMUXER 0
+#define CONFIG_SHORTEN_DEMUXER 0
+#define CONFIG_SIFF_DEMUXER 0
+#define CONFIG_SLN_DEMUXER 0
+#define CONFIG_SMACKER_DEMUXER 0
+#define CONFIG_SMJPEG_DEMUXER 0
+#define CONFIG_SMUSH_DEMUXER 0
+#define CONFIG_SOL_DEMUXER 0
+#define CONFIG_SOX_DEMUXER 0
+#define CONFIG_SPDIF_DEMUXER 0
+#define CONFIG_SRT_DEMUXER 0
+#define CONFIG_STR_DEMUXER 0
+#define CONFIG_STL_DEMUXER 0
+#define CONFIG_SUBVIEWER1_DEMUXER 0
+#define CONFIG_SUBVIEWER_DEMUXER 0
+#define CONFIG_SUP_DEMUXER 0
+#define CONFIG_SVAG_DEMUXER 0
+#define CONFIG_SWF_DEMUXER 0
+#define CONFIG_TAK_DEMUXER 0
+#define CONFIG_TEDCAPTIONS_DEMUXER 0
+#define CONFIG_THP_DEMUXER 0
+#define CONFIG_THREEDOSTR_DEMUXER 0
+#define CONFIG_TIERTEXSEQ_DEMUXER 0
+#define CONFIG_TMV_DEMUXER 0
+#define CONFIG_TRUEHD_DEMUXER 0
+#define CONFIG_TTA_DEMUXER 0
+#define CONFIG_TXD_DEMUXER 0
+#define CONFIG_TTY_DEMUXER 0
+#define CONFIG_TY_DEMUXER 0
+#define CONFIG_V210_DEMUXER 0
+#define CONFIG_V210X_DEMUXER 0
+#define CONFIG_VAG_DEMUXER 0
+#define CONFIG_VC1_DEMUXER 0
+#define CONFIG_VC1T_DEMUXER 0
+#define CONFIG_VIVIDAS_DEMUXER 0
+#define CONFIG_VIVO_DEMUXER 0
+#define CONFIG_VMD_DEMUXER 0
+#define CONFIG_VOBSUB_DEMUXER 0
+#define CONFIG_VOC_DEMUXER 0
+#define CONFIG_VPK_DEMUXER 0
+#define CONFIG_VPLAYER_DEMUXER 0
+#define CONFIG_VQF_DEMUXER 0
+#define CONFIG_W64_DEMUXER 0
+#define CONFIG_WAV_DEMUXER 1
+#define CONFIG_WC3_DEMUXER 0
+#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
+#define CONFIG_WEBVTT_DEMUXER 0
+#define CONFIG_WSAUD_DEMUXER 0
+#define CONFIG_WSD_DEMUXER 0
+#define CONFIG_WSVQA_DEMUXER 0
+#define CONFIG_WTV_DEMUXER 0
+#define CONFIG_WVE_DEMUXER 0
+#define CONFIG_WV_DEMUXER 0
+#define CONFIG_XA_DEMUXER 0
+#define CONFIG_XBIN_DEMUXER 0
+#define CONFIG_XMV_DEMUXER 0
+#define CONFIG_XVAG_DEMUXER 0
+#define CONFIG_XWMA_DEMUXER 0
+#define CONFIG_YOP_DEMUXER 0
+#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
+#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
+#define CONFIG_LIBGME_DEMUXER 0
+#define CONFIG_LIBMODPLUG_DEMUXER 0
+#define CONFIG_LIBOPENMPT_DEMUXER 0
+#define CONFIG_VAPOURSYNTH_DEMUXER 0
+#define CONFIG_A64_MUXER 0
+#define CONFIG_AC3_MUXER 0
+#define CONFIG_ADTS_MUXER 0
+#define CONFIG_ADX_MUXER 0
+#define CONFIG_AIFF_MUXER 0
+#define CONFIG_AMR_MUXER 0
+#define CONFIG_APNG_MUXER 0
+#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
+#define CONFIG_ASF_MUXER 0
+#define CONFIG_ASS_MUXER 0
+#define CONFIG_AST_MUXER 0
+#define CONFIG_ASF_STREAM_MUXER 0
+#define CONFIG_AU_MUXER 0
+#define CONFIG_AVI_MUXER 0
+#define CONFIG_AVM2_MUXER 0
+#define CONFIG_AVS2_MUXER 0
+#define CONFIG_BIT_MUXER 0
+#define CONFIG_CAF_MUXER 0
+#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
+#define CONFIG_CRC_MUXER 0
+#define CONFIG_DASH_MUXER 0
+#define CONFIG_DATA_MUXER 0
+#define CONFIG_DAUD_MUXER 0
+#define CONFIG_DIRAC_MUXER 0
+#define CONFIG_DNXHD_MUXER 0
+#define CONFIG_DTS_MUXER 0
+#define CONFIG_DV_MUXER 0
+#define CONFIG_EAC3_MUXER 0
+#define CONFIG_F4V_MUXER 0
+#define CONFIG_FFMETADATA_MUXER 0
+#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
+#define CONFIG_FILMSTRIP_MUXER 0
+#define CONFIG_FITS_MUXER 0
+#define CONFIG_FLAC_MUXER 0
+#define CONFIG_FLV_MUXER 0
+#define CONFIG_FRAMECRC_MUXER 0
+#define CONFIG_FRAMEHASH_MUXER 0
+#define CONFIG_FRAMEMD5_MUXER 0
+#define CONFIG_G722_MUXER 0
+#define CONFIG_G723_1_MUXER 0
+#define CONFIG_G726_MUXER 0
+#define CONFIG_G726LE_MUXER 0
+#define CONFIG_GIF_MUXER 0
+#define CONFIG_GSM_MUXER 0
+#define CONFIG_GXF_MUXER 0
+#define CONFIG_H261_MUXER 0
+#define CONFIG_H263_MUXER 0
+#define CONFIG_H264_MUXER 0
+#define CONFIG_HASH_MUXER 0
+#define CONFIG_HDS_MUXER 0
+#define CONFIG_HEVC_MUXER 0
+#define CONFIG_HLS_MUXER 0
+#define CONFIG_ICO_MUXER 0
+#define CONFIG_ILBC_MUXER 0
+#define CONFIG_IMAGE2_MUXER 0
+#define CONFIG_IMAGE2PIPE_MUXER 0
+#define CONFIG_IPOD_MUXER 0
+#define CONFIG_IRCAM_MUXER 0
+#define CONFIG_ISMV_MUXER 0
+#define CONFIG_IVF_MUXER 0
+#define CONFIG_JACOSUB_MUXER 0
+#define CONFIG_LATM_MUXER 0
+#define CONFIG_LRC_MUXER 0
+#define CONFIG_M4V_MUXER 0
+#define CONFIG_MD5_MUXER 0
+#define CONFIG_MATROSKA_MUXER 0
+#define CONFIG_MATROSKA_AUDIO_MUXER 0
+#define CONFIG_MICRODVD_MUXER 0
+#define CONFIG_MJPEG_MUXER 0
+#define CONFIG_MLP_MUXER 0
+#define CONFIG_MMF_MUXER 0
+#define CONFIG_MOV_MUXER 0
+#define CONFIG_MP2_MUXER 0
+#define CONFIG_MP3_MUXER 0
+#define CONFIG_MP4_MUXER 0
+#define CONFIG_MPEG1SYSTEM_MUXER 0
+#define CONFIG_MPEG1VCD_MUXER 0
+#define CONFIG_MPEG1VIDEO_MUXER 0
+#define CONFIG_MPEG2DVD_MUXER 0
+#define CONFIG_MPEG2SVCD_MUXER 0
+#define CONFIG_MPEG2VIDEO_MUXER 0
+#define CONFIG_MPEG2VOB_MUXER 0
+#define CONFIG_MPEGTS_MUXER 0
+#define CONFIG_MPJPEG_MUXER 0
+#define CONFIG_MXF_MUXER 0
+#define CONFIG_MXF_D10_MUXER 0
+#define CONFIG_MXF_OPATOM_MUXER 0
+#define CONFIG_NULL_MUXER 0
+#define CONFIG_NUT_MUXER 0
+#define CONFIG_OGA_MUXER 0
+#define CONFIG_OGG_MUXER 0
+#define CONFIG_OGV_MUXER 0
+#define CONFIG_OMA_MUXER 0
+#define CONFIG_OPUS_MUXER 0
+#define CONFIG_PCM_ALAW_MUXER 0
+#define CONFIG_PCM_MULAW_MUXER 0
+#define CONFIG_PCM_VIDC_MUXER 0
+#define CONFIG_PCM_F64BE_MUXER 0
+#define CONFIG_PCM_F64LE_MUXER 0
+#define CONFIG_PCM_F32BE_MUXER 0
+#define CONFIG_PCM_F32LE_MUXER 0
+#define CONFIG_PCM_S32BE_MUXER 0
+#define CONFIG_PCM_S32LE_MUXER 0
+#define CONFIG_PCM_S24BE_MUXER 0
+#define CONFIG_PCM_S24LE_MUXER 0
+#define CONFIG_PCM_S16BE_MUXER 0
+#define CONFIG_PCM_S16LE_MUXER 0
+#define CONFIG_PCM_S8_MUXER 0
+#define CONFIG_PCM_U32BE_MUXER 0
+#define CONFIG_PCM_U32LE_MUXER 0
+#define CONFIG_PCM_U24BE_MUXER 0
+#define CONFIG_PCM_U24LE_MUXER 0
+#define CONFIG_PCM_U16BE_MUXER 0
+#define CONFIG_PCM_U16LE_MUXER 0
+#define CONFIG_PCM_U8_MUXER 0
+#define CONFIG_PSP_MUXER 0
+#define CONFIG_RAWVIDEO_MUXER 0
+#define CONFIG_RM_MUXER 0
+#define CONFIG_ROQ_MUXER 0
+#define CONFIG_RSO_MUXER 0
+#define CONFIG_RTP_MUXER 0
+#define CONFIG_RTP_MPEGTS_MUXER 0
+#define CONFIG_RTSP_MUXER 0
+#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
+#define CONFIG_SCC_MUXER 0
+#define CONFIG_SEGAFILM_MUXER 0
+#define CONFIG_SEGMENT_MUXER 0
+#define CONFIG_STREAM_SEGMENT_MUXER 0
+#define CONFIG_SINGLEJPEG_MUXER 0
+#define CONFIG_SMJPEG_MUXER 0
+#define CONFIG_SMOOTHSTREAMING_MUXER 0
+#define CONFIG_SOX_MUXER 0
+#define CONFIG_SPX_MUXER 0
+#define CONFIG_SPDIF_MUXER 0
+#define CONFIG_SRT_MUXER 0
+#define CONFIG_STREAMHASH_MUXER 0
+#define CONFIG_SUP_MUXER 0
+#define CONFIG_SWF_MUXER 0
+#define CONFIG_TEE_MUXER 0
+#define CONFIG_TG2_MUXER 0
+#define CONFIG_TGP_MUXER 0
+#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
+#define CONFIG_TRUEHD_MUXER 0
+#define CONFIG_TTA_MUXER 0
+#define CONFIG_UNCODEDFRAMECRC_MUXER 0
+#define CONFIG_VC1_MUXER 0
+#define CONFIG_VC1T_MUXER 0
+#define CONFIG_VOC_MUXER 0
+#define CONFIG_W64_MUXER 0
+#define CONFIG_WAV_MUXER 0
+#define CONFIG_WEBM_MUXER 0
+#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
+#define CONFIG_WEBM_CHUNK_MUXER 0
+#define CONFIG_WEBP_MUXER 0
+#define CONFIG_WEBVTT_MUXER 0
+#define CONFIG_WTV_MUXER 0
+#define CONFIG_WV_MUXER 0
+#define CONFIG_YUV4MPEGPIPE_MUXER 0
+#define CONFIG_CHROMAPRINT_MUXER 0
+#define CONFIG_ASYNC_PROTOCOL 0
+#define CONFIG_BLURAY_PROTOCOL 0
+#define CONFIG_CACHE_PROTOCOL 0
+#define CONFIG_CONCAT_PROTOCOL 0
+#define CONFIG_CRYPTO_PROTOCOL 0
+#define CONFIG_DATA_PROTOCOL 0
+#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
+#define CONFIG_FFRTMPHTTP_PROTOCOL 0
+#define CONFIG_FILE_PROTOCOL 0
+#define CONFIG_FTP_PROTOCOL 0
+#define CONFIG_GOPHER_PROTOCOL 0
+#define CONFIG_HLS_PROTOCOL 0
+#define CONFIG_HTTP_PROTOCOL 0
+#define CONFIG_HTTPPROXY_PROTOCOL 0
+#define CONFIG_HTTPS_PROTOCOL 0
+#define CONFIG_ICECAST_PROTOCOL 0
+#define CONFIG_MMSH_PROTOCOL 0
+#define CONFIG_MMST_PROTOCOL 0
+#define CONFIG_MD5_PROTOCOL 0
+#define CONFIG_PIPE_PROTOCOL 0
+#define CONFIG_PROMPEG_PROTOCOL 0
+#define CONFIG_RTMP_PROTOCOL 0
+#define CONFIG_RTMPE_PROTOCOL 0
+#define CONFIG_RTMPS_PROTOCOL 0
+#define CONFIG_RTMPT_PROTOCOL 0
+#define CONFIG_RTMPTE_PROTOCOL 0
+#define CONFIG_RTMPTS_PROTOCOL 0
+#define CONFIG_RTP_PROTOCOL 0
+#define CONFIG_SCTP_PROTOCOL 0
+#define CONFIG_SRTP_PROTOCOL 0
+#define CONFIG_SUBFILE_PROTOCOL 0
+#define CONFIG_TEE_PROTOCOL 0
+#define CONFIG_TCP_PROTOCOL 0
+#define CONFIG_TLS_PROTOCOL 0
+#define CONFIG_UDP_PROTOCOL 0
+#define CONFIG_UDPLITE_PROTOCOL 0
+#define CONFIG_UNIX_PROTOCOL 0
+#define CONFIG_LIBAMQP_PROTOCOL 0
+#define CONFIG_LIBRTMP_PROTOCOL 0
+#define CONFIG_LIBRTMPE_PROTOCOL 0
+#define CONFIG_LIBRTMPS_PROTOCOL 0
+#define CONFIG_LIBRTMPT_PROTOCOL 0
+#define CONFIG_LIBRTMPTE_PROTOCOL 0
+#define CONFIG_LIBSRT_PROTOCOL 0
+#define CONFIG_LIBSSH_PROTOCOL 0
+#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
+#define CONFIG_LIBZMQ_PROTOCOL 0
+#endif /* FFMPEG_CONFIG_H */
diff --git a/fuchsia/config/default/x64/libavcodec/bsf_list.c b/fuchsia/config/default/x64/libavcodec/bsf_list.c
new file mode 100644
index 0000000..ee5ac8a
--- /dev/null
+++ b/fuchsia/config/default/x64/libavcodec/bsf_list.c
@@ -0,0 +1,4 @@
+static const AVBitStreamFilter * const bitstream_filters[] = {
+    &ff_null_bsf,
+    &ff_vp9_superframe_split_bsf,
+    NULL };
diff --git a/fuchsia/config/default/x64/libavcodec/codec_list.c b/fuchsia/config/default/x64/libavcodec/codec_list.c
new file mode 100644
index 0000000..8e4d5e8
--- /dev/null
+++ b/fuchsia/config/default/x64/libavcodec/codec_list.c
@@ -0,0 +1,21 @@
+static const AVCodec * const codec_list[] = {
+    &ff_theora_decoder,
+    &ff_vp3_decoder,
+    &ff_vp8_decoder,
+    &ff_vp9_decoder,
+    &ff_aptx_decoder,
+    &ff_flac_decoder,
+    &ff_mp3_decoder,
+    &ff_sbc_decoder,
+    &ff_vorbis_decoder,
+    &ff_pcm_alaw_decoder,
+    &ff_pcm_f32le_decoder,
+    &ff_pcm_mulaw_decoder,
+    &ff_pcm_s16be_decoder,
+    &ff_pcm_s16le_decoder,
+    &ff_pcm_s24be_decoder,
+    &ff_pcm_s24le_decoder,
+    &ff_pcm_s32le_decoder,
+    &ff_pcm_u8_decoder,
+    &ff_libopus_decoder,
+    NULL };
diff --git a/fuchsia/config/default/x64/libavcodec/parser_list.c b/fuchsia/config/default/x64/libavcodec/parser_list.c
new file mode 100644
index 0000000..f81fbe8
--- /dev/null
+++ b/fuchsia/config/default/x64/libavcodec/parser_list.c
@@ -0,0 +1,9 @@
+static const AVCodecParser * const parser_list[] = {
+    &ff_flac_parser,
+    &ff_mpegaudio_parser,
+    &ff_opus_parser,
+    &ff_vorbis_parser,
+    &ff_vp3_parser,
+    &ff_vp8_parser,
+    &ff_vp9_parser,
+    NULL };
diff --git a/fuchsia/config/default/x64/libavformat/demuxer_list.c b/fuchsia/config/default/x64/libavformat/demuxer_list.c
new file mode 100644
index 0000000..1908ba1
--- /dev/null
+++ b/fuchsia/config/default/x64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+    &ff_flac_demuxer,
+    &ff_matroska_demuxer,
+    &ff_mov_demuxer,
+    &ff_mp3_demuxer,
+    &ff_ogg_demuxer,
+    &ff_wav_demuxer,
+    NULL };
diff --git a/fuchsia/config/default/x64/libavformat/muxer_list.c b/fuchsia/config/default/x64/libavformat/muxer_list.c
new file mode 100644
index 0000000..f36d949
--- /dev/null
+++ b/fuchsia/config/default/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+    NULL };
diff --git a/fuchsia/config/default/x64/libavformat/protocol_list.c b/fuchsia/config/default/x64/libavformat/protocol_list.c
new file mode 100644
index 0000000..247e1e4
--- /dev/null
+++ b/fuchsia/config/default/x64/libavformat/protocol_list.c
@@ -0,0 +1,2 @@
+static const URLProtocol * const url_protocols[] = {
+    NULL };
diff --git a/fuchsia/config/default/x64/libavutil/avconfig.h b/fuchsia/config/default/x64/libavutil/avconfig.h
new file mode 100644
index 0000000..c289fbb
--- /dev/null
+++ b/fuchsia/config/default/x64/libavutil/avconfig.h
@@ -0,0 +1,6 @@
+/* Generated by ffmpeg configure */
+#ifndef AVUTIL_AVCONFIG_H
+#define AVUTIL_AVCONFIG_H
+#define AV_HAVE_BIGENDIAN 0
+#define AV_HAVE_FAST_UNALIGNED 1
+#endif /* AVUTIL_AVCONFIG_H */
diff --git a/fuchsia/config/default/x64/libavutil/ffversion.h b/fuchsia/config/default/x64/libavutil/ffversion.h
new file mode 100644
index 0000000..fc76199
--- /dev/null
+++ b/fuchsia/config/default/x64/libavutil/ffversion.h
@@ -0,0 +1,5 @@
+/* Automatically generated by version.sh, do not manually edit! */
+#ifndef AVUTIL_FFVERSION_H
+#define AVUTIL_FFVERSION_H
+#define FFMPEG_VERSION "N-97662-gaaac2c26d9"
+#endif /* AVUTIL_FFVERSION_H */
diff --git a/fuchsia/config/max/arm64/config.h b/fuchsia/config/max/arm64/config.h
new file mode 100644
index 0000000..9915440
--- /dev/null
+++ b/fuchsia/config/max/arm64/config.h
@@ -0,0 +1,2588 @@
+/* Automatically generated by configure - do not modify! */
+#ifndef FFMPEG_CONFIG_H
+#define FFMPEG_CONFIG_H
+#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/dalesat/fuchsia/third_party/opus/include --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cross-prefix=/usr/bin/x86_64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --disable-linux-perf --enable-decoder='aac,aac_latm,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,aac_latm,h264,mpegaudio' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-demuxer=gsm --enable-parser=gsm"
+#define FFMPEG_LICENSE "LGPL version 2.1 or later"
+#define CONFIG_THIS_YEAR 2020
+#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
+#define CC_IDENT "Fuchsia clang version 11.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project dd484baffdf4a92e564c38a17d35a742e633b0e0)"
+#define av_restrict restrict
+#define EXTERN_PREFIX ""
+#define EXTERN_ASM 
+#define BUILDSUF ""
+#define SLIBSUF ".so"
+#define HAVE_MMX2 HAVE_MMXEXT
+#define SWS_MAX_FILTER_SIZE 256
+#define ARCH_AARCH64 1
+#define ARCH_ALPHA 0
+#define ARCH_ARM 0
+#define ARCH_AVR32 0
+#define ARCH_AVR32_AP 0
+#define ARCH_AVR32_UC 0
+#define ARCH_BFIN 0
+#define ARCH_IA64 0
+#define ARCH_M68K 0
+#define ARCH_MIPS 0
+#define ARCH_MIPS64 0
+#define ARCH_PARISC 0
+#define ARCH_PPC 0
+#define ARCH_PPC64 0
+#define ARCH_S390 0
+#define ARCH_SH4 0
+#define ARCH_SPARC 0
+#define ARCH_SPARC64 0
+#define ARCH_TILEGX 0
+#define ARCH_TILEPRO 0
+#define ARCH_TOMI 0
+#define ARCH_X86 0
+#define ARCH_X86_32 0
+#define ARCH_X86_64 0
+#define HAVE_ARMV5TE 0
+#define HAVE_ARMV6 0
+#define HAVE_ARMV6T2 0
+#define HAVE_ARMV8 1
+#define HAVE_NEON 1
+#define HAVE_VFP 1
+#define HAVE_VFPV3 0
+#define HAVE_SETEND 0
+#define HAVE_ALTIVEC 0
+#define HAVE_DCBZL 0
+#define HAVE_LDBRX 0
+#define HAVE_POWER8 0
+#define HAVE_PPC4XX 0
+#define HAVE_VSX 0
+#define HAVE_AESNI 0
+#define HAVE_AMD3DNOW 0
+#define HAVE_AMD3DNOWEXT 0
+#define HAVE_AVX 0
+#define HAVE_AVX2 0
+#define HAVE_AVX512 0
+#define HAVE_FMA3 0
+#define HAVE_FMA4 0
+#define HAVE_MMX 0
+#define HAVE_MMXEXT 0
+#define HAVE_SSE 0
+#define HAVE_SSE2 0
+#define HAVE_SSE3 0
+#define HAVE_SSE4 0
+#define HAVE_SSE42 0
+#define HAVE_SSSE3 0
+#define HAVE_XOP 0
+#define HAVE_CPUNOP 0
+#define HAVE_I686 0
+#define HAVE_MIPSFPU 0
+#define HAVE_MIPS32R2 0
+#define HAVE_MIPS32R5 0
+#define HAVE_MIPS64R2 0
+#define HAVE_MIPS32R6 0
+#define HAVE_MIPS64R6 0
+#define HAVE_MIPSDSP 0
+#define HAVE_MIPSDSPR2 0
+#define HAVE_MSA 0
+#define HAVE_MSA2 0
+#define HAVE_LOONGSON2 0
+#define HAVE_LOONGSON3 0
+#define HAVE_MMI 0
+#define HAVE_ARMV5TE_EXTERNAL 0
+#define HAVE_ARMV6_EXTERNAL 0
+#define HAVE_ARMV6T2_EXTERNAL 0
+#define HAVE_ARMV8_EXTERNAL 1
+#define HAVE_NEON_EXTERNAL 1
+#define HAVE_VFP_EXTERNAL 1
+#define HAVE_VFPV3_EXTERNAL 0
+#define HAVE_SETEND_EXTERNAL 0
+#define HAVE_ALTIVEC_EXTERNAL 0
+#define HAVE_DCBZL_EXTERNAL 0
+#define HAVE_LDBRX_EXTERNAL 0
+#define HAVE_POWER8_EXTERNAL 0
+#define HAVE_PPC4XX_EXTERNAL 0
+#define HAVE_VSX_EXTERNAL 0
+#define HAVE_AESNI_EXTERNAL 0
+#define HAVE_AMD3DNOW_EXTERNAL 0
+#define HAVE_AMD3DNOWEXT_EXTERNAL 0
+#define HAVE_AVX_EXTERNAL 0
+#define HAVE_AVX2_EXTERNAL 0
+#define HAVE_AVX512_EXTERNAL 0
+#define HAVE_FMA3_EXTERNAL 0
+#define HAVE_FMA4_EXTERNAL 0
+#define HAVE_MMX_EXTERNAL 0
+#define HAVE_MMXEXT_EXTERNAL 0
+#define HAVE_SSE_EXTERNAL 0
+#define HAVE_SSE2_EXTERNAL 0
+#define HAVE_SSE3_EXTERNAL 0
+#define HAVE_SSE4_EXTERNAL 0
+#define HAVE_SSE42_EXTERNAL 0
+#define HAVE_SSSE3_EXTERNAL 0
+#define HAVE_XOP_EXTERNAL 0
+#define HAVE_CPUNOP_EXTERNAL 0
+#define HAVE_I686_EXTERNAL 0
+#define HAVE_MIPSFPU_EXTERNAL 0
+#define HAVE_MIPS32R2_EXTERNAL 0
+#define HAVE_MIPS32R5_EXTERNAL 0
+#define HAVE_MIPS64R2_EXTERNAL 0
+#define HAVE_MIPS32R6_EXTERNAL 0
+#define HAVE_MIPS64R6_EXTERNAL 0
+#define HAVE_MIPSDSP_EXTERNAL 0
+#define HAVE_MIPSDSPR2_EXTERNAL 0
+#define HAVE_MSA_EXTERNAL 0
+#define HAVE_MSA2_EXTERNAL 0
+#define HAVE_LOONGSON2_EXTERNAL 0
+#define HAVE_LOONGSON3_EXTERNAL 0
+#define HAVE_MMI_EXTERNAL 0
+#define HAVE_ARMV5TE_INLINE 0
+#define HAVE_ARMV6_INLINE 0
+#define HAVE_ARMV6T2_INLINE 0
+#define HAVE_ARMV8_INLINE 1
+#define HAVE_NEON_INLINE 1
+#define HAVE_VFP_INLINE 1
+#define HAVE_VFPV3_INLINE 0
+#define HAVE_SETEND_INLINE 0
+#define HAVE_ALTIVEC_INLINE 0
+#define HAVE_DCBZL_INLINE 0
+#define HAVE_LDBRX_INLINE 0
+#define HAVE_POWER8_INLINE 0
+#define HAVE_PPC4XX_INLINE 0
+#define HAVE_VSX_INLINE 0
+#define HAVE_AESNI_INLINE 0
+#define HAVE_AMD3DNOW_INLINE 0
+#define HAVE_AMD3DNOWEXT_INLINE 0
+#define HAVE_AVX_INLINE 0
+#define HAVE_AVX2_INLINE 0
+#define HAVE_AVX512_INLINE 0
+#define HAVE_FMA3_INLINE 0
+#define HAVE_FMA4_INLINE 0
+#define HAVE_MMX_INLINE 0
+#define HAVE_MMXEXT_INLINE 0
+#define HAVE_SSE_INLINE 0
+#define HAVE_SSE2_INLINE 0
+#define HAVE_SSE3_INLINE 0
+#define HAVE_SSE4_INLINE 0
+#define HAVE_SSE42_INLINE 0
+#define HAVE_SSSE3_INLINE 0
+#define HAVE_XOP_INLINE 0
+#define HAVE_CPUNOP_INLINE 0
+#define HAVE_I686_INLINE 0
+#define HAVE_MIPSFPU_INLINE 0
+#define HAVE_MIPS32R2_INLINE 0
+#define HAVE_MIPS32R5_INLINE 0
+#define HAVE_MIPS64R2_INLINE 0
+#define HAVE_MIPS32R6_INLINE 0
+#define HAVE_MIPS64R6_INLINE 0
+#define HAVE_MIPSDSP_INLINE 0
+#define HAVE_MIPSDSPR2_INLINE 0
+#define HAVE_MSA_INLINE 0
+#define HAVE_MSA2_INLINE 0
+#define HAVE_LOONGSON2_INLINE 0
+#define HAVE_LOONGSON3_INLINE 0
+#define HAVE_MMI_INLINE 0
+#define HAVE_ALIGNED_STACK 1
+#define HAVE_FAST_64BIT 1
+#define HAVE_FAST_CLZ 1
+#define HAVE_FAST_CMOV 0
+#define HAVE_LOCAL_ALIGNED 0
+#define HAVE_SIMD_ALIGN_16 1
+#define HAVE_SIMD_ALIGN_32 0
+#define HAVE_SIMD_ALIGN_64 0
+#define HAVE_ATOMIC_CAS_PTR 0
+#define HAVE_MACHINE_RW_BARRIER 0
+#define HAVE_MEMORYBARRIER 0
+#define HAVE_MM_EMPTY 0
+#define HAVE_RDTSC 0
+#define HAVE_SEM_TIMEDWAIT 1
+#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
+#define HAVE_CABS 0
+#define HAVE_CEXP 0
+#define HAVE_INLINE_ASM 1
+#define HAVE_SYMVER 0
+#define HAVE_X86ASM 0
+#define HAVE_BIGENDIAN 0
+#define HAVE_FAST_UNALIGNED 1
+#define HAVE_ARPA_INET_H 0
+#define HAVE_ASM_TYPES_H 1
+#define HAVE_CDIO_PARANOIA_H 0
+#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
+#define HAVE_CUDA_H 0
+#define HAVE_DISPATCH_DISPATCH_H 0
+#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
+#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
+#define HAVE_DEV_IC_BT8XX_H 0
+#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
+#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
+#define HAVE_DIRECT_H 0
+#define HAVE_DIRENT_H 1
+#define HAVE_DXGIDEBUG_H 0
+#define HAVE_DXVA_H 0
+#define HAVE_ES2_GL_H 0
+#define HAVE_GSM_H 0
+#define HAVE_IO_H 0
+#define HAVE_LINUX_PERF_EVENT_H 1
+#define HAVE_MACHINE_IOCTL_BT848_H 0
+#define HAVE_MACHINE_IOCTL_METEOR_H 0
+#define HAVE_MALLOC_H 1
+#define HAVE_OPENCV2_CORE_CORE_C_H 0
+#define HAVE_OPENGL_GL3_H 0
+#define HAVE_POLL_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_SOUNDCARD_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_UN_H 1
+#define HAVE_SYS_VIDEOIO_H 0
+#define HAVE_TERMIOS_H 1
+#define HAVE_UDPLITE_H 0
+#define HAVE_UNISTD_H 1
+#define HAVE_VALGRIND_VALGRIND_H 0
+#define HAVE_WINDOWS_H 0
+#define HAVE_WINSOCK2_H 0
+#define HAVE_INTRINSICS_NEON 1
+#define HAVE_ATANF 1
+#define HAVE_ATAN2F 1
+#define HAVE_CBRT 1
+#define HAVE_CBRTF 1
+#define HAVE_COPYSIGN 1
+#define HAVE_COSF 1
+#define HAVE_ERF 1
+#define HAVE_EXP2 1
+#define HAVE_EXP2F 1
+#define HAVE_EXPF 1
+#define HAVE_HYPOT 1
+#define HAVE_ISFINITE 1
+#define HAVE_ISINF 1
+#define HAVE_ISNAN 1
+#define HAVE_LDEXPF 1
+#define HAVE_LLRINT 1
+#define HAVE_LLRINTF 1
+#define HAVE_LOG2 1
+#define HAVE_LOG2F 1
+#define HAVE_LOG10F 1
+#define HAVE_LRINT 1
+#define HAVE_LRINTF 1
+#define HAVE_POWF 1
+#define HAVE_RINT 1
+#define HAVE_ROUND 1
+#define HAVE_ROUNDF 1
+#define HAVE_SINF 1
+#define HAVE_TRUNC 1
+#define HAVE_TRUNCF 1
+#define HAVE_DOS_PATHS 0
+#define HAVE_LIBC_MSVCRT 0
+#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
+#define HAVE_SECTION_DATA_REL_RO 1
+#define HAVE_THREADS 1
+#define HAVE_UWP 0
+#define HAVE_WINRT 0
+#define HAVE_ACCESS 1
+#define HAVE_ALIGNED_MALLOC 0
+#define HAVE_ARC4RANDOM 0
+#define HAVE_CLOCK_GETTIME 1
+#define HAVE_CLOSESOCKET 0
+#define HAVE_COMMANDLINETOARGVW 0
+#define HAVE_FCNTL 1
+#define HAVE_GETADDRINFO 0
+#define HAVE_GETHRTIME 0
+#define HAVE_GETOPT 1
+#define HAVE_GETMODULEHANDLE 0
+#define HAVE_GETPROCESSAFFINITYMASK 0
+#define HAVE_GETPROCESSMEMORYINFO 0
+#define HAVE_GETPROCESSTIMES 0
+#define HAVE_GETRUSAGE 1
+#define HAVE_GETSTDHANDLE 0
+#define HAVE_GETSYSTEMTIMEASFILETIME 0
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GLOB 1
+#define HAVE_GLXGETPROCADDRESS 0
+#define HAVE_GMTIME_R 1
+#define HAVE_INET_ATON 0
+#define HAVE_ISATTY 1
+#define HAVE_KBHIT 0
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LSTAT 1
+#define HAVE_LZO1X_999_COMPRESS 0
+#define HAVE_MACH_ABSOLUTE_TIME 0
+#define HAVE_MAPVIEWOFFILE 0
+#define HAVE_MEMALIGN 1
+#define HAVE_MKSTEMP 1
+#define HAVE_MMAP 1
+#define HAVE_MPROTECT 1
+#define HAVE_NANOSLEEP 1
+#define HAVE_PEEKNAMEDPIPE 0
+#define HAVE_POSIX_MEMALIGN 1
+#define HAVE_PTHREAD_CANCEL 1
+#define HAVE_SCHED_GETAFFINITY 1
+#define HAVE_SECITEMIMPORT 0
+#define HAVE_SETCONSOLETEXTATTRIBUTE 0
+#define HAVE_SETCONSOLECTRLHANDLER 0
+#define HAVE_SETDLLDIRECTORY 0
+#define HAVE_SETMODE 0
+#define HAVE_SETRLIMIT 1
+#define HAVE_SLEEP 0
+#define HAVE_STRERROR_R 1
+#define HAVE_SYSCONF 1
+#define HAVE_SYSCTL 0
+#define HAVE_USLEEP 1
+#define HAVE_UTGETOSTYPEFROMSTRING 0
+#define HAVE_VIRTUALALLOC 0
+#define HAVE_WGLGETPROCADDRESS 0
+#define HAVE_BCRYPT 0
+#define HAVE_VAAPI_DRM 0
+#define HAVE_VAAPI_X11 0
+#define HAVE_VDPAU_X11 0
+#define HAVE_PTHREADS 1
+#define HAVE_OS2THREADS 0
+#define HAVE_W32THREADS 0
+#define HAVE_AS_ARCH_DIRECTIVE 0
+#define HAVE_AS_DN_DIRECTIVE 0
+#define HAVE_AS_FPU_DIRECTIVE 0
+#define HAVE_AS_FUNC 0
+#define HAVE_AS_OBJECT_ARCH 0
+#define HAVE_ASM_MOD_Q 0
+#define HAVE_BLOCKS_EXTENSION 0
+#define HAVE_EBP_AVAILABLE 0
+#define HAVE_EBX_AVAILABLE 0
+#define HAVE_GNU_AS 0
+#define HAVE_GNU_WINDRES 0
+#define HAVE_IBM_ASM 0
+#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+#define HAVE_INLINE_ASM_LABELS 1
+#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+#define HAVE_PRAGMA_DEPRECATED 1
+#define HAVE_RSYNC_CONTIMEOUT 1
+#define HAVE_SYMVER_ASM_LABEL 1
+#define HAVE_SYMVER_GNU_ASM 1
+/* #define HAVE_VFP_ARGS 0 -- softfp/hardfp selection is done by the fuchsia build */
+#define HAVE_XFORM_ASM 0
+#define HAVE_XMM_CLOBBERS 0
+#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
+#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
+#define HAVE_SOCKLEN_T 0
+#define HAVE_STRUCT_ADDRINFO 0
+#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
+#define HAVE_STRUCT_IP_MREQ_SOURCE 0
+#define HAVE_STRUCT_IPV6_MREQ 0
+#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
+#define HAVE_STRUCT_POLLFD 0
+#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
+#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
+#define HAVE_STRUCT_SOCKADDR_IN6 0
+#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
+#define HAVE_STRUCT_SOCKADDR_STORAGE 0
+#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
+#define HAVE_MAKEINFO 0
+#define HAVE_MAKEINFO_HTML 0
+#define HAVE_OPENCL_D3D11 0
+#define HAVE_OPENCL_DRM_ARM 0
+#define HAVE_OPENCL_DRM_BEIGNET 0
+#define HAVE_OPENCL_DXVA2 0
+#define HAVE_OPENCL_VAAPI_BEIGNET 0
+#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
+#define HAVE_PERL 1
+#define HAVE_POD2MAN 1
+#define HAVE_TEXI2HTML 0
+#define CONFIG_DOC 0
+#define CONFIG_HTMLPAGES 0
+#define CONFIG_MANPAGES 0
+#define CONFIG_PODPAGES 0
+#define CONFIG_TXTPAGES 0
+#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
+#define CONFIG_AVIO_READING_EXAMPLE 1
+#define CONFIG_DECODE_AUDIO_EXAMPLE 1
+#define CONFIG_DECODE_VIDEO_EXAMPLE 1
+#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
+#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
+#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
+#define CONFIG_EXTRACT_MVS_EXAMPLE 1
+#define CONFIG_FILTER_AUDIO_EXAMPLE 0
+#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
+#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
+#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
+#define CONFIG_HW_DECODE_EXAMPLE 1
+#define CONFIG_METADATA_EXAMPLE 1
+#define CONFIG_MUXING_EXAMPLE 0
+#define CONFIG_QSVDEC_EXAMPLE 0
+#define CONFIG_REMUXING_EXAMPLE 1
+#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
+#define CONFIG_SCALING_VIDEO_EXAMPLE 0
+#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
+#define CONFIG_TRANSCODING_EXAMPLE 0
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
+#define CONFIG_AVISYNTH 0
+#define CONFIG_FREI0R 0
+#define CONFIG_LIBCDIO 0
+#define CONFIG_LIBDAVS2 0
+#define CONFIG_LIBRUBBERBAND 0
+#define CONFIG_LIBVIDSTAB 0
+#define CONFIG_LIBX264 0
+#define CONFIG_LIBX265 0
+#define CONFIG_LIBXAVS 0
+#define CONFIG_LIBXAVS2 0
+#define CONFIG_LIBXVID 0
+#define CONFIG_DECKLINK 0
+#define CONFIG_LIBFDK_AAC 0
+#define CONFIG_OPENSSL 0
+#define CONFIG_LIBTLS 0
+#define CONFIG_GMP 0
+#define CONFIG_LIBARIBB24 0
+#define CONFIG_LIBLENSFUN 0
+#define CONFIG_LIBOPENCORE_AMRNB 0
+#define CONFIG_LIBOPENCORE_AMRWB 0
+#define CONFIG_LIBVMAF 0
+#define CONFIG_LIBVO_AMRWBENC 0
+#define CONFIG_MBEDTLS 0
+#define CONFIG_RKMPP 0
+#define CONFIG_LIBSMBCLIENT 0
+#define CONFIG_CHROMAPRINT 0
+#define CONFIG_GCRYPT 0
+#define CONFIG_GNUTLS 0
+#define CONFIG_JNI 0
+#define CONFIG_LADSPA 0
+#define CONFIG_LIBAOM 0
+#define CONFIG_LIBASS 0
+#define CONFIG_LIBBLURAY 0
+#define CONFIG_LIBBS2B 0
+#define CONFIG_LIBCACA 0
+#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
+#define CONFIG_LIBDAV1D 0
+#define CONFIG_LIBDC1394 0
+#define CONFIG_LIBDRM 0
+#define CONFIG_LIBFLITE 0
+#define CONFIG_LIBFONTCONFIG 0
+#define CONFIG_LIBFREETYPE 0
+#define CONFIG_LIBFRIBIDI 0
+#define CONFIG_LIBGLSLANG 0
+#define CONFIG_LIBGME 0
+#define CONFIG_LIBGSM 0
+#define CONFIG_LIBIEC61883 0
+#define CONFIG_LIBILBC 0
+#define CONFIG_LIBJACK 0
+#define CONFIG_LIBKLVANC 0
+#define CONFIG_LIBKVAZAAR 0
+#define CONFIG_LIBMODPLUG 0
+#define CONFIG_LIBMP3LAME 0
+#define CONFIG_LIBMYSOFA 0
+#define CONFIG_LIBOPENCV 0
+#define CONFIG_LIBOPENH264 0
+#define CONFIG_LIBOPENJPEG 0
+#define CONFIG_LIBOPENMPT 0
+#define CONFIG_LIBOPUS 1
+#define CONFIG_LIBPULSE 0
+#define CONFIG_LIBRABBITMQ 0
+#define CONFIG_LIBRAV1E 0
+#define CONFIG_LIBRSVG 0
+#define CONFIG_LIBRTMP 0
+#define CONFIG_LIBSHINE 0
+#define CONFIG_LIBSMBCLIENT 0
+#define CONFIG_LIBSNAPPY 0
+#define CONFIG_LIBSOXR 0
+#define CONFIG_LIBSPEEX 0
+#define CONFIG_LIBSRT 0
+#define CONFIG_LIBSSH 0
+#define CONFIG_LIBTENSORFLOW 0
+#define CONFIG_LIBTESSERACT 0
+#define CONFIG_LIBTHEORA 0
+#define CONFIG_LIBTWOLAME 0
+#define CONFIG_LIBV4L2 0
+#define CONFIG_LIBVORBIS 0
+#define CONFIG_LIBVPX 0
+#define CONFIG_LIBWAVPACK 0
+#define CONFIG_LIBWEBP 0
+#define CONFIG_LIBXML2 0
+#define CONFIG_LIBZIMG 0
+#define CONFIG_LIBZMQ 0
+#define CONFIG_LIBZVBI 0
+#define CONFIG_LV2 0
+#define CONFIG_MEDIACODEC 0
+#define CONFIG_OPENAL 0
+#define CONFIG_OPENGL 0
+#define CONFIG_POCKETSPHINX 0
+#define CONFIG_VAPOURSYNTH 0
+#define CONFIG_ALSA 0
+#define CONFIG_APPKIT 0
+#define CONFIG_AVFOUNDATION 0
+#define CONFIG_BZLIB 0
+#define CONFIG_COREIMAGE 0
+#define CONFIG_ICONV 0
+#define CONFIG_LIBXCB 0
+#define CONFIG_LIBXCB_SHM 0
+#define CONFIG_LIBXCB_SHAPE 0
+#define CONFIG_LIBXCB_XFIXES 0
+#define CONFIG_LZMA 0
+#define CONFIG_SCHANNEL 0
+#define CONFIG_SDL2 0
+#define CONFIG_SECURETRANSPORT 0
+#define CONFIG_SNDIO 0
+#define CONFIG_XLIB 0
+#define CONFIG_ZLIB 0
+#define CONFIG_CUDA_NVCC 0
+#define CONFIG_CUDA_SDK 0
+#define CONFIG_LIBNPP 0
+#define CONFIG_LIBMFX 0
+#define CONFIG_MMAL 0
+#define CONFIG_OMX 0
+#define CONFIG_OPENCL 0
+#define CONFIG_VULKAN 0
+#define CONFIG_AMF 0
+#define CONFIG_AUDIOTOOLBOX 0
+#define CONFIG_CRYSTALHD 0
+#define CONFIG_CUDA 0
+#define CONFIG_CUDA_LLVM 0
+#define CONFIG_CUVID 0
+#define CONFIG_D3D11VA 0
+#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
+#define CONFIG_NVDEC 0
+#define CONFIG_NVENC 0
+#define CONFIG_VAAPI 0
+#define CONFIG_VDPAU 0
+#define CONFIG_VIDEOTOOLBOX 0
+#define CONFIG_V4L2_M2M 0
+#define CONFIG_XVMC 0
+#define CONFIG_FTRAPV 0
+#define CONFIG_GRAY 0
+#define CONFIG_HARDCODED_TABLES 0
+#define CONFIG_OMX_RPI 0
+#define CONFIG_RUNTIME_CPUDETECT 1
+#define CONFIG_SAFE_BITSTREAM_READER 1
+#define CONFIG_SHARED 0
+#define CONFIG_SMALL 0
+#define CONFIG_STATIC 1
+#define CONFIG_SWSCALE_ALPHA 1
+#define CONFIG_GPL 0
+#define CONFIG_NONFREE 0
+#define CONFIG_VERSION3 0
+#define CONFIG_AVDEVICE 0
+#define CONFIG_AVFILTER 0
+#define CONFIG_SWSCALE 0
+#define CONFIG_POSTPROC 0
+#define CONFIG_AVFORMAT 1
+#define CONFIG_AVCODEC 1
+#define CONFIG_SWRESAMPLE 0
+#define CONFIG_AVRESAMPLE 0
+#define CONFIG_AVUTIL 1
+#define CONFIG_FFPLAY 0
+#define CONFIG_FFPROBE 0
+#define CONFIG_FFMPEG 0
+#define CONFIG_DCT 1
+#define CONFIG_DWT 0
+#define CONFIG_ERROR_RESILIENCE 1
+#define CONFIG_FAAN 0
+#define CONFIG_FAST_UNALIGNED 1
+#define CONFIG_FFT 1
+#define CONFIG_LSP 1
+#define CONFIG_LZO 0
+#define CONFIG_MDCT 1
+#define CONFIG_PIXELUTILS 0
+#define CONFIG_NETWORK 0
+#define CONFIG_RDFT 1
+#define CONFIG_AUTODETECT 0
+#define CONFIG_FONTCONFIG 0
+#define CONFIG_LARGE_TESTS 1
+#define CONFIG_LINUX_PERF 0
+#define CONFIG_MEMORY_POISONING 0
+#define CONFIG_NEON_CLOBBER_TEST 0
+#define CONFIG_OSSFUZZ 0
+#define CONFIG_PIC 1
+#define CONFIG_THUMB 0
+#define CONFIG_VALGRIND_BACKTRACE 0
+#define CONFIG_XMM_CLOBBER_TEST 0
+#define CONFIG_BSFS 1
+#define CONFIG_DECODERS 1
+#define CONFIG_ENCODERS 0
+#define CONFIG_HWACCELS 0
+#define CONFIG_PARSERS 1
+#define CONFIG_INDEVS 0
+#define CONFIG_OUTDEVS 0
+#define CONFIG_FILTERS 0
+#define CONFIG_DEMUXERS 1
+#define CONFIG_MUXERS 0
+#define CONFIG_PROTOCOLS 0
+#define CONFIG_AANDCTTABLES 0
+#define CONFIG_AC3DSP 0
+#define CONFIG_ADTS_HEADER 1
+#define CONFIG_AUDIO_FRAME_QUEUE 1
+#define CONFIG_AUDIODSP 0
+#define CONFIG_BLOCKDSP 1
+#define CONFIG_BSWAPDSP 0
+#define CONFIG_CABAC 1
+#define CONFIG_CBS 0
+#define CONFIG_CBS_AV1 0
+#define CONFIG_CBS_H264 0
+#define CONFIG_CBS_H265 0
+#define CONFIG_CBS_JPEG 0
+#define CONFIG_CBS_MPEG2 0
+#define CONFIG_CBS_VP9 0
+#define CONFIG_DIRAC_PARSE 1
+#define CONFIG_DNN 0
+#define CONFIG_DVPROFILE 0
+#define CONFIG_EXIF 1
+#define CONFIG_FAANDCT 0
+#define CONFIG_FAANIDCT 0
+#define CONFIG_FDCTDSP 1
+#define CONFIG_FLACDSP 1
+#define CONFIG_FMTCONVERT 0
+#define CONFIG_FRAME_THREAD_ENCODER 0
+#define CONFIG_G722DSP 0
+#define CONFIG_GOLOMB 1
+#define CONFIG_GPLV3 0
+#define CONFIG_H263DSP 1
+#define CONFIG_H264CHROMA 1
+#define CONFIG_H264DSP 1
+#define CONFIG_H264PARSE 1
+#define CONFIG_H264PRED 1
+#define CONFIG_H264QPEL 1
+#define CONFIG_HEVCPARSE 0
+#define CONFIG_HPELDSP 1
+#define CONFIG_HUFFMAN 0
+#define CONFIG_HUFFYUVDSP 0
+#define CONFIG_HUFFYUVENCDSP 0
+#define CONFIG_IDCTDSP 1
+#define CONFIG_IIRFILTER 0
+#define CONFIG_MDCT15 1
+#define CONFIG_INTRAX8 0
+#define CONFIG_ISO_MEDIA 1
+#define CONFIG_IVIDSP 0
+#define CONFIG_JPEGTABLES 0
+#define CONFIG_LGPLV3 0
+#define CONFIG_LIBX262 0
+#define CONFIG_LLAUDDSP 0
+#define CONFIG_LLVIDDSP 0
+#define CONFIG_LLVIDENCDSP 0
+#define CONFIG_LPC 0
+#define CONFIG_LZF 0
+#define CONFIG_ME_CMP 1
+#define CONFIG_MPEG_ER 1
+#define CONFIG_MPEGAUDIO 1
+#define CONFIG_MPEGAUDIODSP 1
+#define CONFIG_MPEGAUDIOHEADER 1
+#define CONFIG_MPEGVIDEO 1
+#define CONFIG_MPEGVIDEOENC 0
+#define CONFIG_MSS34DSP 0
+#define CONFIG_PIXBLOCKDSP 1
+#define CONFIG_QPELDSP 1
+#define CONFIG_QSV 0
+#define CONFIG_QSVDEC 0
+#define CONFIG_QSVENC 0
+#define CONFIG_QSVVPP 0
+#define CONFIG_RANGECODER 0
+#define CONFIG_RIFFDEC 1
+#define CONFIG_RIFFENC 0
+#define CONFIG_RTPDEC 0
+#define CONFIG_RTPENC_CHAIN 0
+#define CONFIG_RV34DSP 0
+#define CONFIG_SCENE_SAD 0
+#define CONFIG_SINEWIN 1
+#define CONFIG_SNAPPY 0
+#define CONFIG_SRTP 0
+#define CONFIG_STARTCODE 1
+#define CONFIG_TEXTUREDSP 0
+#define CONFIG_TEXTUREDSPENC 0
+#define CONFIG_TPELDSP 0
+#define CONFIG_VAAPI_1 0
+#define CONFIG_VAAPI_ENCODE 0
+#define CONFIG_VC1DSP 0
+#define CONFIG_VIDEODSP 1
+#define CONFIG_VP3DSP 1
+#define CONFIG_VP56DSP 0
+#define CONFIG_VP8DSP 1
+#define CONFIG_WMA_FREQS 0
+#define CONFIG_WMV2DSP 0
+#define CONFIG_AAC_ADTSTOASC_BSF 0
+#define CONFIG_AV1_FRAME_MERGE_BSF 0
+#define CONFIG_AV1_FRAME_SPLIT_BSF 0
+#define CONFIG_AV1_METADATA_BSF 0
+#define CONFIG_CHOMP_BSF 0
+#define CONFIG_DUMP_EXTRADATA_BSF 0
+#define CONFIG_DCA_CORE_BSF 0
+#define CONFIG_EAC3_CORE_BSF 0
+#define CONFIG_EXTRACT_EXTRADATA_BSF 0
+#define CONFIG_FILTER_UNITS_BSF 0
+#define CONFIG_H264_METADATA_BSF 0
+#define CONFIG_H264_MP4TOANNEXB_BSF 0
+#define CONFIG_H264_REDUNDANT_PPS_BSF 0
+#define CONFIG_HAPQA_EXTRACT_BSF 0
+#define CONFIG_HEVC_METADATA_BSF 0
+#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
+#define CONFIG_IMX_DUMP_HEADER_BSF 0
+#define CONFIG_MJPEG2JPEG_BSF 0
+#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
+#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
+#define CONFIG_MPEG2_METADATA_BSF 0
+#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
+#define CONFIG_MOV2TEXTSUB_BSF 0
+#define CONFIG_NOISE_BSF 0
+#define CONFIG_NULL_BSF 1
+#define CONFIG_PRORES_METADATA_BSF 0
+#define CONFIG_REMOVE_EXTRADATA_BSF 0
+#define CONFIG_TEXT2MOVSUB_BSF 0
+#define CONFIG_TRACE_HEADERS_BSF 0
+#define CONFIG_TRUEHD_CORE_BSF 0
+#define CONFIG_VP9_METADATA_BSF 0
+#define CONFIG_VP9_RAW_REORDER_BSF 0
+#define CONFIG_VP9_SUPERFRAME_BSF 0
+#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
+#define CONFIG_AASC_DECODER 0
+#define CONFIG_AIC_DECODER 0
+#define CONFIG_ALIAS_PIX_DECODER 0
+#define CONFIG_AGM_DECODER 0
+#define CONFIG_AMV_DECODER 0
+#define CONFIG_ANM_DECODER 0
+#define CONFIG_ANSI_DECODER 0
+#define CONFIG_APNG_DECODER 0
+#define CONFIG_ARBC_DECODER 0
+#define CONFIG_ASV1_DECODER 0
+#define CONFIG_ASV2_DECODER 0
+#define CONFIG_AURA_DECODER 0
+#define CONFIG_AURA2_DECODER 0
+#define CONFIG_AVRP_DECODER 0
+#define CONFIG_AVRN_DECODER 0
+#define CONFIG_AVS_DECODER 0
+#define CONFIG_AVUI_DECODER 0
+#define CONFIG_AYUV_DECODER 0
+#define CONFIG_BETHSOFTVID_DECODER 0
+#define CONFIG_BFI_DECODER 0
+#define CONFIG_BINK_DECODER 0
+#define CONFIG_BITPACKED_DECODER 0
+#define CONFIG_BMP_DECODER 0
+#define CONFIG_BMV_VIDEO_DECODER 0
+#define CONFIG_BRENDER_PIX_DECODER 0
+#define CONFIG_C93_DECODER 0
+#define CONFIG_CAVS_DECODER 0
+#define CONFIG_CDGRAPHICS_DECODER 0
+#define CONFIG_CDTOONS_DECODER 0
+#define CONFIG_CDXL_DECODER 0
+#define CONFIG_CFHD_DECODER 0
+#define CONFIG_CINEPAK_DECODER 0
+#define CONFIG_CLEARVIDEO_DECODER 0
+#define CONFIG_CLJR_DECODER 0
+#define CONFIG_CLLC_DECODER 0
+#define CONFIG_COMFORTNOISE_DECODER 0
+#define CONFIG_CPIA_DECODER 0
+#define CONFIG_CSCD_DECODER 0
+#define CONFIG_CYUV_DECODER 0
+#define CONFIG_DDS_DECODER 0
+#define CONFIG_DFA_DECODER 0
+#define CONFIG_DIRAC_DECODER 0
+#define CONFIG_DNXHD_DECODER 0
+#define CONFIG_DPX_DECODER 0
+#define CONFIG_DSICINVIDEO_DECODER 0
+#define CONFIG_DVAUDIO_DECODER 0
+#define CONFIG_DVVIDEO_DECODER 0
+#define CONFIG_DXA_DECODER 0
+#define CONFIG_DXTORY_DECODER 0
+#define CONFIG_DXV_DECODER 0
+#define CONFIG_EACMV_DECODER 0
+#define CONFIG_EAMAD_DECODER 0
+#define CONFIG_EATGQ_DECODER 0
+#define CONFIG_EATGV_DECODER 0
+#define CONFIG_EATQI_DECODER 0
+#define CONFIG_EIGHTBPS_DECODER 0
+#define CONFIG_EIGHTSVX_EXP_DECODER 0
+#define CONFIG_EIGHTSVX_FIB_DECODER 0
+#define CONFIG_ESCAPE124_DECODER 0
+#define CONFIG_ESCAPE130_DECODER 0
+#define CONFIG_EXR_DECODER 0
+#define CONFIG_FFV1_DECODER 0
+#define CONFIG_FFVHUFF_DECODER 0
+#define CONFIG_FIC_DECODER 0
+#define CONFIG_FITS_DECODER 0
+#define CONFIG_FLASHSV_DECODER 0
+#define CONFIG_FLASHSV2_DECODER 0
+#define CONFIG_FLIC_DECODER 0
+#define CONFIG_FLV_DECODER 0
+#define CONFIG_FMVC_DECODER 0
+#define CONFIG_FOURXM_DECODER 0
+#define CONFIG_FRAPS_DECODER 0
+#define CONFIG_FRWU_DECODER 0
+#define CONFIG_G2M_DECODER 0
+#define CONFIG_GDV_DECODER 0
+#define CONFIG_GIF_DECODER 0
+#define CONFIG_H261_DECODER 0
+#define CONFIG_H263_DECODER 1
+#define CONFIG_H263I_DECODER 0
+#define CONFIG_H263P_DECODER 0
+#define CONFIG_H263_V4L2M2M_DECODER 0
+#define CONFIG_H264_DECODER 1
+#define CONFIG_H264_CRYSTALHD_DECODER 0
+#define CONFIG_H264_V4L2M2M_DECODER 0
+#define CONFIG_H264_MEDIACODEC_DECODER 0
+#define CONFIG_H264_MMAL_DECODER 0
+#define CONFIG_H264_QSV_DECODER 0
+#define CONFIG_H264_RKMPP_DECODER 0
+#define CONFIG_HAP_DECODER 0
+#define CONFIG_HEVC_DECODER 0
+#define CONFIG_HEVC_QSV_DECODER 0
+#define CONFIG_HEVC_RKMPP_DECODER 0
+#define CONFIG_HEVC_V4L2M2M_DECODER 0
+#define CONFIG_HNM4_VIDEO_DECODER 0
+#define CONFIG_HQ_HQA_DECODER 0
+#define CONFIG_HQX_DECODER 0
+#define CONFIG_HUFFYUV_DECODER 0
+#define CONFIG_HYMT_DECODER 0
+#define CONFIG_IDCIN_DECODER 0
+#define CONFIG_IFF_ILBM_DECODER 0
+#define CONFIG_IMM4_DECODER 0
+#define CONFIG_IMM5_DECODER 0
+#define CONFIG_INDEO2_DECODER 0
+#define CONFIG_INDEO3_DECODER 0
+#define CONFIG_INDEO4_DECODER 0
+#define CONFIG_INDEO5_DECODER 0
+#define CONFIG_INTERPLAY_VIDEO_DECODER 0
+#define CONFIG_JPEG2000_DECODER 0
+#define CONFIG_JPEGLS_DECODER 0
+#define CONFIG_JV_DECODER 0
+#define CONFIG_KGV1_DECODER 0
+#define CONFIG_KMVC_DECODER 0
+#define CONFIG_LAGARITH_DECODER 0
+#define CONFIG_LOCO_DECODER 0
+#define CONFIG_LSCR_DECODER 0
+#define CONFIG_M101_DECODER 0
+#define CONFIG_MAGICYUV_DECODER 0
+#define CONFIG_MDEC_DECODER 0
+#define CONFIG_MIMIC_DECODER 0
+#define CONFIG_MJPEG_DECODER 0
+#define CONFIG_MJPEGB_DECODER 0
+#define CONFIG_MMVIDEO_DECODER 0
+#define CONFIG_MOTIONPIXELS_DECODER 0
+#define CONFIG_MPEG1VIDEO_DECODER 0
+#define CONFIG_MPEG2VIDEO_DECODER 0
+#define CONFIG_MPEG4_DECODER 1
+#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
+#define CONFIG_MPEG4_V4L2M2M_DECODER 0
+#define CONFIG_MPEG4_MMAL_DECODER 0
+#define CONFIG_MPEGVIDEO_DECODER 0
+#define CONFIG_MPEG1_V4L2M2M_DECODER 0
+#define CONFIG_MPEG2_MMAL_DECODER 0
+#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
+#define CONFIG_MPEG2_V4L2M2M_DECODER 0
+#define CONFIG_MPEG2_QSV_DECODER 0
+#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
+#define CONFIG_MSA1_DECODER 0
+#define CONFIG_MSCC_DECODER 0
+#define CONFIG_MSMPEG4V1_DECODER 0
+#define CONFIG_MSMPEG4V2_DECODER 0
+#define CONFIG_MSMPEG4V3_DECODER 0
+#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
+#define CONFIG_MSRLE_DECODER 0
+#define CONFIG_MSS1_DECODER 0
+#define CONFIG_MSS2_DECODER 0
+#define CONFIG_MSVIDEO1_DECODER 0
+#define CONFIG_MSZH_DECODER 0
+#define CONFIG_MTS2_DECODER 0
+#define CONFIG_MV30_DECODER 0
+#define CONFIG_MVC1_DECODER 0
+#define CONFIG_MVC2_DECODER 0
+#define CONFIG_MVDV_DECODER 0
+#define CONFIG_MVHA_DECODER 0
+#define CONFIG_MWSC_DECODER 0
+#define CONFIG_MXPEG_DECODER 0
+#define CONFIG_NUV_DECODER 0
+#define CONFIG_PAF_VIDEO_DECODER 0
+#define CONFIG_PAM_DECODER 0
+#define CONFIG_PBM_DECODER 0
+#define CONFIG_PCX_DECODER 0
+#define CONFIG_PGM_DECODER 0
+#define CONFIG_PGMYUV_DECODER 0
+#define CONFIG_PICTOR_DECODER 0
+#define CONFIG_PIXLET_DECODER 0
+#define CONFIG_PNG_DECODER 0
+#define CONFIG_PPM_DECODER 0
+#define CONFIG_PRORES_DECODER 0
+#define CONFIG_PROSUMER_DECODER 0
+#define CONFIG_PSD_DECODER 0
+#define CONFIG_PTX_DECODER 0
+#define CONFIG_QDRAW_DECODER 0
+#define CONFIG_QPEG_DECODER 0
+#define CONFIG_QTRLE_DECODER 0
+#define CONFIG_R10K_DECODER 0
+#define CONFIG_R210_DECODER 0
+#define CONFIG_RASC_DECODER 0
+#define CONFIG_RAWVIDEO_DECODER 0
+#define CONFIG_RL2_DECODER 0
+#define CONFIG_ROQ_DECODER 0
+#define CONFIG_RPZA_DECODER 0
+#define CONFIG_RSCC_DECODER 0
+#define CONFIG_RV10_DECODER 0
+#define CONFIG_RV20_DECODER 0
+#define CONFIG_RV30_DECODER 0
+#define CONFIG_RV40_DECODER 0
+#define CONFIG_S302M_DECODER 0
+#define CONFIG_SANM_DECODER 0
+#define CONFIG_SCPR_DECODER 0
+#define CONFIG_SCREENPRESSO_DECODER 0
+#define CONFIG_SGI_DECODER 0
+#define CONFIG_SGIRLE_DECODER 0
+#define CONFIG_SHEERVIDEO_DECODER 0
+#define CONFIG_SMACKER_DECODER 0
+#define CONFIG_SMC_DECODER 0
+#define CONFIG_SMVJPEG_DECODER 0
+#define CONFIG_SNOW_DECODER 0
+#define CONFIG_SP5X_DECODER 0
+#define CONFIG_SPEEDHQ_DECODER 0
+#define CONFIG_SRGC_DECODER 0
+#define CONFIG_SUNRAST_DECODER 0
+#define CONFIG_SVQ1_DECODER 0
+#define CONFIG_SVQ3_DECODER 0
+#define CONFIG_TARGA_DECODER 0
+#define CONFIG_TARGA_Y216_DECODER 0
+#define CONFIG_TDSC_DECODER 0
+#define CONFIG_THEORA_DECODER 1
+#define CONFIG_THP_DECODER 0
+#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
+#define CONFIG_TIFF_DECODER 0
+#define CONFIG_TMV_DECODER 0
+#define CONFIG_TRUEMOTION1_DECODER 0
+#define CONFIG_TRUEMOTION2_DECODER 0
+#define CONFIG_TRUEMOTION2RT_DECODER 0
+#define CONFIG_TSCC_DECODER 0
+#define CONFIG_TSCC2_DECODER 0
+#define CONFIG_TXD_DECODER 0
+#define CONFIG_ULTI_DECODER 0
+#define CONFIG_UTVIDEO_DECODER 0
+#define CONFIG_V210_DECODER 0
+#define CONFIG_V210X_DECODER 0
+#define CONFIG_V308_DECODER 0
+#define CONFIG_V408_DECODER 0
+#define CONFIG_V410_DECODER 0
+#define CONFIG_VB_DECODER 0
+#define CONFIG_VBLE_DECODER 0
+#define CONFIG_VC1_DECODER 0
+#define CONFIG_VC1_CRYSTALHD_DECODER 0
+#define CONFIG_VC1IMAGE_DECODER 0
+#define CONFIG_VC1_MMAL_DECODER 0
+#define CONFIG_VC1_QSV_DECODER 0
+#define CONFIG_VC1_V4L2M2M_DECODER 0
+#define CONFIG_VCR1_DECODER 0
+#define CONFIG_VMDVIDEO_DECODER 0
+#define CONFIG_VMNC_DECODER 0
+#define CONFIG_VP3_DECODER 1
+#define CONFIG_VP4_DECODER 0
+#define CONFIG_VP5_DECODER 0
+#define CONFIG_VP6_DECODER 0
+#define CONFIG_VP6A_DECODER 0
+#define CONFIG_VP6F_DECODER 0
+#define CONFIG_VP7_DECODER 0
+#define CONFIG_VP8_DECODER 1
+#define CONFIG_VP8_RKMPP_DECODER 0
+#define CONFIG_VP8_V4L2M2M_DECODER 0
+#define CONFIG_VP9_DECODER 0
+#define CONFIG_VP9_RKMPP_DECODER 0
+#define CONFIG_VP9_V4L2M2M_DECODER 0
+#define CONFIG_VQA_DECODER 0
+#define CONFIG_WEBP_DECODER 0
+#define CONFIG_WCMV_DECODER 0
+#define CONFIG_WRAPPED_AVFRAME_DECODER 0
+#define CONFIG_WMV1_DECODER 0
+#define CONFIG_WMV2_DECODER 0
+#define CONFIG_WMV3_DECODER 0
+#define CONFIG_WMV3_CRYSTALHD_DECODER 0
+#define CONFIG_WMV3IMAGE_DECODER 0
+#define CONFIG_WNV1_DECODER 0
+#define CONFIG_XAN_WC3_DECODER 0
+#define CONFIG_XAN_WC4_DECODER 0
+#define CONFIG_XBM_DECODER 0
+#define CONFIG_XFACE_DECODER 0
+#define CONFIG_XL_DECODER 0
+#define CONFIG_XPM_DECODER 0
+#define CONFIG_XWD_DECODER 0
+#define CONFIG_Y41P_DECODER 0
+#define CONFIG_YLC_DECODER 0
+#define CONFIG_YOP_DECODER 0
+#define CONFIG_YUV4_DECODER 0
+#define CONFIG_ZERO12V_DECODER 0
+#define CONFIG_ZEROCODEC_DECODER 0
+#define CONFIG_ZLIB_DECODER 0
+#define CONFIG_ZMBV_DECODER 0
+#define CONFIG_AAC_DECODER 1
+#define CONFIG_AAC_FIXED_DECODER 0
+#define CONFIG_AAC_LATM_DECODER 1
+#define CONFIG_AC3_DECODER 0
+#define CONFIG_AC3_FIXED_DECODER 0
+#define CONFIG_ACELP_KELVIN_DECODER 0
+#define CONFIG_ALAC_DECODER 0
+#define CONFIG_ALS_DECODER 0
+#define CONFIG_AMRNB_DECODER 1
+#define CONFIG_AMRWB_DECODER 1
+#define CONFIG_APE_DECODER 0
+#define CONFIG_APTX_DECODER 1
+#define CONFIG_APTX_HD_DECODER 0
+#define CONFIG_ATRAC1_DECODER 0
+#define CONFIG_ATRAC3_DECODER 0
+#define CONFIG_ATRAC3AL_DECODER 0
+#define CONFIG_ATRAC3P_DECODER 0
+#define CONFIG_ATRAC3PAL_DECODER 0
+#define CONFIG_ATRAC9_DECODER 0
+#define CONFIG_BINKAUDIO_DCT_DECODER 0
+#define CONFIG_BINKAUDIO_RDFT_DECODER 0
+#define CONFIG_BMV_AUDIO_DECODER 0
+#define CONFIG_COOK_DECODER 0
+#define CONFIG_DCA_DECODER 0
+#define CONFIG_DOLBY_E_DECODER 0
+#define CONFIG_DSD_LSBF_DECODER 0
+#define CONFIG_DSD_MSBF_DECODER 0
+#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
+#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
+#define CONFIG_DSICINAUDIO_DECODER 0
+#define CONFIG_DSS_SP_DECODER 0
+#define CONFIG_DST_DECODER 0
+#define CONFIG_EAC3_DECODER 0
+#define CONFIG_EVRC_DECODER 0
+#define CONFIG_FFWAVESYNTH_DECODER 0
+#define CONFIG_FLAC_DECODER 1
+#define CONFIG_G723_1_DECODER 0
+#define CONFIG_G729_DECODER 0
+#define CONFIG_GSM_DECODER 0
+#define CONFIG_GSM_MS_DECODER 1
+#define CONFIG_HCA_DECODER 0
+#define CONFIG_HCOM_DECODER 0
+#define CONFIG_IAC_DECODER 0
+#define CONFIG_ILBC_DECODER 0
+#define CONFIG_IMC_DECODER 0
+#define CONFIG_INTERPLAY_ACM_DECODER 0
+#define CONFIG_MACE3_DECODER 0
+#define CONFIG_MACE6_DECODER 0
+#define CONFIG_METASOUND_DECODER 0
+#define CONFIG_MLP_DECODER 0
+#define CONFIG_MP1_DECODER 0
+#define CONFIG_MP1FLOAT_DECODER 0
+#define CONFIG_MP2_DECODER 0
+#define CONFIG_MP2FLOAT_DECODER 0
+#define CONFIG_MP3FLOAT_DECODER 0
+#define CONFIG_MP3_DECODER 1
+#define CONFIG_MP3ADUFLOAT_DECODER 0
+#define CONFIG_MP3ADU_DECODER 0
+#define CONFIG_MP3ON4FLOAT_DECODER 0
+#define CONFIG_MP3ON4_DECODER 0
+#define CONFIG_MPC7_DECODER 0
+#define CONFIG_MPC8_DECODER 0
+#define CONFIG_NELLYMOSER_DECODER 0
+#define CONFIG_ON2AVC_DECODER 0
+#define CONFIG_OPUS_DECODER 0
+#define CONFIG_PAF_AUDIO_DECODER 0
+#define CONFIG_QCELP_DECODER 0
+#define CONFIG_QDM2_DECODER 0
+#define CONFIG_QDMC_DECODER 0
+#define CONFIG_RA_144_DECODER 0
+#define CONFIG_RA_288_DECODER 0
+#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 1
+#define CONFIG_SHORTEN_DECODER 0
+#define CONFIG_SIPR_DECODER 0
+#define CONFIG_SIREN_DECODER 0
+#define CONFIG_SMACKAUD_DECODER 0
+#define CONFIG_SONIC_DECODER 0
+#define CONFIG_TAK_DECODER 0
+#define CONFIG_TRUEHD_DECODER 0
+#define CONFIG_TRUESPEECH_DECODER 0
+#define CONFIG_TTA_DECODER 0
+#define CONFIG_TWINVQ_DECODER 0
+#define CONFIG_VMDAUDIO_DECODER 0
+#define CONFIG_VORBIS_DECODER 1
+#define CONFIG_WAVPACK_DECODER 0
+#define CONFIG_WMALOSSLESS_DECODER 0
+#define CONFIG_WMAPRO_DECODER 0
+#define CONFIG_WMAV1_DECODER 0
+#define CONFIG_WMAV2_DECODER 0
+#define CONFIG_WMAVOICE_DECODER 0
+#define CONFIG_WS_SND1_DECODER 0
+#define CONFIG_XMA1_DECODER 0
+#define CONFIG_XMA2_DECODER 0
+#define CONFIG_PCM_ALAW_DECODER 1
+#define CONFIG_PCM_BLURAY_DECODER 0
+#define CONFIG_PCM_DVD_DECODER 0
+#define CONFIG_PCM_F16LE_DECODER 0
+#define CONFIG_PCM_F24LE_DECODER 0
+#define CONFIG_PCM_F32BE_DECODER 0
+#define CONFIG_PCM_F32LE_DECODER 1
+#define CONFIG_PCM_F64BE_DECODER 0
+#define CONFIG_PCM_F64LE_DECODER 0
+#define CONFIG_PCM_LXF_DECODER 0
+#define CONFIG_PCM_MULAW_DECODER 1
+#define CONFIG_PCM_S8_DECODER 0
+#define CONFIG_PCM_S8_PLANAR_DECODER 0
+#define CONFIG_PCM_S16BE_DECODER 1
+#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
+#define CONFIG_PCM_S16LE_DECODER 1
+#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S24BE_DECODER 1
+#define CONFIG_PCM_S24DAUD_DECODER 0
+#define CONFIG_PCM_S24LE_DECODER 1
+#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S32BE_DECODER 0
+#define CONFIG_PCM_S32LE_DECODER 1
+#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S64BE_DECODER 0
+#define CONFIG_PCM_S64LE_DECODER 0
+#define CONFIG_PCM_U8_DECODER 1
+#define CONFIG_PCM_U16BE_DECODER 0
+#define CONFIG_PCM_U16LE_DECODER 0
+#define CONFIG_PCM_U24BE_DECODER 0
+#define CONFIG_PCM_U24LE_DECODER 0
+#define CONFIG_PCM_U32BE_DECODER 0
+#define CONFIG_PCM_U32LE_DECODER 0
+#define CONFIG_PCM_VIDC_DECODER 0
+#define CONFIG_DERF_DPCM_DECODER 0
+#define CONFIG_GREMLIN_DPCM_DECODER 0
+#define CONFIG_INTERPLAY_DPCM_DECODER 0
+#define CONFIG_ROQ_DPCM_DECODER 0
+#define CONFIG_SDX2_DPCM_DECODER 0
+#define CONFIG_SOL_DPCM_DECODER 0
+#define CONFIG_XAN_DPCM_DECODER 0
+#define CONFIG_ADPCM_4XM_DECODER 0
+#define CONFIG_ADPCM_ADX_DECODER 0
+#define CONFIG_ADPCM_AFC_DECODER 0
+#define CONFIG_ADPCM_AGM_DECODER 0
+#define CONFIG_ADPCM_AICA_DECODER 0
+#define CONFIG_ADPCM_ARGO_DECODER 0
+#define CONFIG_ADPCM_CT_DECODER 0
+#define CONFIG_ADPCM_DTK_DECODER 0
+#define CONFIG_ADPCM_EA_DECODER 0
+#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
+#define CONFIG_ADPCM_EA_R1_DECODER 0
+#define CONFIG_ADPCM_EA_R2_DECODER 0
+#define CONFIG_ADPCM_EA_R3_DECODER 0
+#define CONFIG_ADPCM_EA_XAS_DECODER 0
+#define CONFIG_ADPCM_G722_DECODER 0
+#define CONFIG_ADPCM_G726_DECODER 0
+#define CONFIG_ADPCM_G726LE_DECODER 0
+#define CONFIG_ADPCM_IMA_AMV_DECODER 0
+#define CONFIG_ADPCM_IMA_ALP_DECODER 0
+#define CONFIG_ADPCM_IMA_APC_DECODER 0
+#define CONFIG_ADPCM_IMA_APM_DECODER 0
+#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
+#define CONFIG_ADPCM_IMA_DK3_DECODER 0
+#define CONFIG_ADPCM_IMA_DK4_DECODER 0
+#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
+#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
+#define CONFIG_ADPCM_IMA_ISS_DECODER 0
+#define CONFIG_ADPCM_IMA_MTF_DECODER 0
+#define CONFIG_ADPCM_IMA_OKI_DECODER 0
+#define CONFIG_ADPCM_IMA_QT_DECODER 0
+#define CONFIG_ADPCM_IMA_RAD_DECODER 0
+#define CONFIG_ADPCM_IMA_SSI_DECODER 0
+#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
+#define CONFIG_ADPCM_IMA_WAV_DECODER 0
+#define CONFIG_ADPCM_IMA_WS_DECODER 0
+#define CONFIG_ADPCM_MS_DECODER 0
+#define CONFIG_ADPCM_MTAF_DECODER 0
+#define CONFIG_ADPCM_PSX_DECODER 0
+#define CONFIG_ADPCM_SBPRO_2_DECODER 0
+#define CONFIG_ADPCM_SBPRO_3_DECODER 0
+#define CONFIG_ADPCM_SBPRO_4_DECODER 0
+#define CONFIG_ADPCM_SWF_DECODER 0
+#define CONFIG_ADPCM_THP_DECODER 0
+#define CONFIG_ADPCM_THP_LE_DECODER 0
+#define CONFIG_ADPCM_VIMA_DECODER 0
+#define CONFIG_ADPCM_XA_DECODER 0
+#define CONFIG_ADPCM_YAMAHA_DECODER 0
+#define CONFIG_ADPCM_ZORK_DECODER 0
+#define CONFIG_SSA_DECODER 0
+#define CONFIG_ASS_DECODER 0
+#define CONFIG_CCAPTION_DECODER 0
+#define CONFIG_DVBSUB_DECODER 0
+#define CONFIG_DVDSUB_DECODER 0
+#define CONFIG_JACOSUB_DECODER 0
+#define CONFIG_MICRODVD_DECODER 0
+#define CONFIG_MOVTEXT_DECODER 0
+#define CONFIG_MPL2_DECODER 0
+#define CONFIG_PGSSUB_DECODER 0
+#define CONFIG_PJS_DECODER 0
+#define CONFIG_REALTEXT_DECODER 0
+#define CONFIG_SAMI_DECODER 0
+#define CONFIG_SRT_DECODER 0
+#define CONFIG_STL_DECODER 0
+#define CONFIG_SUBRIP_DECODER 0
+#define CONFIG_SUBVIEWER_DECODER 0
+#define CONFIG_SUBVIEWER1_DECODER 0
+#define CONFIG_TEXT_DECODER 0
+#define CONFIG_VPLAYER_DECODER 0
+#define CONFIG_WEBVTT_DECODER 0
+#define CONFIG_XSUB_DECODER 0
+#define CONFIG_AAC_AT_DECODER 0
+#define CONFIG_AC3_AT_DECODER 0
+#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
+#define CONFIG_ALAC_AT_DECODER 0
+#define CONFIG_AMR_NB_AT_DECODER 0
+#define CONFIG_EAC3_AT_DECODER 0
+#define CONFIG_GSM_MS_AT_DECODER 0
+#define CONFIG_ILBC_AT_DECODER 0
+#define CONFIG_MP1_AT_DECODER 0
+#define CONFIG_MP2_AT_DECODER 0
+#define CONFIG_MP3_AT_DECODER 0
+#define CONFIG_PCM_ALAW_AT_DECODER 0
+#define CONFIG_PCM_MULAW_AT_DECODER 0
+#define CONFIG_QDMC_AT_DECODER 0
+#define CONFIG_QDM2_AT_DECODER 0
+#define CONFIG_LIBARIBB24_DECODER 0
+#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
+#define CONFIG_LIBDAV1D_DECODER 0
+#define CONFIG_LIBDAVS2_DECODER 0
+#define CONFIG_LIBFDK_AAC_DECODER 0
+#define CONFIG_LIBGSM_DECODER 0
+#define CONFIG_LIBGSM_MS_DECODER 0
+#define CONFIG_LIBILBC_DECODER 0
+#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
+#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
+#define CONFIG_LIBOPENJPEG_DECODER 0
+#define CONFIG_LIBOPUS_DECODER 1
+#define CONFIG_LIBRSVG_DECODER 0
+#define CONFIG_LIBSPEEX_DECODER 0
+#define CONFIG_LIBVORBIS_DECODER 0
+#define CONFIG_LIBVPX_VP8_DECODER 0
+#define CONFIG_LIBVPX_VP9_DECODER 0
+#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
+#define CONFIG_BINTEXT_DECODER 0
+#define CONFIG_XBIN_DECODER 0
+#define CONFIG_IDF_DECODER 0
+#define CONFIG_LIBAOM_AV1_DECODER 0
+#define CONFIG_LIBOPENH264_DECODER 0
+#define CONFIG_H264_CUVID_DECODER 0
+#define CONFIG_HEVC_CUVID_DECODER 0
+#define CONFIG_HEVC_MEDIACODEC_DECODER 0
+#define CONFIG_MJPEG_CUVID_DECODER 0
+#define CONFIG_MJPEG_QSV_DECODER 0
+#define CONFIG_MPEG1_CUVID_DECODER 0
+#define CONFIG_MPEG2_CUVID_DECODER 0
+#define CONFIG_MPEG4_CUVID_DECODER 0
+#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
+#define CONFIG_VC1_CUVID_DECODER 0
+#define CONFIG_VP8_CUVID_DECODER 0
+#define CONFIG_VP8_MEDIACODEC_DECODER 0
+#define CONFIG_VP8_QSV_DECODER 0
+#define CONFIG_VP9_CUVID_DECODER 0
+#define CONFIG_VP9_MEDIACODEC_DECODER 0
+#define CONFIG_VP9_QSV_DECODER 0
+#define CONFIG_A64MULTI_ENCODER 0
+#define CONFIG_A64MULTI5_ENCODER 0
+#define CONFIG_ALIAS_PIX_ENCODER 0
+#define CONFIG_AMV_ENCODER 0
+#define CONFIG_APNG_ENCODER 0
+#define CONFIG_ASV1_ENCODER 0
+#define CONFIG_ASV2_ENCODER 0
+#define CONFIG_AVRP_ENCODER 0
+#define CONFIG_AVUI_ENCODER 0
+#define CONFIG_AYUV_ENCODER 0
+#define CONFIG_BMP_ENCODER 0
+#define CONFIG_CINEPAK_ENCODER 0
+#define CONFIG_CLJR_ENCODER 0
+#define CONFIG_COMFORTNOISE_ENCODER 0
+#define CONFIG_DNXHD_ENCODER 0
+#define CONFIG_DPX_ENCODER 0
+#define CONFIG_DVVIDEO_ENCODER 0
+#define CONFIG_FFV1_ENCODER 0
+#define CONFIG_FFVHUFF_ENCODER 0
+#define CONFIG_FITS_ENCODER 0
+#define CONFIG_FLASHSV_ENCODER 0
+#define CONFIG_FLASHSV2_ENCODER 0
+#define CONFIG_FLV_ENCODER 0
+#define CONFIG_GIF_ENCODER 0
+#define CONFIG_H261_ENCODER 0
+#define CONFIG_H263_ENCODER 0
+#define CONFIG_H263P_ENCODER 0
+#define CONFIG_HAP_ENCODER 0
+#define CONFIG_HUFFYUV_ENCODER 0
+#define CONFIG_JPEG2000_ENCODER 0
+#define CONFIG_JPEGLS_ENCODER 0
+#define CONFIG_LJPEG_ENCODER 0
+#define CONFIG_MAGICYUV_ENCODER 0
+#define CONFIG_MJPEG_ENCODER 0
+#define CONFIG_MPEG1VIDEO_ENCODER 0
+#define CONFIG_MPEG2VIDEO_ENCODER 0
+#define CONFIG_MPEG4_ENCODER 0
+#define CONFIG_MSMPEG4V2_ENCODER 0
+#define CONFIG_MSMPEG4V3_ENCODER 0
+#define CONFIG_MSVIDEO1_ENCODER 0
+#define CONFIG_PAM_ENCODER 0
+#define CONFIG_PBM_ENCODER 0
+#define CONFIG_PCX_ENCODER 0
+#define CONFIG_PGM_ENCODER 0
+#define CONFIG_PGMYUV_ENCODER 0
+#define CONFIG_PNG_ENCODER 0
+#define CONFIG_PPM_ENCODER 0
+#define CONFIG_PRORES_ENCODER 0
+#define CONFIG_PRORES_AW_ENCODER 0
+#define CONFIG_PRORES_KS_ENCODER 0
+#define CONFIG_QTRLE_ENCODER 0
+#define CONFIG_R10K_ENCODER 0
+#define CONFIG_R210_ENCODER 0
+#define CONFIG_RAWVIDEO_ENCODER 0
+#define CONFIG_ROQ_ENCODER 0
+#define CONFIG_RV10_ENCODER 0
+#define CONFIG_RV20_ENCODER 0
+#define CONFIG_S302M_ENCODER 0
+#define CONFIG_SGI_ENCODER 0
+#define CONFIG_SNOW_ENCODER 0
+#define CONFIG_SUNRAST_ENCODER 0
+#define CONFIG_SVQ1_ENCODER 0
+#define CONFIG_TARGA_ENCODER 0
+#define CONFIG_TIFF_ENCODER 0
+#define CONFIG_UTVIDEO_ENCODER 0
+#define CONFIG_V210_ENCODER 0
+#define CONFIG_V308_ENCODER 0
+#define CONFIG_V408_ENCODER 0
+#define CONFIG_V410_ENCODER 0
+#define CONFIG_VC2_ENCODER 0
+#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
+#define CONFIG_WMV1_ENCODER 0
+#define CONFIG_WMV2_ENCODER 0
+#define CONFIG_XBM_ENCODER 0
+#define CONFIG_XFACE_ENCODER 0
+#define CONFIG_XWD_ENCODER 0
+#define CONFIG_Y41P_ENCODER 0
+#define CONFIG_YUV4_ENCODER 0
+#define CONFIG_ZLIB_ENCODER 0
+#define CONFIG_ZMBV_ENCODER 0
+#define CONFIG_AAC_ENCODER 0
+#define CONFIG_AC3_ENCODER 0
+#define CONFIG_AC3_FIXED_ENCODER 0
+#define CONFIG_ALAC_ENCODER 0
+#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
+#define CONFIG_DCA_ENCODER 0
+#define CONFIG_EAC3_ENCODER 0
+#define CONFIG_FLAC_ENCODER 0
+#define CONFIG_G723_1_ENCODER 0
+#define CONFIG_MLP_ENCODER 0
+#define CONFIG_MP2_ENCODER 0
+#define CONFIG_MP2FIXED_ENCODER 0
+#define CONFIG_NELLYMOSER_ENCODER 0
+#define CONFIG_OPUS_ENCODER 0
+#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
+#define CONFIG_SONIC_ENCODER 0
+#define CONFIG_SONIC_LS_ENCODER 0
+#define CONFIG_TRUEHD_ENCODER 0
+#define CONFIG_TTA_ENCODER 0
+#define CONFIG_VORBIS_ENCODER 0
+#define CONFIG_WAVPACK_ENCODER 0
+#define CONFIG_WMAV1_ENCODER 0
+#define CONFIG_WMAV2_ENCODER 0
+#define CONFIG_PCM_ALAW_ENCODER 0
+#define CONFIG_PCM_DVD_ENCODER 0
+#define CONFIG_PCM_F32BE_ENCODER 0
+#define CONFIG_PCM_F32LE_ENCODER 0
+#define CONFIG_PCM_F64BE_ENCODER 0
+#define CONFIG_PCM_F64LE_ENCODER 0
+#define CONFIG_PCM_MULAW_ENCODER 0
+#define CONFIG_PCM_S8_ENCODER 0
+#define CONFIG_PCM_S8_PLANAR_ENCODER 0
+#define CONFIG_PCM_S16BE_ENCODER 0
+#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S16LE_ENCODER 0
+#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S24BE_ENCODER 0
+#define CONFIG_PCM_S24DAUD_ENCODER 0
+#define CONFIG_PCM_S24LE_ENCODER 0
+#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S32BE_ENCODER 0
+#define CONFIG_PCM_S32LE_ENCODER 0
+#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S64BE_ENCODER 0
+#define CONFIG_PCM_S64LE_ENCODER 0
+#define CONFIG_PCM_U8_ENCODER 0
+#define CONFIG_PCM_U16BE_ENCODER 0
+#define CONFIG_PCM_U16LE_ENCODER 0
+#define CONFIG_PCM_U24BE_ENCODER 0
+#define CONFIG_PCM_U24LE_ENCODER 0
+#define CONFIG_PCM_U32BE_ENCODER 0
+#define CONFIG_PCM_U32LE_ENCODER 0
+#define CONFIG_PCM_VIDC_ENCODER 0
+#define CONFIG_ROQ_DPCM_ENCODER 0
+#define CONFIG_ADPCM_ADX_ENCODER 0
+#define CONFIG_ADPCM_G722_ENCODER 0
+#define CONFIG_ADPCM_G726_ENCODER 0
+#define CONFIG_ADPCM_G726LE_ENCODER 0
+#define CONFIG_ADPCM_IMA_QT_ENCODER 0
+#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
+#define CONFIG_ADPCM_MS_ENCODER 0
+#define CONFIG_ADPCM_SWF_ENCODER 0
+#define CONFIG_ADPCM_YAMAHA_ENCODER 0
+#define CONFIG_SSA_ENCODER 0
+#define CONFIG_ASS_ENCODER 0
+#define CONFIG_DVBSUB_ENCODER 0
+#define CONFIG_DVDSUB_ENCODER 0
+#define CONFIG_MOVTEXT_ENCODER 0
+#define CONFIG_SRT_ENCODER 0
+#define CONFIG_SUBRIP_ENCODER 0
+#define CONFIG_TEXT_ENCODER 0
+#define CONFIG_WEBVTT_ENCODER 0
+#define CONFIG_XSUB_ENCODER 0
+#define CONFIG_AAC_AT_ENCODER 0
+#define CONFIG_ALAC_AT_ENCODER 0
+#define CONFIG_ILBC_AT_ENCODER 0
+#define CONFIG_PCM_ALAW_AT_ENCODER 0
+#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBAOM_AV1_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
+#define CONFIG_LIBFDK_AAC_ENCODER 0
+#define CONFIG_LIBGSM_ENCODER 0
+#define CONFIG_LIBGSM_MS_ENCODER 0
+#define CONFIG_LIBILBC_ENCODER 0
+#define CONFIG_LIBMP3LAME_ENCODER 0
+#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
+#define CONFIG_LIBOPENJPEG_ENCODER 0
+#define CONFIG_LIBOPUS_ENCODER 0
+#define CONFIG_LIBRAV1E_ENCODER 0
+#define CONFIG_LIBSHINE_ENCODER 0
+#define CONFIG_LIBSPEEX_ENCODER 0
+#define CONFIG_LIBTHEORA_ENCODER 0
+#define CONFIG_LIBTWOLAME_ENCODER 0
+#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
+#define CONFIG_LIBVORBIS_ENCODER 0
+#define CONFIG_LIBVPX_VP8_ENCODER 0
+#define CONFIG_LIBVPX_VP9_ENCODER 0
+#define CONFIG_LIBWAVPACK_ENCODER 0
+#define CONFIG_LIBWEBP_ANIM_ENCODER 0
+#define CONFIG_LIBWEBP_ENCODER 0
+#define CONFIG_LIBX262_ENCODER 0
+#define CONFIG_LIBX264_ENCODER 0
+#define CONFIG_LIBX264RGB_ENCODER 0
+#define CONFIG_LIBX265_ENCODER 0
+#define CONFIG_LIBXAVS_ENCODER 0
+#define CONFIG_LIBXAVS2_ENCODER 0
+#define CONFIG_LIBXVID_ENCODER 0
+#define CONFIG_H263_V4L2M2M_ENCODER 0
+#define CONFIG_LIBOPENH264_ENCODER 0
+#define CONFIG_H264_AMF_ENCODER 0
+#define CONFIG_H264_NVENC_ENCODER 0
+#define CONFIG_H264_OMX_ENCODER 0
+#define CONFIG_H264_QSV_ENCODER 0
+#define CONFIG_H264_V4L2M2M_ENCODER 0
+#define CONFIG_H264_VAAPI_ENCODER 0
+#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
+#define CONFIG_NVENC_ENCODER 0
+#define CONFIG_NVENC_H264_ENCODER 0
+#define CONFIG_NVENC_HEVC_ENCODER 0
+#define CONFIG_HEVC_AMF_ENCODER 0
+#define CONFIG_HEVC_NVENC_ENCODER 0
+#define CONFIG_HEVC_QSV_ENCODER 0
+#define CONFIG_HEVC_V4L2M2M_ENCODER 0
+#define CONFIG_HEVC_VAAPI_ENCODER 0
+#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
+#define CONFIG_LIBKVAZAAR_ENCODER 0
+#define CONFIG_MJPEG_QSV_ENCODER 0
+#define CONFIG_MJPEG_VAAPI_ENCODER 0
+#define CONFIG_MPEG2_QSV_ENCODER 0
+#define CONFIG_MPEG2_VAAPI_ENCODER 0
+#define CONFIG_MPEG4_OMX_ENCODER 0
+#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
+#define CONFIG_VP8_V4L2M2M_ENCODER 0
+#define CONFIG_VP8_VAAPI_ENCODER 0
+#define CONFIG_VP9_VAAPI_ENCODER 0
+#define CONFIG_VP9_QSV_ENCODER 0
+#define CONFIG_H263_VAAPI_HWACCEL 0
+#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_H264_D3D11VA_HWACCEL 0
+#define CONFIG_H264_D3D11VA2_HWACCEL 0
+#define CONFIG_H264_DXVA2_HWACCEL 0
+#define CONFIG_H264_NVDEC_HWACCEL 0
+#define CONFIG_H264_VAAPI_HWACCEL 0
+#define CONFIG_H264_VDPAU_HWACCEL 0
+#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_HEVC_D3D11VA_HWACCEL 0
+#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
+#define CONFIG_HEVC_DXVA2_HWACCEL 0
+#define CONFIG_HEVC_NVDEC_HWACCEL 0
+#define CONFIG_HEVC_VAAPI_HWACCEL 0
+#define CONFIG_HEVC_VDPAU_HWACCEL 0
+#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
+#define CONFIG_MPEG1_NVDEC_HWACCEL 0
+#define CONFIG_MPEG1_VDPAU_HWACCEL 0
+#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MPEG1_XVMC_HWACCEL 0
+#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
+#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
+#define CONFIG_MPEG2_NVDEC_HWACCEL 0
+#define CONFIG_MPEG2_DXVA2_HWACCEL 0
+#define CONFIG_MPEG2_VAAPI_HWACCEL 0
+#define CONFIG_MPEG2_VDPAU_HWACCEL 0
+#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MPEG2_XVMC_HWACCEL 0
+#define CONFIG_MPEG4_NVDEC_HWACCEL 0
+#define CONFIG_MPEG4_VAAPI_HWACCEL 0
+#define CONFIG_MPEG4_VDPAU_HWACCEL 0
+#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_VC1_D3D11VA_HWACCEL 0
+#define CONFIG_VC1_D3D11VA2_HWACCEL 0
+#define CONFIG_VC1_DXVA2_HWACCEL 0
+#define CONFIG_VC1_NVDEC_HWACCEL 0
+#define CONFIG_VC1_VAAPI_HWACCEL 0
+#define CONFIG_VC1_VDPAU_HWACCEL 0
+#define CONFIG_VP8_NVDEC_HWACCEL 0
+#define CONFIG_VP8_VAAPI_HWACCEL 0
+#define CONFIG_VP9_D3D11VA_HWACCEL 0
+#define CONFIG_VP9_D3D11VA2_HWACCEL 0
+#define CONFIG_VP9_DXVA2_HWACCEL 0
+#define CONFIG_VP9_NVDEC_HWACCEL 0
+#define CONFIG_VP9_VAAPI_HWACCEL 0
+#define CONFIG_VP9_VDPAU_HWACCEL 0
+#define CONFIG_WMV3_D3D11VA_HWACCEL 0
+#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
+#define CONFIG_WMV3_DXVA2_HWACCEL 0
+#define CONFIG_WMV3_NVDEC_HWACCEL 0
+#define CONFIG_WMV3_VAAPI_HWACCEL 0
+#define CONFIG_WMV3_VDPAU_HWACCEL 0
+#define CONFIG_AAC_PARSER 1
+#define CONFIG_AAC_LATM_PARSER 1
+#define CONFIG_AC3_PARSER 0
+#define CONFIG_ADX_PARSER 0
+#define CONFIG_AV1_PARSER 0
+#define CONFIG_AVS2_PARSER 0
+#define CONFIG_BMP_PARSER 0
+#define CONFIG_CAVSVIDEO_PARSER 0
+#define CONFIG_COOK_PARSER 0
+#define CONFIG_DCA_PARSER 0
+#define CONFIG_DIRAC_PARSER 0
+#define CONFIG_DNXHD_PARSER 0
+#define CONFIG_DPX_PARSER 0
+#define CONFIG_DVAUDIO_PARSER 0
+#define CONFIG_DVBSUB_PARSER 0
+#define CONFIG_DVDSUB_PARSER 0
+#define CONFIG_DVD_NAV_PARSER 0
+#define CONFIG_FLAC_PARSER 1
+#define CONFIG_G723_1_PARSER 0
+#define CONFIG_G729_PARSER 0
+#define CONFIG_GIF_PARSER 0
+#define CONFIG_GSM_PARSER 1
+#define CONFIG_H261_PARSER 0
+#define CONFIG_H263_PARSER 1
+#define CONFIG_H264_PARSER 1
+#define CONFIG_HEVC_PARSER 0
+#define CONFIG_MJPEG_PARSER 0
+#define CONFIG_MLP_PARSER 0
+#define CONFIG_MPEG4VIDEO_PARSER 1
+#define CONFIG_MPEGAUDIO_PARSER 1
+#define CONFIG_MPEGVIDEO_PARSER 0
+#define CONFIG_OPUS_PARSER 1
+#define CONFIG_PNG_PARSER 0
+#define CONFIG_PNM_PARSER 0
+#define CONFIG_RV30_PARSER 0
+#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
+#define CONFIG_SIPR_PARSER 0
+#define CONFIG_TAK_PARSER 0
+#define CONFIG_VC1_PARSER 0
+#define CONFIG_VORBIS_PARSER 1
+#define CONFIG_VP3_PARSER 1
+#define CONFIG_VP8_PARSER 1
+#define CONFIG_VP9_PARSER 0
+#define CONFIG_WEBP_PARSER 0
+#define CONFIG_XMA_PARSER 0
+#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
+#define CONFIG_AVFOUNDATION_INDEV 0
+#define CONFIG_BKTR_INDEV 0
+#define CONFIG_DECKLINK_INDEV 0
+#define CONFIG_DSHOW_INDEV 0
+#define CONFIG_FBDEV_INDEV 0
+#define CONFIG_GDIGRAB_INDEV 0
+#define CONFIG_IEC61883_INDEV 0
+#define CONFIG_JACK_INDEV 0
+#define CONFIG_KMSGRAB_INDEV 0
+#define CONFIG_LAVFI_INDEV 0
+#define CONFIG_OPENAL_INDEV 0
+#define CONFIG_OSS_INDEV 0
+#define CONFIG_PULSE_INDEV 0
+#define CONFIG_SNDIO_INDEV 0
+#define CONFIG_V4L2_INDEV 0
+#define CONFIG_VFWCAP_INDEV 0
+#define CONFIG_XCBGRAB_INDEV 0
+#define CONFIG_LIBCDIO_INDEV 0
+#define CONFIG_LIBDC1394_INDEV 0
+#define CONFIG_ALSA_OUTDEV 0
+#define CONFIG_CACA_OUTDEV 0
+#define CONFIG_DECKLINK_OUTDEV 0
+#define CONFIG_FBDEV_OUTDEV 0
+#define CONFIG_OPENGL_OUTDEV 0
+#define CONFIG_OSS_OUTDEV 0
+#define CONFIG_PULSE_OUTDEV 0
+#define CONFIG_SDL2_OUTDEV 0
+#define CONFIG_SNDIO_OUTDEV 0
+#define CONFIG_V4L2_OUTDEV 0
+#define CONFIG_XV_OUTDEV 0
+#define CONFIG_ABENCH_FILTER 0
+#define CONFIG_ACOMPRESSOR_FILTER 0
+#define CONFIG_ACONTRAST_FILTER 0
+#define CONFIG_ACOPY_FILTER 0
+#define CONFIG_ACUE_FILTER 0
+#define CONFIG_ACROSSFADE_FILTER 0
+#define CONFIG_ACROSSOVER_FILTER 0
+#define CONFIG_ACRUSHER_FILTER 0
+#define CONFIG_ADECLICK_FILTER 0
+#define CONFIG_ADECLIP_FILTER 0
+#define CONFIG_ADELAY_FILTER 0
+#define CONFIG_ADERIVATIVE_FILTER 0
+#define CONFIG_AECHO_FILTER 0
+#define CONFIG_AEMPHASIS_FILTER 0
+#define CONFIG_AEVAL_FILTER 0
+#define CONFIG_AFADE_FILTER 0
+#define CONFIG_AFFTDN_FILTER 0
+#define CONFIG_AFFTFILT_FILTER 0
+#define CONFIG_AFIR_FILTER 0
+#define CONFIG_AFORMAT_FILTER 0
+#define CONFIG_AGATE_FILTER 0
+#define CONFIG_AIIR_FILTER 0
+#define CONFIG_AINTEGRAL_FILTER 0
+#define CONFIG_AINTERLEAVE_FILTER 0
+#define CONFIG_ALIMITER_FILTER 0
+#define CONFIG_ALLPASS_FILTER 0
+#define CONFIG_ALOOP_FILTER 0
+#define CONFIG_AMERGE_FILTER 0
+#define CONFIG_AMETADATA_FILTER 0
+#define CONFIG_AMIX_FILTER 0
+#define CONFIG_AMULTIPLY_FILTER 0
+#define CONFIG_ANEQUALIZER_FILTER 0
+#define CONFIG_ANLMDN_FILTER 0
+#define CONFIG_ANLMS_FILTER 0
+#define CONFIG_ANULL_FILTER 0
+#define CONFIG_APAD_FILTER 0
+#define CONFIG_APERMS_FILTER 0
+#define CONFIG_APHASER_FILTER 0
+#define CONFIG_APULSATOR_FILTER 0
+#define CONFIG_AREALTIME_FILTER 0
+#define CONFIG_ARESAMPLE_FILTER 0
+#define CONFIG_AREVERSE_FILTER 0
+#define CONFIG_ARNNDN_FILTER 0
+#define CONFIG_ASELECT_FILTER 0
+#define CONFIG_ASENDCMD_FILTER 0
+#define CONFIG_ASETNSAMPLES_FILTER 0
+#define CONFIG_ASETPTS_FILTER 0
+#define CONFIG_ASETRATE_FILTER 0
+#define CONFIG_ASETTB_FILTER 0
+#define CONFIG_ASHOWINFO_FILTER 0
+#define CONFIG_ASIDEDATA_FILTER 0
+#define CONFIG_ASOFTCLIP_FILTER 0
+#define CONFIG_ASPLIT_FILTER 0
+#define CONFIG_ASR_FILTER 0
+#define CONFIG_ASTATS_FILTER 0
+#define CONFIG_ASTREAMSELECT_FILTER 0
+#define CONFIG_ATEMPO_FILTER 0
+#define CONFIG_ATRIM_FILTER 0
+#define CONFIG_AXCORRELATE_FILTER 0
+#define CONFIG_AZMQ_FILTER 0
+#define CONFIG_BANDPASS_FILTER 0
+#define CONFIG_BANDREJECT_FILTER 0
+#define CONFIG_BASS_FILTER 0
+#define CONFIG_BIQUAD_FILTER 0
+#define CONFIG_BS2B_FILTER 0
+#define CONFIG_CHROMABER_VULKAN_FILTER 0
+#define CONFIG_CHANNELMAP_FILTER 0
+#define CONFIG_CHANNELSPLIT_FILTER 0
+#define CONFIG_CHORUS_FILTER 0
+#define CONFIG_COMPAND_FILTER 0
+#define CONFIG_COMPENSATIONDELAY_FILTER 0
+#define CONFIG_CROSSFEED_FILTER 0
+#define CONFIG_CRYSTALIZER_FILTER 0
+#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DEESSER_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
+#define CONFIG_DYNAUDNORM_FILTER 0
+#define CONFIG_EARWAX_FILTER 0
+#define CONFIG_EBUR128_FILTER 0
+#define CONFIG_EQUALIZER_FILTER 0
+#define CONFIG_EXTRASTEREO_FILTER 0
+#define CONFIG_FIREQUALIZER_FILTER 0
+#define CONFIG_FLANGER_FILTER 0
+#define CONFIG_HAAS_FILTER 0
+#define CONFIG_HDCD_FILTER 0
+#define CONFIG_HEADPHONE_FILTER 0
+#define CONFIG_HIGHPASS_FILTER 0
+#define CONFIG_HIGHSHELF_FILTER 0
+#define CONFIG_JOIN_FILTER 0
+#define CONFIG_LADSPA_FILTER 0
+#define CONFIG_LOUDNORM_FILTER 0
+#define CONFIG_LOWPASS_FILTER 0
+#define CONFIG_LOWSHELF_FILTER 0
+#define CONFIG_LV2_FILTER 0
+#define CONFIG_MCOMPAND_FILTER 0
+#define CONFIG_PAN_FILTER 0
+#define CONFIG_REPLAYGAIN_FILTER 0
+#define CONFIG_RESAMPLE_FILTER 0
+#define CONFIG_RUBBERBAND_FILTER 0
+#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
+#define CONFIG_SIDECHAINGATE_FILTER 0
+#define CONFIG_SILENCEDETECT_FILTER 0
+#define CONFIG_SILENCEREMOVE_FILTER 0
+#define CONFIG_SOFALIZER_FILTER 0
+#define CONFIG_STEREOTOOLS_FILTER 0
+#define CONFIG_STEREOWIDEN_FILTER 0
+#define CONFIG_SUPEREQUALIZER_FILTER 0
+#define CONFIG_SURROUND_FILTER 0
+#define CONFIG_TREBLE_FILTER 0
+#define CONFIG_TREMOLO_FILTER 0
+#define CONFIG_VIBRATO_FILTER 0
+#define CONFIG_VOLUME_FILTER 0
+#define CONFIG_VOLUMEDETECT_FILTER 0
+#define CONFIG_AEVALSRC_FILTER 0
+#define CONFIG_AFIRSRC_FILTER 0
+#define CONFIG_ANOISESRC_FILTER 0
+#define CONFIG_ANULLSRC_FILTER 0
+#define CONFIG_FLITE_FILTER 0
+#define CONFIG_HILBERT_FILTER 0
+#define CONFIG_SINC_FILTER 0
+#define CONFIG_SINE_FILTER 0
+#define CONFIG_ANULLSINK_FILTER 0
+#define CONFIG_ADDROI_FILTER 0
+#define CONFIG_ALPHAEXTRACT_FILTER 0
+#define CONFIG_ALPHAMERGE_FILTER 0
+#define CONFIG_AMPLIFY_FILTER 0
+#define CONFIG_ASS_FILTER 0
+#define CONFIG_ATADENOISE_FILTER 0
+#define CONFIG_AVGBLUR_FILTER 0
+#define CONFIG_AVGBLUR_OPENCL_FILTER 0
+#define CONFIG_AVGBLUR_VULKAN_FILTER 0
+#define CONFIG_BBOX_FILTER 0
+#define CONFIG_BENCH_FILTER 0
+#define CONFIG_BILATERAL_FILTER 0
+#define CONFIG_BITPLANENOISE_FILTER 0
+#define CONFIG_BLACKDETECT_FILTER 0
+#define CONFIG_BLACKFRAME_FILTER 0
+#define CONFIG_BLEND_FILTER 0
+#define CONFIG_BM3D_FILTER 0
+#define CONFIG_BOXBLUR_FILTER 0
+#define CONFIG_BOXBLUR_OPENCL_FILTER 0
+#define CONFIG_BWDIF_FILTER 0
+#define CONFIG_CAS_FILTER 0
+#define CONFIG_CHROMAHOLD_FILTER 0
+#define CONFIG_CHROMAKEY_FILTER 0
+#define CONFIG_CHROMASHIFT_FILTER 0
+#define CONFIG_CIESCOPE_FILTER 0
+#define CONFIG_CODECVIEW_FILTER 0
+#define CONFIG_COLORBALANCE_FILTER 0
+#define CONFIG_COLORCHANNELMIXER_FILTER 0
+#define CONFIG_COLORKEY_FILTER 0
+#define CONFIG_COLORKEY_OPENCL_FILTER 0
+#define CONFIG_COLORHOLD_FILTER 0
+#define CONFIG_COLORLEVELS_FILTER 0
+#define CONFIG_COLORMATRIX_FILTER 0
+#define CONFIG_COLORSPACE_FILTER 0
+#define CONFIG_CONVOLUTION_FILTER 0
+#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
+#define CONFIG_CONVOLVE_FILTER 0
+#define CONFIG_COPY_FILTER 0
+#define CONFIG_COREIMAGE_FILTER 0
+#define CONFIG_COVER_RECT_FILTER 0
+#define CONFIG_CROP_FILTER 0
+#define CONFIG_CROPDETECT_FILTER 0
+#define CONFIG_CUE_FILTER 0
+#define CONFIG_CURVES_FILTER 0
+#define CONFIG_DATASCOPE_FILTER 0
+#define CONFIG_DCTDNOIZ_FILTER 0
+#define CONFIG_DEBAND_FILTER 0
+#define CONFIG_DEBLOCK_FILTER 0
+#define CONFIG_DECIMATE_FILTER 0
+#define CONFIG_DECONVOLVE_FILTER 0
+#define CONFIG_DEDOT_FILTER 0
+#define CONFIG_DEFLATE_FILTER 0
+#define CONFIG_DEFLICKER_FILTER 0
+#define CONFIG_DEINTERLACE_QSV_FILTER 0
+#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
+#define CONFIG_DEJUDDER_FILTER 0
+#define CONFIG_DELOGO_FILTER 0
+#define CONFIG_DENOISE_VAAPI_FILTER 0
+#define CONFIG_DERAIN_FILTER 0
+#define CONFIG_DESHAKE_FILTER 0
+#define CONFIG_DESHAKE_OPENCL_FILTER 0
+#define CONFIG_DESPILL_FILTER 0
+#define CONFIG_DETELECINE_FILTER 0
+#define CONFIG_DILATION_FILTER 0
+#define CONFIG_DILATION_OPENCL_FILTER 0
+#define CONFIG_DISPLACE_FILTER 0
+#define CONFIG_DNN_PROCESSING_FILTER 0
+#define CONFIG_DOUBLEWEAVE_FILTER 0
+#define CONFIG_DRAWBOX_FILTER 0
+#define CONFIG_DRAWGRAPH_FILTER 0
+#define CONFIG_DRAWGRID_FILTER 0
+#define CONFIG_DRAWTEXT_FILTER 0
+#define CONFIG_EDGEDETECT_FILTER 0
+#define CONFIG_ELBG_FILTER 0
+#define CONFIG_ENTROPY_FILTER 0
+#define CONFIG_EQ_FILTER 0
+#define CONFIG_EROSION_FILTER 0
+#define CONFIG_EROSION_OPENCL_FILTER 0
+#define CONFIG_EXTRACTPLANES_FILTER 0
+#define CONFIG_FADE_FILTER 0
+#define CONFIG_FFTDNOIZ_FILTER 0
+#define CONFIG_FFTFILT_FILTER 0
+#define CONFIG_FIELD_FILTER 0
+#define CONFIG_FIELDHINT_FILTER 0
+#define CONFIG_FIELDMATCH_FILTER 0
+#define CONFIG_FIELDORDER_FILTER 0
+#define CONFIG_FILLBORDERS_FILTER 0
+#define CONFIG_FIND_RECT_FILTER 0
+#define CONFIG_FLOODFILL_FILTER 0
+#define CONFIG_FORMAT_FILTER 0
+#define CONFIG_FPS_FILTER 0
+#define CONFIG_FRAMEPACK_FILTER 0
+#define CONFIG_FRAMERATE_FILTER 0
+#define CONFIG_FRAMESTEP_FILTER 0
+#define CONFIG_FREEZEDETECT_FILTER 0
+#define CONFIG_FREEZEFRAMES_FILTER 0
+#define CONFIG_FREI0R_FILTER 0
+#define CONFIG_FSPP_FILTER 0
+#define CONFIG_GBLUR_FILTER 0
+#define CONFIG_GEQ_FILTER 0
+#define CONFIG_GRADFUN_FILTER 0
+#define CONFIG_GRAPHMONITOR_FILTER 0
+#define CONFIG_GREYEDGE_FILTER 0
+#define CONFIG_HALDCLUT_FILTER 0
+#define CONFIG_HFLIP_FILTER 0
+#define CONFIG_HISTEQ_FILTER 0
+#define CONFIG_HISTOGRAM_FILTER 0
+#define CONFIG_HQDN3D_FILTER 0
+#define CONFIG_HQX_FILTER 0
+#define CONFIG_HSTACK_FILTER 0
+#define CONFIG_HUE_FILTER 0
+#define CONFIG_HWDOWNLOAD_FILTER 0
+#define CONFIG_HWMAP_FILTER 0
+#define CONFIG_HWUPLOAD_FILTER 0
+#define CONFIG_HWUPLOAD_CUDA_FILTER 0
+#define CONFIG_HYSTERESIS_FILTER 0
+#define CONFIG_IDET_FILTER 0
+#define CONFIG_IL_FILTER 0
+#define CONFIG_INFLATE_FILTER 0
+#define CONFIG_INTERLACE_FILTER 0
+#define CONFIG_INTERLEAVE_FILTER 0
+#define CONFIG_KERNDEINT_FILTER 0
+#define CONFIG_LAGFUN_FILTER 0
+#define CONFIG_LENSCORRECTION_FILTER 0
+#define CONFIG_LENSFUN_FILTER 0
+#define CONFIG_LIBVMAF_FILTER 0
+#define CONFIG_LIMITER_FILTER 0
+#define CONFIG_LOOP_FILTER 0
+#define CONFIG_LUMAKEY_FILTER 0
+#define CONFIG_LUT_FILTER 0
+#define CONFIG_LUT1D_FILTER 0
+#define CONFIG_LUT2_FILTER 0
+#define CONFIG_LUT3D_FILTER 0
+#define CONFIG_LUTRGB_FILTER 0
+#define CONFIG_LUTYUV_FILTER 0
+#define CONFIG_MASKEDCLAMP_FILTER 0
+#define CONFIG_MASKEDMAX_FILTER 0
+#define CONFIG_MASKEDMERGE_FILTER 0
+#define CONFIG_MASKEDMIN_FILTER 0
+#define CONFIG_MASKEDTHRESHOLD_FILTER 0
+#define CONFIG_MASKFUN_FILTER 0
+#define CONFIG_MCDEINT_FILTER 0
+#define CONFIG_MEDIAN_FILTER 0
+#define CONFIG_MERGEPLANES_FILTER 0
+#define CONFIG_MESTIMATE_FILTER 0
+#define CONFIG_METADATA_FILTER 0
+#define CONFIG_MIDEQUALIZER_FILTER 0
+#define CONFIG_MINTERPOLATE_FILTER 0
+#define CONFIG_MIX_FILTER 0
+#define CONFIG_MPDECIMATE_FILTER 0
+#define CONFIG_NEGATE_FILTER 0
+#define CONFIG_NLMEANS_FILTER 0
+#define CONFIG_NLMEANS_OPENCL_FILTER 0
+#define CONFIG_NNEDI_FILTER 0
+#define CONFIG_NOFORMAT_FILTER 0
+#define CONFIG_NOISE_FILTER 0
+#define CONFIG_NORMALIZE_FILTER 0
+#define CONFIG_NULL_FILTER 0
+#define CONFIG_OCR_FILTER 0
+#define CONFIG_OCV_FILTER 0
+#define CONFIG_OSCILLOSCOPE_FILTER 0
+#define CONFIG_OVERLAY_FILTER 0
+#define CONFIG_OVERLAY_OPENCL_FILTER 0
+#define CONFIG_OVERLAY_QSV_FILTER 0
+#define CONFIG_OVERLAY_VULKAN_FILTER 0
+#define CONFIG_OVERLAY_CUDA_FILTER 0
+#define CONFIG_OWDENOISE_FILTER 0
+#define CONFIG_PAD_FILTER 0
+#define CONFIG_PAD_OPENCL_FILTER 0
+#define CONFIG_PALETTEGEN_FILTER 0
+#define CONFIG_PALETTEUSE_FILTER 0
+#define CONFIG_PERMS_FILTER 0
+#define CONFIG_PERSPECTIVE_FILTER 0
+#define CONFIG_PHASE_FILTER 0
+#define CONFIG_PHOTOSENSITIVITY_FILTER 0
+#define CONFIG_PIXDESCTEST_FILTER 0
+#define CONFIG_PIXSCOPE_FILTER 0
+#define CONFIG_PP_FILTER 0
+#define CONFIG_PP7_FILTER 0
+#define CONFIG_PREMULTIPLY_FILTER 0
+#define CONFIG_PREWITT_FILTER 0
+#define CONFIG_PREWITT_OPENCL_FILTER 0
+#define CONFIG_PROCAMP_VAAPI_FILTER 0
+#define CONFIG_PROGRAM_OPENCL_FILTER 0
+#define CONFIG_PSEUDOCOLOR_FILTER 0
+#define CONFIG_PSNR_FILTER 0
+#define CONFIG_PULLUP_FILTER 0
+#define CONFIG_QP_FILTER 0
+#define CONFIG_RANDOM_FILTER 0
+#define CONFIG_READEIA608_FILTER 0
+#define CONFIG_READVITC_FILTER 0
+#define CONFIG_REALTIME_FILTER 0
+#define CONFIG_REMAP_FILTER 0
+#define CONFIG_REMOVEGRAIN_FILTER 0
+#define CONFIG_REMOVELOGO_FILTER 0
+#define CONFIG_REPEATFIELDS_FILTER 0
+#define CONFIG_REVERSE_FILTER 0
+#define CONFIG_RGBASHIFT_FILTER 0
+#define CONFIG_ROBERTS_FILTER 0
+#define CONFIG_ROBERTS_OPENCL_FILTER 0
+#define CONFIG_ROTATE_FILTER 0
+#define CONFIG_SAB_FILTER 0
+#define CONFIG_SCALE_FILTER 0
+#define CONFIG_SCALE_CUDA_FILTER 0
+#define CONFIG_SCALE_NPP_FILTER 0
+#define CONFIG_SCALE_QSV_FILTER 0
+#define CONFIG_SCALE_VAAPI_FILTER 0
+#define CONFIG_SCALE_VULKAN_FILTER 0
+#define CONFIG_SCALE2REF_FILTER 0
+#define CONFIG_SCROLL_FILTER 0
+#define CONFIG_SELECT_FILTER 0
+#define CONFIG_SELECTIVECOLOR_FILTER 0
+#define CONFIG_SENDCMD_FILTER 0
+#define CONFIG_SEPARATEFIELDS_FILTER 0
+#define CONFIG_SETDAR_FILTER 0
+#define CONFIG_SETFIELD_FILTER 0
+#define CONFIG_SETPARAMS_FILTER 0
+#define CONFIG_SETPTS_FILTER 0
+#define CONFIG_SETRANGE_FILTER 0
+#define CONFIG_SETSAR_FILTER 0
+#define CONFIG_SETTB_FILTER 0
+#define CONFIG_SHARPNESS_VAAPI_FILTER 0
+#define CONFIG_SHOWINFO_FILTER 0
+#define CONFIG_SHOWPALETTE_FILTER 0
+#define CONFIG_SHUFFLEFRAMES_FILTER 0
+#define CONFIG_SHUFFLEPLANES_FILTER 0
+#define CONFIG_SIDEDATA_FILTER 0
+#define CONFIG_SIGNALSTATS_FILTER 0
+#define CONFIG_SIGNATURE_FILTER 0
+#define CONFIG_SMARTBLUR_FILTER 0
+#define CONFIG_SOBEL_FILTER 0
+#define CONFIG_SOBEL_OPENCL_FILTER 0
+#define CONFIG_SPLIT_FILTER 0
+#define CONFIG_SPP_FILTER 0
+#define CONFIG_SR_FILTER 0
+#define CONFIG_SSIM_FILTER 0
+#define CONFIG_STEREO3D_FILTER 0
+#define CONFIG_STREAMSELECT_FILTER 0
+#define CONFIG_SUBTITLES_FILTER 0
+#define CONFIG_SUPER2XSAI_FILTER 0
+#define CONFIG_SWAPRECT_FILTER 0
+#define CONFIG_SWAPUV_FILTER 0
+#define CONFIG_TBLEND_FILTER 0
+#define CONFIG_TELECINE_FILTER 0
+#define CONFIG_THISTOGRAM_FILTER 0
+#define CONFIG_THRESHOLD_FILTER 0
+#define CONFIG_THUMBNAIL_FILTER 0
+#define CONFIG_THUMBNAIL_CUDA_FILTER 0
+#define CONFIG_TILE_FILTER 0
+#define CONFIG_TINTERLACE_FILTER 0
+#define CONFIG_TLUT2_FILTER 0
+#define CONFIG_TMEDIAN_FILTER 0
+#define CONFIG_TMIX_FILTER 0
+#define CONFIG_TONEMAP_FILTER 0
+#define CONFIG_TONEMAP_OPENCL_FILTER 0
+#define CONFIG_TONEMAP_VAAPI_FILTER 0
+#define CONFIG_TPAD_FILTER 0
+#define CONFIG_TRANSPOSE_FILTER 0
+#define CONFIG_TRANSPOSE_NPP_FILTER 0
+#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
+#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
+#define CONFIG_TRIM_FILTER 0
+#define CONFIG_UNPREMULTIPLY_FILTER 0
+#define CONFIG_UNSHARP_FILTER 0
+#define CONFIG_UNSHARP_OPENCL_FILTER 0
+#define CONFIG_USPP_FILTER 0
+#define CONFIG_V360_FILTER 0
+#define CONFIG_VAGUEDENOISER_FILTER 0
+#define CONFIG_VECTORSCOPE_FILTER 0
+#define CONFIG_VFLIP_FILTER 0
+#define CONFIG_VFRDET_FILTER 0
+#define CONFIG_VIBRANCE_FILTER 0
+#define CONFIG_VIDSTABDETECT_FILTER 0
+#define CONFIG_VIDSTABTRANSFORM_FILTER 0
+#define CONFIG_VIGNETTE_FILTER 0
+#define CONFIG_VMAFMOTION_FILTER 0
+#define CONFIG_VPP_QSV_FILTER 0
+#define CONFIG_VSTACK_FILTER 0
+#define CONFIG_W3FDIF_FILTER 0
+#define CONFIG_WAVEFORM_FILTER 0
+#define CONFIG_WEAVE_FILTER 0
+#define CONFIG_XBR_FILTER 0
+#define CONFIG_XFADE_FILTER 0
+#define CONFIG_XFADE_OPENCL_FILTER 0
+#define CONFIG_XMEDIAN_FILTER 0
+#define CONFIG_XSTACK_FILTER 0
+#define CONFIG_YADIF_FILTER 0
+#define CONFIG_YADIF_CUDA_FILTER 0
+#define CONFIG_YAEPBLUR_FILTER 0
+#define CONFIG_ZMQ_FILTER 0
+#define CONFIG_ZOOMPAN_FILTER 0
+#define CONFIG_ZSCALE_FILTER 0
+#define CONFIG_ALLRGB_FILTER 0
+#define CONFIG_ALLYUV_FILTER 0
+#define CONFIG_CELLAUTO_FILTER 0
+#define CONFIG_COLOR_FILTER 0
+#define CONFIG_COREIMAGESRC_FILTER 0
+#define CONFIG_FREI0R_SRC_FILTER 0
+#define CONFIG_HALDCLUTSRC_FILTER 0
+#define CONFIG_LIFE_FILTER 0
+#define CONFIG_MANDELBROT_FILTER 0
+#define CONFIG_MPTESTSRC_FILTER 0
+#define CONFIG_NULLSRC_FILTER 0
+#define CONFIG_OPENCLSRC_FILTER 0
+#define CONFIG_PAL75BARS_FILTER 0
+#define CONFIG_PAL100BARS_FILTER 0
+#define CONFIG_RGBTESTSRC_FILTER 0
+#define CONFIG_SIERPINSKI_FILTER 0
+#define CONFIG_SMPTEBARS_FILTER 0
+#define CONFIG_SMPTEHDBARS_FILTER 0
+#define CONFIG_TESTSRC_FILTER 0
+#define CONFIG_TESTSRC2_FILTER 0
+#define CONFIG_YUVTESTSRC_FILTER 0
+#define CONFIG_NULLSINK_FILTER 0
+#define CONFIG_ABITSCOPE_FILTER 0
+#define CONFIG_ADRAWGRAPH_FILTER 0
+#define CONFIG_AGRAPHMONITOR_FILTER 0
+#define CONFIG_AHISTOGRAM_FILTER 0
+#define CONFIG_APHASEMETER_FILTER 0
+#define CONFIG_AVECTORSCOPE_FILTER 0
+#define CONFIG_CONCAT_FILTER 0
+#define CONFIG_SHOWCQT_FILTER 0
+#define CONFIG_SHOWFREQS_FILTER 0
+#define CONFIG_SHOWSPATIAL_FILTER 0
+#define CONFIG_SHOWSPECTRUM_FILTER 0
+#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
+#define CONFIG_SHOWVOLUME_FILTER 0
+#define CONFIG_SHOWWAVES_FILTER 0
+#define CONFIG_SHOWWAVESPIC_FILTER 0
+#define CONFIG_SPECTRUMSYNTH_FILTER 0
+#define CONFIG_AMOVIE_FILTER 0
+#define CONFIG_MOVIE_FILTER 0
+#define CONFIG_AFIFO_FILTER 0
+#define CONFIG_FIFO_FILTER 0
+#define CONFIG_AA_DEMUXER 0
+#define CONFIG_AAC_DEMUXER 1
+#define CONFIG_AC3_DEMUXER 0
+#define CONFIG_ACM_DEMUXER 0
+#define CONFIG_ACT_DEMUXER 0
+#define CONFIG_ADF_DEMUXER 0
+#define CONFIG_ADP_DEMUXER 0
+#define CONFIG_ADS_DEMUXER 0
+#define CONFIG_ADX_DEMUXER 0
+#define CONFIG_AEA_DEMUXER 0
+#define CONFIG_AFC_DEMUXER 0
+#define CONFIG_AIFF_DEMUXER 0
+#define CONFIG_AIX_DEMUXER 0
+#define CONFIG_ALP_DEMUXER 0
+#define CONFIG_AMR_DEMUXER 1
+#define CONFIG_AMRNB_DEMUXER 0
+#define CONFIG_AMRWB_DEMUXER 0
+#define CONFIG_ANM_DEMUXER 0
+#define CONFIG_APC_DEMUXER 0
+#define CONFIG_APE_DEMUXER 0
+#define CONFIG_APM_DEMUXER 0
+#define CONFIG_APNG_DEMUXER 0
+#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
+#define CONFIG_AQTITLE_DEMUXER 0
+#define CONFIG_ARGO_ASF_DEMUXER 0
+#define CONFIG_ASF_DEMUXER 0
+#define CONFIG_ASF_O_DEMUXER 0
+#define CONFIG_ASS_DEMUXER 0
+#define CONFIG_AST_DEMUXER 0
+#define CONFIG_AU_DEMUXER 0
+#define CONFIG_AV1_DEMUXER 0
+#define CONFIG_AVI_DEMUXER 1
+#define CONFIG_AVISYNTH_DEMUXER 0
+#define CONFIG_AVR_DEMUXER 0
+#define CONFIG_AVS_DEMUXER 0
+#define CONFIG_AVS2_DEMUXER 0
+#define CONFIG_BETHSOFTVID_DEMUXER 0
+#define CONFIG_BFI_DEMUXER 0
+#define CONFIG_BINTEXT_DEMUXER 0
+#define CONFIG_BINK_DEMUXER 0
+#define CONFIG_BIT_DEMUXER 0
+#define CONFIG_BMV_DEMUXER 0
+#define CONFIG_BFSTM_DEMUXER 0
+#define CONFIG_BRSTM_DEMUXER 0
+#define CONFIG_BOA_DEMUXER 0
+#define CONFIG_C93_DEMUXER 0
+#define CONFIG_CAF_DEMUXER 0
+#define CONFIG_CAVSVIDEO_DEMUXER 0
+#define CONFIG_CDG_DEMUXER 0
+#define CONFIG_CDXL_DEMUXER 0
+#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
+#define CONFIG_CONCAT_DEMUXER 0
+#define CONFIG_DASH_DEMUXER 0
+#define CONFIG_DATA_DEMUXER 0
+#define CONFIG_DAUD_DEMUXER 0
+#define CONFIG_DCSTR_DEMUXER 0
+#define CONFIG_DERF_DEMUXER 0
+#define CONFIG_DFA_DEMUXER 0
+#define CONFIG_DHAV_DEMUXER 0
+#define CONFIG_DIRAC_DEMUXER 0
+#define CONFIG_DNXHD_DEMUXER 0
+#define CONFIG_DSF_DEMUXER 0
+#define CONFIG_DSICIN_DEMUXER 0
+#define CONFIG_DSS_DEMUXER 0
+#define CONFIG_DTS_DEMUXER 0
+#define CONFIG_DTSHD_DEMUXER 0
+#define CONFIG_DV_DEMUXER 0
+#define CONFIG_DVBSUB_DEMUXER 0
+#define CONFIG_DVBTXT_DEMUXER 0
+#define CONFIG_DXA_DEMUXER 0
+#define CONFIG_EA_DEMUXER 0
+#define CONFIG_EA_CDATA_DEMUXER 0
+#define CONFIG_EAC3_DEMUXER 0
+#define CONFIG_EPAF_DEMUXER 0
+#define CONFIG_FFMETADATA_DEMUXER 0
+#define CONFIG_FILMSTRIP_DEMUXER 0
+#define CONFIG_FITS_DEMUXER 0
+#define CONFIG_FLAC_DEMUXER 1
+#define CONFIG_FLIC_DEMUXER 0
+#define CONFIG_FLV_DEMUXER 0
+#define CONFIG_LIVE_FLV_DEMUXER 0
+#define CONFIG_FOURXM_DEMUXER 0
+#define CONFIG_FRM_DEMUXER 0
+#define CONFIG_FSB_DEMUXER 0
+#define CONFIG_FWSE_DEMUXER 0
+#define CONFIG_G722_DEMUXER 0
+#define CONFIG_G723_1_DEMUXER 0
+#define CONFIG_G726_DEMUXER 0
+#define CONFIG_G726LE_DEMUXER 0
+#define CONFIG_G729_DEMUXER 0
+#define CONFIG_GDV_DEMUXER 0
+#define CONFIG_GENH_DEMUXER 0
+#define CONFIG_GIF_DEMUXER 0
+#define CONFIG_GSM_DEMUXER 1
+#define CONFIG_GXF_DEMUXER 0
+#define CONFIG_H261_DEMUXER 0
+#define CONFIG_H263_DEMUXER 0
+#define CONFIG_H264_DEMUXER 0
+#define CONFIG_HCA_DEMUXER 0
+#define CONFIG_HCOM_DEMUXER 0
+#define CONFIG_HEVC_DEMUXER 0
+#define CONFIG_HLS_DEMUXER 0
+#define CONFIG_HNM_DEMUXER 0
+#define CONFIG_ICO_DEMUXER 0
+#define CONFIG_IDCIN_DEMUXER 0
+#define CONFIG_IDF_DEMUXER 0
+#define CONFIG_IFF_DEMUXER 0
+#define CONFIG_IFV_DEMUXER 0
+#define CONFIG_ILBC_DEMUXER 0
+#define CONFIG_IMAGE2_DEMUXER 0
+#define CONFIG_IMAGE2PIPE_DEMUXER 0
+#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
+#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
+#define CONFIG_INGENIENT_DEMUXER 0
+#define CONFIG_IPMOVIE_DEMUXER 0
+#define CONFIG_IRCAM_DEMUXER 0
+#define CONFIG_ISS_DEMUXER 0
+#define CONFIG_IV8_DEMUXER 0
+#define CONFIG_IVF_DEMUXER 0
+#define CONFIG_IVR_DEMUXER 0
+#define CONFIG_JACOSUB_DEMUXER 0
+#define CONFIG_JV_DEMUXER 0
+#define CONFIG_KUX_DEMUXER 0
+#define CONFIG_KVAG_DEMUXER 0
+#define CONFIG_LMLM4_DEMUXER 0
+#define CONFIG_LOAS_DEMUXER 0
+#define CONFIG_LRC_DEMUXER 0
+#define CONFIG_LVF_DEMUXER 0
+#define CONFIG_LXF_DEMUXER 0
+#define CONFIG_M4V_DEMUXER 0
+#define CONFIG_MATROSKA_DEMUXER 1
+#define CONFIG_MGSTS_DEMUXER 0
+#define CONFIG_MICRODVD_DEMUXER 0
+#define CONFIG_MJPEG_DEMUXER 0
+#define CONFIG_MJPEG_2000_DEMUXER 0
+#define CONFIG_MLP_DEMUXER 0
+#define CONFIG_MLV_DEMUXER 0
+#define CONFIG_MM_DEMUXER 0
+#define CONFIG_MMF_DEMUXER 0
+#define CONFIG_MOV_DEMUXER 1
+#define CONFIG_MP3_DEMUXER 1
+#define CONFIG_MPC_DEMUXER 0
+#define CONFIG_MPC8_DEMUXER 0
+#define CONFIG_MPEGPS_DEMUXER 0
+#define CONFIG_MPEGTS_DEMUXER 0
+#define CONFIG_MPEGTSRAW_DEMUXER 0
+#define CONFIG_MPEGVIDEO_DEMUXER 0
+#define CONFIG_MPJPEG_DEMUXER 0
+#define CONFIG_MPL2_DEMUXER 0
+#define CONFIG_MPSUB_DEMUXER 0
+#define CONFIG_MSF_DEMUXER 0
+#define CONFIG_MSNWC_TCP_DEMUXER 0
+#define CONFIG_MTAF_DEMUXER 0
+#define CONFIG_MTV_DEMUXER 0
+#define CONFIG_MUSX_DEMUXER 0
+#define CONFIG_MV_DEMUXER 0
+#define CONFIG_MVI_DEMUXER 0
+#define CONFIG_MXF_DEMUXER 0
+#define CONFIG_MXG_DEMUXER 0
+#define CONFIG_NC_DEMUXER 0
+#define CONFIG_NISTSPHERE_DEMUXER 0
+#define CONFIG_NSP_DEMUXER 0
+#define CONFIG_NSV_DEMUXER 0
+#define CONFIG_NUT_DEMUXER 0
+#define CONFIG_NUV_DEMUXER 0
+#define CONFIG_OGG_DEMUXER 1
+#define CONFIG_OMA_DEMUXER 0
+#define CONFIG_PAF_DEMUXER 0
+#define CONFIG_PCM_ALAW_DEMUXER 0
+#define CONFIG_PCM_MULAW_DEMUXER 0
+#define CONFIG_PCM_VIDC_DEMUXER 0
+#define CONFIG_PCM_F64BE_DEMUXER 0
+#define CONFIG_PCM_F64LE_DEMUXER 0
+#define CONFIG_PCM_F32BE_DEMUXER 0
+#define CONFIG_PCM_F32LE_DEMUXER 0
+#define CONFIG_PCM_S32BE_DEMUXER 0
+#define CONFIG_PCM_S32LE_DEMUXER 0
+#define CONFIG_PCM_S24BE_DEMUXER 0
+#define CONFIG_PCM_S24LE_DEMUXER 0
+#define CONFIG_PCM_S16BE_DEMUXER 0
+#define CONFIG_PCM_S16LE_DEMUXER 0
+#define CONFIG_PCM_S8_DEMUXER 0
+#define CONFIG_PCM_U32BE_DEMUXER 0
+#define CONFIG_PCM_U32LE_DEMUXER 0
+#define CONFIG_PCM_U24BE_DEMUXER 0
+#define CONFIG_PCM_U24LE_DEMUXER 0
+#define CONFIG_PCM_U16BE_DEMUXER 0
+#define CONFIG_PCM_U16LE_DEMUXER 0
+#define CONFIG_PCM_U8_DEMUXER 0
+#define CONFIG_PJS_DEMUXER 0
+#define CONFIG_PMP_DEMUXER 0
+#define CONFIG_PVA_DEMUXER 0
+#define CONFIG_PVF_DEMUXER 0
+#define CONFIG_QCP_DEMUXER 0
+#define CONFIG_R3D_DEMUXER 0
+#define CONFIG_RAWVIDEO_DEMUXER 0
+#define CONFIG_REALTEXT_DEMUXER 0
+#define CONFIG_REDSPARK_DEMUXER 0
+#define CONFIG_RL2_DEMUXER 0
+#define CONFIG_RM_DEMUXER 0
+#define CONFIG_ROQ_DEMUXER 0
+#define CONFIG_RPL_DEMUXER 0
+#define CONFIG_RSD_DEMUXER 0
+#define CONFIG_RSO_DEMUXER 0
+#define CONFIG_RTP_DEMUXER 0
+#define CONFIG_RTSP_DEMUXER 0
+#define CONFIG_S337M_DEMUXER 0
+#define CONFIG_SAMI_DEMUXER 0
+#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
+#define CONFIG_SBG_DEMUXER 0
+#define CONFIG_SCC_DEMUXER 0
+#define CONFIG_SDP_DEMUXER 0
+#define CONFIG_SDR2_DEMUXER 0
+#define CONFIG_SDS_DEMUXER 0
+#define CONFIG_SDX_DEMUXER 0
+#define CONFIG_SEGAFILM_DEMUXER 0
+#define CONFIG_SER_DEMUXER 0
+#define CONFIG_SHORTEN_DEMUXER 0
+#define CONFIG_SIFF_DEMUXER 0
+#define CONFIG_SLN_DEMUXER 0
+#define CONFIG_SMACKER_DEMUXER 0
+#define CONFIG_SMJPEG_DEMUXER 0
+#define CONFIG_SMUSH_DEMUXER 0
+#define CONFIG_SOL_DEMUXER 0
+#define CONFIG_SOX_DEMUXER 0
+#define CONFIG_SPDIF_DEMUXER 0
+#define CONFIG_SRT_DEMUXER 0
+#define CONFIG_STR_DEMUXER 0
+#define CONFIG_STL_DEMUXER 0
+#define CONFIG_SUBVIEWER1_DEMUXER 0
+#define CONFIG_SUBVIEWER_DEMUXER 0
+#define CONFIG_SUP_DEMUXER 0
+#define CONFIG_SVAG_DEMUXER 0
+#define CONFIG_SWF_DEMUXER 0
+#define CONFIG_TAK_DEMUXER 0
+#define CONFIG_TEDCAPTIONS_DEMUXER 0
+#define CONFIG_THP_DEMUXER 0
+#define CONFIG_THREEDOSTR_DEMUXER 0
+#define CONFIG_TIERTEXSEQ_DEMUXER 0
+#define CONFIG_TMV_DEMUXER 0
+#define CONFIG_TRUEHD_DEMUXER 0
+#define CONFIG_TTA_DEMUXER 0
+#define CONFIG_TXD_DEMUXER 0
+#define CONFIG_TTY_DEMUXER 0
+#define CONFIG_TY_DEMUXER 0
+#define CONFIG_V210_DEMUXER 0
+#define CONFIG_V210X_DEMUXER 0
+#define CONFIG_VAG_DEMUXER 0
+#define CONFIG_VC1_DEMUXER 0
+#define CONFIG_VC1T_DEMUXER 0
+#define CONFIG_VIVIDAS_DEMUXER 0
+#define CONFIG_VIVO_DEMUXER 0
+#define CONFIG_VMD_DEMUXER 0
+#define CONFIG_VOBSUB_DEMUXER 0
+#define CONFIG_VOC_DEMUXER 0
+#define CONFIG_VPK_DEMUXER 0
+#define CONFIG_VPLAYER_DEMUXER 0
+#define CONFIG_VQF_DEMUXER 0
+#define CONFIG_W64_DEMUXER 0
+#define CONFIG_WAV_DEMUXER 1
+#define CONFIG_WC3_DEMUXER 0
+#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
+#define CONFIG_WEBVTT_DEMUXER 0
+#define CONFIG_WSAUD_DEMUXER 0
+#define CONFIG_WSD_DEMUXER 0
+#define CONFIG_WSVQA_DEMUXER 0
+#define CONFIG_WTV_DEMUXER 0
+#define CONFIG_WVE_DEMUXER 0
+#define CONFIG_WV_DEMUXER 0
+#define CONFIG_XA_DEMUXER 0
+#define CONFIG_XBIN_DEMUXER 0
+#define CONFIG_XMV_DEMUXER 0
+#define CONFIG_XVAG_DEMUXER 0
+#define CONFIG_XWMA_DEMUXER 0
+#define CONFIG_YOP_DEMUXER 0
+#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
+#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
+#define CONFIG_LIBGME_DEMUXER 0
+#define CONFIG_LIBMODPLUG_DEMUXER 0
+#define CONFIG_LIBOPENMPT_DEMUXER 0
+#define CONFIG_VAPOURSYNTH_DEMUXER 0
+#define CONFIG_A64_MUXER 0
+#define CONFIG_AC3_MUXER 0
+#define CONFIG_ADTS_MUXER 0
+#define CONFIG_ADX_MUXER 0
+#define CONFIG_AIFF_MUXER 0
+#define CONFIG_AMR_MUXER 0
+#define CONFIG_APNG_MUXER 0
+#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
+#define CONFIG_ASF_MUXER 0
+#define CONFIG_ASS_MUXER 0
+#define CONFIG_AST_MUXER 0
+#define CONFIG_ASF_STREAM_MUXER 0
+#define CONFIG_AU_MUXER 0
+#define CONFIG_AVI_MUXER 0
+#define CONFIG_AVM2_MUXER 0
+#define CONFIG_AVS2_MUXER 0
+#define CONFIG_BIT_MUXER 0
+#define CONFIG_CAF_MUXER 0
+#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
+#define CONFIG_CRC_MUXER 0
+#define CONFIG_DASH_MUXER 0
+#define CONFIG_DATA_MUXER 0
+#define CONFIG_DAUD_MUXER 0
+#define CONFIG_DIRAC_MUXER 0
+#define CONFIG_DNXHD_MUXER 0
+#define CONFIG_DTS_MUXER 0
+#define CONFIG_DV_MUXER 0
+#define CONFIG_EAC3_MUXER 0
+#define CONFIG_F4V_MUXER 0
+#define CONFIG_FFMETADATA_MUXER 0
+#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
+#define CONFIG_FILMSTRIP_MUXER 0
+#define CONFIG_FITS_MUXER 0
+#define CONFIG_FLAC_MUXER 0
+#define CONFIG_FLV_MUXER 0
+#define CONFIG_FRAMECRC_MUXER 0
+#define CONFIG_FRAMEHASH_MUXER 0
+#define CONFIG_FRAMEMD5_MUXER 0
+#define CONFIG_G722_MUXER 0
+#define CONFIG_G723_1_MUXER 0
+#define CONFIG_G726_MUXER 0
+#define CONFIG_G726LE_MUXER 0
+#define CONFIG_GIF_MUXER 0
+#define CONFIG_GSM_MUXER 0
+#define CONFIG_GXF_MUXER 0
+#define CONFIG_H261_MUXER 0
+#define CONFIG_H263_MUXER 0
+#define CONFIG_H264_MUXER 0
+#define CONFIG_HASH_MUXER 0
+#define CONFIG_HDS_MUXER 0
+#define CONFIG_HEVC_MUXER 0
+#define CONFIG_HLS_MUXER 0
+#define CONFIG_ICO_MUXER 0
+#define CONFIG_ILBC_MUXER 0
+#define CONFIG_IMAGE2_MUXER 0
+#define CONFIG_IMAGE2PIPE_MUXER 0
+#define CONFIG_IPOD_MUXER 0
+#define CONFIG_IRCAM_MUXER 0
+#define CONFIG_ISMV_MUXER 0
+#define CONFIG_IVF_MUXER 0
+#define CONFIG_JACOSUB_MUXER 0
+#define CONFIG_LATM_MUXER 0
+#define CONFIG_LRC_MUXER 0
+#define CONFIG_M4V_MUXER 0
+#define CONFIG_MD5_MUXER 0
+#define CONFIG_MATROSKA_MUXER 0
+#define CONFIG_MATROSKA_AUDIO_MUXER 0
+#define CONFIG_MICRODVD_MUXER 0
+#define CONFIG_MJPEG_MUXER 0
+#define CONFIG_MLP_MUXER 0
+#define CONFIG_MMF_MUXER 0
+#define CONFIG_MOV_MUXER 0
+#define CONFIG_MP2_MUXER 0
+#define CONFIG_MP3_MUXER 0
+#define CONFIG_MP4_MUXER 0
+#define CONFIG_MPEG1SYSTEM_MUXER 0
+#define CONFIG_MPEG1VCD_MUXER 0
+#define CONFIG_MPEG1VIDEO_MUXER 0
+#define CONFIG_MPEG2DVD_MUXER 0
+#define CONFIG_MPEG2SVCD_MUXER 0
+#define CONFIG_MPEG2VIDEO_MUXER 0
+#define CONFIG_MPEG2VOB_MUXER 0
+#define CONFIG_MPEGTS_MUXER 0
+#define CONFIG_MPJPEG_MUXER 0
+#define CONFIG_MXF_MUXER 0
+#define CONFIG_MXF_D10_MUXER 0
+#define CONFIG_MXF_OPATOM_MUXER 0
+#define CONFIG_NULL_MUXER 0
+#define CONFIG_NUT_MUXER 0
+#define CONFIG_OGA_MUXER 0
+#define CONFIG_OGG_MUXER 0
+#define CONFIG_OGV_MUXER 0
+#define CONFIG_OMA_MUXER 0
+#define CONFIG_OPUS_MUXER 0
+#define CONFIG_PCM_ALAW_MUXER 0
+#define CONFIG_PCM_MULAW_MUXER 0
+#define CONFIG_PCM_VIDC_MUXER 0
+#define CONFIG_PCM_F64BE_MUXER 0
+#define CONFIG_PCM_F64LE_MUXER 0
+#define CONFIG_PCM_F32BE_MUXER 0
+#define CONFIG_PCM_F32LE_MUXER 0
+#define CONFIG_PCM_S32BE_MUXER 0
+#define CONFIG_PCM_S32LE_MUXER 0
+#define CONFIG_PCM_S24BE_MUXER 0
+#define CONFIG_PCM_S24LE_MUXER 0
+#define CONFIG_PCM_S16BE_MUXER 0
+#define CONFIG_PCM_S16LE_MUXER 0
+#define CONFIG_PCM_S8_MUXER 0
+#define CONFIG_PCM_U32BE_MUXER 0
+#define CONFIG_PCM_U32LE_MUXER 0
+#define CONFIG_PCM_U24BE_MUXER 0
+#define CONFIG_PCM_U24LE_MUXER 0
+#define CONFIG_PCM_U16BE_MUXER 0
+#define CONFIG_PCM_U16LE_MUXER 0
+#define CONFIG_PCM_U8_MUXER 0
+#define CONFIG_PSP_MUXER 0
+#define CONFIG_RAWVIDEO_MUXER 0
+#define CONFIG_RM_MUXER 0
+#define CONFIG_ROQ_MUXER 0
+#define CONFIG_RSO_MUXER 0
+#define CONFIG_RTP_MUXER 0
+#define CONFIG_RTP_MPEGTS_MUXER 0
+#define CONFIG_RTSP_MUXER 0
+#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
+#define CONFIG_SCC_MUXER 0
+#define CONFIG_SEGAFILM_MUXER 0
+#define CONFIG_SEGMENT_MUXER 0
+#define CONFIG_STREAM_SEGMENT_MUXER 0
+#define CONFIG_SINGLEJPEG_MUXER 0
+#define CONFIG_SMJPEG_MUXER 0
+#define CONFIG_SMOOTHSTREAMING_MUXER 0
+#define CONFIG_SOX_MUXER 0
+#define CONFIG_SPX_MUXER 0
+#define CONFIG_SPDIF_MUXER 0
+#define CONFIG_SRT_MUXER 0
+#define CONFIG_STREAMHASH_MUXER 0
+#define CONFIG_SUP_MUXER 0
+#define CONFIG_SWF_MUXER 0
+#define CONFIG_TEE_MUXER 0
+#define CONFIG_TG2_MUXER 0
+#define CONFIG_TGP_MUXER 0
+#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
+#define CONFIG_TRUEHD_MUXER 0
+#define CONFIG_TTA_MUXER 0
+#define CONFIG_UNCODEDFRAMECRC_MUXER 0
+#define CONFIG_VC1_MUXER 0
+#define CONFIG_VC1T_MUXER 0
+#define CONFIG_VOC_MUXER 0
+#define CONFIG_W64_MUXER 0
+#define CONFIG_WAV_MUXER 0
+#define CONFIG_WEBM_MUXER 0
+#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
+#define CONFIG_WEBM_CHUNK_MUXER 0
+#define CONFIG_WEBP_MUXER 0
+#define CONFIG_WEBVTT_MUXER 0
+#define CONFIG_WTV_MUXER 0
+#define CONFIG_WV_MUXER 0
+#define CONFIG_YUV4MPEGPIPE_MUXER 0
+#define CONFIG_CHROMAPRINT_MUXER 0
+#define CONFIG_ASYNC_PROTOCOL 0
+#define CONFIG_BLURAY_PROTOCOL 0
+#define CONFIG_CACHE_PROTOCOL 0
+#define CONFIG_CONCAT_PROTOCOL 0
+#define CONFIG_CRYPTO_PROTOCOL 0
+#define CONFIG_DATA_PROTOCOL 0
+#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
+#define CONFIG_FFRTMPHTTP_PROTOCOL 0
+#define CONFIG_FILE_PROTOCOL 0
+#define CONFIG_FTP_PROTOCOL 0
+#define CONFIG_GOPHER_PROTOCOL 0
+#define CONFIG_HLS_PROTOCOL 0
+#define CONFIG_HTTP_PROTOCOL 0
+#define CONFIG_HTTPPROXY_PROTOCOL 0
+#define CONFIG_HTTPS_PROTOCOL 0
+#define CONFIG_ICECAST_PROTOCOL 0
+#define CONFIG_MMSH_PROTOCOL 0
+#define CONFIG_MMST_PROTOCOL 0
+#define CONFIG_MD5_PROTOCOL 0
+#define CONFIG_PIPE_PROTOCOL 0
+#define CONFIG_PROMPEG_PROTOCOL 0
+#define CONFIG_RTMP_PROTOCOL 0
+#define CONFIG_RTMPE_PROTOCOL 0
+#define CONFIG_RTMPS_PROTOCOL 0
+#define CONFIG_RTMPT_PROTOCOL 0
+#define CONFIG_RTMPTE_PROTOCOL 0
+#define CONFIG_RTMPTS_PROTOCOL 0
+#define CONFIG_RTP_PROTOCOL 0
+#define CONFIG_SCTP_PROTOCOL 0
+#define CONFIG_SRTP_PROTOCOL 0
+#define CONFIG_SUBFILE_PROTOCOL 0
+#define CONFIG_TEE_PROTOCOL 0
+#define CONFIG_TCP_PROTOCOL 0
+#define CONFIG_TLS_PROTOCOL 0
+#define CONFIG_UDP_PROTOCOL 0
+#define CONFIG_UDPLITE_PROTOCOL 0
+#define CONFIG_UNIX_PROTOCOL 0
+#define CONFIG_LIBAMQP_PROTOCOL 0
+#define CONFIG_LIBRTMP_PROTOCOL 0
+#define CONFIG_LIBRTMPE_PROTOCOL 0
+#define CONFIG_LIBRTMPS_PROTOCOL 0
+#define CONFIG_LIBRTMPT_PROTOCOL 0
+#define CONFIG_LIBRTMPTE_PROTOCOL 0
+#define CONFIG_LIBSRT_PROTOCOL 0
+#define CONFIG_LIBSSH_PROTOCOL 0
+#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
+#define CONFIG_LIBZMQ_PROTOCOL 0
+#endif /* FFMPEG_CONFIG_H */
diff --git a/fuchsia/config/max/arm64/libavcodec/bsf_list.c b/fuchsia/config/max/arm64/libavcodec/bsf_list.c
new file mode 100644
index 0000000..d31ece9
--- /dev/null
+++ b/fuchsia/config/max/arm64/libavcodec/bsf_list.c
@@ -0,0 +1,3 @@
+static const AVBitStreamFilter * const bitstream_filters[] = {
+    &ff_null_bsf,
+    NULL };
diff --git a/fuchsia/config/max/arm64/libavcodec/codec_list.c b/fuchsia/config/max/arm64/libavcodec/codec_list.c
new file mode 100644
index 0000000..2051e92
--- /dev/null
+++ b/fuchsia/config/max/arm64/libavcodec/codec_list.c
@@ -0,0 +1,28 @@
+static const AVCodec * const codec_list[] = {
+    &ff_h263_decoder,
+    &ff_h264_decoder,
+    &ff_mpeg4_decoder,
+    &ff_theora_decoder,
+    &ff_vp3_decoder,
+    &ff_vp8_decoder,
+    &ff_aac_decoder,
+    &ff_aac_latm_decoder,
+    &ff_amrnb_decoder,
+    &ff_amrwb_decoder,
+    &ff_aptx_decoder,
+    &ff_flac_decoder,
+    &ff_gsm_ms_decoder,
+    &ff_mp3_decoder,
+    &ff_sbc_decoder,
+    &ff_vorbis_decoder,
+    &ff_pcm_alaw_decoder,
+    &ff_pcm_f32le_decoder,
+    &ff_pcm_mulaw_decoder,
+    &ff_pcm_s16be_decoder,
+    &ff_pcm_s16le_decoder,
+    &ff_pcm_s24be_decoder,
+    &ff_pcm_s24le_decoder,
+    &ff_pcm_s32le_decoder,
+    &ff_pcm_u8_decoder,
+    &ff_libopus_decoder,
+    NULL };
diff --git a/fuchsia/config/max/arm64/libavcodec/parser_list.c b/fuchsia/config/max/arm64/libavcodec/parser_list.c
new file mode 100644
index 0000000..06905eb
--- /dev/null
+++ b/fuchsia/config/max/arm64/libavcodec/parser_list.c
@@ -0,0 +1,14 @@
+static const AVCodecParser * const parser_list[] = {
+    &ff_aac_parser,
+    &ff_aac_latm_parser,
+    &ff_flac_parser,
+    &ff_gsm_parser,
+    &ff_h263_parser,
+    &ff_h264_parser,
+    &ff_mpeg4video_parser,
+    &ff_mpegaudio_parser,
+    &ff_opus_parser,
+    &ff_vorbis_parser,
+    &ff_vp3_parser,
+    &ff_vp8_parser,
+    NULL };
diff --git a/fuchsia/config/max/arm64/libavformat/demuxer_list.c b/fuchsia/config/max/arm64/libavformat/demuxer_list.c
new file mode 100644
index 0000000..241417e
--- /dev/null
+++ b/fuchsia/config/max/arm64/libavformat/demuxer_list.c
@@ -0,0 +1,12 @@
+static const AVInputFormat * const demuxer_list[] = {
+    &ff_aac_demuxer,
+    &ff_amr_demuxer,
+    &ff_avi_demuxer,
+    &ff_flac_demuxer,
+    &ff_gsm_demuxer,
+    &ff_matroska_demuxer,
+    &ff_mov_demuxer,
+    &ff_mp3_demuxer,
+    &ff_ogg_demuxer,
+    &ff_wav_demuxer,
+    NULL };
diff --git a/fuchsia/config/max/arm64/libavformat/muxer_list.c b/fuchsia/config/max/arm64/libavformat/muxer_list.c
new file mode 100644
index 0000000..f36d949
--- /dev/null
+++ b/fuchsia/config/max/arm64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+    NULL };
diff --git a/fuchsia/config/max/arm64/libavformat/protocol_list.c b/fuchsia/config/max/arm64/libavformat/protocol_list.c
new file mode 100644
index 0000000..247e1e4
--- /dev/null
+++ b/fuchsia/config/max/arm64/libavformat/protocol_list.c
@@ -0,0 +1,2 @@
+static const URLProtocol * const url_protocols[] = {
+    NULL };
diff --git a/fuchsia/config/max/arm64/libavutil/avconfig.h b/fuchsia/config/max/arm64/libavutil/avconfig.h
new file mode 100644
index 0000000..c289fbb
--- /dev/null
+++ b/fuchsia/config/max/arm64/libavutil/avconfig.h
@@ -0,0 +1,6 @@
+/* Generated by ffmpeg configure */
+#ifndef AVUTIL_AVCONFIG_H
+#define AVUTIL_AVCONFIG_H
+#define AV_HAVE_BIGENDIAN 0
+#define AV_HAVE_FAST_UNALIGNED 1
+#endif /* AVUTIL_AVCONFIG_H */
diff --git a/fuchsia/config/max/arm64/libavutil/ffversion.h b/fuchsia/config/max/arm64/libavutil/ffversion.h
new file mode 100644
index 0000000..fc76199
--- /dev/null
+++ b/fuchsia/config/max/arm64/libavutil/ffversion.h
@@ -0,0 +1,5 @@
+/* Automatically generated by version.sh, do not manually edit! */
+#ifndef AVUTIL_FFVERSION_H
+#define AVUTIL_FFVERSION_H
+#define FFMPEG_VERSION "N-97662-gaaac2c26d9"
+#endif /* AVUTIL_FFVERSION_H */
diff --git a/fuchsia/config/max/x64/config.asm b/fuchsia/config/max/x64/config.asm
new file mode 100644
index 0000000..c7d35bd
--- /dev/null
+++ b/fuchsia/config/max/x64/config.asm
@@ -0,0 +1,2572 @@
+; Automatically generated by configure - do not modify!
+%define ARCH_AARCH64 0
+%define ARCH_ALPHA 0
+%define ARCH_ARM 0
+%define ARCH_AVR32 0
+%define ARCH_AVR32_AP 0
+%define ARCH_AVR32_UC 0
+%define ARCH_BFIN 0
+%define ARCH_IA64 0
+%define ARCH_M68K 0
+%define ARCH_MIPS 0
+%define ARCH_MIPS64 0
+%define ARCH_PARISC 0
+%define ARCH_PPC 0
+%define ARCH_PPC64 0
+%define ARCH_S390 0
+%define ARCH_SH4 0
+%define ARCH_SPARC 0
+%define ARCH_SPARC64 0
+%define ARCH_TILEGX 0
+%define ARCH_TILEPRO 0
+%define ARCH_TOMI 0
+%define ARCH_X86 1
+%define ARCH_X86_32 0
+%define ARCH_X86_64 1
+%define HAVE_ARMV5TE 0
+%define HAVE_ARMV6 0
+%define HAVE_ARMV6T2 0
+%define HAVE_ARMV8 0
+%define HAVE_NEON 0
+%define HAVE_VFP 0
+%define HAVE_VFPV3 0
+%define HAVE_SETEND 0
+%define HAVE_ALTIVEC 0
+%define HAVE_DCBZL 0
+%define HAVE_LDBRX 0
+%define HAVE_POWER8 0
+%define HAVE_PPC4XX 0
+%define HAVE_VSX 0
+%define HAVE_AESNI 1
+%define HAVE_AMD3DNOW 1
+%define HAVE_AMD3DNOWEXT 1
+%define HAVE_AVX 1
+%define HAVE_AVX2 1
+%define HAVE_AVX512 1
+%define HAVE_FMA3 1
+%define HAVE_FMA4 1
+%define HAVE_MMX 1
+%define HAVE_MMXEXT 1
+%define HAVE_SSE 1
+%define HAVE_SSE2 1
+%define HAVE_SSE3 1
+%define HAVE_SSE4 1
+%define HAVE_SSE42 1
+%define HAVE_SSSE3 1
+%define HAVE_XOP 1
+%define HAVE_CPUNOP 1
+%define HAVE_I686 1
+%define HAVE_MIPSFPU 0
+%define HAVE_MIPS32R2 0
+%define HAVE_MIPS32R5 0
+%define HAVE_MIPS64R2 0
+%define HAVE_MIPS32R6 0
+%define HAVE_MIPS64R6 0
+%define HAVE_MIPSDSP 0
+%define HAVE_MIPSDSPR2 0
+%define HAVE_MSA 0
+%define HAVE_MSA2 0
+%define HAVE_LOONGSON2 0
+%define HAVE_LOONGSON3 0
+%define HAVE_MMI 0
+%define HAVE_ARMV5TE_EXTERNAL 0
+%define HAVE_ARMV6_EXTERNAL 0
+%define HAVE_ARMV6T2_EXTERNAL 0
+%define HAVE_ARMV8_EXTERNAL 0
+%define HAVE_NEON_EXTERNAL 0
+%define HAVE_VFP_EXTERNAL 0
+%define HAVE_VFPV3_EXTERNAL 0
+%define HAVE_SETEND_EXTERNAL 0
+%define HAVE_ALTIVEC_EXTERNAL 0
+%define HAVE_DCBZL_EXTERNAL 0
+%define HAVE_LDBRX_EXTERNAL 0
+%define HAVE_POWER8_EXTERNAL 0
+%define HAVE_PPC4XX_EXTERNAL 0
+%define HAVE_VSX_EXTERNAL 0
+%define HAVE_AESNI_EXTERNAL 1
+%define HAVE_AMD3DNOW_EXTERNAL 1
+%define HAVE_AMD3DNOWEXT_EXTERNAL 1
+%define HAVE_AVX_EXTERNAL 1
+%define HAVE_AVX2_EXTERNAL 1
+%define HAVE_AVX512_EXTERNAL 0
+%define HAVE_FMA3_EXTERNAL 1
+%define HAVE_FMA4_EXTERNAL 1
+%define HAVE_MMX_EXTERNAL 1
+%define HAVE_MMXEXT_EXTERNAL 1
+%define HAVE_SSE_EXTERNAL 1
+%define HAVE_SSE2_EXTERNAL 1
+%define HAVE_SSE3_EXTERNAL 1
+%define HAVE_SSE4_EXTERNAL 1
+%define HAVE_SSE42_EXTERNAL 1
+%define HAVE_SSSE3_EXTERNAL 1
+%define HAVE_XOP_EXTERNAL 1
+%define HAVE_CPUNOP_EXTERNAL 0
+%define HAVE_I686_EXTERNAL 0
+%define HAVE_MIPSFPU_EXTERNAL 0
+%define HAVE_MIPS32R2_EXTERNAL 0
+%define HAVE_MIPS32R5_EXTERNAL 0
+%define HAVE_MIPS64R2_EXTERNAL 0
+%define HAVE_MIPS32R6_EXTERNAL 0
+%define HAVE_MIPS64R6_EXTERNAL 0
+%define HAVE_MIPSDSP_EXTERNAL 0
+%define HAVE_MIPSDSPR2_EXTERNAL 0
+%define HAVE_MSA_EXTERNAL 0
+%define HAVE_MSA2_EXTERNAL 0
+%define HAVE_LOONGSON2_EXTERNAL 0
+%define HAVE_LOONGSON3_EXTERNAL 0
+%define HAVE_MMI_EXTERNAL 0
+%define HAVE_ARMV5TE_INLINE 0
+%define HAVE_ARMV6_INLINE 0
+%define HAVE_ARMV6T2_INLINE 0
+%define HAVE_ARMV8_INLINE 0
+%define HAVE_NEON_INLINE 0
+%define HAVE_VFP_INLINE 0
+%define HAVE_VFPV3_INLINE 0
+%define HAVE_SETEND_INLINE 0
+%define HAVE_ALTIVEC_INLINE 0
+%define HAVE_DCBZL_INLINE 0
+%define HAVE_LDBRX_INLINE 0
+%define HAVE_POWER8_INLINE 0
+%define HAVE_PPC4XX_INLINE 0
+%define HAVE_VSX_INLINE 0
+%define HAVE_AESNI_INLINE 1
+%define HAVE_AMD3DNOW_INLINE 1
+%define HAVE_AMD3DNOWEXT_INLINE 1
+%define HAVE_AVX_INLINE 1
+%define HAVE_AVX2_INLINE 1
+%define HAVE_AVX512_INLINE 1
+%define HAVE_FMA3_INLINE 1
+%define HAVE_FMA4_INLINE 1
+%define HAVE_MMX_INLINE 1
+%define HAVE_MMXEXT_INLINE 1
+%define HAVE_SSE_INLINE 1
+%define HAVE_SSE2_INLINE 1
+%define HAVE_SSE3_INLINE 1
+%define HAVE_SSE4_INLINE 1
+%define HAVE_SSE42_INLINE 1
+%define HAVE_SSSE3_INLINE 1
+%define HAVE_XOP_INLINE 1
+%define HAVE_CPUNOP_INLINE 0
+%define HAVE_I686_INLINE 0
+%define HAVE_MIPSFPU_INLINE 0
+%define HAVE_MIPS32R2_INLINE 0
+%define HAVE_MIPS32R5_INLINE 0
+%define HAVE_MIPS64R2_INLINE 0
+%define HAVE_MIPS32R6_INLINE 0
+%define HAVE_MIPS64R6_INLINE 0
+%define HAVE_MIPSDSP_INLINE 0
+%define HAVE_MIPSDSPR2_INLINE 0
+%define HAVE_MSA_INLINE 0
+%define HAVE_MSA2_INLINE 0
+%define HAVE_LOONGSON2_INLINE 0
+%define HAVE_LOONGSON3_INLINE 0
+%define HAVE_MMI_INLINE 0
+%define HAVE_ALIGNED_STACK 1
+%define HAVE_FAST_64BIT 1
+%define HAVE_FAST_CLZ 1
+%define HAVE_FAST_CMOV 1
+%define HAVE_LOCAL_ALIGNED 1
+%define HAVE_SIMD_ALIGN_16 1
+%define HAVE_SIMD_ALIGN_32 1
+%define HAVE_SIMD_ALIGN_64 1
+%define HAVE_ATOMIC_CAS_PTR 0
+%define HAVE_MACHINE_RW_BARRIER 0
+%define HAVE_MEMORYBARRIER 0
+%define HAVE_MM_EMPTY 1
+%define HAVE_RDTSC 0
+%define HAVE_SEM_TIMEDWAIT 1
+%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
+%define HAVE_CABS 0
+%define HAVE_CEXP 0
+%define HAVE_INLINE_ASM 1
+%define HAVE_SYMVER 0
+%define HAVE_X86ASM 1
+%define HAVE_BIGENDIAN 0
+%define HAVE_FAST_UNALIGNED 1
+%define HAVE_ARPA_INET_H 0
+%define HAVE_ASM_TYPES_H 1
+%define HAVE_CDIO_PARANOIA_H 0
+%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
+%define HAVE_CUDA_H 0
+%define HAVE_DISPATCH_DISPATCH_H 0
+%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
+%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
+%define HAVE_DEV_IC_BT8XX_H 0
+%define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
+%define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
+%define HAVE_DIRECT_H 0
+%define HAVE_DIRENT_H 1
+%define HAVE_DXGIDEBUG_H 0
+%define HAVE_DXVA_H 0
+%define HAVE_ES2_GL_H 0
+%define HAVE_GSM_H 0
+%define HAVE_IO_H 0
+%define HAVE_LINUX_PERF_EVENT_H 1
+%define HAVE_MACHINE_IOCTL_BT848_H 0
+%define HAVE_MACHINE_IOCTL_METEOR_H 0
+%define HAVE_MALLOC_H 1
+%define HAVE_OPENCV2_CORE_CORE_C_H 0
+%define HAVE_OPENGL_GL3_H 0
+%define HAVE_POLL_H 1
+%define HAVE_SYS_PARAM_H 1
+%define HAVE_SYS_RESOURCE_H 1
+%define HAVE_SYS_SELECT_H 1
+%define HAVE_SYS_SOUNDCARD_H 1
+%define HAVE_SYS_TIME_H 1
+%define HAVE_SYS_UN_H 1
+%define HAVE_SYS_VIDEOIO_H 0
+%define HAVE_TERMIOS_H 1
+%define HAVE_UDPLITE_H 0
+%define HAVE_UNISTD_H 1
+%define HAVE_VALGRIND_VALGRIND_H 0
+%define HAVE_WINDOWS_H 0
+%define HAVE_WINSOCK2_H 0
+%define HAVE_INTRINSICS_NEON 0
+%define HAVE_ATANF 1
+%define HAVE_ATAN2F 1
+%define HAVE_CBRT 1
+%define HAVE_CBRTF 1
+%define HAVE_COPYSIGN 1
+%define HAVE_COSF 1
+%define HAVE_ERF 1
+%define HAVE_EXP2 1
+%define HAVE_EXP2F 1
+%define HAVE_EXPF 1
+%define HAVE_HYPOT 1
+%define HAVE_ISFINITE 1
+%define HAVE_ISINF 1
+%define HAVE_ISNAN 1
+%define HAVE_LDEXPF 1
+%define HAVE_LLRINT 1
+%define HAVE_LLRINTF 1
+%define HAVE_LOG2 1
+%define HAVE_LOG2F 1
+%define HAVE_LOG10F 1
+%define HAVE_LRINT 1
+%define HAVE_LRINTF 1
+%define HAVE_POWF 1
+%define HAVE_RINT 1
+%define HAVE_ROUND 1
+%define HAVE_ROUNDF 1
+%define HAVE_SINF 1
+%define HAVE_TRUNC 1
+%define HAVE_TRUNCF 1
+%define HAVE_DOS_PATHS 0
+%define HAVE_LIBC_MSVCRT 0
+%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
+%define HAVE_SECTION_DATA_REL_RO 1
+%define HAVE_THREADS 1
+%define HAVE_UWP 0
+%define HAVE_WINRT 0
+%define HAVE_ACCESS 1
+%define HAVE_ALIGNED_MALLOC 0
+%define HAVE_ARC4RANDOM 0
+%define HAVE_CLOCK_GETTIME 1
+%define HAVE_CLOSESOCKET 0
+%define HAVE_COMMANDLINETOARGVW 0
+%define HAVE_FCNTL 1
+%define HAVE_GETADDRINFO 0
+%define HAVE_GETHRTIME 0
+%define HAVE_GETOPT 1
+%define HAVE_GETMODULEHANDLE 0
+%define HAVE_GETPROCESSAFFINITYMASK 0
+%define HAVE_GETPROCESSMEMORYINFO 0
+%define HAVE_GETPROCESSTIMES 0
+%define HAVE_GETRUSAGE 1
+%define HAVE_GETSTDHANDLE 0
+%define HAVE_GETSYSTEMTIMEASFILETIME 0
+%define HAVE_GETTIMEOFDAY 1
+%define HAVE_GLOB 1
+%define HAVE_GLXGETPROCADDRESS 0
+%define HAVE_GMTIME_R 1
+%define HAVE_INET_ATON 0
+%define HAVE_ISATTY 1
+%define HAVE_KBHIT 0
+%define HAVE_LOCALTIME_R 1
+%define HAVE_LSTAT 1
+%define HAVE_LZO1X_999_COMPRESS 0
+%define HAVE_MACH_ABSOLUTE_TIME 0
+%define HAVE_MAPVIEWOFFILE 0
+%define HAVE_MEMALIGN 1
+%define HAVE_MKSTEMP 1
+%define HAVE_MMAP 1
+%define HAVE_MPROTECT 1
+%define HAVE_NANOSLEEP 1
+%define HAVE_PEEKNAMEDPIPE 0
+%define HAVE_POSIX_MEMALIGN 1
+%define HAVE_PTHREAD_CANCEL 1
+%define HAVE_SCHED_GETAFFINITY 1
+%define HAVE_SECITEMIMPORT 0
+%define HAVE_SETCONSOLETEXTATTRIBUTE 0
+%define HAVE_SETCONSOLECTRLHANDLER 0
+%define HAVE_SETDLLDIRECTORY 0
+%define HAVE_SETMODE 0
+%define HAVE_SETRLIMIT 1
+%define HAVE_SLEEP 0
+%define HAVE_STRERROR_R 1
+%define HAVE_SYSCONF 1
+%define HAVE_SYSCTL 1
+%define HAVE_USLEEP 1
+%define HAVE_UTGETOSTYPEFROMSTRING 0
+%define HAVE_VIRTUALALLOC 0
+%define HAVE_WGLGETPROCADDRESS 0
+%define HAVE_BCRYPT 0
+%define HAVE_VAAPI_DRM 0
+%define HAVE_VAAPI_X11 0
+%define HAVE_VDPAU_X11 0
+%define HAVE_PTHREADS 1
+%define HAVE_OS2THREADS 0
+%define HAVE_W32THREADS 0
+%define HAVE_AS_ARCH_DIRECTIVE 0
+%define HAVE_AS_DN_DIRECTIVE 0
+%define HAVE_AS_FPU_DIRECTIVE 0
+%define HAVE_AS_FUNC 0
+%define HAVE_AS_OBJECT_ARCH 0
+%define HAVE_ASM_MOD_Q 0
+%define HAVE_BLOCKS_EXTENSION 0
+%define HAVE_EBP_AVAILABLE 1
+%define HAVE_EBX_AVAILABLE 1
+%define HAVE_GNU_AS 0
+%define HAVE_GNU_WINDRES 0
+%define HAVE_IBM_ASM 0
+%define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+%define HAVE_INLINE_ASM_LABELS 1
+%define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+%define HAVE_PRAGMA_DEPRECATED 1
+%define HAVE_RSYNC_CONTIMEOUT 1
+%define HAVE_SYMVER_ASM_LABEL 1
+%define HAVE_SYMVER_GNU_ASM 1
+%define HAVE_VFP_ARGS 0
+%define HAVE_XFORM_ASM 0
+%define HAVE_XMM_CLOBBERS 1
+%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
+%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
+%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
+%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
+%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
+%define HAVE_SOCKLEN_T 0
+%define HAVE_STRUCT_ADDRINFO 0
+%define HAVE_STRUCT_GROUP_SOURCE_REQ 0
+%define HAVE_STRUCT_IP_MREQ_SOURCE 0
+%define HAVE_STRUCT_IPV6_MREQ 0
+%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
+%define HAVE_STRUCT_POLLFD 0
+%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
+%define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
+%define HAVE_STRUCT_SOCKADDR_IN6 0
+%define HAVE_STRUCT_SOCKADDR_SA_LEN 0
+%define HAVE_STRUCT_SOCKADDR_STORAGE 0
+%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
+%define HAVE_MAKEINFO 0
+%define HAVE_MAKEINFO_HTML 0
+%define HAVE_OPENCL_D3D11 0
+%define HAVE_OPENCL_DRM_ARM 0
+%define HAVE_OPENCL_DRM_BEIGNET 0
+%define HAVE_OPENCL_DXVA2 0
+%define HAVE_OPENCL_VAAPI_BEIGNET 0
+%define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
+%define HAVE_PERL 1
+%define HAVE_POD2MAN 1
+%define HAVE_TEXI2HTML 0
+%define CONFIG_DOC 0
+%define CONFIG_HTMLPAGES 0
+%define CONFIG_MANPAGES 0
+%define CONFIG_PODPAGES 0
+%define CONFIG_TXTPAGES 0
+%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
+%define CONFIG_AVIO_READING_EXAMPLE 1
+%define CONFIG_DECODE_AUDIO_EXAMPLE 1
+%define CONFIG_DECODE_VIDEO_EXAMPLE 1
+%define CONFIG_DEMUXING_DECODING_EXAMPLE 1
+%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
+%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
+%define CONFIG_EXTRACT_MVS_EXAMPLE 1
+%define CONFIG_FILTER_AUDIO_EXAMPLE 0
+%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
+%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
+%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
+%define CONFIG_HW_DECODE_EXAMPLE 1
+%define CONFIG_METADATA_EXAMPLE 1
+%define CONFIG_MUXING_EXAMPLE 0
+%define CONFIG_QSVDEC_EXAMPLE 0
+%define CONFIG_REMUXING_EXAMPLE 1
+%define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
+%define CONFIG_SCALING_VIDEO_EXAMPLE 0
+%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
+%define CONFIG_TRANSCODING_EXAMPLE 0
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
+%define CONFIG_AVISYNTH 0
+%define CONFIG_FREI0R 0
+%define CONFIG_LIBCDIO 0
+%define CONFIG_LIBDAVS2 0
+%define CONFIG_LIBRUBBERBAND 0
+%define CONFIG_LIBVIDSTAB 0
+%define CONFIG_LIBX264 0
+%define CONFIG_LIBX265 0
+%define CONFIG_LIBXAVS 0
+%define CONFIG_LIBXAVS2 0
+%define CONFIG_LIBXVID 0
+%define CONFIG_DECKLINK 0
+%define CONFIG_LIBFDK_AAC 0
+%define CONFIG_OPENSSL 0
+%define CONFIG_LIBTLS 0
+%define CONFIG_GMP 0
+%define CONFIG_LIBARIBB24 0
+%define CONFIG_LIBLENSFUN 0
+%define CONFIG_LIBOPENCORE_AMRNB 0
+%define CONFIG_LIBOPENCORE_AMRWB 0
+%define CONFIG_LIBVMAF 0
+%define CONFIG_LIBVO_AMRWBENC 0
+%define CONFIG_MBEDTLS 0
+%define CONFIG_RKMPP 0
+%define CONFIG_LIBSMBCLIENT 0
+%define CONFIG_CHROMAPRINT 0
+%define CONFIG_GCRYPT 0
+%define CONFIG_GNUTLS 0
+%define CONFIG_JNI 0
+%define CONFIG_LADSPA 0
+%define CONFIG_LIBAOM 0
+%define CONFIG_LIBASS 0
+%define CONFIG_LIBBLURAY 0
+%define CONFIG_LIBBS2B 0
+%define CONFIG_LIBCACA 0
+%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
+%define CONFIG_LIBDAV1D 0
+%define CONFIG_LIBDC1394 0
+%define CONFIG_LIBDRM 0
+%define CONFIG_LIBFLITE 0
+%define CONFIG_LIBFONTCONFIG 0
+%define CONFIG_LIBFREETYPE 0
+%define CONFIG_LIBFRIBIDI 0
+%define CONFIG_LIBGLSLANG 0
+%define CONFIG_LIBGME 0
+%define CONFIG_LIBGSM 0
+%define CONFIG_LIBIEC61883 0
+%define CONFIG_LIBILBC 0
+%define CONFIG_LIBJACK 0
+%define CONFIG_LIBKLVANC 0
+%define CONFIG_LIBKVAZAAR 0
+%define CONFIG_LIBMODPLUG 0
+%define CONFIG_LIBMP3LAME 0
+%define CONFIG_LIBMYSOFA 0
+%define CONFIG_LIBOPENCV 0
+%define CONFIG_LIBOPENH264 0
+%define CONFIG_LIBOPENJPEG 0
+%define CONFIG_LIBOPENMPT 0
+%define CONFIG_LIBOPUS 1
+%define CONFIG_LIBPULSE 0
+%define CONFIG_LIBRABBITMQ 0
+%define CONFIG_LIBRAV1E 0
+%define CONFIG_LIBRSVG 0
+%define CONFIG_LIBRTMP 0
+%define CONFIG_LIBSHINE 0
+%define CONFIG_LIBSMBCLIENT 0
+%define CONFIG_LIBSNAPPY 0
+%define CONFIG_LIBSOXR 0
+%define CONFIG_LIBSPEEX 0
+%define CONFIG_LIBSRT 0
+%define CONFIG_LIBSSH 0
+%define CONFIG_LIBTENSORFLOW 0
+%define CONFIG_LIBTESSERACT 0
+%define CONFIG_LIBTHEORA 0
+%define CONFIG_LIBTWOLAME 0
+%define CONFIG_LIBV4L2 0
+%define CONFIG_LIBVORBIS 0
+%define CONFIG_LIBVPX 0
+%define CONFIG_LIBWAVPACK 0
+%define CONFIG_LIBWEBP 0
+%define CONFIG_LIBXML2 0
+%define CONFIG_LIBZIMG 0
+%define CONFIG_LIBZMQ 0
+%define CONFIG_LIBZVBI 0
+%define CONFIG_LV2 0
+%define CONFIG_MEDIACODEC 0
+%define CONFIG_OPENAL 0
+%define CONFIG_OPENGL 0
+%define CONFIG_POCKETSPHINX 0
+%define CONFIG_VAPOURSYNTH 0
+%define CONFIG_ALSA 0
+%define CONFIG_APPKIT 0
+%define CONFIG_AVFOUNDATION 0
+%define CONFIG_BZLIB 0
+%define CONFIG_COREIMAGE 0
+%define CONFIG_ICONV 0
+%define CONFIG_LIBXCB 0
+%define CONFIG_LIBXCB_SHM 0
+%define CONFIG_LIBXCB_SHAPE 0
+%define CONFIG_LIBXCB_XFIXES 0
+%define CONFIG_LZMA 0
+%define CONFIG_SCHANNEL 0
+%define CONFIG_SDL2 0
+%define CONFIG_SECURETRANSPORT 0
+%define CONFIG_SNDIO 0
+%define CONFIG_XLIB 0
+%define CONFIG_ZLIB 0
+%define CONFIG_CUDA_NVCC 0
+%define CONFIG_CUDA_SDK 0
+%define CONFIG_LIBNPP 0
+%define CONFIG_LIBMFX 0
+%define CONFIG_MMAL 0
+%define CONFIG_OMX 0
+%define CONFIG_OPENCL 0
+%define CONFIG_VULKAN 0
+%define CONFIG_AMF 0
+%define CONFIG_AUDIOTOOLBOX 0
+%define CONFIG_CRYSTALHD 0
+%define CONFIG_CUDA 0
+%define CONFIG_CUDA_LLVM 0
+%define CONFIG_CUVID 0
+%define CONFIG_D3D11VA 0
+%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
+%define CONFIG_NVDEC 0
+%define CONFIG_NVENC 0
+%define CONFIG_VAAPI 0
+%define CONFIG_VDPAU 0
+%define CONFIG_VIDEOTOOLBOX 0
+%define CONFIG_V4L2_M2M 0
+%define CONFIG_XVMC 0
+%define CONFIG_FTRAPV 0
+%define CONFIG_GRAY 0
+%define CONFIG_HARDCODED_TABLES 0
+%define CONFIG_OMX_RPI 0
+%define CONFIG_RUNTIME_CPUDETECT 1
+%define CONFIG_SAFE_BITSTREAM_READER 1
+%define CONFIG_SHARED 0
+%define CONFIG_SMALL 0
+%define CONFIG_STATIC 1
+%define CONFIG_SWSCALE_ALPHA 1
+%define CONFIG_GPL 0
+%define CONFIG_NONFREE 0
+%define CONFIG_VERSION3 0
+%define CONFIG_AVDEVICE 0
+%define CONFIG_AVFILTER 0
+%define CONFIG_SWSCALE 0
+%define CONFIG_POSTPROC 0
+%define CONFIG_AVFORMAT 1
+%define CONFIG_AVCODEC 1
+%define CONFIG_SWRESAMPLE 0
+%define CONFIG_AVRESAMPLE 0
+%define CONFIG_AVUTIL 1
+%define CONFIG_FFPLAY 0
+%define CONFIG_FFPROBE 0
+%define CONFIG_FFMPEG 0
+%define CONFIG_DCT 1
+%define CONFIG_DWT 0
+%define CONFIG_ERROR_RESILIENCE 1
+%define CONFIG_FAAN 0
+%define CONFIG_FAST_UNALIGNED 1
+%define CONFIG_FFT 1
+%define CONFIG_LSP 1
+%define CONFIG_LZO 0
+%define CONFIG_MDCT 1
+%define CONFIG_PIXELUTILS 0
+%define CONFIG_NETWORK 0
+%define CONFIG_RDFT 1
+%define CONFIG_AUTODETECT 0
+%define CONFIG_FONTCONFIG 0
+%define CONFIG_LARGE_TESTS 1
+%define CONFIG_LINUX_PERF 0
+%define CONFIG_MEMORY_POISONING 0
+%define CONFIG_NEON_CLOBBER_TEST 0
+%define CONFIG_OSSFUZZ 0
+%define CONFIG_PIC 1
+%define CONFIG_THUMB 0
+%define CONFIG_VALGRIND_BACKTRACE 0
+%define CONFIG_XMM_CLOBBER_TEST 0
+%define CONFIG_BSFS 1
+%define CONFIG_DECODERS 1
+%define CONFIG_ENCODERS 0
+%define CONFIG_HWACCELS 0
+%define CONFIG_PARSERS 1
+%define CONFIG_INDEVS 0
+%define CONFIG_OUTDEVS 0
+%define CONFIG_FILTERS 0
+%define CONFIG_DEMUXERS 1
+%define CONFIG_MUXERS 0
+%define CONFIG_PROTOCOLS 0
+%define CONFIG_AANDCTTABLES 0
+%define CONFIG_AC3DSP 0
+%define CONFIG_ADTS_HEADER 1
+%define CONFIG_AUDIO_FRAME_QUEUE 1
+%define CONFIG_AUDIODSP 0
+%define CONFIG_BLOCKDSP 1
+%define CONFIG_BSWAPDSP 0
+%define CONFIG_CABAC 1
+%define CONFIG_CBS 0
+%define CONFIG_CBS_AV1 0
+%define CONFIG_CBS_H264 0
+%define CONFIG_CBS_H265 0
+%define CONFIG_CBS_JPEG 0
+%define CONFIG_CBS_MPEG2 0
+%define CONFIG_CBS_VP9 0
+%define CONFIG_DIRAC_PARSE 1
+%define CONFIG_DNN 0
+%define CONFIG_DVPROFILE 0
+%define CONFIG_EXIF 1
+%define CONFIG_FAANDCT 0
+%define CONFIG_FAANIDCT 0
+%define CONFIG_FDCTDSP 1
+%define CONFIG_FLACDSP 1
+%define CONFIG_FMTCONVERT 0
+%define CONFIG_FRAME_THREAD_ENCODER 0
+%define CONFIG_G722DSP 0
+%define CONFIG_GOLOMB 1
+%define CONFIG_GPLV3 0
+%define CONFIG_H263DSP 1
+%define CONFIG_H264CHROMA 1
+%define CONFIG_H264DSP 1
+%define CONFIG_H264PARSE 1
+%define CONFIG_H264PRED 1
+%define CONFIG_H264QPEL 1
+%define CONFIG_HEVCPARSE 0
+%define CONFIG_HPELDSP 1
+%define CONFIG_HUFFMAN 0
+%define CONFIG_HUFFYUVDSP 0
+%define CONFIG_HUFFYUVENCDSP 0
+%define CONFIG_IDCTDSP 1
+%define CONFIG_IIRFILTER 0
+%define CONFIG_MDCT15 1
+%define CONFIG_INTRAX8 0
+%define CONFIG_ISO_MEDIA 1
+%define CONFIG_IVIDSP 0
+%define CONFIG_JPEGTABLES 0
+%define CONFIG_LGPLV3 0
+%define CONFIG_LIBX262 0
+%define CONFIG_LLAUDDSP 0
+%define CONFIG_LLVIDDSP 0
+%define CONFIG_LLVIDENCDSP 0
+%define CONFIG_LPC 0
+%define CONFIG_LZF 0
+%define CONFIG_ME_CMP 1
+%define CONFIG_MPEG_ER 1
+%define CONFIG_MPEGAUDIO 1
+%define CONFIG_MPEGAUDIODSP 1
+%define CONFIG_MPEGAUDIOHEADER 1
+%define CONFIG_MPEGVIDEO 1
+%define CONFIG_MPEGVIDEOENC 0
+%define CONFIG_MSS34DSP 0
+%define CONFIG_PIXBLOCKDSP 1
+%define CONFIG_QPELDSP 1
+%define CONFIG_QSV 0
+%define CONFIG_QSVDEC 0
+%define CONFIG_QSVENC 0
+%define CONFIG_QSVVPP 0
+%define CONFIG_RANGECODER 0
+%define CONFIG_RIFFDEC 1
+%define CONFIG_RIFFENC 0
+%define CONFIG_RTPDEC 0
+%define CONFIG_RTPENC_CHAIN 0
+%define CONFIG_RV34DSP 0
+%define CONFIG_SCENE_SAD 0
+%define CONFIG_SINEWIN 1
+%define CONFIG_SNAPPY 0
+%define CONFIG_SRTP 0
+%define CONFIG_STARTCODE 1
+%define CONFIG_TEXTUREDSP 0
+%define CONFIG_TEXTUREDSPENC 0
+%define CONFIG_TPELDSP 0
+%define CONFIG_VAAPI_1 0
+%define CONFIG_VAAPI_ENCODE 0
+%define CONFIG_VC1DSP 0
+%define CONFIG_VIDEODSP 1
+%define CONFIG_VP3DSP 1
+%define CONFIG_VP56DSP 0
+%define CONFIG_VP8DSP 1
+%define CONFIG_WMA_FREQS 0
+%define CONFIG_WMV2DSP 0
+%define CONFIG_AAC_ADTSTOASC_BSF 0
+%define CONFIG_AV1_FRAME_MERGE_BSF 0
+%define CONFIG_AV1_FRAME_SPLIT_BSF 0
+%define CONFIG_AV1_METADATA_BSF 0
+%define CONFIG_CHOMP_BSF 0
+%define CONFIG_DUMP_EXTRADATA_BSF 0
+%define CONFIG_DCA_CORE_BSF 0
+%define CONFIG_EAC3_CORE_BSF 0
+%define CONFIG_EXTRACT_EXTRADATA_BSF 0
+%define CONFIG_FILTER_UNITS_BSF 0
+%define CONFIG_H264_METADATA_BSF 0
+%define CONFIG_H264_MP4TOANNEXB_BSF 0
+%define CONFIG_H264_REDUNDANT_PPS_BSF 0
+%define CONFIG_HAPQA_EXTRACT_BSF 0
+%define CONFIG_HEVC_METADATA_BSF 0
+%define CONFIG_HEVC_MP4TOANNEXB_BSF 0
+%define CONFIG_IMX_DUMP_HEADER_BSF 0
+%define CONFIG_MJPEG2JPEG_BSF 0
+%define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
+%define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
+%define CONFIG_MPEG2_METADATA_BSF 0
+%define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
+%define CONFIG_MOV2TEXTSUB_BSF 0
+%define CONFIG_NOISE_BSF 0
+%define CONFIG_NULL_BSF 1
+%define CONFIG_PRORES_METADATA_BSF 0
+%define CONFIG_REMOVE_EXTRADATA_BSF 0
+%define CONFIG_TEXT2MOVSUB_BSF 0
+%define CONFIG_TRACE_HEADERS_BSF 0
+%define CONFIG_TRUEHD_CORE_BSF 0
+%define CONFIG_VP9_METADATA_BSF 0
+%define CONFIG_VP9_RAW_REORDER_BSF 0
+%define CONFIG_VP9_SUPERFRAME_BSF 0
+%define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
+%define CONFIG_AASC_DECODER 0
+%define CONFIG_AIC_DECODER 0
+%define CONFIG_ALIAS_PIX_DECODER 0
+%define CONFIG_AGM_DECODER 0
+%define CONFIG_AMV_DECODER 0
+%define CONFIG_ANM_DECODER 0
+%define CONFIG_ANSI_DECODER 0
+%define CONFIG_APNG_DECODER 0
+%define CONFIG_ARBC_DECODER 0
+%define CONFIG_ASV1_DECODER 0
+%define CONFIG_ASV2_DECODER 0
+%define CONFIG_AURA_DECODER 0
+%define CONFIG_AURA2_DECODER 0
+%define CONFIG_AVRP_DECODER 0
+%define CONFIG_AVRN_DECODER 0
+%define CONFIG_AVS_DECODER 0
+%define CONFIG_AVUI_DECODER 0
+%define CONFIG_AYUV_DECODER 0
+%define CONFIG_BETHSOFTVID_DECODER 0
+%define CONFIG_BFI_DECODER 0
+%define CONFIG_BINK_DECODER 0
+%define CONFIG_BITPACKED_DECODER 0
+%define CONFIG_BMP_DECODER 0
+%define CONFIG_BMV_VIDEO_DECODER 0
+%define CONFIG_BRENDER_PIX_DECODER 0
+%define CONFIG_C93_DECODER 0
+%define CONFIG_CAVS_DECODER 0
+%define CONFIG_CDGRAPHICS_DECODER 0
+%define CONFIG_CDTOONS_DECODER 0
+%define CONFIG_CDXL_DECODER 0
+%define CONFIG_CFHD_DECODER 0
+%define CONFIG_CINEPAK_DECODER 0
+%define CONFIG_CLEARVIDEO_DECODER 0
+%define CONFIG_CLJR_DECODER 0
+%define CONFIG_CLLC_DECODER 0
+%define CONFIG_COMFORTNOISE_DECODER 0
+%define CONFIG_CPIA_DECODER 0
+%define CONFIG_CSCD_DECODER 0
+%define CONFIG_CYUV_DECODER 0
+%define CONFIG_DDS_DECODER 0
+%define CONFIG_DFA_DECODER 0
+%define CONFIG_DIRAC_DECODER 0
+%define CONFIG_DNXHD_DECODER 0
+%define CONFIG_DPX_DECODER 0
+%define CONFIG_DSICINVIDEO_DECODER 0
+%define CONFIG_DVAUDIO_DECODER 0
+%define CONFIG_DVVIDEO_DECODER 0
+%define CONFIG_DXA_DECODER 0
+%define CONFIG_DXTORY_DECODER 0
+%define CONFIG_DXV_DECODER 0
+%define CONFIG_EACMV_DECODER 0
+%define CONFIG_EAMAD_DECODER 0
+%define CONFIG_EATGQ_DECODER 0
+%define CONFIG_EATGV_DECODER 0
+%define CONFIG_EATQI_DECODER 0
+%define CONFIG_EIGHTBPS_DECODER 0
+%define CONFIG_EIGHTSVX_EXP_DECODER 0
+%define CONFIG_EIGHTSVX_FIB_DECODER 0
+%define CONFIG_ESCAPE124_DECODER 0
+%define CONFIG_ESCAPE130_DECODER 0
+%define CONFIG_EXR_DECODER 0
+%define CONFIG_FFV1_DECODER 0
+%define CONFIG_FFVHUFF_DECODER 0
+%define CONFIG_FIC_DECODER 0
+%define CONFIG_FITS_DECODER 0
+%define CONFIG_FLASHSV_DECODER 0
+%define CONFIG_FLASHSV2_DECODER 0
+%define CONFIG_FLIC_DECODER 0
+%define CONFIG_FLV_DECODER 0
+%define CONFIG_FMVC_DECODER 0
+%define CONFIG_FOURXM_DECODER 0
+%define CONFIG_FRAPS_DECODER 0
+%define CONFIG_FRWU_DECODER 0
+%define CONFIG_G2M_DECODER 0
+%define CONFIG_GDV_DECODER 0
+%define CONFIG_GIF_DECODER 0
+%define CONFIG_H261_DECODER 0
+%define CONFIG_H263_DECODER 1
+%define CONFIG_H263I_DECODER 0
+%define CONFIG_H263P_DECODER 0
+%define CONFIG_H263_V4L2M2M_DECODER 0
+%define CONFIG_H264_DECODER 1
+%define CONFIG_H264_CRYSTALHD_DECODER 0
+%define CONFIG_H264_V4L2M2M_DECODER 0
+%define CONFIG_H264_MEDIACODEC_DECODER 0
+%define CONFIG_H264_MMAL_DECODER 0
+%define CONFIG_H264_QSV_DECODER 0
+%define CONFIG_H264_RKMPP_DECODER 0
+%define CONFIG_HAP_DECODER 0
+%define CONFIG_HEVC_DECODER 0
+%define CONFIG_HEVC_QSV_DECODER 0
+%define CONFIG_HEVC_RKMPP_DECODER 0
+%define CONFIG_HEVC_V4L2M2M_DECODER 0
+%define CONFIG_HNM4_VIDEO_DECODER 0
+%define CONFIG_HQ_HQA_DECODER 0
+%define CONFIG_HQX_DECODER 0
+%define CONFIG_HUFFYUV_DECODER 0
+%define CONFIG_HYMT_DECODER 0
+%define CONFIG_IDCIN_DECODER 0
+%define CONFIG_IFF_ILBM_DECODER 0
+%define CONFIG_IMM4_DECODER 0
+%define CONFIG_IMM5_DECODER 0
+%define CONFIG_INDEO2_DECODER 0
+%define CONFIG_INDEO3_DECODER 0
+%define CONFIG_INDEO4_DECODER 0
+%define CONFIG_INDEO5_DECODER 0
+%define CONFIG_INTERPLAY_VIDEO_DECODER 0
+%define CONFIG_JPEG2000_DECODER 0
+%define CONFIG_JPEGLS_DECODER 0
+%define CONFIG_JV_DECODER 0
+%define CONFIG_KGV1_DECODER 0
+%define CONFIG_KMVC_DECODER 0
+%define CONFIG_LAGARITH_DECODER 0
+%define CONFIG_LOCO_DECODER 0
+%define CONFIG_LSCR_DECODER 0
+%define CONFIG_M101_DECODER 0
+%define CONFIG_MAGICYUV_DECODER 0
+%define CONFIG_MDEC_DECODER 0
+%define CONFIG_MIMIC_DECODER 0
+%define CONFIG_MJPEG_DECODER 0
+%define CONFIG_MJPEGB_DECODER 0
+%define CONFIG_MMVIDEO_DECODER 0
+%define CONFIG_MOTIONPIXELS_DECODER 0
+%define CONFIG_MPEG1VIDEO_DECODER 0
+%define CONFIG_MPEG2VIDEO_DECODER 0
+%define CONFIG_MPEG4_DECODER 1
+%define CONFIG_MPEG4_CRYSTALHD_DECODER 0
+%define CONFIG_MPEG4_V4L2M2M_DECODER 0
+%define CONFIG_MPEG4_MMAL_DECODER 0
+%define CONFIG_MPEGVIDEO_DECODER 0
+%define CONFIG_MPEG1_V4L2M2M_DECODER 0
+%define CONFIG_MPEG2_MMAL_DECODER 0
+%define CONFIG_MPEG2_CRYSTALHD_DECODER 0
+%define CONFIG_MPEG2_V4L2M2M_DECODER 0
+%define CONFIG_MPEG2_QSV_DECODER 0
+%define CONFIG_MPEG2_MEDIACODEC_DECODER 0
+%define CONFIG_MSA1_DECODER 0
+%define CONFIG_MSCC_DECODER 0
+%define CONFIG_MSMPEG4V1_DECODER 0
+%define CONFIG_MSMPEG4V2_DECODER 0
+%define CONFIG_MSMPEG4V3_DECODER 0
+%define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
+%define CONFIG_MSRLE_DECODER 0
+%define CONFIG_MSS1_DECODER 0
+%define CONFIG_MSS2_DECODER 0
+%define CONFIG_MSVIDEO1_DECODER 0
+%define CONFIG_MSZH_DECODER 0
+%define CONFIG_MTS2_DECODER 0
+%define CONFIG_MV30_DECODER 0
+%define CONFIG_MVC1_DECODER 0
+%define CONFIG_MVC2_DECODER 0
+%define CONFIG_MVDV_DECODER 0
+%define CONFIG_MVHA_DECODER 0
+%define CONFIG_MWSC_DECODER 0
+%define CONFIG_MXPEG_DECODER 0
+%define CONFIG_NUV_DECODER 0
+%define CONFIG_PAF_VIDEO_DECODER 0
+%define CONFIG_PAM_DECODER 0
+%define CONFIG_PBM_DECODER 0
+%define CONFIG_PCX_DECODER 0
+%define CONFIG_PGM_DECODER 0
+%define CONFIG_PGMYUV_DECODER 0
+%define CONFIG_PICTOR_DECODER 0
+%define CONFIG_PIXLET_DECODER 0
+%define CONFIG_PNG_DECODER 0
+%define CONFIG_PPM_DECODER 0
+%define CONFIG_PRORES_DECODER 0
+%define CONFIG_PROSUMER_DECODER 0
+%define CONFIG_PSD_DECODER 0
+%define CONFIG_PTX_DECODER 0
+%define CONFIG_QDRAW_DECODER 0
+%define CONFIG_QPEG_DECODER 0
+%define CONFIG_QTRLE_DECODER 0
+%define CONFIG_R10K_DECODER 0
+%define CONFIG_R210_DECODER 0
+%define CONFIG_RASC_DECODER 0
+%define CONFIG_RAWVIDEO_DECODER 0
+%define CONFIG_RL2_DECODER 0
+%define CONFIG_ROQ_DECODER 0
+%define CONFIG_RPZA_DECODER 0
+%define CONFIG_RSCC_DECODER 0
+%define CONFIG_RV10_DECODER 0
+%define CONFIG_RV20_DECODER 0
+%define CONFIG_RV30_DECODER 0
+%define CONFIG_RV40_DECODER 0
+%define CONFIG_S302M_DECODER 0
+%define CONFIG_SANM_DECODER 0
+%define CONFIG_SCPR_DECODER 0
+%define CONFIG_SCREENPRESSO_DECODER 0
+%define CONFIG_SGI_DECODER 0
+%define CONFIG_SGIRLE_DECODER 0
+%define CONFIG_SHEERVIDEO_DECODER 0
+%define CONFIG_SMACKER_DECODER 0
+%define CONFIG_SMC_DECODER 0
+%define CONFIG_SMVJPEG_DECODER 0
+%define CONFIG_SNOW_DECODER 0
+%define CONFIG_SP5X_DECODER 0
+%define CONFIG_SPEEDHQ_DECODER 0
+%define CONFIG_SRGC_DECODER 0
+%define CONFIG_SUNRAST_DECODER 0
+%define CONFIG_SVQ1_DECODER 0
+%define CONFIG_SVQ3_DECODER 0
+%define CONFIG_TARGA_DECODER 0
+%define CONFIG_TARGA_Y216_DECODER 0
+%define CONFIG_TDSC_DECODER 0
+%define CONFIG_THEORA_DECODER 1
+%define CONFIG_THP_DECODER 0
+%define CONFIG_TIERTEXSEQVIDEO_DECODER 0
+%define CONFIG_TIFF_DECODER 0
+%define CONFIG_TMV_DECODER 0
+%define CONFIG_TRUEMOTION1_DECODER 0
+%define CONFIG_TRUEMOTION2_DECODER 0
+%define CONFIG_TRUEMOTION2RT_DECODER 0
+%define CONFIG_TSCC_DECODER 0
+%define CONFIG_TSCC2_DECODER 0
+%define CONFIG_TXD_DECODER 0
+%define CONFIG_ULTI_DECODER 0
+%define CONFIG_UTVIDEO_DECODER 0
+%define CONFIG_V210_DECODER 0
+%define CONFIG_V210X_DECODER 0
+%define CONFIG_V308_DECODER 0
+%define CONFIG_V408_DECODER 0
+%define CONFIG_V410_DECODER 0
+%define CONFIG_VB_DECODER 0
+%define CONFIG_VBLE_DECODER 0
+%define CONFIG_VC1_DECODER 0
+%define CONFIG_VC1_CRYSTALHD_DECODER 0
+%define CONFIG_VC1IMAGE_DECODER 0
+%define CONFIG_VC1_MMAL_DECODER 0
+%define CONFIG_VC1_QSV_DECODER 0
+%define CONFIG_VC1_V4L2M2M_DECODER 0
+%define CONFIG_VCR1_DECODER 0
+%define CONFIG_VMDVIDEO_DECODER 0
+%define CONFIG_VMNC_DECODER 0
+%define CONFIG_VP3_DECODER 1
+%define CONFIG_VP4_DECODER 0
+%define CONFIG_VP5_DECODER 0
+%define CONFIG_VP6_DECODER 0
+%define CONFIG_VP6A_DECODER 0
+%define CONFIG_VP6F_DECODER 0
+%define CONFIG_VP7_DECODER 0
+%define CONFIG_VP8_DECODER 1
+%define CONFIG_VP8_RKMPP_DECODER 0
+%define CONFIG_VP8_V4L2M2M_DECODER 0
+%define CONFIG_VP9_DECODER 1
+%define CONFIG_VP9_RKMPP_DECODER 0
+%define CONFIG_VP9_V4L2M2M_DECODER 0
+%define CONFIG_VQA_DECODER 0
+%define CONFIG_WEBP_DECODER 0
+%define CONFIG_WCMV_DECODER 0
+%define CONFIG_WRAPPED_AVFRAME_DECODER 0
+%define CONFIG_WMV1_DECODER 0
+%define CONFIG_WMV2_DECODER 0
+%define CONFIG_WMV3_DECODER 0
+%define CONFIG_WMV3_CRYSTALHD_DECODER 0
+%define CONFIG_WMV3IMAGE_DECODER 0
+%define CONFIG_WNV1_DECODER 0
+%define CONFIG_XAN_WC3_DECODER 0
+%define CONFIG_XAN_WC4_DECODER 0
+%define CONFIG_XBM_DECODER 0
+%define CONFIG_XFACE_DECODER 0
+%define CONFIG_XL_DECODER 0
+%define CONFIG_XPM_DECODER 0
+%define CONFIG_XWD_DECODER 0
+%define CONFIG_Y41P_DECODER 0
+%define CONFIG_YLC_DECODER 0
+%define CONFIG_YOP_DECODER 0
+%define CONFIG_YUV4_DECODER 0
+%define CONFIG_ZERO12V_DECODER 0
+%define CONFIG_ZEROCODEC_DECODER 0
+%define CONFIG_ZLIB_DECODER 0
+%define CONFIG_ZMBV_DECODER 0
+%define CONFIG_AAC_DECODER 1
+%define CONFIG_AAC_FIXED_DECODER 0
+%define CONFIG_AAC_LATM_DECODER 1
+%define CONFIG_AC3_DECODER 0
+%define CONFIG_AC3_FIXED_DECODER 0
+%define CONFIG_ACELP_KELVIN_DECODER 0
+%define CONFIG_ALAC_DECODER 0
+%define CONFIG_ALS_DECODER 0
+%define CONFIG_AMRNB_DECODER 1
+%define CONFIG_AMRWB_DECODER 1
+%define CONFIG_APE_DECODER 0
+%define CONFIG_APTX_DECODER 1
+%define CONFIG_APTX_HD_DECODER 0
+%define CONFIG_ATRAC1_DECODER 0
+%define CONFIG_ATRAC3_DECODER 0
+%define CONFIG_ATRAC3AL_DECODER 0
+%define CONFIG_ATRAC3P_DECODER 0
+%define CONFIG_ATRAC3PAL_DECODER 0
+%define CONFIG_ATRAC9_DECODER 0
+%define CONFIG_BINKAUDIO_DCT_DECODER 0
+%define CONFIG_BINKAUDIO_RDFT_DECODER 0
+%define CONFIG_BMV_AUDIO_DECODER 0
+%define CONFIG_COOK_DECODER 0
+%define CONFIG_DCA_DECODER 0
+%define CONFIG_DOLBY_E_DECODER 0
+%define CONFIG_DSD_LSBF_DECODER 0
+%define CONFIG_DSD_MSBF_DECODER 0
+%define CONFIG_DSD_LSBF_PLANAR_DECODER 0
+%define CONFIG_DSD_MSBF_PLANAR_DECODER 0
+%define CONFIG_DSICINAUDIO_DECODER 0
+%define CONFIG_DSS_SP_DECODER 0
+%define CONFIG_DST_DECODER 0
+%define CONFIG_EAC3_DECODER 0
+%define CONFIG_EVRC_DECODER 0
+%define CONFIG_FFWAVESYNTH_DECODER 0
+%define CONFIG_FLAC_DECODER 1
+%define CONFIG_G723_1_DECODER 0
+%define CONFIG_G729_DECODER 0
+%define CONFIG_GSM_DECODER 0
+%define CONFIG_GSM_MS_DECODER 1
+%define CONFIG_HCA_DECODER 0
+%define CONFIG_HCOM_DECODER 0
+%define CONFIG_IAC_DECODER 0
+%define CONFIG_ILBC_DECODER 0
+%define CONFIG_IMC_DECODER 0
+%define CONFIG_INTERPLAY_ACM_DECODER 0
+%define CONFIG_MACE3_DECODER 0
+%define CONFIG_MACE6_DECODER 0
+%define CONFIG_METASOUND_DECODER 0
+%define CONFIG_MLP_DECODER 0
+%define CONFIG_MP1_DECODER 0
+%define CONFIG_MP1FLOAT_DECODER 0
+%define CONFIG_MP2_DECODER 0
+%define CONFIG_MP2FLOAT_DECODER 0
+%define CONFIG_MP3FLOAT_DECODER 0
+%define CONFIG_MP3_DECODER 1
+%define CONFIG_MP3ADUFLOAT_DECODER 0
+%define CONFIG_MP3ADU_DECODER 0
+%define CONFIG_MP3ON4FLOAT_DECODER 0
+%define CONFIG_MP3ON4_DECODER 0
+%define CONFIG_MPC7_DECODER 0
+%define CONFIG_MPC8_DECODER 0
+%define CONFIG_NELLYMOSER_DECODER 0
+%define CONFIG_ON2AVC_DECODER 0
+%define CONFIG_OPUS_DECODER 0
+%define CONFIG_PAF_AUDIO_DECODER 0
+%define CONFIG_QCELP_DECODER 0
+%define CONFIG_QDM2_DECODER 0
+%define CONFIG_QDMC_DECODER 0
+%define CONFIG_RA_144_DECODER 0
+%define CONFIG_RA_288_DECODER 0
+%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 1
+%define CONFIG_SHORTEN_DECODER 0
+%define CONFIG_SIPR_DECODER 0
+%define CONFIG_SIREN_DECODER 0
+%define CONFIG_SMACKAUD_DECODER 0
+%define CONFIG_SONIC_DECODER 0
+%define CONFIG_TAK_DECODER 0
+%define CONFIG_TRUEHD_DECODER 0
+%define CONFIG_TRUESPEECH_DECODER 0
+%define CONFIG_TTA_DECODER 0
+%define CONFIG_TWINVQ_DECODER 0
+%define CONFIG_VMDAUDIO_DECODER 0
+%define CONFIG_VORBIS_DECODER 1
+%define CONFIG_WAVPACK_DECODER 0
+%define CONFIG_WMALOSSLESS_DECODER 0
+%define CONFIG_WMAPRO_DECODER 0
+%define CONFIG_WMAV1_DECODER 0
+%define CONFIG_WMAV2_DECODER 0
+%define CONFIG_WMAVOICE_DECODER 0
+%define CONFIG_WS_SND1_DECODER 0
+%define CONFIG_XMA1_DECODER 0
+%define CONFIG_XMA2_DECODER 0
+%define CONFIG_PCM_ALAW_DECODER 1
+%define CONFIG_PCM_BLURAY_DECODER 0
+%define CONFIG_PCM_DVD_DECODER 0
+%define CONFIG_PCM_F16LE_DECODER 0
+%define CONFIG_PCM_F24LE_DECODER 0
+%define CONFIG_PCM_F32BE_DECODER 0
+%define CONFIG_PCM_F32LE_DECODER 1
+%define CONFIG_PCM_F64BE_DECODER 0
+%define CONFIG_PCM_F64LE_DECODER 0
+%define CONFIG_PCM_LXF_DECODER 0
+%define CONFIG_PCM_MULAW_DECODER 1
+%define CONFIG_PCM_S8_DECODER 0
+%define CONFIG_PCM_S8_PLANAR_DECODER 0
+%define CONFIG_PCM_S16BE_DECODER 1
+%define CONFIG_PCM_S16BE_PLANAR_DECODER 0
+%define CONFIG_PCM_S16LE_DECODER 1
+%define CONFIG_PCM_S16LE_PLANAR_DECODER 0
+%define CONFIG_PCM_S24BE_DECODER 1
+%define CONFIG_PCM_S24DAUD_DECODER 0
+%define CONFIG_PCM_S24LE_DECODER 1
+%define CONFIG_PCM_S24LE_PLANAR_DECODER 0
+%define CONFIG_PCM_S32BE_DECODER 0
+%define CONFIG_PCM_S32LE_DECODER 1
+%define CONFIG_PCM_S32LE_PLANAR_DECODER 0
+%define CONFIG_PCM_S64BE_DECODER 0
+%define CONFIG_PCM_S64LE_DECODER 0
+%define CONFIG_PCM_U8_DECODER 1
+%define CONFIG_PCM_U16BE_DECODER 0
+%define CONFIG_PCM_U16LE_DECODER 0
+%define CONFIG_PCM_U24BE_DECODER 0
+%define CONFIG_PCM_U24LE_DECODER 0
+%define CONFIG_PCM_U32BE_DECODER 0
+%define CONFIG_PCM_U32LE_DECODER 0
+%define CONFIG_PCM_VIDC_DECODER 0
+%define CONFIG_DERF_DPCM_DECODER 0
+%define CONFIG_GREMLIN_DPCM_DECODER 0
+%define CONFIG_INTERPLAY_DPCM_DECODER 0
+%define CONFIG_ROQ_DPCM_DECODER 0
+%define CONFIG_SDX2_DPCM_DECODER 0
+%define CONFIG_SOL_DPCM_DECODER 0
+%define CONFIG_XAN_DPCM_DECODER 0
+%define CONFIG_ADPCM_4XM_DECODER 0
+%define CONFIG_ADPCM_ADX_DECODER 0
+%define CONFIG_ADPCM_AFC_DECODER 0
+%define CONFIG_ADPCM_AGM_DECODER 0
+%define CONFIG_ADPCM_AICA_DECODER 0
+%define CONFIG_ADPCM_ARGO_DECODER 0
+%define CONFIG_ADPCM_CT_DECODER 0
+%define CONFIG_ADPCM_DTK_DECODER 0
+%define CONFIG_ADPCM_EA_DECODER 0
+%define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
+%define CONFIG_ADPCM_EA_R1_DECODER 0
+%define CONFIG_ADPCM_EA_R2_DECODER 0
+%define CONFIG_ADPCM_EA_R3_DECODER 0
+%define CONFIG_ADPCM_EA_XAS_DECODER 0
+%define CONFIG_ADPCM_G722_DECODER 0
+%define CONFIG_ADPCM_G726_DECODER 0
+%define CONFIG_ADPCM_G726LE_DECODER 0
+%define CONFIG_ADPCM_IMA_AMV_DECODER 0
+%define CONFIG_ADPCM_IMA_ALP_DECODER 0
+%define CONFIG_ADPCM_IMA_APC_DECODER 0
+%define CONFIG_ADPCM_IMA_APM_DECODER 0
+%define CONFIG_ADPCM_IMA_DAT4_DECODER 0
+%define CONFIG_ADPCM_IMA_DK3_DECODER 0
+%define CONFIG_ADPCM_IMA_DK4_DECODER 0
+%define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
+%define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
+%define CONFIG_ADPCM_IMA_ISS_DECODER 0
+%define CONFIG_ADPCM_IMA_MTF_DECODER 0
+%define CONFIG_ADPCM_IMA_OKI_DECODER 0
+%define CONFIG_ADPCM_IMA_QT_DECODER 0
+%define CONFIG_ADPCM_IMA_RAD_DECODER 0
+%define CONFIG_ADPCM_IMA_SSI_DECODER 0
+%define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
+%define CONFIG_ADPCM_IMA_WAV_DECODER 0
+%define CONFIG_ADPCM_IMA_WS_DECODER 0
+%define CONFIG_ADPCM_MS_DECODER 0
+%define CONFIG_ADPCM_MTAF_DECODER 0
+%define CONFIG_ADPCM_PSX_DECODER 0
+%define CONFIG_ADPCM_SBPRO_2_DECODER 0
+%define CONFIG_ADPCM_SBPRO_3_DECODER 0
+%define CONFIG_ADPCM_SBPRO_4_DECODER 0
+%define CONFIG_ADPCM_SWF_DECODER 0
+%define CONFIG_ADPCM_THP_DECODER 0
+%define CONFIG_ADPCM_THP_LE_DECODER 0
+%define CONFIG_ADPCM_VIMA_DECODER 0
+%define CONFIG_ADPCM_XA_DECODER 0
+%define CONFIG_ADPCM_YAMAHA_DECODER 0
+%define CONFIG_ADPCM_ZORK_DECODER 0
+%define CONFIG_SSA_DECODER 0
+%define CONFIG_ASS_DECODER 0
+%define CONFIG_CCAPTION_DECODER 0
+%define CONFIG_DVBSUB_DECODER 0
+%define CONFIG_DVDSUB_DECODER 0
+%define CONFIG_JACOSUB_DECODER 0
+%define CONFIG_MICRODVD_DECODER 0
+%define CONFIG_MOVTEXT_DECODER 0
+%define CONFIG_MPL2_DECODER 0
+%define CONFIG_PGSSUB_DECODER 0
+%define CONFIG_PJS_DECODER 0
+%define CONFIG_REALTEXT_DECODER 0
+%define CONFIG_SAMI_DECODER 0
+%define CONFIG_SRT_DECODER 0
+%define CONFIG_STL_DECODER 0
+%define CONFIG_SUBRIP_DECODER 0
+%define CONFIG_SUBVIEWER_DECODER 0
+%define CONFIG_SUBVIEWER1_DECODER 0
+%define CONFIG_TEXT_DECODER 0
+%define CONFIG_VPLAYER_DECODER 0
+%define CONFIG_WEBVTT_DECODER 0
+%define CONFIG_XSUB_DECODER 0
+%define CONFIG_AAC_AT_DECODER 0
+%define CONFIG_AC3_AT_DECODER 0
+%define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
+%define CONFIG_ALAC_AT_DECODER 0
+%define CONFIG_AMR_NB_AT_DECODER 0
+%define CONFIG_EAC3_AT_DECODER 0
+%define CONFIG_GSM_MS_AT_DECODER 0
+%define CONFIG_ILBC_AT_DECODER 0
+%define CONFIG_MP1_AT_DECODER 0
+%define CONFIG_MP2_AT_DECODER 0
+%define CONFIG_MP3_AT_DECODER 0
+%define CONFIG_PCM_ALAW_AT_DECODER 0
+%define CONFIG_PCM_MULAW_AT_DECODER 0
+%define CONFIG_QDMC_AT_DECODER 0
+%define CONFIG_QDM2_AT_DECODER 0
+%define CONFIG_LIBARIBB24_DECODER 0
+%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
+%define CONFIG_LIBDAV1D_DECODER 0
+%define CONFIG_LIBDAVS2_DECODER 0
+%define CONFIG_LIBFDK_AAC_DECODER 0
+%define CONFIG_LIBGSM_DECODER 0
+%define CONFIG_LIBGSM_MS_DECODER 0
+%define CONFIG_LIBILBC_DECODER 0
+%define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
+%define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
+%define CONFIG_LIBOPENJPEG_DECODER 0
+%define CONFIG_LIBOPUS_DECODER 1
+%define CONFIG_LIBRSVG_DECODER 0
+%define CONFIG_LIBSPEEX_DECODER 0
+%define CONFIG_LIBVORBIS_DECODER 0
+%define CONFIG_LIBVPX_VP8_DECODER 0
+%define CONFIG_LIBVPX_VP9_DECODER 0
+%define CONFIG_LIBZVBI_TELETEXT_DECODER 0
+%define CONFIG_BINTEXT_DECODER 0
+%define CONFIG_XBIN_DECODER 0
+%define CONFIG_IDF_DECODER 0
+%define CONFIG_LIBAOM_AV1_DECODER 0
+%define CONFIG_LIBOPENH264_DECODER 0
+%define CONFIG_H264_CUVID_DECODER 0
+%define CONFIG_HEVC_CUVID_DECODER 0
+%define CONFIG_HEVC_MEDIACODEC_DECODER 0
+%define CONFIG_MJPEG_CUVID_DECODER 0
+%define CONFIG_MJPEG_QSV_DECODER 0
+%define CONFIG_MPEG1_CUVID_DECODER 0
+%define CONFIG_MPEG2_CUVID_DECODER 0
+%define CONFIG_MPEG4_CUVID_DECODER 0
+%define CONFIG_MPEG4_MEDIACODEC_DECODER 0
+%define CONFIG_VC1_CUVID_DECODER 0
+%define CONFIG_VP8_CUVID_DECODER 0
+%define CONFIG_VP8_MEDIACODEC_DECODER 0
+%define CONFIG_VP8_QSV_DECODER 0
+%define CONFIG_VP9_CUVID_DECODER 0
+%define CONFIG_VP9_MEDIACODEC_DECODER 0
+%define CONFIG_VP9_QSV_DECODER 0
+%define CONFIG_A64MULTI_ENCODER 0
+%define CONFIG_A64MULTI5_ENCODER 0
+%define CONFIG_ALIAS_PIX_ENCODER 0
+%define CONFIG_AMV_ENCODER 0
+%define CONFIG_APNG_ENCODER 0
+%define CONFIG_ASV1_ENCODER 0
+%define CONFIG_ASV2_ENCODER 0
+%define CONFIG_AVRP_ENCODER 0
+%define CONFIG_AVUI_ENCODER 0
+%define CONFIG_AYUV_ENCODER 0
+%define CONFIG_BMP_ENCODER 0
+%define CONFIG_CINEPAK_ENCODER 0
+%define CONFIG_CLJR_ENCODER 0
+%define CONFIG_COMFORTNOISE_ENCODER 0
+%define CONFIG_DNXHD_ENCODER 0
+%define CONFIG_DPX_ENCODER 0
+%define CONFIG_DVVIDEO_ENCODER 0
+%define CONFIG_FFV1_ENCODER 0
+%define CONFIG_FFVHUFF_ENCODER 0
+%define CONFIG_FITS_ENCODER 0
+%define CONFIG_FLASHSV_ENCODER 0
+%define CONFIG_FLASHSV2_ENCODER 0
+%define CONFIG_FLV_ENCODER 0
+%define CONFIG_GIF_ENCODER 0
+%define CONFIG_H261_ENCODER 0
+%define CONFIG_H263_ENCODER 0
+%define CONFIG_H263P_ENCODER 0
+%define CONFIG_HAP_ENCODER 0
+%define CONFIG_HUFFYUV_ENCODER 0
+%define CONFIG_JPEG2000_ENCODER 0
+%define CONFIG_JPEGLS_ENCODER 0
+%define CONFIG_LJPEG_ENCODER 0
+%define CONFIG_MAGICYUV_ENCODER 0
+%define CONFIG_MJPEG_ENCODER 0
+%define CONFIG_MPEG1VIDEO_ENCODER 0
+%define CONFIG_MPEG2VIDEO_ENCODER 0
+%define CONFIG_MPEG4_ENCODER 0
+%define CONFIG_MSMPEG4V2_ENCODER 0
+%define CONFIG_MSMPEG4V3_ENCODER 0
+%define CONFIG_MSVIDEO1_ENCODER 0
+%define CONFIG_PAM_ENCODER 0
+%define CONFIG_PBM_ENCODER 0
+%define CONFIG_PCX_ENCODER 0
+%define CONFIG_PGM_ENCODER 0
+%define CONFIG_PGMYUV_ENCODER 0
+%define CONFIG_PNG_ENCODER 0
+%define CONFIG_PPM_ENCODER 0
+%define CONFIG_PRORES_ENCODER 0
+%define CONFIG_PRORES_AW_ENCODER 0
+%define CONFIG_PRORES_KS_ENCODER 0
+%define CONFIG_QTRLE_ENCODER 0
+%define CONFIG_R10K_ENCODER 0
+%define CONFIG_R210_ENCODER 0
+%define CONFIG_RAWVIDEO_ENCODER 0
+%define CONFIG_ROQ_ENCODER 0
+%define CONFIG_RV10_ENCODER 0
+%define CONFIG_RV20_ENCODER 0
+%define CONFIG_S302M_ENCODER 0
+%define CONFIG_SGI_ENCODER 0
+%define CONFIG_SNOW_ENCODER 0
+%define CONFIG_SUNRAST_ENCODER 0
+%define CONFIG_SVQ1_ENCODER 0
+%define CONFIG_TARGA_ENCODER 0
+%define CONFIG_TIFF_ENCODER 0
+%define CONFIG_UTVIDEO_ENCODER 0
+%define CONFIG_V210_ENCODER 0
+%define CONFIG_V308_ENCODER 0
+%define CONFIG_V408_ENCODER 0
+%define CONFIG_V410_ENCODER 0
+%define CONFIG_VC2_ENCODER 0
+%define CONFIG_WRAPPED_AVFRAME_ENCODER 0
+%define CONFIG_WMV1_ENCODER 0
+%define CONFIG_WMV2_ENCODER 0
+%define CONFIG_XBM_ENCODER 0
+%define CONFIG_XFACE_ENCODER 0
+%define CONFIG_XWD_ENCODER 0
+%define CONFIG_Y41P_ENCODER 0
+%define CONFIG_YUV4_ENCODER 0
+%define CONFIG_ZLIB_ENCODER 0
+%define CONFIG_ZMBV_ENCODER 0
+%define CONFIG_AAC_ENCODER 0
+%define CONFIG_AC3_ENCODER 0
+%define CONFIG_AC3_FIXED_ENCODER 0
+%define CONFIG_ALAC_ENCODER 0
+%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
+%define CONFIG_DCA_ENCODER 0
+%define CONFIG_EAC3_ENCODER 0
+%define CONFIG_FLAC_ENCODER 0
+%define CONFIG_G723_1_ENCODER 0
+%define CONFIG_MLP_ENCODER 0
+%define CONFIG_MP2_ENCODER 0
+%define CONFIG_MP2FIXED_ENCODER 0
+%define CONFIG_NELLYMOSER_ENCODER 0
+%define CONFIG_OPUS_ENCODER 0
+%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
+%define CONFIG_SONIC_ENCODER 0
+%define CONFIG_SONIC_LS_ENCODER 0
+%define CONFIG_TRUEHD_ENCODER 0
+%define CONFIG_TTA_ENCODER 0
+%define CONFIG_VORBIS_ENCODER 0
+%define CONFIG_WAVPACK_ENCODER 0
+%define CONFIG_WMAV1_ENCODER 0
+%define CONFIG_WMAV2_ENCODER 0
+%define CONFIG_PCM_ALAW_ENCODER 0
+%define CONFIG_PCM_DVD_ENCODER 0
+%define CONFIG_PCM_F32BE_ENCODER 0
+%define CONFIG_PCM_F32LE_ENCODER 0
+%define CONFIG_PCM_F64BE_ENCODER 0
+%define CONFIG_PCM_F64LE_ENCODER 0
+%define CONFIG_PCM_MULAW_ENCODER 0
+%define CONFIG_PCM_S8_ENCODER 0
+%define CONFIG_PCM_S8_PLANAR_ENCODER 0
+%define CONFIG_PCM_S16BE_ENCODER 0
+%define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
+%define CONFIG_PCM_S16LE_ENCODER 0
+%define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
+%define CONFIG_PCM_S24BE_ENCODER 0
+%define CONFIG_PCM_S24DAUD_ENCODER 0
+%define CONFIG_PCM_S24LE_ENCODER 0
+%define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
+%define CONFIG_PCM_S32BE_ENCODER 0
+%define CONFIG_PCM_S32LE_ENCODER 0
+%define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
+%define CONFIG_PCM_S64BE_ENCODER 0
+%define CONFIG_PCM_S64LE_ENCODER 0
+%define CONFIG_PCM_U8_ENCODER 0
+%define CONFIG_PCM_U16BE_ENCODER 0
+%define CONFIG_PCM_U16LE_ENCODER 0
+%define CONFIG_PCM_U24BE_ENCODER 0
+%define CONFIG_PCM_U24LE_ENCODER 0
+%define CONFIG_PCM_U32BE_ENCODER 0
+%define CONFIG_PCM_U32LE_ENCODER 0
+%define CONFIG_PCM_VIDC_ENCODER 0
+%define CONFIG_ROQ_DPCM_ENCODER 0
+%define CONFIG_ADPCM_ADX_ENCODER 0
+%define CONFIG_ADPCM_G722_ENCODER 0
+%define CONFIG_ADPCM_G726_ENCODER 0
+%define CONFIG_ADPCM_G726LE_ENCODER 0
+%define CONFIG_ADPCM_IMA_QT_ENCODER 0
+%define CONFIG_ADPCM_IMA_WAV_ENCODER 0
+%define CONFIG_ADPCM_MS_ENCODER 0
+%define CONFIG_ADPCM_SWF_ENCODER 0
+%define CONFIG_ADPCM_YAMAHA_ENCODER 0
+%define CONFIG_SSA_ENCODER 0
+%define CONFIG_ASS_ENCODER 0
+%define CONFIG_DVBSUB_ENCODER 0
+%define CONFIG_DVDSUB_ENCODER 0
+%define CONFIG_MOVTEXT_ENCODER 0
+%define CONFIG_SRT_ENCODER 0
+%define CONFIG_SUBRIP_ENCODER 0
+%define CONFIG_TEXT_ENCODER 0
+%define CONFIG_WEBVTT_ENCODER 0
+%define CONFIG_XSUB_ENCODER 0
+%define CONFIG_AAC_AT_ENCODER 0
+%define CONFIG_ALAC_AT_ENCODER 0
+%define CONFIG_ILBC_AT_ENCODER 0
+%define CONFIG_PCM_ALAW_AT_ENCODER 0
+%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBAOM_AV1_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
+%define CONFIG_LIBFDK_AAC_ENCODER 0
+%define CONFIG_LIBGSM_ENCODER 0
+%define CONFIG_LIBGSM_MS_ENCODER 0
+%define CONFIG_LIBILBC_ENCODER 0
+%define CONFIG_LIBMP3LAME_ENCODER 0
+%define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
+%define CONFIG_LIBOPENJPEG_ENCODER 0
+%define CONFIG_LIBOPUS_ENCODER 0
+%define CONFIG_LIBRAV1E_ENCODER 0
+%define CONFIG_LIBSHINE_ENCODER 0
+%define CONFIG_LIBSPEEX_ENCODER 0
+%define CONFIG_LIBTHEORA_ENCODER 0
+%define CONFIG_LIBTWOLAME_ENCODER 0
+%define CONFIG_LIBVO_AMRWBENC_ENCODER 0
+%define CONFIG_LIBVORBIS_ENCODER 0
+%define CONFIG_LIBVPX_VP8_ENCODER 0
+%define CONFIG_LIBVPX_VP9_ENCODER 0
+%define CONFIG_LIBWAVPACK_ENCODER 0
+%define CONFIG_LIBWEBP_ANIM_ENCODER 0
+%define CONFIG_LIBWEBP_ENCODER 0
+%define CONFIG_LIBX262_ENCODER 0
+%define CONFIG_LIBX264_ENCODER 0
+%define CONFIG_LIBX264RGB_ENCODER 0
+%define CONFIG_LIBX265_ENCODER 0
+%define CONFIG_LIBXAVS_ENCODER 0
+%define CONFIG_LIBXAVS2_ENCODER 0
+%define CONFIG_LIBXVID_ENCODER 0
+%define CONFIG_H263_V4L2M2M_ENCODER 0
+%define CONFIG_LIBOPENH264_ENCODER 0
+%define CONFIG_H264_AMF_ENCODER 0
+%define CONFIG_H264_NVENC_ENCODER 0
+%define CONFIG_H264_OMX_ENCODER 0
+%define CONFIG_H264_QSV_ENCODER 0
+%define CONFIG_H264_V4L2M2M_ENCODER 0
+%define CONFIG_H264_VAAPI_ENCODER 0
+%define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
+%define CONFIG_NVENC_ENCODER 0
+%define CONFIG_NVENC_H264_ENCODER 0
+%define CONFIG_NVENC_HEVC_ENCODER 0
+%define CONFIG_HEVC_AMF_ENCODER 0
+%define CONFIG_HEVC_NVENC_ENCODER 0
+%define CONFIG_HEVC_QSV_ENCODER 0
+%define CONFIG_HEVC_V4L2M2M_ENCODER 0
+%define CONFIG_HEVC_VAAPI_ENCODER 0
+%define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
+%define CONFIG_LIBKVAZAAR_ENCODER 0
+%define CONFIG_MJPEG_QSV_ENCODER 0
+%define CONFIG_MJPEG_VAAPI_ENCODER 0
+%define CONFIG_MPEG2_QSV_ENCODER 0
+%define CONFIG_MPEG2_VAAPI_ENCODER 0
+%define CONFIG_MPEG4_OMX_ENCODER 0
+%define CONFIG_MPEG4_V4L2M2M_ENCODER 0
+%define CONFIG_VP8_V4L2M2M_ENCODER 0
+%define CONFIG_VP8_VAAPI_ENCODER 0
+%define CONFIG_VP9_VAAPI_ENCODER 0
+%define CONFIG_VP9_QSV_ENCODER 0
+%define CONFIG_H263_VAAPI_HWACCEL 0
+%define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_H264_D3D11VA_HWACCEL 0
+%define CONFIG_H264_D3D11VA2_HWACCEL 0
+%define CONFIG_H264_DXVA2_HWACCEL 0
+%define CONFIG_H264_NVDEC_HWACCEL 0
+%define CONFIG_H264_VAAPI_HWACCEL 0
+%define CONFIG_H264_VDPAU_HWACCEL 0
+%define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_HEVC_D3D11VA_HWACCEL 0
+%define CONFIG_HEVC_D3D11VA2_HWACCEL 0
+%define CONFIG_HEVC_DXVA2_HWACCEL 0
+%define CONFIG_HEVC_NVDEC_HWACCEL 0
+%define CONFIG_HEVC_VAAPI_HWACCEL 0
+%define CONFIG_HEVC_VDPAU_HWACCEL 0
+%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
+%define CONFIG_MPEG1_NVDEC_HWACCEL 0
+%define CONFIG_MPEG1_VDPAU_HWACCEL 0
+%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MPEG1_XVMC_HWACCEL 0
+%define CONFIG_MPEG2_D3D11VA_HWACCEL 0
+%define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
+%define CONFIG_MPEG2_NVDEC_HWACCEL 0
+%define CONFIG_MPEG2_DXVA2_HWACCEL 0
+%define CONFIG_MPEG2_VAAPI_HWACCEL 0
+%define CONFIG_MPEG2_VDPAU_HWACCEL 0
+%define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MPEG2_XVMC_HWACCEL 0
+%define CONFIG_MPEG4_NVDEC_HWACCEL 0
+%define CONFIG_MPEG4_VAAPI_HWACCEL 0
+%define CONFIG_MPEG4_VDPAU_HWACCEL 0
+%define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_VC1_D3D11VA_HWACCEL 0
+%define CONFIG_VC1_D3D11VA2_HWACCEL 0
+%define CONFIG_VC1_DXVA2_HWACCEL 0
+%define CONFIG_VC1_NVDEC_HWACCEL 0
+%define CONFIG_VC1_VAAPI_HWACCEL 0
+%define CONFIG_VC1_VDPAU_HWACCEL 0
+%define CONFIG_VP8_NVDEC_HWACCEL 0
+%define CONFIG_VP8_VAAPI_HWACCEL 0
+%define CONFIG_VP9_D3D11VA_HWACCEL 0
+%define CONFIG_VP9_D3D11VA2_HWACCEL 0
+%define CONFIG_VP9_DXVA2_HWACCEL 0
+%define CONFIG_VP9_NVDEC_HWACCEL 0
+%define CONFIG_VP9_VAAPI_HWACCEL 0
+%define CONFIG_VP9_VDPAU_HWACCEL 0
+%define CONFIG_WMV3_D3D11VA_HWACCEL 0
+%define CONFIG_WMV3_D3D11VA2_HWACCEL 0
+%define CONFIG_WMV3_DXVA2_HWACCEL 0
+%define CONFIG_WMV3_NVDEC_HWACCEL 0
+%define CONFIG_WMV3_VAAPI_HWACCEL 0
+%define CONFIG_WMV3_VDPAU_HWACCEL 0
+%define CONFIG_AAC_PARSER 1
+%define CONFIG_AAC_LATM_PARSER 1
+%define CONFIG_AC3_PARSER 0
+%define CONFIG_ADX_PARSER 0
+%define CONFIG_AV1_PARSER 0
+%define CONFIG_AVS2_PARSER 0
+%define CONFIG_BMP_PARSER 0
+%define CONFIG_CAVSVIDEO_PARSER 0
+%define CONFIG_COOK_PARSER 0
+%define CONFIG_DCA_PARSER 0
+%define CONFIG_DIRAC_PARSER 0
+%define CONFIG_DNXHD_PARSER 0
+%define CONFIG_DPX_PARSER 0
+%define CONFIG_DVAUDIO_PARSER 0
+%define CONFIG_DVBSUB_PARSER 0
+%define CONFIG_DVDSUB_PARSER 0
+%define CONFIG_DVD_NAV_PARSER 0
+%define CONFIG_FLAC_PARSER 1
+%define CONFIG_G723_1_PARSER 0
+%define CONFIG_G729_PARSER 0
+%define CONFIG_GIF_PARSER 0
+%define CONFIG_GSM_PARSER 1
+%define CONFIG_H261_PARSER 0
+%define CONFIG_H263_PARSER 1
+%define CONFIG_H264_PARSER 1
+%define CONFIG_HEVC_PARSER 0
+%define CONFIG_MJPEG_PARSER 0
+%define CONFIG_MLP_PARSER 0
+%define CONFIG_MPEG4VIDEO_PARSER 1
+%define CONFIG_MPEGAUDIO_PARSER 1
+%define CONFIG_MPEGVIDEO_PARSER 0
+%define CONFIG_OPUS_PARSER 1
+%define CONFIG_PNG_PARSER 0
+%define CONFIG_PNM_PARSER 0
+%define CONFIG_RV30_PARSER 0
+%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
+%define CONFIG_SIPR_PARSER 0
+%define CONFIG_TAK_PARSER 0
+%define CONFIG_VC1_PARSER 0
+%define CONFIG_VORBIS_PARSER 1
+%define CONFIG_VP3_PARSER 1
+%define CONFIG_VP8_PARSER 1
+%define CONFIG_VP9_PARSER 1
+%define CONFIG_WEBP_PARSER 0
+%define CONFIG_XMA_PARSER 0
+%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
+%define CONFIG_AVFOUNDATION_INDEV 0
+%define CONFIG_BKTR_INDEV 0
+%define CONFIG_DECKLINK_INDEV 0
+%define CONFIG_DSHOW_INDEV 0
+%define CONFIG_FBDEV_INDEV 0
+%define CONFIG_GDIGRAB_INDEV 0
+%define CONFIG_IEC61883_INDEV 0
+%define CONFIG_JACK_INDEV 0
+%define CONFIG_KMSGRAB_INDEV 0
+%define CONFIG_LAVFI_INDEV 0
+%define CONFIG_OPENAL_INDEV 0
+%define CONFIG_OSS_INDEV 0
+%define CONFIG_PULSE_INDEV 0
+%define CONFIG_SNDIO_INDEV 0
+%define CONFIG_V4L2_INDEV 0
+%define CONFIG_VFWCAP_INDEV 0
+%define CONFIG_XCBGRAB_INDEV 0
+%define CONFIG_LIBCDIO_INDEV 0
+%define CONFIG_LIBDC1394_INDEV 0
+%define CONFIG_ALSA_OUTDEV 0
+%define CONFIG_CACA_OUTDEV 0
+%define CONFIG_DECKLINK_OUTDEV 0
+%define CONFIG_FBDEV_OUTDEV 0
+%define CONFIG_OPENGL_OUTDEV 0
+%define CONFIG_OSS_OUTDEV 0
+%define CONFIG_PULSE_OUTDEV 0
+%define CONFIG_SDL2_OUTDEV 0
+%define CONFIG_SNDIO_OUTDEV 0
+%define CONFIG_V4L2_OUTDEV 0
+%define CONFIG_XV_OUTDEV 0
+%define CONFIG_ABENCH_FILTER 0
+%define CONFIG_ACOMPRESSOR_FILTER 0
+%define CONFIG_ACONTRAST_FILTER 0
+%define CONFIG_ACOPY_FILTER 0
+%define CONFIG_ACUE_FILTER 0
+%define CONFIG_ACROSSFADE_FILTER 0
+%define CONFIG_ACROSSOVER_FILTER 0
+%define CONFIG_ACRUSHER_FILTER 0
+%define CONFIG_ADECLICK_FILTER 0
+%define CONFIG_ADECLIP_FILTER 0
+%define CONFIG_ADELAY_FILTER 0
+%define CONFIG_ADERIVATIVE_FILTER 0
+%define CONFIG_AECHO_FILTER 0
+%define CONFIG_AEMPHASIS_FILTER 0
+%define CONFIG_AEVAL_FILTER 0
+%define CONFIG_AFADE_FILTER 0
+%define CONFIG_AFFTDN_FILTER 0
+%define CONFIG_AFFTFILT_FILTER 0
+%define CONFIG_AFIR_FILTER 0
+%define CONFIG_AFORMAT_FILTER 0
+%define CONFIG_AGATE_FILTER 0
+%define CONFIG_AIIR_FILTER 0
+%define CONFIG_AINTEGRAL_FILTER 0
+%define CONFIG_AINTERLEAVE_FILTER 0
+%define CONFIG_ALIMITER_FILTER 0
+%define CONFIG_ALLPASS_FILTER 0
+%define CONFIG_ALOOP_FILTER 0
+%define CONFIG_AMERGE_FILTER 0
+%define CONFIG_AMETADATA_FILTER 0
+%define CONFIG_AMIX_FILTER 0
+%define CONFIG_AMULTIPLY_FILTER 0
+%define CONFIG_ANEQUALIZER_FILTER 0
+%define CONFIG_ANLMDN_FILTER 0
+%define CONFIG_ANLMS_FILTER 0
+%define CONFIG_ANULL_FILTER 0
+%define CONFIG_APAD_FILTER 0
+%define CONFIG_APERMS_FILTER 0
+%define CONFIG_APHASER_FILTER 0
+%define CONFIG_APULSATOR_FILTER 0
+%define CONFIG_AREALTIME_FILTER 0
+%define CONFIG_ARESAMPLE_FILTER 0
+%define CONFIG_AREVERSE_FILTER 0
+%define CONFIG_ARNNDN_FILTER 0
+%define CONFIG_ASELECT_FILTER 0
+%define CONFIG_ASENDCMD_FILTER 0
+%define CONFIG_ASETNSAMPLES_FILTER 0
+%define CONFIG_ASETPTS_FILTER 0
+%define CONFIG_ASETRATE_FILTER 0
+%define CONFIG_ASETTB_FILTER 0
+%define CONFIG_ASHOWINFO_FILTER 0
+%define CONFIG_ASIDEDATA_FILTER 0
+%define CONFIG_ASOFTCLIP_FILTER 0
+%define CONFIG_ASPLIT_FILTER 0
+%define CONFIG_ASR_FILTER 0
+%define CONFIG_ASTATS_FILTER 0
+%define CONFIG_ASTREAMSELECT_FILTER 0
+%define CONFIG_ATEMPO_FILTER 0
+%define CONFIG_ATRIM_FILTER 0
+%define CONFIG_AXCORRELATE_FILTER 0
+%define CONFIG_AZMQ_FILTER 0
+%define CONFIG_BANDPASS_FILTER 0
+%define CONFIG_BANDREJECT_FILTER 0
+%define CONFIG_BASS_FILTER 0
+%define CONFIG_BIQUAD_FILTER 0
+%define CONFIG_BS2B_FILTER 0
+%define CONFIG_CHROMABER_VULKAN_FILTER 0
+%define CONFIG_CHANNELMAP_FILTER 0
+%define CONFIG_CHANNELSPLIT_FILTER 0
+%define CONFIG_CHORUS_FILTER 0
+%define CONFIG_COMPAND_FILTER 0
+%define CONFIG_COMPENSATIONDELAY_FILTER 0
+%define CONFIG_CROSSFEED_FILTER 0
+%define CONFIG_CRYSTALIZER_FILTER 0
+%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DEESSER_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
+%define CONFIG_DYNAUDNORM_FILTER 0
+%define CONFIG_EARWAX_FILTER 0
+%define CONFIG_EBUR128_FILTER 0
+%define CONFIG_EQUALIZER_FILTER 0
+%define CONFIG_EXTRASTEREO_FILTER 0
+%define CONFIG_FIREQUALIZER_FILTER 0
+%define CONFIG_FLANGER_FILTER 0
+%define CONFIG_HAAS_FILTER 0
+%define CONFIG_HDCD_FILTER 0
+%define CONFIG_HEADPHONE_FILTER 0
+%define CONFIG_HIGHPASS_FILTER 0
+%define CONFIG_HIGHSHELF_FILTER 0
+%define CONFIG_JOIN_FILTER 0
+%define CONFIG_LADSPA_FILTER 0
+%define CONFIG_LOUDNORM_FILTER 0
+%define CONFIG_LOWPASS_FILTER 0
+%define CONFIG_LOWSHELF_FILTER 0
+%define CONFIG_LV2_FILTER 0
+%define CONFIG_MCOMPAND_FILTER 0
+%define CONFIG_PAN_FILTER 0
+%define CONFIG_REPLAYGAIN_FILTER 0
+%define CONFIG_RESAMPLE_FILTER 0
+%define CONFIG_RUBBERBAND_FILTER 0
+%define CONFIG_SIDECHAINCOMPRESS_FILTER 0
+%define CONFIG_SIDECHAINGATE_FILTER 0
+%define CONFIG_SILENCEDETECT_FILTER 0
+%define CONFIG_SILENCEREMOVE_FILTER 0
+%define CONFIG_SOFALIZER_FILTER 0
+%define CONFIG_STEREOTOOLS_FILTER 0
+%define CONFIG_STEREOWIDEN_FILTER 0
+%define CONFIG_SUPEREQUALIZER_FILTER 0
+%define CONFIG_SURROUND_FILTER 0
+%define CONFIG_TREBLE_FILTER 0
+%define CONFIG_TREMOLO_FILTER 0
+%define CONFIG_VIBRATO_FILTER 0
+%define CONFIG_VOLUME_FILTER 0
+%define CONFIG_VOLUMEDETECT_FILTER 0
+%define CONFIG_AEVALSRC_FILTER 0
+%define CONFIG_AFIRSRC_FILTER 0
+%define CONFIG_ANOISESRC_FILTER 0
+%define CONFIG_ANULLSRC_FILTER 0
+%define CONFIG_FLITE_FILTER 0
+%define CONFIG_HILBERT_FILTER 0
+%define CONFIG_SINC_FILTER 0
+%define CONFIG_SINE_FILTER 0
+%define CONFIG_ANULLSINK_FILTER 0
+%define CONFIG_ADDROI_FILTER 0
+%define CONFIG_ALPHAEXTRACT_FILTER 0
+%define CONFIG_ALPHAMERGE_FILTER 0
+%define CONFIG_AMPLIFY_FILTER 0
+%define CONFIG_ASS_FILTER 0
+%define CONFIG_ATADENOISE_FILTER 0
+%define CONFIG_AVGBLUR_FILTER 0
+%define CONFIG_AVGBLUR_OPENCL_FILTER 0
+%define CONFIG_AVGBLUR_VULKAN_FILTER 0
+%define CONFIG_BBOX_FILTER 0
+%define CONFIG_BENCH_FILTER 0
+%define CONFIG_BILATERAL_FILTER 0
+%define CONFIG_BITPLANENOISE_FILTER 0
+%define CONFIG_BLACKDETECT_FILTER 0
+%define CONFIG_BLACKFRAME_FILTER 0
+%define CONFIG_BLEND_FILTER 0
+%define CONFIG_BM3D_FILTER 0
+%define CONFIG_BOXBLUR_FILTER 0
+%define CONFIG_BOXBLUR_OPENCL_FILTER 0
+%define CONFIG_BWDIF_FILTER 0
+%define CONFIG_CAS_FILTER 0
+%define CONFIG_CHROMAHOLD_FILTER 0
+%define CONFIG_CHROMAKEY_FILTER 0
+%define CONFIG_CHROMASHIFT_FILTER 0
+%define CONFIG_CIESCOPE_FILTER 0
+%define CONFIG_CODECVIEW_FILTER 0
+%define CONFIG_COLORBALANCE_FILTER 0
+%define CONFIG_COLORCHANNELMIXER_FILTER 0
+%define CONFIG_COLORKEY_FILTER 0
+%define CONFIG_COLORKEY_OPENCL_FILTER 0
+%define CONFIG_COLORHOLD_FILTER 0
+%define CONFIG_COLORLEVELS_FILTER 0
+%define CONFIG_COLORMATRIX_FILTER 0
+%define CONFIG_COLORSPACE_FILTER 0
+%define CONFIG_CONVOLUTION_FILTER 0
+%define CONFIG_CONVOLUTION_OPENCL_FILTER 0
+%define CONFIG_CONVOLVE_FILTER 0
+%define CONFIG_COPY_FILTER 0
+%define CONFIG_COREIMAGE_FILTER 0
+%define CONFIG_COVER_RECT_FILTER 0
+%define CONFIG_CROP_FILTER 0
+%define CONFIG_CROPDETECT_FILTER 0
+%define CONFIG_CUE_FILTER 0
+%define CONFIG_CURVES_FILTER 0
+%define CONFIG_DATASCOPE_FILTER 0
+%define CONFIG_DCTDNOIZ_FILTER 0
+%define CONFIG_DEBAND_FILTER 0
+%define CONFIG_DEBLOCK_FILTER 0
+%define CONFIG_DECIMATE_FILTER 0
+%define CONFIG_DECONVOLVE_FILTER 0
+%define CONFIG_DEDOT_FILTER 0
+%define CONFIG_DEFLATE_FILTER 0
+%define CONFIG_DEFLICKER_FILTER 0
+%define CONFIG_DEINTERLACE_QSV_FILTER 0
+%define CONFIG_DEINTERLACE_VAAPI_FILTER 0
+%define CONFIG_DEJUDDER_FILTER 0
+%define CONFIG_DELOGO_FILTER 0
+%define CONFIG_DENOISE_VAAPI_FILTER 0
+%define CONFIG_DERAIN_FILTER 0
+%define CONFIG_DESHAKE_FILTER 0
+%define CONFIG_DESHAKE_OPENCL_FILTER 0
+%define CONFIG_DESPILL_FILTER 0
+%define CONFIG_DETELECINE_FILTER 0
+%define CONFIG_DILATION_FILTER 0
+%define CONFIG_DILATION_OPENCL_FILTER 0
+%define CONFIG_DISPLACE_FILTER 0
+%define CONFIG_DNN_PROCESSING_FILTER 0
+%define CONFIG_DOUBLEWEAVE_FILTER 0
+%define CONFIG_DRAWBOX_FILTER 0
+%define CONFIG_DRAWGRAPH_FILTER 0
+%define CONFIG_DRAWGRID_FILTER 0
+%define CONFIG_DRAWTEXT_FILTER 0
+%define CONFIG_EDGEDETECT_FILTER 0
+%define CONFIG_ELBG_FILTER 0
+%define CONFIG_ENTROPY_FILTER 0
+%define CONFIG_EQ_FILTER 0
+%define CONFIG_EROSION_FILTER 0
+%define CONFIG_EROSION_OPENCL_FILTER 0
+%define CONFIG_EXTRACTPLANES_FILTER 0
+%define CONFIG_FADE_FILTER 0
+%define CONFIG_FFTDNOIZ_FILTER 0
+%define CONFIG_FFTFILT_FILTER 0
+%define CONFIG_FIELD_FILTER 0
+%define CONFIG_FIELDHINT_FILTER 0
+%define CONFIG_FIELDMATCH_FILTER 0
+%define CONFIG_FIELDORDER_FILTER 0
+%define CONFIG_FILLBORDERS_FILTER 0
+%define CONFIG_FIND_RECT_FILTER 0
+%define CONFIG_FLOODFILL_FILTER 0
+%define CONFIG_FORMAT_FILTER 0
+%define CONFIG_FPS_FILTER 0
+%define CONFIG_FRAMEPACK_FILTER 0
+%define CONFIG_FRAMERATE_FILTER 0
+%define CONFIG_FRAMESTEP_FILTER 0
+%define CONFIG_FREEZEDETECT_FILTER 0
+%define CONFIG_FREEZEFRAMES_FILTER 0
+%define CONFIG_FREI0R_FILTER 0
+%define CONFIG_FSPP_FILTER 0
+%define CONFIG_GBLUR_FILTER 0
+%define CONFIG_GEQ_FILTER 0
+%define CONFIG_GRADFUN_FILTER 0
+%define CONFIG_GRAPHMONITOR_FILTER 0
+%define CONFIG_GREYEDGE_FILTER 0
+%define CONFIG_HALDCLUT_FILTER 0
+%define CONFIG_HFLIP_FILTER 0
+%define CONFIG_HISTEQ_FILTER 0
+%define CONFIG_HISTOGRAM_FILTER 0
+%define CONFIG_HQDN3D_FILTER 0
+%define CONFIG_HQX_FILTER 0
+%define CONFIG_HSTACK_FILTER 0
+%define CONFIG_HUE_FILTER 0
+%define CONFIG_HWDOWNLOAD_FILTER 0
+%define CONFIG_HWMAP_FILTER 0
+%define CONFIG_HWUPLOAD_FILTER 0
+%define CONFIG_HWUPLOAD_CUDA_FILTER 0
+%define CONFIG_HYSTERESIS_FILTER 0
+%define CONFIG_IDET_FILTER 0
+%define CONFIG_IL_FILTER 0
+%define CONFIG_INFLATE_FILTER 0
+%define CONFIG_INTERLACE_FILTER 0
+%define CONFIG_INTERLEAVE_FILTER 0
+%define CONFIG_KERNDEINT_FILTER 0
+%define CONFIG_LAGFUN_FILTER 0
+%define CONFIG_LENSCORRECTION_FILTER 0
+%define CONFIG_LENSFUN_FILTER 0
+%define CONFIG_LIBVMAF_FILTER 0
+%define CONFIG_LIMITER_FILTER 0
+%define CONFIG_LOOP_FILTER 0
+%define CONFIG_LUMAKEY_FILTER 0
+%define CONFIG_LUT_FILTER 0
+%define CONFIG_LUT1D_FILTER 0
+%define CONFIG_LUT2_FILTER 0
+%define CONFIG_LUT3D_FILTER 0
+%define CONFIG_LUTRGB_FILTER 0
+%define CONFIG_LUTYUV_FILTER 0
+%define CONFIG_MASKEDCLAMP_FILTER 0
+%define CONFIG_MASKEDMAX_FILTER 0
+%define CONFIG_MASKEDMERGE_FILTER 0
+%define CONFIG_MASKEDMIN_FILTER 0
+%define CONFIG_MASKEDTHRESHOLD_FILTER 0
+%define CONFIG_MASKFUN_FILTER 0
+%define CONFIG_MCDEINT_FILTER 0
+%define CONFIG_MEDIAN_FILTER 0
+%define CONFIG_MERGEPLANES_FILTER 0
+%define CONFIG_MESTIMATE_FILTER 0
+%define CONFIG_METADATA_FILTER 0
+%define CONFIG_MIDEQUALIZER_FILTER 0
+%define CONFIG_MINTERPOLATE_FILTER 0
+%define CONFIG_MIX_FILTER 0
+%define CONFIG_MPDECIMATE_FILTER 0
+%define CONFIG_NEGATE_FILTER 0
+%define CONFIG_NLMEANS_FILTER 0
+%define CONFIG_NLMEANS_OPENCL_FILTER 0
+%define CONFIG_NNEDI_FILTER 0
+%define CONFIG_NOFORMAT_FILTER 0
+%define CONFIG_NOISE_FILTER 0
+%define CONFIG_NORMALIZE_FILTER 0
+%define CONFIG_NULL_FILTER 0
+%define CONFIG_OCR_FILTER 0
+%define CONFIG_OCV_FILTER 0
+%define CONFIG_OSCILLOSCOPE_FILTER 0
+%define CONFIG_OVERLAY_FILTER 0
+%define CONFIG_OVERLAY_OPENCL_FILTER 0
+%define CONFIG_OVERLAY_QSV_FILTER 0
+%define CONFIG_OVERLAY_VULKAN_FILTER 0
+%define CONFIG_OVERLAY_CUDA_FILTER 0
+%define CONFIG_OWDENOISE_FILTER 0
+%define CONFIG_PAD_FILTER 0
+%define CONFIG_PAD_OPENCL_FILTER 0
+%define CONFIG_PALETTEGEN_FILTER 0
+%define CONFIG_PALETTEUSE_FILTER 0
+%define CONFIG_PERMS_FILTER 0
+%define CONFIG_PERSPECTIVE_FILTER 0
+%define CONFIG_PHASE_FILTER 0
+%define CONFIG_PHOTOSENSITIVITY_FILTER 0
+%define CONFIG_PIXDESCTEST_FILTER 0
+%define CONFIG_PIXSCOPE_FILTER 0
+%define CONFIG_PP_FILTER 0
+%define CONFIG_PP7_FILTER 0
+%define CONFIG_PREMULTIPLY_FILTER 0
+%define CONFIG_PREWITT_FILTER 0
+%define CONFIG_PREWITT_OPENCL_FILTER 0
+%define CONFIG_PROCAMP_VAAPI_FILTER 0
+%define CONFIG_PROGRAM_OPENCL_FILTER 0
+%define CONFIG_PSEUDOCOLOR_FILTER 0
+%define CONFIG_PSNR_FILTER 0
+%define CONFIG_PULLUP_FILTER 0
+%define CONFIG_QP_FILTER 0
+%define CONFIG_RANDOM_FILTER 0
+%define CONFIG_READEIA608_FILTER 0
+%define CONFIG_READVITC_FILTER 0
+%define CONFIG_REALTIME_FILTER 0
+%define CONFIG_REMAP_FILTER 0
+%define CONFIG_REMOVEGRAIN_FILTER 0
+%define CONFIG_REMOVELOGO_FILTER 0
+%define CONFIG_REPEATFIELDS_FILTER 0
+%define CONFIG_REVERSE_FILTER 0
+%define CONFIG_RGBASHIFT_FILTER 0
+%define CONFIG_ROBERTS_FILTER 0
+%define CONFIG_ROBERTS_OPENCL_FILTER 0
+%define CONFIG_ROTATE_FILTER 0
+%define CONFIG_SAB_FILTER 0
+%define CONFIG_SCALE_FILTER 0
+%define CONFIG_SCALE_CUDA_FILTER 0
+%define CONFIG_SCALE_NPP_FILTER 0
+%define CONFIG_SCALE_QSV_FILTER 0
+%define CONFIG_SCALE_VAAPI_FILTER 0
+%define CONFIG_SCALE_VULKAN_FILTER 0
+%define CONFIG_SCALE2REF_FILTER 0
+%define CONFIG_SCROLL_FILTER 0
+%define CONFIG_SELECT_FILTER 0
+%define CONFIG_SELECTIVECOLOR_FILTER 0
+%define CONFIG_SENDCMD_FILTER 0
+%define CONFIG_SEPARATEFIELDS_FILTER 0
+%define CONFIG_SETDAR_FILTER 0
+%define CONFIG_SETFIELD_FILTER 0
+%define CONFIG_SETPARAMS_FILTER 0
+%define CONFIG_SETPTS_FILTER 0
+%define CONFIG_SETRANGE_FILTER 0
+%define CONFIG_SETSAR_FILTER 0
+%define CONFIG_SETTB_FILTER 0
+%define CONFIG_SHARPNESS_VAAPI_FILTER 0
+%define CONFIG_SHOWINFO_FILTER 0
+%define CONFIG_SHOWPALETTE_FILTER 0
+%define CONFIG_SHUFFLEFRAMES_FILTER 0
+%define CONFIG_SHUFFLEPLANES_FILTER 0
+%define CONFIG_SIDEDATA_FILTER 0
+%define CONFIG_SIGNALSTATS_FILTER 0
+%define CONFIG_SIGNATURE_FILTER 0
+%define CONFIG_SMARTBLUR_FILTER 0
+%define CONFIG_SOBEL_FILTER 0
+%define CONFIG_SOBEL_OPENCL_FILTER 0
+%define CONFIG_SPLIT_FILTER 0
+%define CONFIG_SPP_FILTER 0
+%define CONFIG_SR_FILTER 0
+%define CONFIG_SSIM_FILTER 0
+%define CONFIG_STEREO3D_FILTER 0
+%define CONFIG_STREAMSELECT_FILTER 0
+%define CONFIG_SUBTITLES_FILTER 0
+%define CONFIG_SUPER2XSAI_FILTER 0
+%define CONFIG_SWAPRECT_FILTER 0
+%define CONFIG_SWAPUV_FILTER 0
+%define CONFIG_TBLEND_FILTER 0
+%define CONFIG_TELECINE_FILTER 0
+%define CONFIG_THISTOGRAM_FILTER 0
+%define CONFIG_THRESHOLD_FILTER 0
+%define CONFIG_THUMBNAIL_FILTER 0
+%define CONFIG_THUMBNAIL_CUDA_FILTER 0
+%define CONFIG_TILE_FILTER 0
+%define CONFIG_TINTERLACE_FILTER 0
+%define CONFIG_TLUT2_FILTER 0
+%define CONFIG_TMEDIAN_FILTER 0
+%define CONFIG_TMIX_FILTER 0
+%define CONFIG_TONEMAP_FILTER 0
+%define CONFIG_TONEMAP_OPENCL_FILTER 0
+%define CONFIG_TONEMAP_VAAPI_FILTER 0
+%define CONFIG_TPAD_FILTER 0
+%define CONFIG_TRANSPOSE_FILTER 0
+%define CONFIG_TRANSPOSE_NPP_FILTER 0
+%define CONFIG_TRANSPOSE_OPENCL_FILTER 0
+%define CONFIG_TRANSPOSE_VAAPI_FILTER 0
+%define CONFIG_TRIM_FILTER 0
+%define CONFIG_UNPREMULTIPLY_FILTER 0
+%define CONFIG_UNSHARP_FILTER 0
+%define CONFIG_UNSHARP_OPENCL_FILTER 0
+%define CONFIG_USPP_FILTER 0
+%define CONFIG_V360_FILTER 0
+%define CONFIG_VAGUEDENOISER_FILTER 0
+%define CONFIG_VECTORSCOPE_FILTER 0
+%define CONFIG_VFLIP_FILTER 0
+%define CONFIG_VFRDET_FILTER 0
+%define CONFIG_VIBRANCE_FILTER 0
+%define CONFIG_VIDSTABDETECT_FILTER 0
+%define CONFIG_VIDSTABTRANSFORM_FILTER 0
+%define CONFIG_VIGNETTE_FILTER 0
+%define CONFIG_VMAFMOTION_FILTER 0
+%define CONFIG_VPP_QSV_FILTER 0
+%define CONFIG_VSTACK_FILTER 0
+%define CONFIG_W3FDIF_FILTER 0
+%define CONFIG_WAVEFORM_FILTER 0
+%define CONFIG_WEAVE_FILTER 0
+%define CONFIG_XBR_FILTER 0
+%define CONFIG_XFADE_FILTER 0
+%define CONFIG_XFADE_OPENCL_FILTER 0
+%define CONFIG_XMEDIAN_FILTER 0
+%define CONFIG_XSTACK_FILTER 0
+%define CONFIG_YADIF_FILTER 0
+%define CONFIG_YADIF_CUDA_FILTER 0
+%define CONFIG_YAEPBLUR_FILTER 0
+%define CONFIG_ZMQ_FILTER 0
+%define CONFIG_ZOOMPAN_FILTER 0
+%define CONFIG_ZSCALE_FILTER 0
+%define CONFIG_ALLRGB_FILTER 0
+%define CONFIG_ALLYUV_FILTER 0
+%define CONFIG_CELLAUTO_FILTER 0
+%define CONFIG_COLOR_FILTER 0
+%define CONFIG_COREIMAGESRC_FILTER 0
+%define CONFIG_FREI0R_SRC_FILTER 0
+%define CONFIG_HALDCLUTSRC_FILTER 0
+%define CONFIG_LIFE_FILTER 0
+%define CONFIG_MANDELBROT_FILTER 0
+%define CONFIG_MPTESTSRC_FILTER 0
+%define CONFIG_NULLSRC_FILTER 0
+%define CONFIG_OPENCLSRC_FILTER 0
+%define CONFIG_PAL75BARS_FILTER 0
+%define CONFIG_PAL100BARS_FILTER 0
+%define CONFIG_RGBTESTSRC_FILTER 0
+%define CONFIG_SIERPINSKI_FILTER 0
+%define CONFIG_SMPTEBARS_FILTER 0
+%define CONFIG_SMPTEHDBARS_FILTER 0
+%define CONFIG_TESTSRC_FILTER 0
+%define CONFIG_TESTSRC2_FILTER 0
+%define CONFIG_YUVTESTSRC_FILTER 0
+%define CONFIG_NULLSINK_FILTER 0
+%define CONFIG_ABITSCOPE_FILTER 0
+%define CONFIG_ADRAWGRAPH_FILTER 0
+%define CONFIG_AGRAPHMONITOR_FILTER 0
+%define CONFIG_AHISTOGRAM_FILTER 0
+%define CONFIG_APHASEMETER_FILTER 0
+%define CONFIG_AVECTORSCOPE_FILTER 0
+%define CONFIG_CONCAT_FILTER 0
+%define CONFIG_SHOWCQT_FILTER 0
+%define CONFIG_SHOWFREQS_FILTER 0
+%define CONFIG_SHOWSPATIAL_FILTER 0
+%define CONFIG_SHOWSPECTRUM_FILTER 0
+%define CONFIG_SHOWSPECTRUMPIC_FILTER 0
+%define CONFIG_SHOWVOLUME_FILTER 0
+%define CONFIG_SHOWWAVES_FILTER 0
+%define CONFIG_SHOWWAVESPIC_FILTER 0
+%define CONFIG_SPECTRUMSYNTH_FILTER 0
+%define CONFIG_AMOVIE_FILTER 0
+%define CONFIG_MOVIE_FILTER 0
+%define CONFIG_AFIFO_FILTER 0
+%define CONFIG_FIFO_FILTER 0
+%define CONFIG_AA_DEMUXER 0
+%define CONFIG_AAC_DEMUXER 1
+%define CONFIG_AC3_DEMUXER 0
+%define CONFIG_ACM_DEMUXER 0
+%define CONFIG_ACT_DEMUXER 0
+%define CONFIG_ADF_DEMUXER 0
+%define CONFIG_ADP_DEMUXER 0
+%define CONFIG_ADS_DEMUXER 0
+%define CONFIG_ADX_DEMUXER 0
+%define CONFIG_AEA_DEMUXER 0
+%define CONFIG_AFC_DEMUXER 0
+%define CONFIG_AIFF_DEMUXER 0
+%define CONFIG_AIX_DEMUXER 0
+%define CONFIG_ALP_DEMUXER 0
+%define CONFIG_AMR_DEMUXER 1
+%define CONFIG_AMRNB_DEMUXER 0
+%define CONFIG_AMRWB_DEMUXER 0
+%define CONFIG_ANM_DEMUXER 0
+%define CONFIG_APC_DEMUXER 0
+%define CONFIG_APE_DEMUXER 0
+%define CONFIG_APM_DEMUXER 0
+%define CONFIG_APNG_DEMUXER 0
+%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
+%define CONFIG_AQTITLE_DEMUXER 0
+%define CONFIG_ARGO_ASF_DEMUXER 0
+%define CONFIG_ASF_DEMUXER 0
+%define CONFIG_ASF_O_DEMUXER 0
+%define CONFIG_ASS_DEMUXER 0
+%define CONFIG_AST_DEMUXER 0
+%define CONFIG_AU_DEMUXER 0
+%define CONFIG_AV1_DEMUXER 0
+%define CONFIG_AVI_DEMUXER 1
+%define CONFIG_AVISYNTH_DEMUXER 0
+%define CONFIG_AVR_DEMUXER 0
+%define CONFIG_AVS_DEMUXER 0
+%define CONFIG_AVS2_DEMUXER 0
+%define CONFIG_BETHSOFTVID_DEMUXER 0
+%define CONFIG_BFI_DEMUXER 0
+%define CONFIG_BINTEXT_DEMUXER 0
+%define CONFIG_BINK_DEMUXER 0
+%define CONFIG_BIT_DEMUXER 0
+%define CONFIG_BMV_DEMUXER 0
+%define CONFIG_BFSTM_DEMUXER 0
+%define CONFIG_BRSTM_DEMUXER 0
+%define CONFIG_BOA_DEMUXER 0
+%define CONFIG_C93_DEMUXER 0
+%define CONFIG_CAF_DEMUXER 0
+%define CONFIG_CAVSVIDEO_DEMUXER 0
+%define CONFIG_CDG_DEMUXER 0
+%define CONFIG_CDXL_DEMUXER 0
+%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
+%define CONFIG_CONCAT_DEMUXER 0
+%define CONFIG_DASH_DEMUXER 0
+%define CONFIG_DATA_DEMUXER 0
+%define CONFIG_DAUD_DEMUXER 0
+%define CONFIG_DCSTR_DEMUXER 0
+%define CONFIG_DERF_DEMUXER 0
+%define CONFIG_DFA_DEMUXER 0
+%define CONFIG_DHAV_DEMUXER 0
+%define CONFIG_DIRAC_DEMUXER 0
+%define CONFIG_DNXHD_DEMUXER 0
+%define CONFIG_DSF_DEMUXER 0
+%define CONFIG_DSICIN_DEMUXER 0
+%define CONFIG_DSS_DEMUXER 0
+%define CONFIG_DTS_DEMUXER 0
+%define CONFIG_DTSHD_DEMUXER 0
+%define CONFIG_DV_DEMUXER 0
+%define CONFIG_DVBSUB_DEMUXER 0
+%define CONFIG_DVBTXT_DEMUXER 0
+%define CONFIG_DXA_DEMUXER 0
+%define CONFIG_EA_DEMUXER 0
+%define CONFIG_EA_CDATA_DEMUXER 0
+%define CONFIG_EAC3_DEMUXER 0
+%define CONFIG_EPAF_DEMUXER 0
+%define CONFIG_FFMETADATA_DEMUXER 0
+%define CONFIG_FILMSTRIP_DEMUXER 0
+%define CONFIG_FITS_DEMUXER 0
+%define CONFIG_FLAC_DEMUXER 1
+%define CONFIG_FLIC_DEMUXER 0
+%define CONFIG_FLV_DEMUXER 0
+%define CONFIG_LIVE_FLV_DEMUXER 0
+%define CONFIG_FOURXM_DEMUXER 0
+%define CONFIG_FRM_DEMUXER 0
+%define CONFIG_FSB_DEMUXER 0
+%define CONFIG_FWSE_DEMUXER 0
+%define CONFIG_G722_DEMUXER 0
+%define CONFIG_G723_1_DEMUXER 0
+%define CONFIG_G726_DEMUXER 0
+%define CONFIG_G726LE_DEMUXER 0
+%define CONFIG_G729_DEMUXER 0
+%define CONFIG_GDV_DEMUXER 0
+%define CONFIG_GENH_DEMUXER 0
+%define CONFIG_GIF_DEMUXER 0
+%define CONFIG_GSM_DEMUXER 1
+%define CONFIG_GXF_DEMUXER 0
+%define CONFIG_H261_DEMUXER 0
+%define CONFIG_H263_DEMUXER 0
+%define CONFIG_H264_DEMUXER 0
+%define CONFIG_HCA_DEMUXER 0
+%define CONFIG_HCOM_DEMUXER 0
+%define CONFIG_HEVC_DEMUXER 0
+%define CONFIG_HLS_DEMUXER 0
+%define CONFIG_HNM_DEMUXER 0
+%define CONFIG_ICO_DEMUXER 0
+%define CONFIG_IDCIN_DEMUXER 0
+%define CONFIG_IDF_DEMUXER 0
+%define CONFIG_IFF_DEMUXER 0
+%define CONFIG_IFV_DEMUXER 0
+%define CONFIG_ILBC_DEMUXER 0
+%define CONFIG_IMAGE2_DEMUXER 0
+%define CONFIG_IMAGE2PIPE_DEMUXER 0
+%define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
+%define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
+%define CONFIG_INGENIENT_DEMUXER 0
+%define CONFIG_IPMOVIE_DEMUXER 0
+%define CONFIG_IRCAM_DEMUXER 0
+%define CONFIG_ISS_DEMUXER 0
+%define CONFIG_IV8_DEMUXER 0
+%define CONFIG_IVF_DEMUXER 0
+%define CONFIG_IVR_DEMUXER 0
+%define CONFIG_JACOSUB_DEMUXER 0
+%define CONFIG_JV_DEMUXER 0
+%define CONFIG_KUX_DEMUXER 0
+%define CONFIG_KVAG_DEMUXER 0
+%define CONFIG_LMLM4_DEMUXER 0
+%define CONFIG_LOAS_DEMUXER 0
+%define CONFIG_LRC_DEMUXER 0
+%define CONFIG_LVF_DEMUXER 0
+%define CONFIG_LXF_DEMUXER 0
+%define CONFIG_M4V_DEMUXER 0
+%define CONFIG_MATROSKA_DEMUXER 1
+%define CONFIG_MGSTS_DEMUXER 0
+%define CONFIG_MICRODVD_DEMUXER 0
+%define CONFIG_MJPEG_DEMUXER 0
+%define CONFIG_MJPEG_2000_DEMUXER 0
+%define CONFIG_MLP_DEMUXER 0
+%define CONFIG_MLV_DEMUXER 0
+%define CONFIG_MM_DEMUXER 0
+%define CONFIG_MMF_DEMUXER 0
+%define CONFIG_MOV_DEMUXER 1
+%define CONFIG_MP3_DEMUXER 1
+%define CONFIG_MPC_DEMUXER 0
+%define CONFIG_MPC8_DEMUXER 0
+%define CONFIG_MPEGPS_DEMUXER 0
+%define CONFIG_MPEGTS_DEMUXER 0
+%define CONFIG_MPEGTSRAW_DEMUXER 0
+%define CONFIG_MPEGVIDEO_DEMUXER 0
+%define CONFIG_MPJPEG_DEMUXER 0
+%define CONFIG_MPL2_DEMUXER 0
+%define CONFIG_MPSUB_DEMUXER 0
+%define CONFIG_MSF_DEMUXER 0
+%define CONFIG_MSNWC_TCP_DEMUXER 0
+%define CONFIG_MTAF_DEMUXER 0
+%define CONFIG_MTV_DEMUXER 0
+%define CONFIG_MUSX_DEMUXER 0
+%define CONFIG_MV_DEMUXER 0
+%define CONFIG_MVI_DEMUXER 0
+%define CONFIG_MXF_DEMUXER 0
+%define CONFIG_MXG_DEMUXER 0
+%define CONFIG_NC_DEMUXER 0
+%define CONFIG_NISTSPHERE_DEMUXER 0
+%define CONFIG_NSP_DEMUXER 0
+%define CONFIG_NSV_DEMUXER 0
+%define CONFIG_NUT_DEMUXER 0
+%define CONFIG_NUV_DEMUXER 0
+%define CONFIG_OGG_DEMUXER 1
+%define CONFIG_OMA_DEMUXER 0
+%define CONFIG_PAF_DEMUXER 0
+%define CONFIG_PCM_ALAW_DEMUXER 0
+%define CONFIG_PCM_MULAW_DEMUXER 0
+%define CONFIG_PCM_VIDC_DEMUXER 0
+%define CONFIG_PCM_F64BE_DEMUXER 0
+%define CONFIG_PCM_F64LE_DEMUXER 0
+%define CONFIG_PCM_F32BE_DEMUXER 0
+%define CONFIG_PCM_F32LE_DEMUXER 0
+%define CONFIG_PCM_S32BE_DEMUXER 0
+%define CONFIG_PCM_S32LE_DEMUXER 0
+%define CONFIG_PCM_S24BE_DEMUXER 0
+%define CONFIG_PCM_S24LE_DEMUXER 0
+%define CONFIG_PCM_S16BE_DEMUXER 0
+%define CONFIG_PCM_S16LE_DEMUXER 0
+%define CONFIG_PCM_S8_DEMUXER 0
+%define CONFIG_PCM_U32BE_DEMUXER 0
+%define CONFIG_PCM_U32LE_DEMUXER 0
+%define CONFIG_PCM_U24BE_DEMUXER 0
+%define CONFIG_PCM_U24LE_DEMUXER 0
+%define CONFIG_PCM_U16BE_DEMUXER 0
+%define CONFIG_PCM_U16LE_DEMUXER 0
+%define CONFIG_PCM_U8_DEMUXER 0
+%define CONFIG_PJS_DEMUXER 0
+%define CONFIG_PMP_DEMUXER 0
+%define CONFIG_PVA_DEMUXER 0
+%define CONFIG_PVF_DEMUXER 0
+%define CONFIG_QCP_DEMUXER 0
+%define CONFIG_R3D_DEMUXER 0
+%define CONFIG_RAWVIDEO_DEMUXER 0
+%define CONFIG_REALTEXT_DEMUXER 0
+%define CONFIG_REDSPARK_DEMUXER 0
+%define CONFIG_RL2_DEMUXER 0
+%define CONFIG_RM_DEMUXER 0
+%define CONFIG_ROQ_DEMUXER 0
+%define CONFIG_RPL_DEMUXER 0
+%define CONFIG_RSD_DEMUXER 0
+%define CONFIG_RSO_DEMUXER 0
+%define CONFIG_RTP_DEMUXER 0
+%define CONFIG_RTSP_DEMUXER 0
+%define CONFIG_S337M_DEMUXER 0
+%define CONFIG_SAMI_DEMUXER 0
+%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
+%define CONFIG_SBG_DEMUXER 0
+%define CONFIG_SCC_DEMUXER 0
+%define CONFIG_SDP_DEMUXER 0
+%define CONFIG_SDR2_DEMUXER 0
+%define CONFIG_SDS_DEMUXER 0
+%define CONFIG_SDX_DEMUXER 0
+%define CONFIG_SEGAFILM_DEMUXER 0
+%define CONFIG_SER_DEMUXER 0
+%define CONFIG_SHORTEN_DEMUXER 0
+%define CONFIG_SIFF_DEMUXER 0
+%define CONFIG_SLN_DEMUXER 0
+%define CONFIG_SMACKER_DEMUXER 0
+%define CONFIG_SMJPEG_DEMUXER 0
+%define CONFIG_SMUSH_DEMUXER 0
+%define CONFIG_SOL_DEMUXER 0
+%define CONFIG_SOX_DEMUXER 0
+%define CONFIG_SPDIF_DEMUXER 0
+%define CONFIG_SRT_DEMUXER 0
+%define CONFIG_STR_DEMUXER 0
+%define CONFIG_STL_DEMUXER 0
+%define CONFIG_SUBVIEWER1_DEMUXER 0
+%define CONFIG_SUBVIEWER_DEMUXER 0
+%define CONFIG_SUP_DEMUXER 0
+%define CONFIG_SVAG_DEMUXER 0
+%define CONFIG_SWF_DEMUXER 0
+%define CONFIG_TAK_DEMUXER 0
+%define CONFIG_TEDCAPTIONS_DEMUXER 0
+%define CONFIG_THP_DEMUXER 0
+%define CONFIG_THREEDOSTR_DEMUXER 0
+%define CONFIG_TIERTEXSEQ_DEMUXER 0
+%define CONFIG_TMV_DEMUXER 0
+%define CONFIG_TRUEHD_DEMUXER 0
+%define CONFIG_TTA_DEMUXER 0
+%define CONFIG_TXD_DEMUXER 0
+%define CONFIG_TTY_DEMUXER 0
+%define CONFIG_TY_DEMUXER 0
+%define CONFIG_V210_DEMUXER 0
+%define CONFIG_V210X_DEMUXER 0
+%define CONFIG_VAG_DEMUXER 0
+%define CONFIG_VC1_DEMUXER 0
+%define CONFIG_VC1T_DEMUXER 0
+%define CONFIG_VIVIDAS_DEMUXER 0
+%define CONFIG_VIVO_DEMUXER 0
+%define CONFIG_VMD_DEMUXER 0
+%define CONFIG_VOBSUB_DEMUXER 0
+%define CONFIG_VOC_DEMUXER 0
+%define CONFIG_VPK_DEMUXER 0
+%define CONFIG_VPLAYER_DEMUXER 0
+%define CONFIG_VQF_DEMUXER 0
+%define CONFIG_W64_DEMUXER 0
+%define CONFIG_WAV_DEMUXER 1
+%define CONFIG_WC3_DEMUXER 0
+%define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
+%define CONFIG_WEBVTT_DEMUXER 0
+%define CONFIG_WSAUD_DEMUXER 0
+%define CONFIG_WSD_DEMUXER 0
+%define CONFIG_WSVQA_DEMUXER 0
+%define CONFIG_WTV_DEMUXER 0
+%define CONFIG_WVE_DEMUXER 0
+%define CONFIG_WV_DEMUXER 0
+%define CONFIG_XA_DEMUXER 0
+%define CONFIG_XBIN_DEMUXER 0
+%define CONFIG_XMV_DEMUXER 0
+%define CONFIG_XVAG_DEMUXER 0
+%define CONFIG_XWMA_DEMUXER 0
+%define CONFIG_YOP_DEMUXER 0
+%define CONFIG_YUV4MPEGPIPE_DEMUXER 0
+%define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
+%define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
+%define CONFIG_LIBGME_DEMUXER 0
+%define CONFIG_LIBMODPLUG_DEMUXER 0
+%define CONFIG_LIBOPENMPT_DEMUXER 0
+%define CONFIG_VAPOURSYNTH_DEMUXER 0
+%define CONFIG_A64_MUXER 0
+%define CONFIG_AC3_MUXER 0
+%define CONFIG_ADTS_MUXER 0
+%define CONFIG_ADX_MUXER 0
+%define CONFIG_AIFF_MUXER 0
+%define CONFIG_AMR_MUXER 0
+%define CONFIG_APNG_MUXER 0
+%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
+%define CONFIG_ASF_MUXER 0
+%define CONFIG_ASS_MUXER 0
+%define CONFIG_AST_MUXER 0
+%define CONFIG_ASF_STREAM_MUXER 0
+%define CONFIG_AU_MUXER 0
+%define CONFIG_AVI_MUXER 0
+%define CONFIG_AVM2_MUXER 0
+%define CONFIG_AVS2_MUXER 0
+%define CONFIG_BIT_MUXER 0
+%define CONFIG_CAF_MUXER 0
+%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
+%define CONFIG_CRC_MUXER 0
+%define CONFIG_DASH_MUXER 0
+%define CONFIG_DATA_MUXER 0
+%define CONFIG_DAUD_MUXER 0
+%define CONFIG_DIRAC_MUXER 0
+%define CONFIG_DNXHD_MUXER 0
+%define CONFIG_DTS_MUXER 0
+%define CONFIG_DV_MUXER 0
+%define CONFIG_EAC3_MUXER 0
+%define CONFIG_F4V_MUXER 0
+%define CONFIG_FFMETADATA_MUXER 0
+%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
+%define CONFIG_FILMSTRIP_MUXER 0
+%define CONFIG_FITS_MUXER 0
+%define CONFIG_FLAC_MUXER 0
+%define CONFIG_FLV_MUXER 0
+%define CONFIG_FRAMECRC_MUXER 0
+%define CONFIG_FRAMEHASH_MUXER 0
+%define CONFIG_FRAMEMD5_MUXER 0
+%define CONFIG_G722_MUXER 0
+%define CONFIG_G723_1_MUXER 0
+%define CONFIG_G726_MUXER 0
+%define CONFIG_G726LE_MUXER 0
+%define CONFIG_GIF_MUXER 0
+%define CONFIG_GSM_MUXER 0
+%define CONFIG_GXF_MUXER 0
+%define CONFIG_H261_MUXER 0
+%define CONFIG_H263_MUXER 0
+%define CONFIG_H264_MUXER 0
+%define CONFIG_HASH_MUXER 0
+%define CONFIG_HDS_MUXER 0
+%define CONFIG_HEVC_MUXER 0
+%define CONFIG_HLS_MUXER 0
+%define CONFIG_ICO_MUXER 0
+%define CONFIG_ILBC_MUXER 0
+%define CONFIG_IMAGE2_MUXER 0
+%define CONFIG_IMAGE2PIPE_MUXER 0
+%define CONFIG_IPOD_MUXER 0
+%define CONFIG_IRCAM_MUXER 0
+%define CONFIG_ISMV_MUXER 0
+%define CONFIG_IVF_MUXER 0
+%define CONFIG_JACOSUB_MUXER 0
+%define CONFIG_LATM_MUXER 0
+%define CONFIG_LRC_MUXER 0
+%define CONFIG_M4V_MUXER 0
+%define CONFIG_MD5_MUXER 0
+%define CONFIG_MATROSKA_MUXER 0
+%define CONFIG_MATROSKA_AUDIO_MUXER 0
+%define CONFIG_MICRODVD_MUXER 0
+%define CONFIG_MJPEG_MUXER 0
+%define CONFIG_MLP_MUXER 0
+%define CONFIG_MMF_MUXER 0
+%define CONFIG_MOV_MUXER 0
+%define CONFIG_MP2_MUXER 0
+%define CONFIG_MP3_MUXER 0
+%define CONFIG_MP4_MUXER 0
+%define CONFIG_MPEG1SYSTEM_MUXER 0
+%define CONFIG_MPEG1VCD_MUXER 0
+%define CONFIG_MPEG1VIDEO_MUXER 0
+%define CONFIG_MPEG2DVD_MUXER 0
+%define CONFIG_MPEG2SVCD_MUXER 0
+%define CONFIG_MPEG2VIDEO_MUXER 0
+%define CONFIG_MPEG2VOB_MUXER 0
+%define CONFIG_MPEGTS_MUXER 0
+%define CONFIG_MPJPEG_MUXER 0
+%define CONFIG_MXF_MUXER 0
+%define CONFIG_MXF_D10_MUXER 0
+%define CONFIG_MXF_OPATOM_MUXER 0
+%define CONFIG_NULL_MUXER 0
+%define CONFIG_NUT_MUXER 0
+%define CONFIG_OGA_MUXER 0
+%define CONFIG_OGG_MUXER 0
+%define CONFIG_OGV_MUXER 0
+%define CONFIG_OMA_MUXER 0
+%define CONFIG_OPUS_MUXER 0
+%define CONFIG_PCM_ALAW_MUXER 0
+%define CONFIG_PCM_MULAW_MUXER 0
+%define CONFIG_PCM_VIDC_MUXER 0
+%define CONFIG_PCM_F64BE_MUXER 0
+%define CONFIG_PCM_F64LE_MUXER 0
+%define CONFIG_PCM_F32BE_MUXER 0
+%define CONFIG_PCM_F32LE_MUXER 0
+%define CONFIG_PCM_S32BE_MUXER 0
+%define CONFIG_PCM_S32LE_MUXER 0
+%define CONFIG_PCM_S24BE_MUXER 0
+%define CONFIG_PCM_S24LE_MUXER 0
+%define CONFIG_PCM_S16BE_MUXER 0
+%define CONFIG_PCM_S16LE_MUXER 0
+%define CONFIG_PCM_S8_MUXER 0
+%define CONFIG_PCM_U32BE_MUXER 0
+%define CONFIG_PCM_U32LE_MUXER 0
+%define CONFIG_PCM_U24BE_MUXER 0
+%define CONFIG_PCM_U24LE_MUXER 0
+%define CONFIG_PCM_U16BE_MUXER 0
+%define CONFIG_PCM_U16LE_MUXER 0
+%define CONFIG_PCM_U8_MUXER 0
+%define CONFIG_PSP_MUXER 0
+%define CONFIG_RAWVIDEO_MUXER 0
+%define CONFIG_RM_MUXER 0
+%define CONFIG_ROQ_MUXER 0
+%define CONFIG_RSO_MUXER 0
+%define CONFIG_RTP_MUXER 0
+%define CONFIG_RTP_MPEGTS_MUXER 0
+%define CONFIG_RTSP_MUXER 0
+%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
+%define CONFIG_SCC_MUXER 0
+%define CONFIG_SEGAFILM_MUXER 0
+%define CONFIG_SEGMENT_MUXER 0
+%define CONFIG_STREAM_SEGMENT_MUXER 0
+%define CONFIG_SINGLEJPEG_MUXER 0
+%define CONFIG_SMJPEG_MUXER 0
+%define CONFIG_SMOOTHSTREAMING_MUXER 0
+%define CONFIG_SOX_MUXER 0
+%define CONFIG_SPX_MUXER 0
+%define CONFIG_SPDIF_MUXER 0
+%define CONFIG_SRT_MUXER 0
+%define CONFIG_STREAMHASH_MUXER 0
+%define CONFIG_SUP_MUXER 0
+%define CONFIG_SWF_MUXER 0
+%define CONFIG_TEE_MUXER 0
+%define CONFIG_TG2_MUXER 0
+%define CONFIG_TGP_MUXER 0
+%define CONFIG_MKVTIMESTAMP_V2_MUXER 0
+%define CONFIG_TRUEHD_MUXER 0
+%define CONFIG_TTA_MUXER 0
+%define CONFIG_UNCODEDFRAMECRC_MUXER 0
+%define CONFIG_VC1_MUXER 0
+%define CONFIG_VC1T_MUXER 0
+%define CONFIG_VOC_MUXER 0
+%define CONFIG_W64_MUXER 0
+%define CONFIG_WAV_MUXER 0
+%define CONFIG_WEBM_MUXER 0
+%define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
+%define CONFIG_WEBM_CHUNK_MUXER 0
+%define CONFIG_WEBP_MUXER 0
+%define CONFIG_WEBVTT_MUXER 0
+%define CONFIG_WTV_MUXER 0
+%define CONFIG_WV_MUXER 0
+%define CONFIG_YUV4MPEGPIPE_MUXER 0
+%define CONFIG_CHROMAPRINT_MUXER 0
+%define CONFIG_ASYNC_PROTOCOL 0
+%define CONFIG_BLURAY_PROTOCOL 0
+%define CONFIG_CACHE_PROTOCOL 0
+%define CONFIG_CONCAT_PROTOCOL 0
+%define CONFIG_CRYPTO_PROTOCOL 0
+%define CONFIG_DATA_PROTOCOL 0
+%define CONFIG_FFRTMPCRYPT_PROTOCOL 0
+%define CONFIG_FFRTMPHTTP_PROTOCOL 0
+%define CONFIG_FILE_PROTOCOL 0
+%define CONFIG_FTP_PROTOCOL 0
+%define CONFIG_GOPHER_PROTOCOL 0
+%define CONFIG_HLS_PROTOCOL 0
+%define CONFIG_HTTP_PROTOCOL 0
+%define CONFIG_HTTPPROXY_PROTOCOL 0
+%define CONFIG_HTTPS_PROTOCOL 0
+%define CONFIG_ICECAST_PROTOCOL 0
+%define CONFIG_MMSH_PROTOCOL 0
+%define CONFIG_MMST_PROTOCOL 0
+%define CONFIG_MD5_PROTOCOL 0
+%define CONFIG_PIPE_PROTOCOL 0
+%define CONFIG_PROMPEG_PROTOCOL 0
+%define CONFIG_RTMP_PROTOCOL 0
+%define CONFIG_RTMPE_PROTOCOL 0
+%define CONFIG_RTMPS_PROTOCOL 0
+%define CONFIG_RTMPT_PROTOCOL 0
+%define CONFIG_RTMPTE_PROTOCOL 0
+%define CONFIG_RTMPTS_PROTOCOL 0
+%define CONFIG_RTP_PROTOCOL 0
+%define CONFIG_SCTP_PROTOCOL 0
+%define CONFIG_SRTP_PROTOCOL 0
+%define CONFIG_SUBFILE_PROTOCOL 0
+%define CONFIG_TEE_PROTOCOL 0
+%define CONFIG_TCP_PROTOCOL 0
+%define CONFIG_TLS_PROTOCOL 0
+%define CONFIG_UDP_PROTOCOL 0
+%define CONFIG_UDPLITE_PROTOCOL 0
+%define CONFIG_UNIX_PROTOCOL 0
+%define CONFIG_LIBAMQP_PROTOCOL 0
+%define CONFIG_LIBRTMP_PROTOCOL 0
+%define CONFIG_LIBRTMPE_PROTOCOL 0
+%define CONFIG_LIBRTMPS_PROTOCOL 0
+%define CONFIG_LIBRTMPT_PROTOCOL 0
+%define CONFIG_LIBRTMPTE_PROTOCOL 0
+%define CONFIG_LIBSRT_PROTOCOL 0
+%define CONFIG_LIBSSH_PROTOCOL 0
+%define CONFIG_LIBSMBCLIENT_PROTOCOL 0
+%define CONFIG_LIBZMQ_PROTOCOL 0
diff --git a/fuchsia/config/max/x64/config.h b/fuchsia/config/max/x64/config.h
new file mode 100644
index 0000000..8bb13d1
--- /dev/null
+++ b/fuchsia/config/max/x64/config.h
@@ -0,0 +1,2588 @@
+/* Automatically generated by configure - do not modify! */
+#ifndef FFMPEG_CONFIG_H
+#define FFMPEG_CONFIG_H
+#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/dalesat/fuchsia/third_party/opus/include --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-decoder=vp9 --enable-parser=vp9 --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,aac_latm,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,aac_latm,h264,mpegaudio' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-demuxer=gsm --enable-parser=gsm"
+#define FFMPEG_LICENSE "LGPL version 2.1 or later"
+#define CONFIG_THIS_YEAR 2020
+#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
+#define CC_IDENT "Fuchsia clang version 11.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project dd484baffdf4a92e564c38a17d35a742e633b0e0)"
+#define av_restrict restrict
+#define EXTERN_PREFIX ""
+#define EXTERN_ASM 
+#define BUILDSUF ""
+#define SLIBSUF ".so"
+#define HAVE_MMX2 HAVE_MMXEXT
+#define SWS_MAX_FILTER_SIZE 256
+#define ARCH_AARCH64 0
+#define ARCH_ALPHA 0
+#define ARCH_ARM 0
+#define ARCH_AVR32 0
+#define ARCH_AVR32_AP 0
+#define ARCH_AVR32_UC 0
+#define ARCH_BFIN 0
+#define ARCH_IA64 0
+#define ARCH_M68K 0
+#define ARCH_MIPS 0
+#define ARCH_MIPS64 0
+#define ARCH_PARISC 0
+#define ARCH_PPC 0
+#define ARCH_PPC64 0
+#define ARCH_S390 0
+#define ARCH_SH4 0
+#define ARCH_SPARC 0
+#define ARCH_SPARC64 0
+#define ARCH_TILEGX 0
+#define ARCH_TILEPRO 0
+#define ARCH_TOMI 0
+#define ARCH_X86 1
+#define ARCH_X86_32 0
+#define ARCH_X86_64 1
+#define HAVE_ARMV5TE 0
+#define HAVE_ARMV6 0
+#define HAVE_ARMV6T2 0
+#define HAVE_ARMV8 0
+#define HAVE_NEON 0
+#define HAVE_VFP 0
+#define HAVE_VFPV3 0
+#define HAVE_SETEND 0
+#define HAVE_ALTIVEC 0
+#define HAVE_DCBZL 0
+#define HAVE_LDBRX 0
+#define HAVE_POWER8 0
+#define HAVE_PPC4XX 0
+#define HAVE_VSX 0
+#define HAVE_AESNI 1
+#define HAVE_AMD3DNOW 1
+#define HAVE_AMD3DNOWEXT 1
+#define HAVE_AVX 1
+#define HAVE_AVX2 1
+#define HAVE_AVX512 1
+#define HAVE_FMA3 1
+#define HAVE_FMA4 1
+#define HAVE_MMX 1
+#define HAVE_MMXEXT 1
+#define HAVE_SSE 1
+#define HAVE_SSE2 1
+#define HAVE_SSE3 1
+#define HAVE_SSE4 1
+#define HAVE_SSE42 1
+#define HAVE_SSSE3 1
+#define HAVE_XOP 1
+#define HAVE_CPUNOP 1
+#define HAVE_I686 1
+#define HAVE_MIPSFPU 0
+#define HAVE_MIPS32R2 0
+#define HAVE_MIPS32R5 0
+#define HAVE_MIPS64R2 0
+#define HAVE_MIPS32R6 0
+#define HAVE_MIPS64R6 0
+#define HAVE_MIPSDSP 0
+#define HAVE_MIPSDSPR2 0
+#define HAVE_MSA 0
+#define HAVE_MSA2 0
+#define HAVE_LOONGSON2 0
+#define HAVE_LOONGSON3 0
+#define HAVE_MMI 0
+#define HAVE_ARMV5TE_EXTERNAL 0
+#define HAVE_ARMV6_EXTERNAL 0
+#define HAVE_ARMV6T2_EXTERNAL 0
+#define HAVE_ARMV8_EXTERNAL 0
+#define HAVE_NEON_EXTERNAL 0
+#define HAVE_VFP_EXTERNAL 0
+#define HAVE_VFPV3_EXTERNAL 0
+#define HAVE_SETEND_EXTERNAL 0
+#define HAVE_ALTIVEC_EXTERNAL 0
+#define HAVE_DCBZL_EXTERNAL 0
+#define HAVE_LDBRX_EXTERNAL 0
+#define HAVE_POWER8_EXTERNAL 0
+#define HAVE_PPC4XX_EXTERNAL 0
+#define HAVE_VSX_EXTERNAL 0
+#define HAVE_AESNI_EXTERNAL 1
+#define HAVE_AMD3DNOW_EXTERNAL 1
+#define HAVE_AMD3DNOWEXT_EXTERNAL 1
+#define HAVE_AVX_EXTERNAL 1
+#define HAVE_AVX2_EXTERNAL 1
+#define HAVE_AVX512_EXTERNAL 0
+#define HAVE_FMA3_EXTERNAL 1
+#define HAVE_FMA4_EXTERNAL 1
+#define HAVE_MMX_EXTERNAL 1
+#define HAVE_MMXEXT_EXTERNAL 1
+#define HAVE_SSE_EXTERNAL 1
+#define HAVE_SSE2_EXTERNAL 1
+#define HAVE_SSE3_EXTERNAL 1
+#define HAVE_SSE4_EXTERNAL 1
+#define HAVE_SSE42_EXTERNAL 1
+#define HAVE_SSSE3_EXTERNAL 1
+#define HAVE_XOP_EXTERNAL 1
+#define HAVE_CPUNOP_EXTERNAL 0
+#define HAVE_I686_EXTERNAL 0
+#define HAVE_MIPSFPU_EXTERNAL 0
+#define HAVE_MIPS32R2_EXTERNAL 0
+#define HAVE_MIPS32R5_EXTERNAL 0
+#define HAVE_MIPS64R2_EXTERNAL 0
+#define HAVE_MIPS32R6_EXTERNAL 0
+#define HAVE_MIPS64R6_EXTERNAL 0
+#define HAVE_MIPSDSP_EXTERNAL 0
+#define HAVE_MIPSDSPR2_EXTERNAL 0
+#define HAVE_MSA_EXTERNAL 0
+#define HAVE_MSA2_EXTERNAL 0
+#define HAVE_LOONGSON2_EXTERNAL 0
+#define HAVE_LOONGSON3_EXTERNAL 0
+#define HAVE_MMI_EXTERNAL 0
+#define HAVE_ARMV5TE_INLINE 0
+#define HAVE_ARMV6_INLINE 0
+#define HAVE_ARMV6T2_INLINE 0
+#define HAVE_ARMV8_INLINE 0
+#define HAVE_NEON_INLINE 0
+#define HAVE_VFP_INLINE 0
+#define HAVE_VFPV3_INLINE 0
+#define HAVE_SETEND_INLINE 0
+#define HAVE_ALTIVEC_INLINE 0
+#define HAVE_DCBZL_INLINE 0
+#define HAVE_LDBRX_INLINE 0
+#define HAVE_POWER8_INLINE 0
+#define HAVE_PPC4XX_INLINE 0
+#define HAVE_VSX_INLINE 0
+#define HAVE_AESNI_INLINE 1
+#define HAVE_AMD3DNOW_INLINE 1
+#define HAVE_AMD3DNOWEXT_INLINE 1
+#define HAVE_AVX_INLINE 1
+#define HAVE_AVX2_INLINE 1
+#define HAVE_AVX512_INLINE 1
+#define HAVE_FMA3_INLINE 1
+#define HAVE_FMA4_INLINE 1
+#define HAVE_MMX_INLINE 1
+#define HAVE_MMXEXT_INLINE 1
+#define HAVE_SSE_INLINE 1
+#define HAVE_SSE2_INLINE 1
+#define HAVE_SSE3_INLINE 1
+#define HAVE_SSE4_INLINE 1
+#define HAVE_SSE42_INLINE 1
+#define HAVE_SSSE3_INLINE 1
+#define HAVE_XOP_INLINE 1
+#define HAVE_CPUNOP_INLINE 0
+#define HAVE_I686_INLINE 0
+#define HAVE_MIPSFPU_INLINE 0
+#define HAVE_MIPS32R2_INLINE 0
+#define HAVE_MIPS32R5_INLINE 0
+#define HAVE_MIPS64R2_INLINE 0
+#define HAVE_MIPS32R6_INLINE 0
+#define HAVE_MIPS64R6_INLINE 0
+#define HAVE_MIPSDSP_INLINE 0
+#define HAVE_MIPSDSPR2_INLINE 0
+#define HAVE_MSA_INLINE 0
+#define HAVE_MSA2_INLINE 0
+#define HAVE_LOONGSON2_INLINE 0
+#define HAVE_LOONGSON3_INLINE 0
+#define HAVE_MMI_INLINE 0
+#define HAVE_ALIGNED_STACK 1
+#define HAVE_FAST_64BIT 1
+#define HAVE_FAST_CLZ 1
+#define HAVE_FAST_CMOV 1
+#define HAVE_LOCAL_ALIGNED 1
+#define HAVE_SIMD_ALIGN_16 1
+#define HAVE_SIMD_ALIGN_32 1
+#define HAVE_SIMD_ALIGN_64 1
+#define HAVE_ATOMIC_CAS_PTR 0
+#define HAVE_MACHINE_RW_BARRIER 0
+#define HAVE_MEMORYBARRIER 0
+#define HAVE_MM_EMPTY 1
+#define HAVE_RDTSC 0
+#define HAVE_SEM_TIMEDWAIT 1
+#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
+#define HAVE_CABS 0
+#define HAVE_CEXP 0
+#define HAVE_INLINE_ASM 1
+#define HAVE_SYMVER 0
+#define HAVE_X86ASM 1
+#define HAVE_BIGENDIAN 0
+#define HAVE_FAST_UNALIGNED 1
+#define HAVE_ARPA_INET_H 0
+#define HAVE_ASM_TYPES_H 1
+#define HAVE_CDIO_PARANOIA_H 0
+#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
+#define HAVE_CUDA_H 0
+#define HAVE_DISPATCH_DISPATCH_H 0
+#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
+#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
+#define HAVE_DEV_IC_BT8XX_H 0
+#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
+#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
+#define HAVE_DIRECT_H 0
+#define HAVE_DIRENT_H 1
+#define HAVE_DXGIDEBUG_H 0
+#define HAVE_DXVA_H 0
+#define HAVE_ES2_GL_H 0
+#define HAVE_GSM_H 0
+#define HAVE_IO_H 0
+#define HAVE_LINUX_PERF_EVENT_H 1
+#define HAVE_MACHINE_IOCTL_BT848_H 0
+#define HAVE_MACHINE_IOCTL_METEOR_H 0
+#define HAVE_MALLOC_H 1
+#define HAVE_OPENCV2_CORE_CORE_C_H 0
+#define HAVE_OPENGL_GL3_H 0
+#define HAVE_POLL_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_SOUNDCARD_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_UN_H 1
+#define HAVE_SYS_VIDEOIO_H 0
+#define HAVE_TERMIOS_H 1
+#define HAVE_UDPLITE_H 0
+#define HAVE_UNISTD_H 1
+#define HAVE_VALGRIND_VALGRIND_H 0
+#define HAVE_WINDOWS_H 0
+#define HAVE_WINSOCK2_H 0
+#define HAVE_INTRINSICS_NEON 0
+#define HAVE_ATANF 1
+#define HAVE_ATAN2F 1
+#define HAVE_CBRT 1
+#define HAVE_CBRTF 1
+#define HAVE_COPYSIGN 1
+#define HAVE_COSF 1
+#define HAVE_ERF 1
+#define HAVE_EXP2 1
+#define HAVE_EXP2F 1
+#define HAVE_EXPF 1
+#define HAVE_HYPOT 1
+#define HAVE_ISFINITE 1
+#define HAVE_ISINF 1
+#define HAVE_ISNAN 1
+#define HAVE_LDEXPF 1
+#define HAVE_LLRINT 1
+#define HAVE_LLRINTF 1
+#define HAVE_LOG2 1
+#define HAVE_LOG2F 1
+#define HAVE_LOG10F 1
+#define HAVE_LRINT 1
+#define HAVE_LRINTF 1
+#define HAVE_POWF 1
+#define HAVE_RINT 1
+#define HAVE_ROUND 1
+#define HAVE_ROUNDF 1
+#define HAVE_SINF 1
+#define HAVE_TRUNC 1
+#define HAVE_TRUNCF 1
+#define HAVE_DOS_PATHS 0
+#define HAVE_LIBC_MSVCRT 0
+#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
+#define HAVE_SECTION_DATA_REL_RO 1
+#define HAVE_THREADS 1
+#define HAVE_UWP 0
+#define HAVE_WINRT 0
+#define HAVE_ACCESS 1
+#define HAVE_ALIGNED_MALLOC 0
+#define HAVE_ARC4RANDOM 0
+#define HAVE_CLOCK_GETTIME 1
+#define HAVE_CLOSESOCKET 0
+#define HAVE_COMMANDLINETOARGVW 0
+#define HAVE_FCNTL 1
+#define HAVE_GETADDRINFO 0
+#define HAVE_GETHRTIME 0
+#define HAVE_GETOPT 1
+#define HAVE_GETMODULEHANDLE 0
+#define HAVE_GETPROCESSAFFINITYMASK 0
+#define HAVE_GETPROCESSMEMORYINFO 0
+#define HAVE_GETPROCESSTIMES 0
+#define HAVE_GETRUSAGE 1
+#define HAVE_GETSTDHANDLE 0
+#define HAVE_GETSYSTEMTIMEASFILETIME 0
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GLOB 1
+#define HAVE_GLXGETPROCADDRESS 0
+#define HAVE_GMTIME_R 1
+#define HAVE_INET_ATON 0
+#define HAVE_ISATTY 1
+#define HAVE_KBHIT 0
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LSTAT 1
+#define HAVE_LZO1X_999_COMPRESS 0
+#define HAVE_MACH_ABSOLUTE_TIME 0
+#define HAVE_MAPVIEWOFFILE 0
+#define HAVE_MEMALIGN 1
+#define HAVE_MKSTEMP 1
+#define HAVE_MMAP 1
+#define HAVE_MPROTECT 1
+#define HAVE_NANOSLEEP 1
+#define HAVE_PEEKNAMEDPIPE 0
+#define HAVE_POSIX_MEMALIGN 1
+#define HAVE_PTHREAD_CANCEL 1
+#define HAVE_SCHED_GETAFFINITY 1
+#define HAVE_SECITEMIMPORT 0
+#define HAVE_SETCONSOLETEXTATTRIBUTE 0
+#define HAVE_SETCONSOLECTRLHANDLER 0
+#define HAVE_SETDLLDIRECTORY 0
+#define HAVE_SETMODE 0
+#define HAVE_SETRLIMIT 1
+#define HAVE_SLEEP 0
+#define HAVE_STRERROR_R 1
+#define HAVE_SYSCONF 1
+#define HAVE_SYSCTL 0
+#define HAVE_USLEEP 1
+#define HAVE_UTGETOSTYPEFROMSTRING 0
+#define HAVE_VIRTUALALLOC 0
+#define HAVE_WGLGETPROCADDRESS 0
+#define HAVE_BCRYPT 0
+#define HAVE_VAAPI_DRM 0
+#define HAVE_VAAPI_X11 0
+#define HAVE_VDPAU_X11 0
+#define HAVE_PTHREADS 1
+#define HAVE_OS2THREADS 0
+#define HAVE_W32THREADS 0
+#define HAVE_AS_ARCH_DIRECTIVE 0
+#define HAVE_AS_DN_DIRECTIVE 0
+#define HAVE_AS_FPU_DIRECTIVE 0
+#define HAVE_AS_FUNC 0
+#define HAVE_AS_OBJECT_ARCH 0
+#define HAVE_ASM_MOD_Q 0
+#define HAVE_BLOCKS_EXTENSION 0
+#define HAVE_EBP_AVAILABLE 1
+#define HAVE_EBX_AVAILABLE 1
+#define HAVE_GNU_AS 0
+#define HAVE_GNU_WINDRES 0
+#define HAVE_IBM_ASM 0
+#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+#define HAVE_INLINE_ASM_LABELS 1
+#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+#define HAVE_PRAGMA_DEPRECATED 1
+#define HAVE_RSYNC_CONTIMEOUT 1
+#define HAVE_SYMVER_ASM_LABEL 1
+#define HAVE_SYMVER_GNU_ASM 1
+#define HAVE_VFP_ARGS 0
+#define HAVE_XFORM_ASM 0
+#define HAVE_XMM_CLOBBERS 1
+#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
+#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
+#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
+#define HAVE_SOCKLEN_T 0
+#define HAVE_STRUCT_ADDRINFO 0
+#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
+#define HAVE_STRUCT_IP_MREQ_SOURCE 0
+#define HAVE_STRUCT_IPV6_MREQ 0
+#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
+#define HAVE_STRUCT_POLLFD 0
+#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
+#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
+#define HAVE_STRUCT_SOCKADDR_IN6 0
+#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
+#define HAVE_STRUCT_SOCKADDR_STORAGE 0
+#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
+#define HAVE_MAKEINFO 0
+#define HAVE_MAKEINFO_HTML 0
+#define HAVE_OPENCL_D3D11 0
+#define HAVE_OPENCL_DRM_ARM 0
+#define HAVE_OPENCL_DRM_BEIGNET 0
+#define HAVE_OPENCL_DXVA2 0
+#define HAVE_OPENCL_VAAPI_BEIGNET 0
+#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
+#define HAVE_PERL 1
+#define HAVE_POD2MAN 1
+#define HAVE_TEXI2HTML 0
+#define CONFIG_DOC 0
+#define CONFIG_HTMLPAGES 0
+#define CONFIG_MANPAGES 0
+#define CONFIG_PODPAGES 0
+#define CONFIG_TXTPAGES 0
+#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
+#define CONFIG_AVIO_READING_EXAMPLE 1
+#define CONFIG_DECODE_AUDIO_EXAMPLE 1
+#define CONFIG_DECODE_VIDEO_EXAMPLE 1
+#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
+#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
+#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
+#define CONFIG_EXTRACT_MVS_EXAMPLE 1
+#define CONFIG_FILTER_AUDIO_EXAMPLE 0
+#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
+#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
+#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
+#define CONFIG_HW_DECODE_EXAMPLE 1
+#define CONFIG_METADATA_EXAMPLE 1
+#define CONFIG_MUXING_EXAMPLE 0
+#define CONFIG_QSVDEC_EXAMPLE 0
+#define CONFIG_REMUXING_EXAMPLE 1
+#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
+#define CONFIG_SCALING_VIDEO_EXAMPLE 0
+#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
+#define CONFIG_TRANSCODING_EXAMPLE 0
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
+#define CONFIG_AVISYNTH 0
+#define CONFIG_FREI0R 0
+#define CONFIG_LIBCDIO 0
+#define CONFIG_LIBDAVS2 0
+#define CONFIG_LIBRUBBERBAND 0
+#define CONFIG_LIBVIDSTAB 0
+#define CONFIG_LIBX264 0
+#define CONFIG_LIBX265 0
+#define CONFIG_LIBXAVS 0
+#define CONFIG_LIBXAVS2 0
+#define CONFIG_LIBXVID 0
+#define CONFIG_DECKLINK 0
+#define CONFIG_LIBFDK_AAC 0
+#define CONFIG_OPENSSL 0
+#define CONFIG_LIBTLS 0
+#define CONFIG_GMP 0
+#define CONFIG_LIBARIBB24 0
+#define CONFIG_LIBLENSFUN 0
+#define CONFIG_LIBOPENCORE_AMRNB 0
+#define CONFIG_LIBOPENCORE_AMRWB 0
+#define CONFIG_LIBVMAF 0
+#define CONFIG_LIBVO_AMRWBENC 0
+#define CONFIG_MBEDTLS 0
+#define CONFIG_RKMPP 0
+#define CONFIG_LIBSMBCLIENT 0
+#define CONFIG_CHROMAPRINT 0
+#define CONFIG_GCRYPT 0
+#define CONFIG_GNUTLS 0
+#define CONFIG_JNI 0
+#define CONFIG_LADSPA 0
+#define CONFIG_LIBAOM 0
+#define CONFIG_LIBASS 0
+#define CONFIG_LIBBLURAY 0
+#define CONFIG_LIBBS2B 0
+#define CONFIG_LIBCACA 0
+#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
+#define CONFIG_LIBDAV1D 0
+#define CONFIG_LIBDC1394 0
+#define CONFIG_LIBDRM 0
+#define CONFIG_LIBFLITE 0
+#define CONFIG_LIBFONTCONFIG 0
+#define CONFIG_LIBFREETYPE 0
+#define CONFIG_LIBFRIBIDI 0
+#define CONFIG_LIBGLSLANG 0
+#define CONFIG_LIBGME 0
+#define CONFIG_LIBGSM 0
+#define CONFIG_LIBIEC61883 0
+#define CONFIG_LIBILBC 0
+#define CONFIG_LIBJACK 0
+#define CONFIG_LIBKLVANC 0
+#define CONFIG_LIBKVAZAAR 0
+#define CONFIG_LIBMODPLUG 0
+#define CONFIG_LIBMP3LAME 0
+#define CONFIG_LIBMYSOFA 0
+#define CONFIG_LIBOPENCV 0
+#define CONFIG_LIBOPENH264 0
+#define CONFIG_LIBOPENJPEG 0
+#define CONFIG_LIBOPENMPT 0
+#define CONFIG_LIBOPUS 1
+#define CONFIG_LIBPULSE 0
+#define CONFIG_LIBRABBITMQ 0
+#define CONFIG_LIBRAV1E 0
+#define CONFIG_LIBRSVG 0
+#define CONFIG_LIBRTMP 0
+#define CONFIG_LIBSHINE 0
+#define CONFIG_LIBSMBCLIENT 0
+#define CONFIG_LIBSNAPPY 0
+#define CONFIG_LIBSOXR 0
+#define CONFIG_LIBSPEEX 0
+#define CONFIG_LIBSRT 0
+#define CONFIG_LIBSSH 0
+#define CONFIG_LIBTENSORFLOW 0
+#define CONFIG_LIBTESSERACT 0
+#define CONFIG_LIBTHEORA 0
+#define CONFIG_LIBTWOLAME 0
+#define CONFIG_LIBV4L2 0
+#define CONFIG_LIBVORBIS 0
+#define CONFIG_LIBVPX 0
+#define CONFIG_LIBWAVPACK 0
+#define CONFIG_LIBWEBP 0
+#define CONFIG_LIBXML2 0
+#define CONFIG_LIBZIMG 0
+#define CONFIG_LIBZMQ 0
+#define CONFIG_LIBZVBI 0
+#define CONFIG_LV2 0
+#define CONFIG_MEDIACODEC 0
+#define CONFIG_OPENAL 0
+#define CONFIG_OPENGL 0
+#define CONFIG_POCKETSPHINX 0
+#define CONFIG_VAPOURSYNTH 0
+#define CONFIG_ALSA 0
+#define CONFIG_APPKIT 0
+#define CONFIG_AVFOUNDATION 0
+#define CONFIG_BZLIB 0
+#define CONFIG_COREIMAGE 0
+#define CONFIG_ICONV 0
+#define CONFIG_LIBXCB 0
+#define CONFIG_LIBXCB_SHM 0
+#define CONFIG_LIBXCB_SHAPE 0
+#define CONFIG_LIBXCB_XFIXES 0
+#define CONFIG_LZMA 0
+#define CONFIG_SCHANNEL 0
+#define CONFIG_SDL2 0
+#define CONFIG_SECURETRANSPORT 0
+#define CONFIG_SNDIO 0
+#define CONFIG_XLIB 0
+#define CONFIG_ZLIB 0
+#define CONFIG_CUDA_NVCC 0
+#define CONFIG_CUDA_SDK 0
+#define CONFIG_LIBNPP 0
+#define CONFIG_LIBMFX 0
+#define CONFIG_MMAL 0
+#define CONFIG_OMX 0
+#define CONFIG_OPENCL 0
+#define CONFIG_VULKAN 0
+#define CONFIG_AMF 0
+#define CONFIG_AUDIOTOOLBOX 0
+#define CONFIG_CRYSTALHD 0
+#define CONFIG_CUDA 0
+#define CONFIG_CUDA_LLVM 0
+#define CONFIG_CUVID 0
+#define CONFIG_D3D11VA 0
+#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
+#define CONFIG_NVDEC 0
+#define CONFIG_NVENC 0
+#define CONFIG_VAAPI 0
+#define CONFIG_VDPAU 0
+#define CONFIG_VIDEOTOOLBOX 0
+#define CONFIG_V4L2_M2M 0
+#define CONFIG_XVMC 0
+#define CONFIG_FTRAPV 0
+#define CONFIG_GRAY 0
+#define CONFIG_HARDCODED_TABLES 0
+#define CONFIG_OMX_RPI 0
+#define CONFIG_RUNTIME_CPUDETECT 1
+#define CONFIG_SAFE_BITSTREAM_READER 1
+#define CONFIG_SHARED 0
+#define CONFIG_SMALL 0
+#define CONFIG_STATIC 1
+#define CONFIG_SWSCALE_ALPHA 1
+#define CONFIG_GPL 0
+#define CONFIG_NONFREE 0
+#define CONFIG_VERSION3 0
+#define CONFIG_AVDEVICE 0
+#define CONFIG_AVFILTER 0
+#define CONFIG_SWSCALE 0
+#define CONFIG_POSTPROC 0
+#define CONFIG_AVFORMAT 1
+#define CONFIG_AVCODEC 1
+#define CONFIG_SWRESAMPLE 0
+#define CONFIG_AVRESAMPLE 0
+#define CONFIG_AVUTIL 1
+#define CONFIG_FFPLAY 0
+#define CONFIG_FFPROBE 0
+#define CONFIG_FFMPEG 0
+#define CONFIG_DCT 1
+#define CONFIG_DWT 0
+#define CONFIG_ERROR_RESILIENCE 1
+#define CONFIG_FAAN 0
+#define CONFIG_FAST_UNALIGNED 1
+#define CONFIG_FFT 1
+#define CONFIG_LSP 1
+#define CONFIG_LZO 0
+#define CONFIG_MDCT 1
+#define CONFIG_PIXELUTILS 0
+#define CONFIG_NETWORK 0
+#define CONFIG_RDFT 1
+#define CONFIG_AUTODETECT 0
+#define CONFIG_FONTCONFIG 0
+#define CONFIG_LARGE_TESTS 1
+#define CONFIG_LINUX_PERF 0
+#define CONFIG_MEMORY_POISONING 0
+#define CONFIG_NEON_CLOBBER_TEST 0
+#define CONFIG_OSSFUZZ 0
+#define CONFIG_PIC 1
+#define CONFIG_THUMB 0
+#define CONFIG_VALGRIND_BACKTRACE 0
+#define CONFIG_XMM_CLOBBER_TEST 0
+#define CONFIG_BSFS 1
+#define CONFIG_DECODERS 1
+#define CONFIG_ENCODERS 0
+#define CONFIG_HWACCELS 0
+#define CONFIG_PARSERS 1
+#define CONFIG_INDEVS 0
+#define CONFIG_OUTDEVS 0
+#define CONFIG_FILTERS 0
+#define CONFIG_DEMUXERS 1
+#define CONFIG_MUXERS 0
+#define CONFIG_PROTOCOLS 0
+#define CONFIG_AANDCTTABLES 0
+#define CONFIG_AC3DSP 0
+#define CONFIG_ADTS_HEADER 1
+#define CONFIG_AUDIO_FRAME_QUEUE 1
+#define CONFIG_AUDIODSP 0
+#define CONFIG_BLOCKDSP 1
+#define CONFIG_BSWAPDSP 0
+#define CONFIG_CABAC 1
+#define CONFIG_CBS 0
+#define CONFIG_CBS_AV1 0
+#define CONFIG_CBS_H264 0
+#define CONFIG_CBS_H265 0
+#define CONFIG_CBS_JPEG 0
+#define CONFIG_CBS_MPEG2 0
+#define CONFIG_CBS_VP9 0
+#define CONFIG_DIRAC_PARSE 1
+#define CONFIG_DNN 0
+#define CONFIG_DVPROFILE 0
+#define CONFIG_EXIF 1
+#define CONFIG_FAANDCT 0
+#define CONFIG_FAANIDCT 0
+#define CONFIG_FDCTDSP 1
+#define CONFIG_FLACDSP 1
+#define CONFIG_FMTCONVERT 0
+#define CONFIG_FRAME_THREAD_ENCODER 0
+#define CONFIG_G722DSP 0
+#define CONFIG_GOLOMB 1
+#define CONFIG_GPLV3 0
+#define CONFIG_H263DSP 1
+#define CONFIG_H264CHROMA 1
+#define CONFIG_H264DSP 1
+#define CONFIG_H264PARSE 1
+#define CONFIG_H264PRED 1
+#define CONFIG_H264QPEL 1
+#define CONFIG_HEVCPARSE 0
+#define CONFIG_HPELDSP 1
+#define CONFIG_HUFFMAN 0
+#define CONFIG_HUFFYUVDSP 0
+#define CONFIG_HUFFYUVENCDSP 0
+#define CONFIG_IDCTDSP 1
+#define CONFIG_IIRFILTER 0
+#define CONFIG_MDCT15 1
+#define CONFIG_INTRAX8 0
+#define CONFIG_ISO_MEDIA 1
+#define CONFIG_IVIDSP 0
+#define CONFIG_JPEGTABLES 0
+#define CONFIG_LGPLV3 0
+#define CONFIG_LIBX262 0
+#define CONFIG_LLAUDDSP 0
+#define CONFIG_LLVIDDSP 0
+#define CONFIG_LLVIDENCDSP 0
+#define CONFIG_LPC 0
+#define CONFIG_LZF 0
+#define CONFIG_ME_CMP 1
+#define CONFIG_MPEG_ER 1
+#define CONFIG_MPEGAUDIO 1
+#define CONFIG_MPEGAUDIODSP 1
+#define CONFIG_MPEGAUDIOHEADER 1
+#define CONFIG_MPEGVIDEO 1
+#define CONFIG_MPEGVIDEOENC 0
+#define CONFIG_MSS34DSP 0
+#define CONFIG_PIXBLOCKDSP 1
+#define CONFIG_QPELDSP 1
+#define CONFIG_QSV 0
+#define CONFIG_QSVDEC 0
+#define CONFIG_QSVENC 0
+#define CONFIG_QSVVPP 0
+#define CONFIG_RANGECODER 0
+#define CONFIG_RIFFDEC 1
+#define CONFIG_RIFFENC 0
+#define CONFIG_RTPDEC 0
+#define CONFIG_RTPENC_CHAIN 0
+#define CONFIG_RV34DSP 0
+#define CONFIG_SCENE_SAD 0
+#define CONFIG_SINEWIN 1
+#define CONFIG_SNAPPY 0
+#define CONFIG_SRTP 0
+#define CONFIG_STARTCODE 1
+#define CONFIG_TEXTUREDSP 0
+#define CONFIG_TEXTUREDSPENC 0
+#define CONFIG_TPELDSP 0
+#define CONFIG_VAAPI_1 0
+#define CONFIG_VAAPI_ENCODE 0
+#define CONFIG_VC1DSP 0
+#define CONFIG_VIDEODSP 1
+#define CONFIG_VP3DSP 1
+#define CONFIG_VP56DSP 0
+#define CONFIG_VP8DSP 1
+#define CONFIG_WMA_FREQS 0
+#define CONFIG_WMV2DSP 0
+#define CONFIG_AAC_ADTSTOASC_BSF 0
+#define CONFIG_AV1_FRAME_MERGE_BSF 0
+#define CONFIG_AV1_FRAME_SPLIT_BSF 0
+#define CONFIG_AV1_METADATA_BSF 0
+#define CONFIG_CHOMP_BSF 0
+#define CONFIG_DUMP_EXTRADATA_BSF 0
+#define CONFIG_DCA_CORE_BSF 0
+#define CONFIG_EAC3_CORE_BSF 0
+#define CONFIG_EXTRACT_EXTRADATA_BSF 0
+#define CONFIG_FILTER_UNITS_BSF 0
+#define CONFIG_H264_METADATA_BSF 0
+#define CONFIG_H264_MP4TOANNEXB_BSF 0
+#define CONFIG_H264_REDUNDANT_PPS_BSF 0
+#define CONFIG_HAPQA_EXTRACT_BSF 0
+#define CONFIG_HEVC_METADATA_BSF 0
+#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
+#define CONFIG_IMX_DUMP_HEADER_BSF 0
+#define CONFIG_MJPEG2JPEG_BSF 0
+#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
+#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
+#define CONFIG_MPEG2_METADATA_BSF 0
+#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
+#define CONFIG_MOV2TEXTSUB_BSF 0
+#define CONFIG_NOISE_BSF 0
+#define CONFIG_NULL_BSF 1
+#define CONFIG_PRORES_METADATA_BSF 0
+#define CONFIG_REMOVE_EXTRADATA_BSF 0
+#define CONFIG_TEXT2MOVSUB_BSF 0
+#define CONFIG_TRACE_HEADERS_BSF 0
+#define CONFIG_TRUEHD_CORE_BSF 0
+#define CONFIG_VP9_METADATA_BSF 0
+#define CONFIG_VP9_RAW_REORDER_BSF 0
+#define CONFIG_VP9_SUPERFRAME_BSF 0
+#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
+#define CONFIG_AASC_DECODER 0
+#define CONFIG_AIC_DECODER 0
+#define CONFIG_ALIAS_PIX_DECODER 0
+#define CONFIG_AGM_DECODER 0
+#define CONFIG_AMV_DECODER 0
+#define CONFIG_ANM_DECODER 0
+#define CONFIG_ANSI_DECODER 0
+#define CONFIG_APNG_DECODER 0
+#define CONFIG_ARBC_DECODER 0
+#define CONFIG_ASV1_DECODER 0
+#define CONFIG_ASV2_DECODER 0
+#define CONFIG_AURA_DECODER 0
+#define CONFIG_AURA2_DECODER 0
+#define CONFIG_AVRP_DECODER 0
+#define CONFIG_AVRN_DECODER 0
+#define CONFIG_AVS_DECODER 0
+#define CONFIG_AVUI_DECODER 0
+#define CONFIG_AYUV_DECODER 0
+#define CONFIG_BETHSOFTVID_DECODER 0
+#define CONFIG_BFI_DECODER 0
+#define CONFIG_BINK_DECODER 0
+#define CONFIG_BITPACKED_DECODER 0
+#define CONFIG_BMP_DECODER 0
+#define CONFIG_BMV_VIDEO_DECODER 0
+#define CONFIG_BRENDER_PIX_DECODER 0
+#define CONFIG_C93_DECODER 0
+#define CONFIG_CAVS_DECODER 0
+#define CONFIG_CDGRAPHICS_DECODER 0
+#define CONFIG_CDTOONS_DECODER 0
+#define CONFIG_CDXL_DECODER 0
+#define CONFIG_CFHD_DECODER 0
+#define CONFIG_CINEPAK_DECODER 0
+#define CONFIG_CLEARVIDEO_DECODER 0
+#define CONFIG_CLJR_DECODER 0
+#define CONFIG_CLLC_DECODER 0
+#define CONFIG_COMFORTNOISE_DECODER 0
+#define CONFIG_CPIA_DECODER 0
+#define CONFIG_CSCD_DECODER 0
+#define CONFIG_CYUV_DECODER 0
+#define CONFIG_DDS_DECODER 0
+#define CONFIG_DFA_DECODER 0
+#define CONFIG_DIRAC_DECODER 0
+#define CONFIG_DNXHD_DECODER 0
+#define CONFIG_DPX_DECODER 0
+#define CONFIG_DSICINVIDEO_DECODER 0
+#define CONFIG_DVAUDIO_DECODER 0
+#define CONFIG_DVVIDEO_DECODER 0
+#define CONFIG_DXA_DECODER 0
+#define CONFIG_DXTORY_DECODER 0
+#define CONFIG_DXV_DECODER 0
+#define CONFIG_EACMV_DECODER 0
+#define CONFIG_EAMAD_DECODER 0
+#define CONFIG_EATGQ_DECODER 0
+#define CONFIG_EATGV_DECODER 0
+#define CONFIG_EATQI_DECODER 0
+#define CONFIG_EIGHTBPS_DECODER 0
+#define CONFIG_EIGHTSVX_EXP_DECODER 0
+#define CONFIG_EIGHTSVX_FIB_DECODER 0
+#define CONFIG_ESCAPE124_DECODER 0
+#define CONFIG_ESCAPE130_DECODER 0
+#define CONFIG_EXR_DECODER 0
+#define CONFIG_FFV1_DECODER 0
+#define CONFIG_FFVHUFF_DECODER 0
+#define CONFIG_FIC_DECODER 0
+#define CONFIG_FITS_DECODER 0
+#define CONFIG_FLASHSV_DECODER 0
+#define CONFIG_FLASHSV2_DECODER 0
+#define CONFIG_FLIC_DECODER 0
+#define CONFIG_FLV_DECODER 0
+#define CONFIG_FMVC_DECODER 0
+#define CONFIG_FOURXM_DECODER 0
+#define CONFIG_FRAPS_DECODER 0
+#define CONFIG_FRWU_DECODER 0
+#define CONFIG_G2M_DECODER 0
+#define CONFIG_GDV_DECODER 0
+#define CONFIG_GIF_DECODER 0
+#define CONFIG_H261_DECODER 0
+#define CONFIG_H263_DECODER 1
+#define CONFIG_H263I_DECODER 0
+#define CONFIG_H263P_DECODER 0
+#define CONFIG_H263_V4L2M2M_DECODER 0
+#define CONFIG_H264_DECODER 1
+#define CONFIG_H264_CRYSTALHD_DECODER 0
+#define CONFIG_H264_V4L2M2M_DECODER 0
+#define CONFIG_H264_MEDIACODEC_DECODER 0
+#define CONFIG_H264_MMAL_DECODER 0
+#define CONFIG_H264_QSV_DECODER 0
+#define CONFIG_H264_RKMPP_DECODER 0
+#define CONFIG_HAP_DECODER 0
+#define CONFIG_HEVC_DECODER 0
+#define CONFIG_HEVC_QSV_DECODER 0
+#define CONFIG_HEVC_RKMPP_DECODER 0
+#define CONFIG_HEVC_V4L2M2M_DECODER 0
+#define CONFIG_HNM4_VIDEO_DECODER 0
+#define CONFIG_HQ_HQA_DECODER 0
+#define CONFIG_HQX_DECODER 0
+#define CONFIG_HUFFYUV_DECODER 0
+#define CONFIG_HYMT_DECODER 0
+#define CONFIG_IDCIN_DECODER 0
+#define CONFIG_IFF_ILBM_DECODER 0
+#define CONFIG_IMM4_DECODER 0
+#define CONFIG_IMM5_DECODER 0
+#define CONFIG_INDEO2_DECODER 0
+#define CONFIG_INDEO3_DECODER 0
+#define CONFIG_INDEO4_DECODER 0
+#define CONFIG_INDEO5_DECODER 0
+#define CONFIG_INTERPLAY_VIDEO_DECODER 0
+#define CONFIG_JPEG2000_DECODER 0
+#define CONFIG_JPEGLS_DECODER 0
+#define CONFIG_JV_DECODER 0
+#define CONFIG_KGV1_DECODER 0
+#define CONFIG_KMVC_DECODER 0
+#define CONFIG_LAGARITH_DECODER 0
+#define CONFIG_LOCO_DECODER 0
+#define CONFIG_LSCR_DECODER 0
+#define CONFIG_M101_DECODER 0
+#define CONFIG_MAGICYUV_DECODER 0
+#define CONFIG_MDEC_DECODER 0
+#define CONFIG_MIMIC_DECODER 0
+#define CONFIG_MJPEG_DECODER 0
+#define CONFIG_MJPEGB_DECODER 0
+#define CONFIG_MMVIDEO_DECODER 0
+#define CONFIG_MOTIONPIXELS_DECODER 0
+#define CONFIG_MPEG1VIDEO_DECODER 0
+#define CONFIG_MPEG2VIDEO_DECODER 0
+#define CONFIG_MPEG4_DECODER 1
+#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
+#define CONFIG_MPEG4_V4L2M2M_DECODER 0
+#define CONFIG_MPEG4_MMAL_DECODER 0
+#define CONFIG_MPEGVIDEO_DECODER 0
+#define CONFIG_MPEG1_V4L2M2M_DECODER 0
+#define CONFIG_MPEG2_MMAL_DECODER 0
+#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
+#define CONFIG_MPEG2_V4L2M2M_DECODER 0
+#define CONFIG_MPEG2_QSV_DECODER 0
+#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
+#define CONFIG_MSA1_DECODER 0
+#define CONFIG_MSCC_DECODER 0
+#define CONFIG_MSMPEG4V1_DECODER 0
+#define CONFIG_MSMPEG4V2_DECODER 0
+#define CONFIG_MSMPEG4V3_DECODER 0
+#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
+#define CONFIG_MSRLE_DECODER 0
+#define CONFIG_MSS1_DECODER 0
+#define CONFIG_MSS2_DECODER 0
+#define CONFIG_MSVIDEO1_DECODER 0
+#define CONFIG_MSZH_DECODER 0
+#define CONFIG_MTS2_DECODER 0
+#define CONFIG_MV30_DECODER 0
+#define CONFIG_MVC1_DECODER 0
+#define CONFIG_MVC2_DECODER 0
+#define CONFIG_MVDV_DECODER 0
+#define CONFIG_MVHA_DECODER 0
+#define CONFIG_MWSC_DECODER 0
+#define CONFIG_MXPEG_DECODER 0
+#define CONFIG_NUV_DECODER 0
+#define CONFIG_PAF_VIDEO_DECODER 0
+#define CONFIG_PAM_DECODER 0
+#define CONFIG_PBM_DECODER 0
+#define CONFIG_PCX_DECODER 0
+#define CONFIG_PGM_DECODER 0
+#define CONFIG_PGMYUV_DECODER 0
+#define CONFIG_PICTOR_DECODER 0
+#define CONFIG_PIXLET_DECODER 0
+#define CONFIG_PNG_DECODER 0
+#define CONFIG_PPM_DECODER 0
+#define CONFIG_PRORES_DECODER 0
+#define CONFIG_PROSUMER_DECODER 0
+#define CONFIG_PSD_DECODER 0
+#define CONFIG_PTX_DECODER 0
+#define CONFIG_QDRAW_DECODER 0
+#define CONFIG_QPEG_DECODER 0
+#define CONFIG_QTRLE_DECODER 0
+#define CONFIG_R10K_DECODER 0
+#define CONFIG_R210_DECODER 0
+#define CONFIG_RASC_DECODER 0
+#define CONFIG_RAWVIDEO_DECODER 0
+#define CONFIG_RL2_DECODER 0
+#define CONFIG_ROQ_DECODER 0
+#define CONFIG_RPZA_DECODER 0
+#define CONFIG_RSCC_DECODER 0
+#define CONFIG_RV10_DECODER 0
+#define CONFIG_RV20_DECODER 0
+#define CONFIG_RV30_DECODER 0
+#define CONFIG_RV40_DECODER 0
+#define CONFIG_S302M_DECODER 0
+#define CONFIG_SANM_DECODER 0
+#define CONFIG_SCPR_DECODER 0
+#define CONFIG_SCREENPRESSO_DECODER 0
+#define CONFIG_SGI_DECODER 0
+#define CONFIG_SGIRLE_DECODER 0
+#define CONFIG_SHEERVIDEO_DECODER 0
+#define CONFIG_SMACKER_DECODER 0
+#define CONFIG_SMC_DECODER 0
+#define CONFIG_SMVJPEG_DECODER 0
+#define CONFIG_SNOW_DECODER 0
+#define CONFIG_SP5X_DECODER 0
+#define CONFIG_SPEEDHQ_DECODER 0
+#define CONFIG_SRGC_DECODER 0
+#define CONFIG_SUNRAST_DECODER 0
+#define CONFIG_SVQ1_DECODER 0
+#define CONFIG_SVQ3_DECODER 0
+#define CONFIG_TARGA_DECODER 0
+#define CONFIG_TARGA_Y216_DECODER 0
+#define CONFIG_TDSC_DECODER 0
+#define CONFIG_THEORA_DECODER 1
+#define CONFIG_THP_DECODER 0
+#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
+#define CONFIG_TIFF_DECODER 0
+#define CONFIG_TMV_DECODER 0
+#define CONFIG_TRUEMOTION1_DECODER 0
+#define CONFIG_TRUEMOTION2_DECODER 0
+#define CONFIG_TRUEMOTION2RT_DECODER 0
+#define CONFIG_TSCC_DECODER 0
+#define CONFIG_TSCC2_DECODER 0
+#define CONFIG_TXD_DECODER 0
+#define CONFIG_ULTI_DECODER 0
+#define CONFIG_UTVIDEO_DECODER 0
+#define CONFIG_V210_DECODER 0
+#define CONFIG_V210X_DECODER 0
+#define CONFIG_V308_DECODER 0
+#define CONFIG_V408_DECODER 0
+#define CONFIG_V410_DECODER 0
+#define CONFIG_VB_DECODER 0
+#define CONFIG_VBLE_DECODER 0
+#define CONFIG_VC1_DECODER 0
+#define CONFIG_VC1_CRYSTALHD_DECODER 0
+#define CONFIG_VC1IMAGE_DECODER 0
+#define CONFIG_VC1_MMAL_DECODER 0
+#define CONFIG_VC1_QSV_DECODER 0
+#define CONFIG_VC1_V4L2M2M_DECODER 0
+#define CONFIG_VCR1_DECODER 0
+#define CONFIG_VMDVIDEO_DECODER 0
+#define CONFIG_VMNC_DECODER 0
+#define CONFIG_VP3_DECODER 1
+#define CONFIG_VP4_DECODER 0
+#define CONFIG_VP5_DECODER 0
+#define CONFIG_VP6_DECODER 0
+#define CONFIG_VP6A_DECODER 0
+#define CONFIG_VP6F_DECODER 0
+#define CONFIG_VP7_DECODER 0
+#define CONFIG_VP8_DECODER 1
+#define CONFIG_VP8_RKMPP_DECODER 0
+#define CONFIG_VP8_V4L2M2M_DECODER 0
+#define CONFIG_VP9_DECODER 1
+#define CONFIG_VP9_RKMPP_DECODER 0
+#define CONFIG_VP9_V4L2M2M_DECODER 0
+#define CONFIG_VQA_DECODER 0
+#define CONFIG_WEBP_DECODER 0
+#define CONFIG_WCMV_DECODER 0
+#define CONFIG_WRAPPED_AVFRAME_DECODER 0
+#define CONFIG_WMV1_DECODER 0
+#define CONFIG_WMV2_DECODER 0
+#define CONFIG_WMV3_DECODER 0
+#define CONFIG_WMV3_CRYSTALHD_DECODER 0
+#define CONFIG_WMV3IMAGE_DECODER 0
+#define CONFIG_WNV1_DECODER 0
+#define CONFIG_XAN_WC3_DECODER 0
+#define CONFIG_XAN_WC4_DECODER 0
+#define CONFIG_XBM_DECODER 0
+#define CONFIG_XFACE_DECODER 0
+#define CONFIG_XL_DECODER 0
+#define CONFIG_XPM_DECODER 0
+#define CONFIG_XWD_DECODER 0
+#define CONFIG_Y41P_DECODER 0
+#define CONFIG_YLC_DECODER 0
+#define CONFIG_YOP_DECODER 0
+#define CONFIG_YUV4_DECODER 0
+#define CONFIG_ZERO12V_DECODER 0
+#define CONFIG_ZEROCODEC_DECODER 0
+#define CONFIG_ZLIB_DECODER 0
+#define CONFIG_ZMBV_DECODER 0
+#define CONFIG_AAC_DECODER 1
+#define CONFIG_AAC_FIXED_DECODER 0
+#define CONFIG_AAC_LATM_DECODER 1
+#define CONFIG_AC3_DECODER 0
+#define CONFIG_AC3_FIXED_DECODER 0
+#define CONFIG_ACELP_KELVIN_DECODER 0
+#define CONFIG_ALAC_DECODER 0
+#define CONFIG_ALS_DECODER 0
+#define CONFIG_AMRNB_DECODER 1
+#define CONFIG_AMRWB_DECODER 1
+#define CONFIG_APE_DECODER 0
+#define CONFIG_APTX_DECODER 1
+#define CONFIG_APTX_HD_DECODER 0
+#define CONFIG_ATRAC1_DECODER 0
+#define CONFIG_ATRAC3_DECODER 0
+#define CONFIG_ATRAC3AL_DECODER 0
+#define CONFIG_ATRAC3P_DECODER 0
+#define CONFIG_ATRAC3PAL_DECODER 0
+#define CONFIG_ATRAC9_DECODER 0
+#define CONFIG_BINKAUDIO_DCT_DECODER 0
+#define CONFIG_BINKAUDIO_RDFT_DECODER 0
+#define CONFIG_BMV_AUDIO_DECODER 0
+#define CONFIG_COOK_DECODER 0
+#define CONFIG_DCA_DECODER 0
+#define CONFIG_DOLBY_E_DECODER 0
+#define CONFIG_DSD_LSBF_DECODER 0
+#define CONFIG_DSD_MSBF_DECODER 0
+#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
+#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
+#define CONFIG_DSICINAUDIO_DECODER 0
+#define CONFIG_DSS_SP_DECODER 0
+#define CONFIG_DST_DECODER 0
+#define CONFIG_EAC3_DECODER 0
+#define CONFIG_EVRC_DECODER 0
+#define CONFIG_FFWAVESYNTH_DECODER 0
+#define CONFIG_FLAC_DECODER 1
+#define CONFIG_G723_1_DECODER 0
+#define CONFIG_G729_DECODER 0
+#define CONFIG_GSM_DECODER 0
+#define CONFIG_GSM_MS_DECODER 1
+#define CONFIG_HCA_DECODER 0
+#define CONFIG_HCOM_DECODER 0
+#define CONFIG_IAC_DECODER 0
+#define CONFIG_ILBC_DECODER 0
+#define CONFIG_IMC_DECODER 0
+#define CONFIG_INTERPLAY_ACM_DECODER 0
+#define CONFIG_MACE3_DECODER 0
+#define CONFIG_MACE6_DECODER 0
+#define CONFIG_METASOUND_DECODER 0
+#define CONFIG_MLP_DECODER 0
+#define CONFIG_MP1_DECODER 0
+#define CONFIG_MP1FLOAT_DECODER 0
+#define CONFIG_MP2_DECODER 0
+#define CONFIG_MP2FLOAT_DECODER 0
+#define CONFIG_MP3FLOAT_DECODER 0
+#define CONFIG_MP3_DECODER 1
+#define CONFIG_MP3ADUFLOAT_DECODER 0
+#define CONFIG_MP3ADU_DECODER 0
+#define CONFIG_MP3ON4FLOAT_DECODER 0
+#define CONFIG_MP3ON4_DECODER 0
+#define CONFIG_MPC7_DECODER 0
+#define CONFIG_MPC8_DECODER 0
+#define CONFIG_NELLYMOSER_DECODER 0
+#define CONFIG_ON2AVC_DECODER 0
+#define CONFIG_OPUS_DECODER 0
+#define CONFIG_PAF_AUDIO_DECODER 0
+#define CONFIG_QCELP_DECODER 0
+#define CONFIG_QDM2_DECODER 0
+#define CONFIG_QDMC_DECODER 0
+#define CONFIG_RA_144_DECODER 0
+#define CONFIG_RA_288_DECODER 0
+#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 1
+#define CONFIG_SHORTEN_DECODER 0
+#define CONFIG_SIPR_DECODER 0
+#define CONFIG_SIREN_DECODER 0
+#define CONFIG_SMACKAUD_DECODER 0
+#define CONFIG_SONIC_DECODER 0
+#define CONFIG_TAK_DECODER 0
+#define CONFIG_TRUEHD_DECODER 0
+#define CONFIG_TRUESPEECH_DECODER 0
+#define CONFIG_TTA_DECODER 0
+#define CONFIG_TWINVQ_DECODER 0
+#define CONFIG_VMDAUDIO_DECODER 0
+#define CONFIG_VORBIS_DECODER 1
+#define CONFIG_WAVPACK_DECODER 0
+#define CONFIG_WMALOSSLESS_DECODER 0
+#define CONFIG_WMAPRO_DECODER 0
+#define CONFIG_WMAV1_DECODER 0
+#define CONFIG_WMAV2_DECODER 0
+#define CONFIG_WMAVOICE_DECODER 0
+#define CONFIG_WS_SND1_DECODER 0
+#define CONFIG_XMA1_DECODER 0
+#define CONFIG_XMA2_DECODER 0
+#define CONFIG_PCM_ALAW_DECODER 1
+#define CONFIG_PCM_BLURAY_DECODER 0
+#define CONFIG_PCM_DVD_DECODER 0
+#define CONFIG_PCM_F16LE_DECODER 0
+#define CONFIG_PCM_F24LE_DECODER 0
+#define CONFIG_PCM_F32BE_DECODER 0
+#define CONFIG_PCM_F32LE_DECODER 1
+#define CONFIG_PCM_F64BE_DECODER 0
+#define CONFIG_PCM_F64LE_DECODER 0
+#define CONFIG_PCM_LXF_DECODER 0
+#define CONFIG_PCM_MULAW_DECODER 1
+#define CONFIG_PCM_S8_DECODER 0
+#define CONFIG_PCM_S8_PLANAR_DECODER 0
+#define CONFIG_PCM_S16BE_DECODER 1
+#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
+#define CONFIG_PCM_S16LE_DECODER 1
+#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S24BE_DECODER 1
+#define CONFIG_PCM_S24DAUD_DECODER 0
+#define CONFIG_PCM_S24LE_DECODER 1
+#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S32BE_DECODER 0
+#define CONFIG_PCM_S32LE_DECODER 1
+#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
+#define CONFIG_PCM_S64BE_DECODER 0
+#define CONFIG_PCM_S64LE_DECODER 0
+#define CONFIG_PCM_U8_DECODER 1
+#define CONFIG_PCM_U16BE_DECODER 0
+#define CONFIG_PCM_U16LE_DECODER 0
+#define CONFIG_PCM_U24BE_DECODER 0
+#define CONFIG_PCM_U24LE_DECODER 0
+#define CONFIG_PCM_U32BE_DECODER 0
+#define CONFIG_PCM_U32LE_DECODER 0
+#define CONFIG_PCM_VIDC_DECODER 0
+#define CONFIG_DERF_DPCM_DECODER 0
+#define CONFIG_GREMLIN_DPCM_DECODER 0
+#define CONFIG_INTERPLAY_DPCM_DECODER 0
+#define CONFIG_ROQ_DPCM_DECODER 0
+#define CONFIG_SDX2_DPCM_DECODER 0
+#define CONFIG_SOL_DPCM_DECODER 0
+#define CONFIG_XAN_DPCM_DECODER 0
+#define CONFIG_ADPCM_4XM_DECODER 0
+#define CONFIG_ADPCM_ADX_DECODER 0
+#define CONFIG_ADPCM_AFC_DECODER 0
+#define CONFIG_ADPCM_AGM_DECODER 0
+#define CONFIG_ADPCM_AICA_DECODER 0
+#define CONFIG_ADPCM_ARGO_DECODER 0
+#define CONFIG_ADPCM_CT_DECODER 0
+#define CONFIG_ADPCM_DTK_DECODER 0
+#define CONFIG_ADPCM_EA_DECODER 0
+#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
+#define CONFIG_ADPCM_EA_R1_DECODER 0
+#define CONFIG_ADPCM_EA_R2_DECODER 0
+#define CONFIG_ADPCM_EA_R3_DECODER 0
+#define CONFIG_ADPCM_EA_XAS_DECODER 0
+#define CONFIG_ADPCM_G722_DECODER 0
+#define CONFIG_ADPCM_G726_DECODER 0
+#define CONFIG_ADPCM_G726LE_DECODER 0
+#define CONFIG_ADPCM_IMA_AMV_DECODER 0
+#define CONFIG_ADPCM_IMA_ALP_DECODER 0
+#define CONFIG_ADPCM_IMA_APC_DECODER 0
+#define CONFIG_ADPCM_IMA_APM_DECODER 0
+#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
+#define CONFIG_ADPCM_IMA_DK3_DECODER 0
+#define CONFIG_ADPCM_IMA_DK4_DECODER 0
+#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
+#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
+#define CONFIG_ADPCM_IMA_ISS_DECODER 0
+#define CONFIG_ADPCM_IMA_MTF_DECODER 0
+#define CONFIG_ADPCM_IMA_OKI_DECODER 0
+#define CONFIG_ADPCM_IMA_QT_DECODER 0
+#define CONFIG_ADPCM_IMA_RAD_DECODER 0
+#define CONFIG_ADPCM_IMA_SSI_DECODER 0
+#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
+#define CONFIG_ADPCM_IMA_WAV_DECODER 0
+#define CONFIG_ADPCM_IMA_WS_DECODER 0
+#define CONFIG_ADPCM_MS_DECODER 0
+#define CONFIG_ADPCM_MTAF_DECODER 0
+#define CONFIG_ADPCM_PSX_DECODER 0
+#define CONFIG_ADPCM_SBPRO_2_DECODER 0
+#define CONFIG_ADPCM_SBPRO_3_DECODER 0
+#define CONFIG_ADPCM_SBPRO_4_DECODER 0
+#define CONFIG_ADPCM_SWF_DECODER 0
+#define CONFIG_ADPCM_THP_DECODER 0
+#define CONFIG_ADPCM_THP_LE_DECODER 0
+#define CONFIG_ADPCM_VIMA_DECODER 0
+#define CONFIG_ADPCM_XA_DECODER 0
+#define CONFIG_ADPCM_YAMAHA_DECODER 0
+#define CONFIG_ADPCM_ZORK_DECODER 0
+#define CONFIG_SSA_DECODER 0
+#define CONFIG_ASS_DECODER 0
+#define CONFIG_CCAPTION_DECODER 0
+#define CONFIG_DVBSUB_DECODER 0
+#define CONFIG_DVDSUB_DECODER 0
+#define CONFIG_JACOSUB_DECODER 0
+#define CONFIG_MICRODVD_DECODER 0
+#define CONFIG_MOVTEXT_DECODER 0
+#define CONFIG_MPL2_DECODER 0
+#define CONFIG_PGSSUB_DECODER 0
+#define CONFIG_PJS_DECODER 0
+#define CONFIG_REALTEXT_DECODER 0
+#define CONFIG_SAMI_DECODER 0
+#define CONFIG_SRT_DECODER 0
+#define CONFIG_STL_DECODER 0
+#define CONFIG_SUBRIP_DECODER 0
+#define CONFIG_SUBVIEWER_DECODER 0
+#define CONFIG_SUBVIEWER1_DECODER 0
+#define CONFIG_TEXT_DECODER 0
+#define CONFIG_VPLAYER_DECODER 0
+#define CONFIG_WEBVTT_DECODER 0
+#define CONFIG_XSUB_DECODER 0
+#define CONFIG_AAC_AT_DECODER 0
+#define CONFIG_AC3_AT_DECODER 0
+#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
+#define CONFIG_ALAC_AT_DECODER 0
+#define CONFIG_AMR_NB_AT_DECODER 0
+#define CONFIG_EAC3_AT_DECODER 0
+#define CONFIG_GSM_MS_AT_DECODER 0
+#define CONFIG_ILBC_AT_DECODER 0
+#define CONFIG_MP1_AT_DECODER 0
+#define CONFIG_MP2_AT_DECODER 0
+#define CONFIG_MP3_AT_DECODER 0
+#define CONFIG_PCM_ALAW_AT_DECODER 0
+#define CONFIG_PCM_MULAW_AT_DECODER 0
+#define CONFIG_QDMC_AT_DECODER 0
+#define CONFIG_QDM2_AT_DECODER 0
+#define CONFIG_LIBARIBB24_DECODER 0
+#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
+#define CONFIG_LIBDAV1D_DECODER 0
+#define CONFIG_LIBDAVS2_DECODER 0
+#define CONFIG_LIBFDK_AAC_DECODER 0
+#define CONFIG_LIBGSM_DECODER 0
+#define CONFIG_LIBGSM_MS_DECODER 0
+#define CONFIG_LIBILBC_DECODER 0
+#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
+#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
+#define CONFIG_LIBOPENJPEG_DECODER 0
+#define CONFIG_LIBOPUS_DECODER 1
+#define CONFIG_LIBRSVG_DECODER 0
+#define CONFIG_LIBSPEEX_DECODER 0
+#define CONFIG_LIBVORBIS_DECODER 0
+#define CONFIG_LIBVPX_VP8_DECODER 0
+#define CONFIG_LIBVPX_VP9_DECODER 0
+#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
+#define CONFIG_BINTEXT_DECODER 0
+#define CONFIG_XBIN_DECODER 0
+#define CONFIG_IDF_DECODER 0
+#define CONFIG_LIBAOM_AV1_DECODER 0
+#define CONFIG_LIBOPENH264_DECODER 0
+#define CONFIG_H264_CUVID_DECODER 0
+#define CONFIG_HEVC_CUVID_DECODER 0
+#define CONFIG_HEVC_MEDIACODEC_DECODER 0
+#define CONFIG_MJPEG_CUVID_DECODER 0
+#define CONFIG_MJPEG_QSV_DECODER 0
+#define CONFIG_MPEG1_CUVID_DECODER 0
+#define CONFIG_MPEG2_CUVID_DECODER 0
+#define CONFIG_MPEG4_CUVID_DECODER 0
+#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
+#define CONFIG_VC1_CUVID_DECODER 0
+#define CONFIG_VP8_CUVID_DECODER 0
+#define CONFIG_VP8_MEDIACODEC_DECODER 0
+#define CONFIG_VP8_QSV_DECODER 0
+#define CONFIG_VP9_CUVID_DECODER 0
+#define CONFIG_VP9_MEDIACODEC_DECODER 0
+#define CONFIG_VP9_QSV_DECODER 0
+#define CONFIG_A64MULTI_ENCODER 0
+#define CONFIG_A64MULTI5_ENCODER 0
+#define CONFIG_ALIAS_PIX_ENCODER 0
+#define CONFIG_AMV_ENCODER 0
+#define CONFIG_APNG_ENCODER 0
+#define CONFIG_ASV1_ENCODER 0
+#define CONFIG_ASV2_ENCODER 0
+#define CONFIG_AVRP_ENCODER 0
+#define CONFIG_AVUI_ENCODER 0
+#define CONFIG_AYUV_ENCODER 0
+#define CONFIG_BMP_ENCODER 0
+#define CONFIG_CINEPAK_ENCODER 0
+#define CONFIG_CLJR_ENCODER 0
+#define CONFIG_COMFORTNOISE_ENCODER 0
+#define CONFIG_DNXHD_ENCODER 0
+#define CONFIG_DPX_ENCODER 0
+#define CONFIG_DVVIDEO_ENCODER 0
+#define CONFIG_FFV1_ENCODER 0
+#define CONFIG_FFVHUFF_ENCODER 0
+#define CONFIG_FITS_ENCODER 0
+#define CONFIG_FLASHSV_ENCODER 0
+#define CONFIG_FLASHSV2_ENCODER 0
+#define CONFIG_FLV_ENCODER 0
+#define CONFIG_GIF_ENCODER 0
+#define CONFIG_H261_ENCODER 0
+#define CONFIG_H263_ENCODER 0
+#define CONFIG_H263P_ENCODER 0
+#define CONFIG_HAP_ENCODER 0
+#define CONFIG_HUFFYUV_ENCODER 0
+#define CONFIG_JPEG2000_ENCODER 0
+#define CONFIG_JPEGLS_ENCODER 0
+#define CONFIG_LJPEG_ENCODER 0
+#define CONFIG_MAGICYUV_ENCODER 0
+#define CONFIG_MJPEG_ENCODER 0
+#define CONFIG_MPEG1VIDEO_ENCODER 0
+#define CONFIG_MPEG2VIDEO_ENCODER 0
+#define CONFIG_MPEG4_ENCODER 0
+#define CONFIG_MSMPEG4V2_ENCODER 0
+#define CONFIG_MSMPEG4V3_ENCODER 0
+#define CONFIG_MSVIDEO1_ENCODER 0
+#define CONFIG_PAM_ENCODER 0
+#define CONFIG_PBM_ENCODER 0
+#define CONFIG_PCX_ENCODER 0
+#define CONFIG_PGM_ENCODER 0
+#define CONFIG_PGMYUV_ENCODER 0
+#define CONFIG_PNG_ENCODER 0
+#define CONFIG_PPM_ENCODER 0
+#define CONFIG_PRORES_ENCODER 0
+#define CONFIG_PRORES_AW_ENCODER 0
+#define CONFIG_PRORES_KS_ENCODER 0
+#define CONFIG_QTRLE_ENCODER 0
+#define CONFIG_R10K_ENCODER 0
+#define CONFIG_R210_ENCODER 0
+#define CONFIG_RAWVIDEO_ENCODER 0
+#define CONFIG_ROQ_ENCODER 0
+#define CONFIG_RV10_ENCODER 0
+#define CONFIG_RV20_ENCODER 0
+#define CONFIG_S302M_ENCODER 0
+#define CONFIG_SGI_ENCODER 0
+#define CONFIG_SNOW_ENCODER 0
+#define CONFIG_SUNRAST_ENCODER 0
+#define CONFIG_SVQ1_ENCODER 0
+#define CONFIG_TARGA_ENCODER 0
+#define CONFIG_TIFF_ENCODER 0
+#define CONFIG_UTVIDEO_ENCODER 0
+#define CONFIG_V210_ENCODER 0
+#define CONFIG_V308_ENCODER 0
+#define CONFIG_V408_ENCODER 0
+#define CONFIG_V410_ENCODER 0
+#define CONFIG_VC2_ENCODER 0
+#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
+#define CONFIG_WMV1_ENCODER 0
+#define CONFIG_WMV2_ENCODER 0
+#define CONFIG_XBM_ENCODER 0
+#define CONFIG_XFACE_ENCODER 0
+#define CONFIG_XWD_ENCODER 0
+#define CONFIG_Y41P_ENCODER 0
+#define CONFIG_YUV4_ENCODER 0
+#define CONFIG_ZLIB_ENCODER 0
+#define CONFIG_ZMBV_ENCODER 0
+#define CONFIG_AAC_ENCODER 0
+#define CONFIG_AC3_ENCODER 0
+#define CONFIG_AC3_FIXED_ENCODER 0
+#define CONFIG_ALAC_ENCODER 0
+#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
+#define CONFIG_DCA_ENCODER 0
+#define CONFIG_EAC3_ENCODER 0
+#define CONFIG_FLAC_ENCODER 0
+#define CONFIG_G723_1_ENCODER 0
+#define CONFIG_MLP_ENCODER 0
+#define CONFIG_MP2_ENCODER 0
+#define CONFIG_MP2FIXED_ENCODER 0
+#define CONFIG_NELLYMOSER_ENCODER 0
+#define CONFIG_OPUS_ENCODER 0
+#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
+#define CONFIG_SONIC_ENCODER 0
+#define CONFIG_SONIC_LS_ENCODER 0
+#define CONFIG_TRUEHD_ENCODER 0
+#define CONFIG_TTA_ENCODER 0
+#define CONFIG_VORBIS_ENCODER 0
+#define CONFIG_WAVPACK_ENCODER 0
+#define CONFIG_WMAV1_ENCODER 0
+#define CONFIG_WMAV2_ENCODER 0
+#define CONFIG_PCM_ALAW_ENCODER 0
+#define CONFIG_PCM_DVD_ENCODER 0
+#define CONFIG_PCM_F32BE_ENCODER 0
+#define CONFIG_PCM_F32LE_ENCODER 0
+#define CONFIG_PCM_F64BE_ENCODER 0
+#define CONFIG_PCM_F64LE_ENCODER 0
+#define CONFIG_PCM_MULAW_ENCODER 0
+#define CONFIG_PCM_S8_ENCODER 0
+#define CONFIG_PCM_S8_PLANAR_ENCODER 0
+#define CONFIG_PCM_S16BE_ENCODER 0
+#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S16LE_ENCODER 0
+#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S24BE_ENCODER 0
+#define CONFIG_PCM_S24DAUD_ENCODER 0
+#define CONFIG_PCM_S24LE_ENCODER 0
+#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S32BE_ENCODER 0
+#define CONFIG_PCM_S32LE_ENCODER 0
+#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
+#define CONFIG_PCM_S64BE_ENCODER 0
+#define CONFIG_PCM_S64LE_ENCODER 0
+#define CONFIG_PCM_U8_ENCODER 0
+#define CONFIG_PCM_U16BE_ENCODER 0
+#define CONFIG_PCM_U16LE_ENCODER 0
+#define CONFIG_PCM_U24BE_ENCODER 0
+#define CONFIG_PCM_U24LE_ENCODER 0
+#define CONFIG_PCM_U32BE_ENCODER 0
+#define CONFIG_PCM_U32LE_ENCODER 0
+#define CONFIG_PCM_VIDC_ENCODER 0
+#define CONFIG_ROQ_DPCM_ENCODER 0
+#define CONFIG_ADPCM_ADX_ENCODER 0
+#define CONFIG_ADPCM_G722_ENCODER 0
+#define CONFIG_ADPCM_G726_ENCODER 0
+#define CONFIG_ADPCM_G726LE_ENCODER 0
+#define CONFIG_ADPCM_IMA_QT_ENCODER 0
+#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
+#define CONFIG_ADPCM_MS_ENCODER 0
+#define CONFIG_ADPCM_SWF_ENCODER 0
+#define CONFIG_ADPCM_YAMAHA_ENCODER 0
+#define CONFIG_SSA_ENCODER 0
+#define CONFIG_ASS_ENCODER 0
+#define CONFIG_DVBSUB_ENCODER 0
+#define CONFIG_DVDSUB_ENCODER 0
+#define CONFIG_MOVTEXT_ENCODER 0
+#define CONFIG_SRT_ENCODER 0
+#define CONFIG_SUBRIP_ENCODER 0
+#define CONFIG_TEXT_ENCODER 0
+#define CONFIG_WEBVTT_ENCODER 0
+#define CONFIG_XSUB_ENCODER 0
+#define CONFIG_AAC_AT_ENCODER 0
+#define CONFIG_ALAC_AT_ENCODER 0
+#define CONFIG_ILBC_AT_ENCODER 0
+#define CONFIG_PCM_ALAW_AT_ENCODER 0
+#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBAOM_AV1_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
+#define CONFIG_LIBFDK_AAC_ENCODER 0
+#define CONFIG_LIBGSM_ENCODER 0
+#define CONFIG_LIBGSM_MS_ENCODER 0
+#define CONFIG_LIBILBC_ENCODER 0
+#define CONFIG_LIBMP3LAME_ENCODER 0
+#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
+#define CONFIG_LIBOPENJPEG_ENCODER 0
+#define CONFIG_LIBOPUS_ENCODER 0
+#define CONFIG_LIBRAV1E_ENCODER 0
+#define CONFIG_LIBSHINE_ENCODER 0
+#define CONFIG_LIBSPEEX_ENCODER 0
+#define CONFIG_LIBTHEORA_ENCODER 0
+#define CONFIG_LIBTWOLAME_ENCODER 0
+#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
+#define CONFIG_LIBVORBIS_ENCODER 0
+#define CONFIG_LIBVPX_VP8_ENCODER 0
+#define CONFIG_LIBVPX_VP9_ENCODER 0
+#define CONFIG_LIBWAVPACK_ENCODER 0
+#define CONFIG_LIBWEBP_ANIM_ENCODER 0
+#define CONFIG_LIBWEBP_ENCODER 0
+#define CONFIG_LIBX262_ENCODER 0
+#define CONFIG_LIBX264_ENCODER 0
+#define CONFIG_LIBX264RGB_ENCODER 0
+#define CONFIG_LIBX265_ENCODER 0
+#define CONFIG_LIBXAVS_ENCODER 0
+#define CONFIG_LIBXAVS2_ENCODER 0
+#define CONFIG_LIBXVID_ENCODER 0
+#define CONFIG_H263_V4L2M2M_ENCODER 0
+#define CONFIG_LIBOPENH264_ENCODER 0
+#define CONFIG_H264_AMF_ENCODER 0
+#define CONFIG_H264_NVENC_ENCODER 0
+#define CONFIG_H264_OMX_ENCODER 0
+#define CONFIG_H264_QSV_ENCODER 0
+#define CONFIG_H264_V4L2M2M_ENCODER 0
+#define CONFIG_H264_VAAPI_ENCODER 0
+#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
+#define CONFIG_NVENC_ENCODER 0
+#define CONFIG_NVENC_H264_ENCODER 0
+#define CONFIG_NVENC_HEVC_ENCODER 0
+#define CONFIG_HEVC_AMF_ENCODER 0
+#define CONFIG_HEVC_NVENC_ENCODER 0
+#define CONFIG_HEVC_QSV_ENCODER 0
+#define CONFIG_HEVC_V4L2M2M_ENCODER 0
+#define CONFIG_HEVC_VAAPI_ENCODER 0
+#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
+#define CONFIG_LIBKVAZAAR_ENCODER 0
+#define CONFIG_MJPEG_QSV_ENCODER 0
+#define CONFIG_MJPEG_VAAPI_ENCODER 0
+#define CONFIG_MPEG2_QSV_ENCODER 0
+#define CONFIG_MPEG2_VAAPI_ENCODER 0
+#define CONFIG_MPEG4_OMX_ENCODER 0
+#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
+#define CONFIG_VP8_V4L2M2M_ENCODER 0
+#define CONFIG_VP8_VAAPI_ENCODER 0
+#define CONFIG_VP9_VAAPI_ENCODER 0
+#define CONFIG_VP9_QSV_ENCODER 0
+#define CONFIG_H263_VAAPI_HWACCEL 0
+#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_H264_D3D11VA_HWACCEL 0
+#define CONFIG_H264_D3D11VA2_HWACCEL 0
+#define CONFIG_H264_DXVA2_HWACCEL 0
+#define CONFIG_H264_NVDEC_HWACCEL 0
+#define CONFIG_H264_VAAPI_HWACCEL 0
+#define CONFIG_H264_VDPAU_HWACCEL 0
+#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_HEVC_D3D11VA_HWACCEL 0
+#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
+#define CONFIG_HEVC_DXVA2_HWACCEL 0
+#define CONFIG_HEVC_NVDEC_HWACCEL 0
+#define CONFIG_HEVC_VAAPI_HWACCEL 0
+#define CONFIG_HEVC_VDPAU_HWACCEL 0
+#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
+#define CONFIG_MPEG1_NVDEC_HWACCEL 0
+#define CONFIG_MPEG1_VDPAU_HWACCEL 0
+#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MPEG1_XVMC_HWACCEL 0
+#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
+#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
+#define CONFIG_MPEG2_NVDEC_HWACCEL 0
+#define CONFIG_MPEG2_DXVA2_HWACCEL 0
+#define CONFIG_MPEG2_VAAPI_HWACCEL 0
+#define CONFIG_MPEG2_VDPAU_HWACCEL 0
+#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MPEG2_XVMC_HWACCEL 0
+#define CONFIG_MPEG4_NVDEC_HWACCEL 0
+#define CONFIG_MPEG4_VAAPI_HWACCEL 0
+#define CONFIG_MPEG4_VDPAU_HWACCEL 0
+#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_VC1_D3D11VA_HWACCEL 0
+#define CONFIG_VC1_D3D11VA2_HWACCEL 0
+#define CONFIG_VC1_DXVA2_HWACCEL 0
+#define CONFIG_VC1_NVDEC_HWACCEL 0
+#define CONFIG_VC1_VAAPI_HWACCEL 0
+#define CONFIG_VC1_VDPAU_HWACCEL 0
+#define CONFIG_VP8_NVDEC_HWACCEL 0
+#define CONFIG_VP8_VAAPI_HWACCEL 0
+#define CONFIG_VP9_D3D11VA_HWACCEL 0
+#define CONFIG_VP9_D3D11VA2_HWACCEL 0
+#define CONFIG_VP9_DXVA2_HWACCEL 0
+#define CONFIG_VP9_NVDEC_HWACCEL 0
+#define CONFIG_VP9_VAAPI_HWACCEL 0
+#define CONFIG_VP9_VDPAU_HWACCEL 0
+#define CONFIG_WMV3_D3D11VA_HWACCEL 0
+#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
+#define CONFIG_WMV3_DXVA2_HWACCEL 0
+#define CONFIG_WMV3_NVDEC_HWACCEL 0
+#define CONFIG_WMV3_VAAPI_HWACCEL 0
+#define CONFIG_WMV3_VDPAU_HWACCEL 0
+#define CONFIG_AAC_PARSER 1
+#define CONFIG_AAC_LATM_PARSER 1
+#define CONFIG_AC3_PARSER 0
+#define CONFIG_ADX_PARSER 0
+#define CONFIG_AV1_PARSER 0
+#define CONFIG_AVS2_PARSER 0
+#define CONFIG_BMP_PARSER 0
+#define CONFIG_CAVSVIDEO_PARSER 0
+#define CONFIG_COOK_PARSER 0
+#define CONFIG_DCA_PARSER 0
+#define CONFIG_DIRAC_PARSER 0
+#define CONFIG_DNXHD_PARSER 0
+#define CONFIG_DPX_PARSER 0
+#define CONFIG_DVAUDIO_PARSER 0
+#define CONFIG_DVBSUB_PARSER 0
+#define CONFIG_DVDSUB_PARSER 0
+#define CONFIG_DVD_NAV_PARSER 0
+#define CONFIG_FLAC_PARSER 1
+#define CONFIG_G723_1_PARSER 0
+#define CONFIG_G729_PARSER 0
+#define CONFIG_GIF_PARSER 0
+#define CONFIG_GSM_PARSER 1
+#define CONFIG_H261_PARSER 0
+#define CONFIG_H263_PARSER 1
+#define CONFIG_H264_PARSER 1
+#define CONFIG_HEVC_PARSER 0
+#define CONFIG_MJPEG_PARSER 0
+#define CONFIG_MLP_PARSER 0
+#define CONFIG_MPEG4VIDEO_PARSER 1
+#define CONFIG_MPEGAUDIO_PARSER 1
+#define CONFIG_MPEGVIDEO_PARSER 0
+#define CONFIG_OPUS_PARSER 1
+#define CONFIG_PNG_PARSER 0
+#define CONFIG_PNM_PARSER 0
+#define CONFIG_RV30_PARSER 0
+#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
+#define CONFIG_SIPR_PARSER 0
+#define CONFIG_TAK_PARSER 0
+#define CONFIG_VC1_PARSER 0
+#define CONFIG_VORBIS_PARSER 1
+#define CONFIG_VP3_PARSER 1
+#define CONFIG_VP8_PARSER 1
+#define CONFIG_VP9_PARSER 1
+#define CONFIG_WEBP_PARSER 0
+#define CONFIG_XMA_PARSER 0
+#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
+#define CONFIG_AVFOUNDATION_INDEV 0
+#define CONFIG_BKTR_INDEV 0
+#define CONFIG_DECKLINK_INDEV 0
+#define CONFIG_DSHOW_INDEV 0
+#define CONFIG_FBDEV_INDEV 0
+#define CONFIG_GDIGRAB_INDEV 0
+#define CONFIG_IEC61883_INDEV 0
+#define CONFIG_JACK_INDEV 0
+#define CONFIG_KMSGRAB_INDEV 0
+#define CONFIG_LAVFI_INDEV 0
+#define CONFIG_OPENAL_INDEV 0
+#define CONFIG_OSS_INDEV 0
+#define CONFIG_PULSE_INDEV 0
+#define CONFIG_SNDIO_INDEV 0
+#define CONFIG_V4L2_INDEV 0
+#define CONFIG_VFWCAP_INDEV 0
+#define CONFIG_XCBGRAB_INDEV 0
+#define CONFIG_LIBCDIO_INDEV 0
+#define CONFIG_LIBDC1394_INDEV 0
+#define CONFIG_ALSA_OUTDEV 0
+#define CONFIG_CACA_OUTDEV 0
+#define CONFIG_DECKLINK_OUTDEV 0
+#define CONFIG_FBDEV_OUTDEV 0
+#define CONFIG_OPENGL_OUTDEV 0
+#define CONFIG_OSS_OUTDEV 0
+#define CONFIG_PULSE_OUTDEV 0
+#define CONFIG_SDL2_OUTDEV 0
+#define CONFIG_SNDIO_OUTDEV 0
+#define CONFIG_V4L2_OUTDEV 0
+#define CONFIG_XV_OUTDEV 0
+#define CONFIG_ABENCH_FILTER 0
+#define CONFIG_ACOMPRESSOR_FILTER 0
+#define CONFIG_ACONTRAST_FILTER 0
+#define CONFIG_ACOPY_FILTER 0
+#define CONFIG_ACUE_FILTER 0
+#define CONFIG_ACROSSFADE_FILTER 0
+#define CONFIG_ACROSSOVER_FILTER 0
+#define CONFIG_ACRUSHER_FILTER 0
+#define CONFIG_ADECLICK_FILTER 0
+#define CONFIG_ADECLIP_FILTER 0
+#define CONFIG_ADELAY_FILTER 0
+#define CONFIG_ADERIVATIVE_FILTER 0
+#define CONFIG_AECHO_FILTER 0
+#define CONFIG_AEMPHASIS_FILTER 0
+#define CONFIG_AEVAL_FILTER 0
+#define CONFIG_AFADE_FILTER 0
+#define CONFIG_AFFTDN_FILTER 0
+#define CONFIG_AFFTFILT_FILTER 0
+#define CONFIG_AFIR_FILTER 0
+#define CONFIG_AFORMAT_FILTER 0
+#define CONFIG_AGATE_FILTER 0
+#define CONFIG_AIIR_FILTER 0
+#define CONFIG_AINTEGRAL_FILTER 0
+#define CONFIG_AINTERLEAVE_FILTER 0
+#define CONFIG_ALIMITER_FILTER 0
+#define CONFIG_ALLPASS_FILTER 0
+#define CONFIG_ALOOP_FILTER 0
+#define CONFIG_AMERGE_FILTER 0
+#define CONFIG_AMETADATA_FILTER 0
+#define CONFIG_AMIX_FILTER 0
+#define CONFIG_AMULTIPLY_FILTER 0
+#define CONFIG_ANEQUALIZER_FILTER 0
+#define CONFIG_ANLMDN_FILTER 0
+#define CONFIG_ANLMS_FILTER 0
+#define CONFIG_ANULL_FILTER 0
+#define CONFIG_APAD_FILTER 0
+#define CONFIG_APERMS_FILTER 0
+#define CONFIG_APHASER_FILTER 0
+#define CONFIG_APULSATOR_FILTER 0
+#define CONFIG_AREALTIME_FILTER 0
+#define CONFIG_ARESAMPLE_FILTER 0
+#define CONFIG_AREVERSE_FILTER 0
+#define CONFIG_ARNNDN_FILTER 0
+#define CONFIG_ASELECT_FILTER 0
+#define CONFIG_ASENDCMD_FILTER 0
+#define CONFIG_ASETNSAMPLES_FILTER 0
+#define CONFIG_ASETPTS_FILTER 0
+#define CONFIG_ASETRATE_FILTER 0
+#define CONFIG_ASETTB_FILTER 0
+#define CONFIG_ASHOWINFO_FILTER 0
+#define CONFIG_ASIDEDATA_FILTER 0
+#define CONFIG_ASOFTCLIP_FILTER 0
+#define CONFIG_ASPLIT_FILTER 0
+#define CONFIG_ASR_FILTER 0
+#define CONFIG_ASTATS_FILTER 0
+#define CONFIG_ASTREAMSELECT_FILTER 0
+#define CONFIG_ATEMPO_FILTER 0
+#define CONFIG_ATRIM_FILTER 0
+#define CONFIG_AXCORRELATE_FILTER 0
+#define CONFIG_AZMQ_FILTER 0
+#define CONFIG_BANDPASS_FILTER 0
+#define CONFIG_BANDREJECT_FILTER 0
+#define CONFIG_BASS_FILTER 0
+#define CONFIG_BIQUAD_FILTER 0
+#define CONFIG_BS2B_FILTER 0
+#define CONFIG_CHROMABER_VULKAN_FILTER 0
+#define CONFIG_CHANNELMAP_FILTER 0
+#define CONFIG_CHANNELSPLIT_FILTER 0
+#define CONFIG_CHORUS_FILTER 0
+#define CONFIG_COMPAND_FILTER 0
+#define CONFIG_COMPENSATIONDELAY_FILTER 0
+#define CONFIG_CROSSFEED_FILTER 0
+#define CONFIG_CRYSTALIZER_FILTER 0
+#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DEESSER_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
+#define CONFIG_DYNAUDNORM_FILTER 0
+#define CONFIG_EARWAX_FILTER 0
+#define CONFIG_EBUR128_FILTER 0
+#define CONFIG_EQUALIZER_FILTER 0
+#define CONFIG_EXTRASTEREO_FILTER 0
+#define CONFIG_FIREQUALIZER_FILTER 0
+#define CONFIG_FLANGER_FILTER 0
+#define CONFIG_HAAS_FILTER 0
+#define CONFIG_HDCD_FILTER 0
+#define CONFIG_HEADPHONE_FILTER 0
+#define CONFIG_HIGHPASS_FILTER 0
+#define CONFIG_HIGHSHELF_FILTER 0
+#define CONFIG_JOIN_FILTER 0
+#define CONFIG_LADSPA_FILTER 0
+#define CONFIG_LOUDNORM_FILTER 0
+#define CONFIG_LOWPASS_FILTER 0
+#define CONFIG_LOWSHELF_FILTER 0
+#define CONFIG_LV2_FILTER 0
+#define CONFIG_MCOMPAND_FILTER 0
+#define CONFIG_PAN_FILTER 0
+#define CONFIG_REPLAYGAIN_FILTER 0
+#define CONFIG_RESAMPLE_FILTER 0
+#define CONFIG_RUBBERBAND_FILTER 0
+#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
+#define CONFIG_SIDECHAINGATE_FILTER 0
+#define CONFIG_SILENCEDETECT_FILTER 0
+#define CONFIG_SILENCEREMOVE_FILTER 0
+#define CONFIG_SOFALIZER_FILTER 0
+#define CONFIG_STEREOTOOLS_FILTER 0
+#define CONFIG_STEREOWIDEN_FILTER 0
+#define CONFIG_SUPEREQUALIZER_FILTER 0
+#define CONFIG_SURROUND_FILTER 0
+#define CONFIG_TREBLE_FILTER 0
+#define CONFIG_TREMOLO_FILTER 0
+#define CONFIG_VIBRATO_FILTER 0
+#define CONFIG_VOLUME_FILTER 0
+#define CONFIG_VOLUMEDETECT_FILTER 0
+#define CONFIG_AEVALSRC_FILTER 0
+#define CONFIG_AFIRSRC_FILTER 0
+#define CONFIG_ANOISESRC_FILTER 0
+#define CONFIG_ANULLSRC_FILTER 0
+#define CONFIG_FLITE_FILTER 0
+#define CONFIG_HILBERT_FILTER 0
+#define CONFIG_SINC_FILTER 0
+#define CONFIG_SINE_FILTER 0
+#define CONFIG_ANULLSINK_FILTER 0
+#define CONFIG_ADDROI_FILTER 0
+#define CONFIG_ALPHAEXTRACT_FILTER 0
+#define CONFIG_ALPHAMERGE_FILTER 0
+#define CONFIG_AMPLIFY_FILTER 0
+#define CONFIG_ASS_FILTER 0
+#define CONFIG_ATADENOISE_FILTER 0
+#define CONFIG_AVGBLUR_FILTER 0
+#define CONFIG_AVGBLUR_OPENCL_FILTER 0
+#define CONFIG_AVGBLUR_VULKAN_FILTER 0
+#define CONFIG_BBOX_FILTER 0
+#define CONFIG_BENCH_FILTER 0
+#define CONFIG_BILATERAL_FILTER 0
+#define CONFIG_BITPLANENOISE_FILTER 0
+#define CONFIG_BLACKDETECT_FILTER 0
+#define CONFIG_BLACKFRAME_FILTER 0
+#define CONFIG_BLEND_FILTER 0
+#define CONFIG_BM3D_FILTER 0
+#define CONFIG_BOXBLUR_FILTER 0
+#define CONFIG_BOXBLUR_OPENCL_FILTER 0
+#define CONFIG_BWDIF_FILTER 0
+#define CONFIG_CAS_FILTER 0
+#define CONFIG_CHROMAHOLD_FILTER 0
+#define CONFIG_CHROMAKEY_FILTER 0
+#define CONFIG_CHROMASHIFT_FILTER 0
+#define CONFIG_CIESCOPE_FILTER 0
+#define CONFIG_CODECVIEW_FILTER 0
+#define CONFIG_COLORBALANCE_FILTER 0
+#define CONFIG_COLORCHANNELMIXER_FILTER 0
+#define CONFIG_COLORKEY_FILTER 0
+#define CONFIG_COLORKEY_OPENCL_FILTER 0
+#define CONFIG_COLORHOLD_FILTER 0
+#define CONFIG_COLORLEVELS_FILTER 0
+#define CONFIG_COLORMATRIX_FILTER 0
+#define CONFIG_COLORSPACE_FILTER 0
+#define CONFIG_CONVOLUTION_FILTER 0
+#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
+#define CONFIG_CONVOLVE_FILTER 0
+#define CONFIG_COPY_FILTER 0
+#define CONFIG_COREIMAGE_FILTER 0
+#define CONFIG_COVER_RECT_FILTER 0
+#define CONFIG_CROP_FILTER 0
+#define CONFIG_CROPDETECT_FILTER 0
+#define CONFIG_CUE_FILTER 0
+#define CONFIG_CURVES_FILTER 0
+#define CONFIG_DATASCOPE_FILTER 0
+#define CONFIG_DCTDNOIZ_FILTER 0
+#define CONFIG_DEBAND_FILTER 0
+#define CONFIG_DEBLOCK_FILTER 0
+#define CONFIG_DECIMATE_FILTER 0
+#define CONFIG_DECONVOLVE_FILTER 0
+#define CONFIG_DEDOT_FILTER 0
+#define CONFIG_DEFLATE_FILTER 0
+#define CONFIG_DEFLICKER_FILTER 0
+#define CONFIG_DEINTERLACE_QSV_FILTER 0
+#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
+#define CONFIG_DEJUDDER_FILTER 0
+#define CONFIG_DELOGO_FILTER 0
+#define CONFIG_DENOISE_VAAPI_FILTER 0
+#define CONFIG_DERAIN_FILTER 0
+#define CONFIG_DESHAKE_FILTER 0
+#define CONFIG_DESHAKE_OPENCL_FILTER 0
+#define CONFIG_DESPILL_FILTER 0
+#define CONFIG_DETELECINE_FILTER 0
+#define CONFIG_DILATION_FILTER 0
+#define CONFIG_DILATION_OPENCL_FILTER 0
+#define CONFIG_DISPLACE_FILTER 0
+#define CONFIG_DNN_PROCESSING_FILTER 0
+#define CONFIG_DOUBLEWEAVE_FILTER 0
+#define CONFIG_DRAWBOX_FILTER 0
+#define CONFIG_DRAWGRAPH_FILTER 0
+#define CONFIG_DRAWGRID_FILTER 0
+#define CONFIG_DRAWTEXT_FILTER 0
+#define CONFIG_EDGEDETECT_FILTER 0
+#define CONFIG_ELBG_FILTER 0
+#define CONFIG_ENTROPY_FILTER 0
+#define CONFIG_EQ_FILTER 0
+#define CONFIG_EROSION_FILTER 0
+#define CONFIG_EROSION_OPENCL_FILTER 0
+#define CONFIG_EXTRACTPLANES_FILTER 0
+#define CONFIG_FADE_FILTER 0
+#define CONFIG_FFTDNOIZ_FILTER 0
+#define CONFIG_FFTFILT_FILTER 0
+#define CONFIG_FIELD_FILTER 0
+#define CONFIG_FIELDHINT_FILTER 0
+#define CONFIG_FIELDMATCH_FILTER 0
+#define CONFIG_FIELDORDER_FILTER 0
+#define CONFIG_FILLBORDERS_FILTER 0
+#define CONFIG_FIND_RECT_FILTER 0
+#define CONFIG_FLOODFILL_FILTER 0
+#define CONFIG_FORMAT_FILTER 0
+#define CONFIG_FPS_FILTER 0
+#define CONFIG_FRAMEPACK_FILTER 0
+#define CONFIG_FRAMERATE_FILTER 0
+#define CONFIG_FRAMESTEP_FILTER 0
+#define CONFIG_FREEZEDETECT_FILTER 0
+#define CONFIG_FREEZEFRAMES_FILTER 0
+#define CONFIG_FREI0R_FILTER 0
+#define CONFIG_FSPP_FILTER 0
+#define CONFIG_GBLUR_FILTER 0
+#define CONFIG_GEQ_FILTER 0
+#define CONFIG_GRADFUN_FILTER 0
+#define CONFIG_GRAPHMONITOR_FILTER 0
+#define CONFIG_GREYEDGE_FILTER 0
+#define CONFIG_HALDCLUT_FILTER 0
+#define CONFIG_HFLIP_FILTER 0
+#define CONFIG_HISTEQ_FILTER 0
+#define CONFIG_HISTOGRAM_FILTER 0
+#define CONFIG_HQDN3D_FILTER 0
+#define CONFIG_HQX_FILTER 0
+#define CONFIG_HSTACK_FILTER 0
+#define CONFIG_HUE_FILTER 0
+#define CONFIG_HWDOWNLOAD_FILTER 0
+#define CONFIG_HWMAP_FILTER 0
+#define CONFIG_HWUPLOAD_FILTER 0
+#define CONFIG_HWUPLOAD_CUDA_FILTER 0
+#define CONFIG_HYSTERESIS_FILTER 0
+#define CONFIG_IDET_FILTER 0
+#define CONFIG_IL_FILTER 0
+#define CONFIG_INFLATE_FILTER 0
+#define CONFIG_INTERLACE_FILTER 0
+#define CONFIG_INTERLEAVE_FILTER 0
+#define CONFIG_KERNDEINT_FILTER 0
+#define CONFIG_LAGFUN_FILTER 0
+#define CONFIG_LENSCORRECTION_FILTER 0
+#define CONFIG_LENSFUN_FILTER 0
+#define CONFIG_LIBVMAF_FILTER 0
+#define CONFIG_LIMITER_FILTER 0
+#define CONFIG_LOOP_FILTER 0
+#define CONFIG_LUMAKEY_FILTER 0
+#define CONFIG_LUT_FILTER 0
+#define CONFIG_LUT1D_FILTER 0
+#define CONFIG_LUT2_FILTER 0
+#define CONFIG_LUT3D_FILTER 0
+#define CONFIG_LUTRGB_FILTER 0
+#define CONFIG_LUTYUV_FILTER 0
+#define CONFIG_MASKEDCLAMP_FILTER 0
+#define CONFIG_MASKEDMAX_FILTER 0
+#define CONFIG_MASKEDMERGE_FILTER 0
+#define CONFIG_MASKEDMIN_FILTER 0
+#define CONFIG_MASKEDTHRESHOLD_FILTER 0
+#define CONFIG_MASKFUN_FILTER 0
+#define CONFIG_MCDEINT_FILTER 0
+#define CONFIG_MEDIAN_FILTER 0
+#define CONFIG_MERGEPLANES_FILTER 0
+#define CONFIG_MESTIMATE_FILTER 0
+#define CONFIG_METADATA_FILTER 0
+#define CONFIG_MIDEQUALIZER_FILTER 0
+#define CONFIG_MINTERPOLATE_FILTER 0
+#define CONFIG_MIX_FILTER 0
+#define CONFIG_MPDECIMATE_FILTER 0
+#define CONFIG_NEGATE_FILTER 0
+#define CONFIG_NLMEANS_FILTER 0
+#define CONFIG_NLMEANS_OPENCL_FILTER 0
+#define CONFIG_NNEDI_FILTER 0
+#define CONFIG_NOFORMAT_FILTER 0
+#define CONFIG_NOISE_FILTER 0
+#define CONFIG_NORMALIZE_FILTER 0
+#define CONFIG_NULL_FILTER 0
+#define CONFIG_OCR_FILTER 0
+#define CONFIG_OCV_FILTER 0
+#define CONFIG_OSCILLOSCOPE_FILTER 0
+#define CONFIG_OVERLAY_FILTER 0
+#define CONFIG_OVERLAY_OPENCL_FILTER 0
+#define CONFIG_OVERLAY_QSV_FILTER 0
+#define CONFIG_OVERLAY_VULKAN_FILTER 0
+#define CONFIG_OVERLAY_CUDA_FILTER 0
+#define CONFIG_OWDENOISE_FILTER 0
+#define CONFIG_PAD_FILTER 0
+#define CONFIG_PAD_OPENCL_FILTER 0
+#define CONFIG_PALETTEGEN_FILTER 0
+#define CONFIG_PALETTEUSE_FILTER 0
+#define CONFIG_PERMS_FILTER 0
+#define CONFIG_PERSPECTIVE_FILTER 0
+#define CONFIG_PHASE_FILTER 0
+#define CONFIG_PHOTOSENSITIVITY_FILTER 0
+#define CONFIG_PIXDESCTEST_FILTER 0
+#define CONFIG_PIXSCOPE_FILTER 0
+#define CONFIG_PP_FILTER 0
+#define CONFIG_PP7_FILTER 0
+#define CONFIG_PREMULTIPLY_FILTER 0
+#define CONFIG_PREWITT_FILTER 0
+#define CONFIG_PREWITT_OPENCL_FILTER 0
+#define CONFIG_PROCAMP_VAAPI_FILTER 0
+#define CONFIG_PROGRAM_OPENCL_FILTER 0
+#define CONFIG_PSEUDOCOLOR_FILTER 0
+#define CONFIG_PSNR_FILTER 0
+#define CONFIG_PULLUP_FILTER 0
+#define CONFIG_QP_FILTER 0
+#define CONFIG_RANDOM_FILTER 0
+#define CONFIG_READEIA608_FILTER 0
+#define CONFIG_READVITC_FILTER 0
+#define CONFIG_REALTIME_FILTER 0
+#define CONFIG_REMAP_FILTER 0
+#define CONFIG_REMOVEGRAIN_FILTER 0
+#define CONFIG_REMOVELOGO_FILTER 0
+#define CONFIG_REPEATFIELDS_FILTER 0
+#define CONFIG_REVERSE_FILTER 0
+#define CONFIG_RGBASHIFT_FILTER 0
+#define CONFIG_ROBERTS_FILTER 0
+#define CONFIG_ROBERTS_OPENCL_FILTER 0
+#define CONFIG_ROTATE_FILTER 0
+#define CONFIG_SAB_FILTER 0
+#define CONFIG_SCALE_FILTER 0
+#define CONFIG_SCALE_CUDA_FILTER 0
+#define CONFIG_SCALE_NPP_FILTER 0
+#define CONFIG_SCALE_QSV_FILTER 0
+#define CONFIG_SCALE_VAAPI_FILTER 0
+#define CONFIG_SCALE_VULKAN_FILTER 0
+#define CONFIG_SCALE2REF_FILTER 0
+#define CONFIG_SCROLL_FILTER 0
+#define CONFIG_SELECT_FILTER 0
+#define CONFIG_SELECTIVECOLOR_FILTER 0
+#define CONFIG_SENDCMD_FILTER 0
+#define CONFIG_SEPARATEFIELDS_FILTER 0
+#define CONFIG_SETDAR_FILTER 0
+#define CONFIG_SETFIELD_FILTER 0
+#define CONFIG_SETPARAMS_FILTER 0
+#define CONFIG_SETPTS_FILTER 0
+#define CONFIG_SETRANGE_FILTER 0
+#define CONFIG_SETSAR_FILTER 0
+#define CONFIG_SETTB_FILTER 0
+#define CONFIG_SHARPNESS_VAAPI_FILTER 0
+#define CONFIG_SHOWINFO_FILTER 0
+#define CONFIG_SHOWPALETTE_FILTER 0
+#define CONFIG_SHUFFLEFRAMES_FILTER 0
+#define CONFIG_SHUFFLEPLANES_FILTER 0
+#define CONFIG_SIDEDATA_FILTER 0
+#define CONFIG_SIGNALSTATS_FILTER 0
+#define CONFIG_SIGNATURE_FILTER 0
+#define CONFIG_SMARTBLUR_FILTER 0
+#define CONFIG_SOBEL_FILTER 0
+#define CONFIG_SOBEL_OPENCL_FILTER 0
+#define CONFIG_SPLIT_FILTER 0
+#define CONFIG_SPP_FILTER 0
+#define CONFIG_SR_FILTER 0
+#define CONFIG_SSIM_FILTER 0
+#define CONFIG_STEREO3D_FILTER 0
+#define CONFIG_STREAMSELECT_FILTER 0
+#define CONFIG_SUBTITLES_FILTER 0
+#define CONFIG_SUPER2XSAI_FILTER 0
+#define CONFIG_SWAPRECT_FILTER 0
+#define CONFIG_SWAPUV_FILTER 0
+#define CONFIG_TBLEND_FILTER 0
+#define CONFIG_TELECINE_FILTER 0
+#define CONFIG_THISTOGRAM_FILTER 0
+#define CONFIG_THRESHOLD_FILTER 0
+#define CONFIG_THUMBNAIL_FILTER 0
+#define CONFIG_THUMBNAIL_CUDA_FILTER 0
+#define CONFIG_TILE_FILTER 0
+#define CONFIG_TINTERLACE_FILTER 0
+#define CONFIG_TLUT2_FILTER 0
+#define CONFIG_TMEDIAN_FILTER 0
+#define CONFIG_TMIX_FILTER 0
+#define CONFIG_TONEMAP_FILTER 0
+#define CONFIG_TONEMAP_OPENCL_FILTER 0
+#define CONFIG_TONEMAP_VAAPI_FILTER 0
+#define CONFIG_TPAD_FILTER 0
+#define CONFIG_TRANSPOSE_FILTER 0
+#define CONFIG_TRANSPOSE_NPP_FILTER 0
+#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
+#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
+#define CONFIG_TRIM_FILTER 0
+#define CONFIG_UNPREMULTIPLY_FILTER 0
+#define CONFIG_UNSHARP_FILTER 0
+#define CONFIG_UNSHARP_OPENCL_FILTER 0
+#define CONFIG_USPP_FILTER 0
+#define CONFIG_V360_FILTER 0
+#define CONFIG_VAGUEDENOISER_FILTER 0
+#define CONFIG_VECTORSCOPE_FILTER 0
+#define CONFIG_VFLIP_FILTER 0
+#define CONFIG_VFRDET_FILTER 0
+#define CONFIG_VIBRANCE_FILTER 0
+#define CONFIG_VIDSTABDETECT_FILTER 0
+#define CONFIG_VIDSTABTRANSFORM_FILTER 0
+#define CONFIG_VIGNETTE_FILTER 0
+#define CONFIG_VMAFMOTION_FILTER 0
+#define CONFIG_VPP_QSV_FILTER 0
+#define CONFIG_VSTACK_FILTER 0
+#define CONFIG_W3FDIF_FILTER 0
+#define CONFIG_WAVEFORM_FILTER 0
+#define CONFIG_WEAVE_FILTER 0
+#define CONFIG_XBR_FILTER 0
+#define CONFIG_XFADE_FILTER 0
+#define CONFIG_XFADE_OPENCL_FILTER 0
+#define CONFIG_XMEDIAN_FILTER 0
+#define CONFIG_XSTACK_FILTER 0
+#define CONFIG_YADIF_FILTER 0
+#define CONFIG_YADIF_CUDA_FILTER 0
+#define CONFIG_YAEPBLUR_FILTER 0
+#define CONFIG_ZMQ_FILTER 0
+#define CONFIG_ZOOMPAN_FILTER 0
+#define CONFIG_ZSCALE_FILTER 0
+#define CONFIG_ALLRGB_FILTER 0
+#define CONFIG_ALLYUV_FILTER 0
+#define CONFIG_CELLAUTO_FILTER 0
+#define CONFIG_COLOR_FILTER 0
+#define CONFIG_COREIMAGESRC_FILTER 0
+#define CONFIG_FREI0R_SRC_FILTER 0
+#define CONFIG_HALDCLUTSRC_FILTER 0
+#define CONFIG_LIFE_FILTER 0
+#define CONFIG_MANDELBROT_FILTER 0
+#define CONFIG_MPTESTSRC_FILTER 0
+#define CONFIG_NULLSRC_FILTER 0
+#define CONFIG_OPENCLSRC_FILTER 0
+#define CONFIG_PAL75BARS_FILTER 0
+#define CONFIG_PAL100BARS_FILTER 0
+#define CONFIG_RGBTESTSRC_FILTER 0
+#define CONFIG_SIERPINSKI_FILTER 0
+#define CONFIG_SMPTEBARS_FILTER 0
+#define CONFIG_SMPTEHDBARS_FILTER 0
+#define CONFIG_TESTSRC_FILTER 0
+#define CONFIG_TESTSRC2_FILTER 0
+#define CONFIG_YUVTESTSRC_FILTER 0
+#define CONFIG_NULLSINK_FILTER 0
+#define CONFIG_ABITSCOPE_FILTER 0
+#define CONFIG_ADRAWGRAPH_FILTER 0
+#define CONFIG_AGRAPHMONITOR_FILTER 0
+#define CONFIG_AHISTOGRAM_FILTER 0
+#define CONFIG_APHASEMETER_FILTER 0
+#define CONFIG_AVECTORSCOPE_FILTER 0
+#define CONFIG_CONCAT_FILTER 0
+#define CONFIG_SHOWCQT_FILTER 0
+#define CONFIG_SHOWFREQS_FILTER 0
+#define CONFIG_SHOWSPATIAL_FILTER 0
+#define CONFIG_SHOWSPECTRUM_FILTER 0
+#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
+#define CONFIG_SHOWVOLUME_FILTER 0
+#define CONFIG_SHOWWAVES_FILTER 0
+#define CONFIG_SHOWWAVESPIC_FILTER 0
+#define CONFIG_SPECTRUMSYNTH_FILTER 0
+#define CONFIG_AMOVIE_FILTER 0
+#define CONFIG_MOVIE_FILTER 0
+#define CONFIG_AFIFO_FILTER 0
+#define CONFIG_FIFO_FILTER 0
+#define CONFIG_AA_DEMUXER 0
+#define CONFIG_AAC_DEMUXER 1
+#define CONFIG_AC3_DEMUXER 0
+#define CONFIG_ACM_DEMUXER 0
+#define CONFIG_ACT_DEMUXER 0
+#define CONFIG_ADF_DEMUXER 0
+#define CONFIG_ADP_DEMUXER 0
+#define CONFIG_ADS_DEMUXER 0
+#define CONFIG_ADX_DEMUXER 0
+#define CONFIG_AEA_DEMUXER 0
+#define CONFIG_AFC_DEMUXER 0
+#define CONFIG_AIFF_DEMUXER 0
+#define CONFIG_AIX_DEMUXER 0
+#define CONFIG_ALP_DEMUXER 0
+#define CONFIG_AMR_DEMUXER 1
+#define CONFIG_AMRNB_DEMUXER 0
+#define CONFIG_AMRWB_DEMUXER 0
+#define CONFIG_ANM_DEMUXER 0
+#define CONFIG_APC_DEMUXER 0
+#define CONFIG_APE_DEMUXER 0
+#define CONFIG_APM_DEMUXER 0
+#define CONFIG_APNG_DEMUXER 0
+#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
+#define CONFIG_AQTITLE_DEMUXER 0
+#define CONFIG_ARGO_ASF_DEMUXER 0
+#define CONFIG_ASF_DEMUXER 0
+#define CONFIG_ASF_O_DEMUXER 0
+#define CONFIG_ASS_DEMUXER 0
+#define CONFIG_AST_DEMUXER 0
+#define CONFIG_AU_DEMUXER 0
+#define CONFIG_AV1_DEMUXER 0
+#define CONFIG_AVI_DEMUXER 1
+#define CONFIG_AVISYNTH_DEMUXER 0
+#define CONFIG_AVR_DEMUXER 0
+#define CONFIG_AVS_DEMUXER 0
+#define CONFIG_AVS2_DEMUXER 0
+#define CONFIG_BETHSOFTVID_DEMUXER 0
+#define CONFIG_BFI_DEMUXER 0
+#define CONFIG_BINTEXT_DEMUXER 0
+#define CONFIG_BINK_DEMUXER 0
+#define CONFIG_BIT_DEMUXER 0
+#define CONFIG_BMV_DEMUXER 0
+#define CONFIG_BFSTM_DEMUXER 0
+#define CONFIG_BRSTM_DEMUXER 0
+#define CONFIG_BOA_DEMUXER 0
+#define CONFIG_C93_DEMUXER 0
+#define CONFIG_CAF_DEMUXER 0
+#define CONFIG_CAVSVIDEO_DEMUXER 0
+#define CONFIG_CDG_DEMUXER 0
+#define CONFIG_CDXL_DEMUXER 0
+#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
+#define CONFIG_CONCAT_DEMUXER 0
+#define CONFIG_DASH_DEMUXER 0
+#define CONFIG_DATA_DEMUXER 0
+#define CONFIG_DAUD_DEMUXER 0
+#define CONFIG_DCSTR_DEMUXER 0
+#define CONFIG_DERF_DEMUXER 0
+#define CONFIG_DFA_DEMUXER 0
+#define CONFIG_DHAV_DEMUXER 0
+#define CONFIG_DIRAC_DEMUXER 0
+#define CONFIG_DNXHD_DEMUXER 0
+#define CONFIG_DSF_DEMUXER 0
+#define CONFIG_DSICIN_DEMUXER 0
+#define CONFIG_DSS_DEMUXER 0
+#define CONFIG_DTS_DEMUXER 0
+#define CONFIG_DTSHD_DEMUXER 0
+#define CONFIG_DV_DEMUXER 0
+#define CONFIG_DVBSUB_DEMUXER 0
+#define CONFIG_DVBTXT_DEMUXER 0
+#define CONFIG_DXA_DEMUXER 0
+#define CONFIG_EA_DEMUXER 0
+#define CONFIG_EA_CDATA_DEMUXER 0
+#define CONFIG_EAC3_DEMUXER 0
+#define CONFIG_EPAF_DEMUXER 0
+#define CONFIG_FFMETADATA_DEMUXER 0
+#define CONFIG_FILMSTRIP_DEMUXER 0
+#define CONFIG_FITS_DEMUXER 0
+#define CONFIG_FLAC_DEMUXER 1
+#define CONFIG_FLIC_DEMUXER 0
+#define CONFIG_FLV_DEMUXER 0
+#define CONFIG_LIVE_FLV_DEMUXER 0
+#define CONFIG_FOURXM_DEMUXER 0
+#define CONFIG_FRM_DEMUXER 0
+#define CONFIG_FSB_DEMUXER 0
+#define CONFIG_FWSE_DEMUXER 0
+#define CONFIG_G722_DEMUXER 0
+#define CONFIG_G723_1_DEMUXER 0
+#define CONFIG_G726_DEMUXER 0
+#define CONFIG_G726LE_DEMUXER 0
+#define CONFIG_G729_DEMUXER 0
+#define CONFIG_GDV_DEMUXER 0
+#define CONFIG_GENH_DEMUXER 0
+#define CONFIG_GIF_DEMUXER 0
+#define CONFIG_GSM_DEMUXER 1
+#define CONFIG_GXF_DEMUXER 0
+#define CONFIG_H261_DEMUXER 0
+#define CONFIG_H263_DEMUXER 0
+#define CONFIG_H264_DEMUXER 0
+#define CONFIG_HCA_DEMUXER 0
+#define CONFIG_HCOM_DEMUXER 0
+#define CONFIG_HEVC_DEMUXER 0
+#define CONFIG_HLS_DEMUXER 0
+#define CONFIG_HNM_DEMUXER 0
+#define CONFIG_ICO_DEMUXER 0
+#define CONFIG_IDCIN_DEMUXER 0
+#define CONFIG_IDF_DEMUXER 0
+#define CONFIG_IFF_DEMUXER 0
+#define CONFIG_IFV_DEMUXER 0
+#define CONFIG_ILBC_DEMUXER 0
+#define CONFIG_IMAGE2_DEMUXER 0
+#define CONFIG_IMAGE2PIPE_DEMUXER 0
+#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
+#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
+#define CONFIG_INGENIENT_DEMUXER 0
+#define CONFIG_IPMOVIE_DEMUXER 0
+#define CONFIG_IRCAM_DEMUXER 0
+#define CONFIG_ISS_DEMUXER 0
+#define CONFIG_IV8_DEMUXER 0
+#define CONFIG_IVF_DEMUXER 0
+#define CONFIG_IVR_DEMUXER 0
+#define CONFIG_JACOSUB_DEMUXER 0
+#define CONFIG_JV_DEMUXER 0
+#define CONFIG_KUX_DEMUXER 0
+#define CONFIG_KVAG_DEMUXER 0
+#define CONFIG_LMLM4_DEMUXER 0
+#define CONFIG_LOAS_DEMUXER 0
+#define CONFIG_LRC_DEMUXER 0
+#define CONFIG_LVF_DEMUXER 0
+#define CONFIG_LXF_DEMUXER 0
+#define CONFIG_M4V_DEMUXER 0
+#define CONFIG_MATROSKA_DEMUXER 1
+#define CONFIG_MGSTS_DEMUXER 0
+#define CONFIG_MICRODVD_DEMUXER 0
+#define CONFIG_MJPEG_DEMUXER 0
+#define CONFIG_MJPEG_2000_DEMUXER 0
+#define CONFIG_MLP_DEMUXER 0
+#define CONFIG_MLV_DEMUXER 0
+#define CONFIG_MM_DEMUXER 0
+#define CONFIG_MMF_DEMUXER 0
+#define CONFIG_MOV_DEMUXER 1
+#define CONFIG_MP3_DEMUXER 1
+#define CONFIG_MPC_DEMUXER 0
+#define CONFIG_MPC8_DEMUXER 0
+#define CONFIG_MPEGPS_DEMUXER 0
+#define CONFIG_MPEGTS_DEMUXER 0
+#define CONFIG_MPEGTSRAW_DEMUXER 0
+#define CONFIG_MPEGVIDEO_DEMUXER 0
+#define CONFIG_MPJPEG_DEMUXER 0
+#define CONFIG_MPL2_DEMUXER 0
+#define CONFIG_MPSUB_DEMUXER 0
+#define CONFIG_MSF_DEMUXER 0
+#define CONFIG_MSNWC_TCP_DEMUXER 0
+#define CONFIG_MTAF_DEMUXER 0
+#define CONFIG_MTV_DEMUXER 0
+#define CONFIG_MUSX_DEMUXER 0
+#define CONFIG_MV_DEMUXER 0
+#define CONFIG_MVI_DEMUXER 0
+#define CONFIG_MXF_DEMUXER 0
+#define CONFIG_MXG_DEMUXER 0
+#define CONFIG_NC_DEMUXER 0
+#define CONFIG_NISTSPHERE_DEMUXER 0
+#define CONFIG_NSP_DEMUXER 0
+#define CONFIG_NSV_DEMUXER 0
+#define CONFIG_NUT_DEMUXER 0
+#define CONFIG_NUV_DEMUXER 0
+#define CONFIG_OGG_DEMUXER 1
+#define CONFIG_OMA_DEMUXER 0
+#define CONFIG_PAF_DEMUXER 0
+#define CONFIG_PCM_ALAW_DEMUXER 0
+#define CONFIG_PCM_MULAW_DEMUXER 0
+#define CONFIG_PCM_VIDC_DEMUXER 0
+#define CONFIG_PCM_F64BE_DEMUXER 0
+#define CONFIG_PCM_F64LE_DEMUXER 0
+#define CONFIG_PCM_F32BE_DEMUXER 0
+#define CONFIG_PCM_F32LE_DEMUXER 0
+#define CONFIG_PCM_S32BE_DEMUXER 0
+#define CONFIG_PCM_S32LE_DEMUXER 0
+#define CONFIG_PCM_S24BE_DEMUXER 0
+#define CONFIG_PCM_S24LE_DEMUXER 0
+#define CONFIG_PCM_S16BE_DEMUXER 0
+#define CONFIG_PCM_S16LE_DEMUXER 0
+#define CONFIG_PCM_S8_DEMUXER 0
+#define CONFIG_PCM_U32BE_DEMUXER 0
+#define CONFIG_PCM_U32LE_DEMUXER 0
+#define CONFIG_PCM_U24BE_DEMUXER 0
+#define CONFIG_PCM_U24LE_DEMUXER 0
+#define CONFIG_PCM_U16BE_DEMUXER 0
+#define CONFIG_PCM_U16LE_DEMUXER 0
+#define CONFIG_PCM_U8_DEMUXER 0
+#define CONFIG_PJS_DEMUXER 0
+#define CONFIG_PMP_DEMUXER 0
+#define CONFIG_PVA_DEMUXER 0
+#define CONFIG_PVF_DEMUXER 0
+#define CONFIG_QCP_DEMUXER 0
+#define CONFIG_R3D_DEMUXER 0
+#define CONFIG_RAWVIDEO_DEMUXER 0
+#define CONFIG_REALTEXT_DEMUXER 0
+#define CONFIG_REDSPARK_DEMUXER 0
+#define CONFIG_RL2_DEMUXER 0
+#define CONFIG_RM_DEMUXER 0
+#define CONFIG_ROQ_DEMUXER 0
+#define CONFIG_RPL_DEMUXER 0
+#define CONFIG_RSD_DEMUXER 0
+#define CONFIG_RSO_DEMUXER 0
+#define CONFIG_RTP_DEMUXER 0
+#define CONFIG_RTSP_DEMUXER 0
+#define CONFIG_S337M_DEMUXER 0
+#define CONFIG_SAMI_DEMUXER 0
+#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
+#define CONFIG_SBG_DEMUXER 0
+#define CONFIG_SCC_DEMUXER 0
+#define CONFIG_SDP_DEMUXER 0
+#define CONFIG_SDR2_DEMUXER 0
+#define CONFIG_SDS_DEMUXER 0
+#define CONFIG_SDX_DEMUXER 0
+#define CONFIG_SEGAFILM_DEMUXER 0
+#define CONFIG_SER_DEMUXER 0
+#define CONFIG_SHORTEN_DEMUXER 0
+#define CONFIG_SIFF_DEMUXER 0
+#define CONFIG_SLN_DEMUXER 0
+#define CONFIG_SMACKER_DEMUXER 0
+#define CONFIG_SMJPEG_DEMUXER 0
+#define CONFIG_SMUSH_DEMUXER 0
+#define CONFIG_SOL_DEMUXER 0
+#define CONFIG_SOX_DEMUXER 0
+#define CONFIG_SPDIF_DEMUXER 0
+#define CONFIG_SRT_DEMUXER 0
+#define CONFIG_STR_DEMUXER 0
+#define CONFIG_STL_DEMUXER 0
+#define CONFIG_SUBVIEWER1_DEMUXER 0
+#define CONFIG_SUBVIEWER_DEMUXER 0
+#define CONFIG_SUP_DEMUXER 0
+#define CONFIG_SVAG_DEMUXER 0
+#define CONFIG_SWF_DEMUXER 0
+#define CONFIG_TAK_DEMUXER 0
+#define CONFIG_TEDCAPTIONS_DEMUXER 0
+#define CONFIG_THP_DEMUXER 0
+#define CONFIG_THREEDOSTR_DEMUXER 0
+#define CONFIG_TIERTEXSEQ_DEMUXER 0
+#define CONFIG_TMV_DEMUXER 0
+#define CONFIG_TRUEHD_DEMUXER 0
+#define CONFIG_TTA_DEMUXER 0
+#define CONFIG_TXD_DEMUXER 0
+#define CONFIG_TTY_DEMUXER 0
+#define CONFIG_TY_DEMUXER 0
+#define CONFIG_V210_DEMUXER 0
+#define CONFIG_V210X_DEMUXER 0
+#define CONFIG_VAG_DEMUXER 0
+#define CONFIG_VC1_DEMUXER 0
+#define CONFIG_VC1T_DEMUXER 0
+#define CONFIG_VIVIDAS_DEMUXER 0
+#define CONFIG_VIVO_DEMUXER 0
+#define CONFIG_VMD_DEMUXER 0
+#define CONFIG_VOBSUB_DEMUXER 0
+#define CONFIG_VOC_DEMUXER 0
+#define CONFIG_VPK_DEMUXER 0
+#define CONFIG_VPLAYER_DEMUXER 0
+#define CONFIG_VQF_DEMUXER 0
+#define CONFIG_W64_DEMUXER 0
+#define CONFIG_WAV_DEMUXER 1
+#define CONFIG_WC3_DEMUXER 0
+#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
+#define CONFIG_WEBVTT_DEMUXER 0
+#define CONFIG_WSAUD_DEMUXER 0
+#define CONFIG_WSD_DEMUXER 0
+#define CONFIG_WSVQA_DEMUXER 0
+#define CONFIG_WTV_DEMUXER 0
+#define CONFIG_WVE_DEMUXER 0
+#define CONFIG_WV_DEMUXER 0
+#define CONFIG_XA_DEMUXER 0
+#define CONFIG_XBIN_DEMUXER 0
+#define CONFIG_XMV_DEMUXER 0
+#define CONFIG_XVAG_DEMUXER 0
+#define CONFIG_XWMA_DEMUXER 0
+#define CONFIG_YOP_DEMUXER 0
+#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
+#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
+#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
+#define CONFIG_LIBGME_DEMUXER 0
+#define CONFIG_LIBMODPLUG_DEMUXER 0
+#define CONFIG_LIBOPENMPT_DEMUXER 0
+#define CONFIG_VAPOURSYNTH_DEMUXER 0
+#define CONFIG_A64_MUXER 0
+#define CONFIG_AC3_MUXER 0
+#define CONFIG_ADTS_MUXER 0
+#define CONFIG_ADX_MUXER 0
+#define CONFIG_AIFF_MUXER 0
+#define CONFIG_AMR_MUXER 0
+#define CONFIG_APNG_MUXER 0
+#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
+#define CONFIG_ASF_MUXER 0
+#define CONFIG_ASS_MUXER 0
+#define CONFIG_AST_MUXER 0
+#define CONFIG_ASF_STREAM_MUXER 0
+#define CONFIG_AU_MUXER 0
+#define CONFIG_AVI_MUXER 0
+#define CONFIG_AVM2_MUXER 0
+#define CONFIG_AVS2_MUXER 0
+#define CONFIG_BIT_MUXER 0
+#define CONFIG_CAF_MUXER 0
+#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
+#define CONFIG_CRC_MUXER 0
+#define CONFIG_DASH_MUXER 0
+#define CONFIG_DATA_MUXER 0
+#define CONFIG_DAUD_MUXER 0
+#define CONFIG_DIRAC_MUXER 0
+#define CONFIG_DNXHD_MUXER 0
+#define CONFIG_DTS_MUXER 0
+#define CONFIG_DV_MUXER 0
+#define CONFIG_EAC3_MUXER 0
+#define CONFIG_F4V_MUXER 0
+#define CONFIG_FFMETADATA_MUXER 0
+#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
+#define CONFIG_FILMSTRIP_MUXER 0
+#define CONFIG_FITS_MUXER 0
+#define CONFIG_FLAC_MUXER 0
+#define CONFIG_FLV_MUXER 0
+#define CONFIG_FRAMECRC_MUXER 0
+#define CONFIG_FRAMEHASH_MUXER 0
+#define CONFIG_FRAMEMD5_MUXER 0
+#define CONFIG_G722_MUXER 0
+#define CONFIG_G723_1_MUXER 0
+#define CONFIG_G726_MUXER 0
+#define CONFIG_G726LE_MUXER 0
+#define CONFIG_GIF_MUXER 0
+#define CONFIG_GSM_MUXER 0
+#define CONFIG_GXF_MUXER 0
+#define CONFIG_H261_MUXER 0
+#define CONFIG_H263_MUXER 0
+#define CONFIG_H264_MUXER 0
+#define CONFIG_HASH_MUXER 0
+#define CONFIG_HDS_MUXER 0
+#define CONFIG_HEVC_MUXER 0
+#define CONFIG_HLS_MUXER 0
+#define CONFIG_ICO_MUXER 0
+#define CONFIG_ILBC_MUXER 0
+#define CONFIG_IMAGE2_MUXER 0
+#define CONFIG_IMAGE2PIPE_MUXER 0
+#define CONFIG_IPOD_MUXER 0
+#define CONFIG_IRCAM_MUXER 0
+#define CONFIG_ISMV_MUXER 0
+#define CONFIG_IVF_MUXER 0
+#define CONFIG_JACOSUB_MUXER 0
+#define CONFIG_LATM_MUXER 0
+#define CONFIG_LRC_MUXER 0
+#define CONFIG_M4V_MUXER 0
+#define CONFIG_MD5_MUXER 0
+#define CONFIG_MATROSKA_MUXER 0
+#define CONFIG_MATROSKA_AUDIO_MUXER 0
+#define CONFIG_MICRODVD_MUXER 0
+#define CONFIG_MJPEG_MUXER 0
+#define CONFIG_MLP_MUXER 0
+#define CONFIG_MMF_MUXER 0
+#define CONFIG_MOV_MUXER 0
+#define CONFIG_MP2_MUXER 0
+#define CONFIG_MP3_MUXER 0
+#define CONFIG_MP4_MUXER 0
+#define CONFIG_MPEG1SYSTEM_MUXER 0
+#define CONFIG_MPEG1VCD_MUXER 0
+#define CONFIG_MPEG1VIDEO_MUXER 0
+#define CONFIG_MPEG2DVD_MUXER 0
+#define CONFIG_MPEG2SVCD_MUXER 0
+#define CONFIG_MPEG2VIDEO_MUXER 0
+#define CONFIG_MPEG2VOB_MUXER 0
+#define CONFIG_MPEGTS_MUXER 0
+#define CONFIG_MPJPEG_MUXER 0
+#define CONFIG_MXF_MUXER 0
+#define CONFIG_MXF_D10_MUXER 0
+#define CONFIG_MXF_OPATOM_MUXER 0
+#define CONFIG_NULL_MUXER 0
+#define CONFIG_NUT_MUXER 0
+#define CONFIG_OGA_MUXER 0
+#define CONFIG_OGG_MUXER 0
+#define CONFIG_OGV_MUXER 0
+#define CONFIG_OMA_MUXER 0
+#define CONFIG_OPUS_MUXER 0
+#define CONFIG_PCM_ALAW_MUXER 0
+#define CONFIG_PCM_MULAW_MUXER 0
+#define CONFIG_PCM_VIDC_MUXER 0
+#define CONFIG_PCM_F64BE_MUXER 0
+#define CONFIG_PCM_F64LE_MUXER 0
+#define CONFIG_PCM_F32BE_MUXER 0
+#define CONFIG_PCM_F32LE_MUXER 0
+#define CONFIG_PCM_S32BE_MUXER 0
+#define CONFIG_PCM_S32LE_MUXER 0
+#define CONFIG_PCM_S24BE_MUXER 0
+#define CONFIG_PCM_S24LE_MUXER 0
+#define CONFIG_PCM_S16BE_MUXER 0
+#define CONFIG_PCM_S16LE_MUXER 0
+#define CONFIG_PCM_S8_MUXER 0
+#define CONFIG_PCM_U32BE_MUXER 0
+#define CONFIG_PCM_U32LE_MUXER 0
+#define CONFIG_PCM_U24BE_MUXER 0
+#define CONFIG_PCM_U24LE_MUXER 0
+#define CONFIG_PCM_U16BE_MUXER 0
+#define CONFIG_PCM_U16LE_MUXER 0
+#define CONFIG_PCM_U8_MUXER 0
+#define CONFIG_PSP_MUXER 0
+#define CONFIG_RAWVIDEO_MUXER 0
+#define CONFIG_RM_MUXER 0
+#define CONFIG_ROQ_MUXER 0
+#define CONFIG_RSO_MUXER 0
+#define CONFIG_RTP_MUXER 0
+#define CONFIG_RTP_MPEGTS_MUXER 0
+#define CONFIG_RTSP_MUXER 0
+#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
+#define CONFIG_SCC_MUXER 0
+#define CONFIG_SEGAFILM_MUXER 0
+#define CONFIG_SEGMENT_MUXER 0
+#define CONFIG_STREAM_SEGMENT_MUXER 0
+#define CONFIG_SINGLEJPEG_MUXER 0
+#define CONFIG_SMJPEG_MUXER 0
+#define CONFIG_SMOOTHSTREAMING_MUXER 0
+#define CONFIG_SOX_MUXER 0
+#define CONFIG_SPX_MUXER 0
+#define CONFIG_SPDIF_MUXER 0
+#define CONFIG_SRT_MUXER 0
+#define CONFIG_STREAMHASH_MUXER 0
+#define CONFIG_SUP_MUXER 0
+#define CONFIG_SWF_MUXER 0
+#define CONFIG_TEE_MUXER 0
+#define CONFIG_TG2_MUXER 0
+#define CONFIG_TGP_MUXER 0
+#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
+#define CONFIG_TRUEHD_MUXER 0
+#define CONFIG_TTA_MUXER 0
+#define CONFIG_UNCODEDFRAMECRC_MUXER 0
+#define CONFIG_VC1_MUXER 0
+#define CONFIG_VC1T_MUXER 0
+#define CONFIG_VOC_MUXER 0
+#define CONFIG_W64_MUXER 0
+#define CONFIG_WAV_MUXER 0
+#define CONFIG_WEBM_MUXER 0
+#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
+#define CONFIG_WEBM_CHUNK_MUXER 0
+#define CONFIG_WEBP_MUXER 0
+#define CONFIG_WEBVTT_MUXER 0
+#define CONFIG_WTV_MUXER 0
+#define CONFIG_WV_MUXER 0
+#define CONFIG_YUV4MPEGPIPE_MUXER 0
+#define CONFIG_CHROMAPRINT_MUXER 0
+#define CONFIG_ASYNC_PROTOCOL 0
+#define CONFIG_BLURAY_PROTOCOL 0
+#define CONFIG_CACHE_PROTOCOL 0
+#define CONFIG_CONCAT_PROTOCOL 0
+#define CONFIG_CRYPTO_PROTOCOL 0
+#define CONFIG_DATA_PROTOCOL 0
+#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
+#define CONFIG_FFRTMPHTTP_PROTOCOL 0
+#define CONFIG_FILE_PROTOCOL 0
+#define CONFIG_FTP_PROTOCOL 0
+#define CONFIG_GOPHER_PROTOCOL 0
+#define CONFIG_HLS_PROTOCOL 0
+#define CONFIG_HTTP_PROTOCOL 0
+#define CONFIG_HTTPPROXY_PROTOCOL 0
+#define CONFIG_HTTPS_PROTOCOL 0
+#define CONFIG_ICECAST_PROTOCOL 0
+#define CONFIG_MMSH_PROTOCOL 0
+#define CONFIG_MMST_PROTOCOL 0
+#define CONFIG_MD5_PROTOCOL 0
+#define CONFIG_PIPE_PROTOCOL 0
+#define CONFIG_PROMPEG_PROTOCOL 0
+#define CONFIG_RTMP_PROTOCOL 0
+#define CONFIG_RTMPE_PROTOCOL 0
+#define CONFIG_RTMPS_PROTOCOL 0
+#define CONFIG_RTMPT_PROTOCOL 0
+#define CONFIG_RTMPTE_PROTOCOL 0
+#define CONFIG_RTMPTS_PROTOCOL 0
+#define CONFIG_RTP_PROTOCOL 0
+#define CONFIG_SCTP_PROTOCOL 0
+#define CONFIG_SRTP_PROTOCOL 0
+#define CONFIG_SUBFILE_PROTOCOL 0
+#define CONFIG_TEE_PROTOCOL 0
+#define CONFIG_TCP_PROTOCOL 0
+#define CONFIG_TLS_PROTOCOL 0
+#define CONFIG_UDP_PROTOCOL 0
+#define CONFIG_UDPLITE_PROTOCOL 0
+#define CONFIG_UNIX_PROTOCOL 0
+#define CONFIG_LIBAMQP_PROTOCOL 0
+#define CONFIG_LIBRTMP_PROTOCOL 0
+#define CONFIG_LIBRTMPE_PROTOCOL 0
+#define CONFIG_LIBRTMPS_PROTOCOL 0
+#define CONFIG_LIBRTMPT_PROTOCOL 0
+#define CONFIG_LIBRTMPTE_PROTOCOL 0
+#define CONFIG_LIBSRT_PROTOCOL 0
+#define CONFIG_LIBSSH_PROTOCOL 0
+#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
+#define CONFIG_LIBZMQ_PROTOCOL 0
+#endif /* FFMPEG_CONFIG_H */
diff --git a/fuchsia/config/max/x64/libavcodec/bsf_list.c b/fuchsia/config/max/x64/libavcodec/bsf_list.c
new file mode 100644
index 0000000..ee5ac8a
--- /dev/null
+++ b/fuchsia/config/max/x64/libavcodec/bsf_list.c
@@ -0,0 +1,4 @@
+static const AVBitStreamFilter * const bitstream_filters[] = {
+    &ff_null_bsf,
+    &ff_vp9_superframe_split_bsf,
+    NULL };
diff --git a/fuchsia/config/max/x64/libavcodec/codec_list.c b/fuchsia/config/max/x64/libavcodec/codec_list.c
new file mode 100644
index 0000000..97fbca7
--- /dev/null
+++ b/fuchsia/config/max/x64/libavcodec/codec_list.c
@@ -0,0 +1,29 @@
+static const AVCodec * const codec_list[] = {
+    &ff_h263_decoder,
+    &ff_h264_decoder,
+    &ff_mpeg4_decoder,
+    &ff_theora_decoder,
+    &ff_vp3_decoder,
+    &ff_vp8_decoder,
+    &ff_vp9_decoder,
+    &ff_aac_decoder,
+    &ff_aac_latm_decoder,
+    &ff_amrnb_decoder,
+    &ff_amrwb_decoder,
+    &ff_aptx_decoder,
+    &ff_flac_decoder,
+    &ff_gsm_ms_decoder,
+    &ff_mp3_decoder,
+    &ff_sbc_decoder,
+    &ff_vorbis_decoder,
+    &ff_pcm_alaw_decoder,
+    &ff_pcm_f32le_decoder,
+    &ff_pcm_mulaw_decoder,
+    &ff_pcm_s16be_decoder,
+    &ff_pcm_s16le_decoder,
+    &ff_pcm_s24be_decoder,
+    &ff_pcm_s24le_decoder,
+    &ff_pcm_s32le_decoder,
+    &ff_pcm_u8_decoder,
+    &ff_libopus_decoder,
+    NULL };
diff --git a/fuchsia/config/max/x64/libavcodec/parser_list.c b/fuchsia/config/max/x64/libavcodec/parser_list.c
new file mode 100644
index 0000000..d1cd7e0
--- /dev/null
+++ b/fuchsia/config/max/x64/libavcodec/parser_list.c
@@ -0,0 +1,15 @@
+static const AVCodecParser * const parser_list[] = {
+    &ff_aac_parser,
+    &ff_aac_latm_parser,
+    &ff_flac_parser,
+    &ff_gsm_parser,
+    &ff_h263_parser,
+    &ff_h264_parser,
+    &ff_mpeg4video_parser,
+    &ff_mpegaudio_parser,
+    &ff_opus_parser,
+    &ff_vorbis_parser,
+    &ff_vp3_parser,
+    &ff_vp8_parser,
+    &ff_vp9_parser,
+    NULL };
diff --git a/fuchsia/config/max/x64/libavformat/demuxer_list.c b/fuchsia/config/max/x64/libavformat/demuxer_list.c
new file mode 100644
index 0000000..241417e
--- /dev/null
+++ b/fuchsia/config/max/x64/libavformat/demuxer_list.c
@@ -0,0 +1,12 @@
+static const AVInputFormat * const demuxer_list[] = {
+    &ff_aac_demuxer,
+    &ff_amr_demuxer,
+    &ff_avi_demuxer,
+    &ff_flac_demuxer,
+    &ff_gsm_demuxer,
+    &ff_matroska_demuxer,
+    &ff_mov_demuxer,
+    &ff_mp3_demuxer,
+    &ff_ogg_demuxer,
+    &ff_wav_demuxer,
+    NULL };
diff --git a/fuchsia/config/max/x64/libavformat/muxer_list.c b/fuchsia/config/max/x64/libavformat/muxer_list.c
new file mode 100644
index 0000000..f36d949
--- /dev/null
+++ b/fuchsia/config/max/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+    NULL };
diff --git a/fuchsia/config/max/x64/libavformat/protocol_list.c b/fuchsia/config/max/x64/libavformat/protocol_list.c
new file mode 100644
index 0000000..247e1e4
--- /dev/null
+++ b/fuchsia/config/max/x64/libavformat/protocol_list.c
@@ -0,0 +1,2 @@
+static const URLProtocol * const url_protocols[] = {
+    NULL };
diff --git a/fuchsia/config/max/x64/libavutil/avconfig.h b/fuchsia/config/max/x64/libavutil/avconfig.h
new file mode 100644
index 0000000..c289fbb
--- /dev/null
+++ b/fuchsia/config/max/x64/libavutil/avconfig.h
@@ -0,0 +1,6 @@
+/* Generated by ffmpeg configure */
+#ifndef AVUTIL_AVCONFIG_H
+#define AVUTIL_AVCONFIG_H
+#define AV_HAVE_BIGENDIAN 0
+#define AV_HAVE_FAST_UNALIGNED 1
+#endif /* AVUTIL_AVCONFIG_H */
diff --git a/fuchsia/config/max/x64/libavutil/ffversion.h b/fuchsia/config/max/x64/libavutil/ffversion.h
new file mode 100644
index 0000000..fc76199
--- /dev/null
+++ b/fuchsia/config/max/x64/libavutil/ffversion.h
@@ -0,0 +1,5 @@
+/* Automatically generated by version.sh, do not manually edit! */
+#ifndef AVUTIL_FFVERSION_H
+#define AVUTIL_FFVERSION_H
+#define FFMPEG_VERSION "N-97662-gaaac2c26d9"
+#endif /* AVUTIL_FFVERSION_H */
diff --git a/fuchsia/patches/README b/fuchsia/patches/README
new file mode 100644
index 0000000..0a1c860
--- /dev/null
+++ b/fuchsia/patches/README
@@ -0,0 +1,5 @@
+This file describes changes that have not been upstreamed.
+
+libavcodec/utils.c and 	libavformat/utils.c were modified to suppress
+deprecation warnings. TODOs were added to remove them when ffmpeg stops using
+its own deprecated functions or adds its own suppression.
diff --git a/fuchsia/scripts/build_ffmpeg.py b/fuchsia/scripts/build_ffmpeg.py
new file mode 100755
index 0000000..145f3f9
--- /dev/null
+++ b/fuchsia/scripts/build_ffmpeg.py
@@ -0,0 +1,272 @@
+#!/usr/bin/env python
+#
+# Copyright 2017 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from __future__ import print_function
+
+import collections
+import multiprocessing
+import optparse
+import os
+import platform
+import re
+import shutil
+import subprocess
+import sys
+
+
+SCRIPTS_DIR = os.path.abspath(os.path.dirname(__file__))
+FFMPEG_DIR = os.path.abspath(os.path.join(SCRIPTS_DIR, '..', '..'))
+FUCHSIA_DIR = os.path.abspath(os.path.join(FFMPEG_DIR, '..', '..'))
+
+
+# These profiles select different levels of format support. The 'default'
+# profile includes only a few unencumbered formats, essentially those supported
+# by Chromium. The 'max' profile includes most of the formats that ffmpeg
+# supports. Some formats (e.g. Opus) aren't included, because more development
+# is required to support them.
+PROFILES = [
+    'default',
+    'max',
+]
+
+
+USAGE = """Usage: %prog [x64|arm64] [options] -- [configure_args]
+
+Resulting binaries will be placed in:
+  build.[x64|arm64]/default/out/
+  build.[x64|arm64]/max/out/
+  """
+
+
+def PrintAndCheckCall(argv, *args, **kwargs):
+  print('Running %s' % '\n '.join(argv))
+  subprocess.check_call(argv, *args, **kwargs)
+
+
+def GetDsoName(dso_name, dso_version):
+  return 'lib%s.so.%s' % (dso_name, dso_version)
+
+
+def RewriteFile(path, search, replace):
+  with open(path) as f:
+    contents = f.read()
+  with open(path, 'w') as f:
+    f.write(re.sub(search, replace, contents))
+
+
+def BuildFFmpeg(target_arch, parallel_jobs, config_only, profile,
+                configure_flags):
+  config_dir = 'build.%s/%s' % (target_arch, profile)
+  shutil.rmtree(config_dir, ignore_errors=True)
+  os.makedirs(os.path.join(config_dir, 'out'))
+
+  PrintAndCheckCall(
+      [os.path.join(FFMPEG_DIR, 'configure')] + configure_flags, cwd=config_dir)
+
+  RewriteFile(
+      os.path.join(config_dir, 'config.h'),
+      r'(#define HAVE_SYSCTL [01])',
+      (r'#define HAVE_SYSCTL 0'))
+
+  RewriteFile(
+      os.path.join(config_dir, 'config.h'),
+      r'(#define HAVE_AS_FUNC [01])',
+      (r'#define HAVE_AS_FUNC 0'))
+
+  RewriteFile(
+      os.path.join(config_dir, 'config.h'),
+      r'(#define HAVE_VALGRIND_VALGRIND_H [01])',
+      (r'#define HAVE_VALGRIND_VALGRIND_H 0'))
+
+  if config_only:
+    print('Skipping build step as requested.')
+  else:
+    libraries = [
+        os.path.join('libavcodec', GetDsoName('avcodec', 58)),
+        os.path.join('libavformat', GetDsoName('avformat', 58)),
+        os.path.join('libavutil', GetDsoName('avutil', 56)),
+    ]
+    PrintAndCheckCall(
+        ['make', '-j%d' % parallel_jobs] + libraries, cwd=config_dir)
+    for lib in libraries:
+      shutil.copy(os.path.join(config_dir, lib),
+                  os.path.join(config_dir, 'out'))
+
+  if target_arch in ('arm64'):
+    RewriteFile(
+        os.path.join(config_dir, 'config.h'),
+        r'(#define HAVE_VFP_ARGS [01])',
+        (r'/* \1 -- softfp/hardfp selection is done by the fuchsia build */'))
+
+
+def main(argv):
+  parser = optparse.OptionParser(usage=USAGE)
+  parser.add_option('--profile', action='append', dest='profiles',
+                    choices=PROFILES,
+                    help='Profile to build; determines e.g. supported codecs')
+  parser.add_option('--config-only', action='store_true',
+                    help='Skip the build step.')
+  options, args = parser.parse_args(argv)
+
+  if len(args) == 0:
+    parser.print_help()
+    return 1
+
+  target_arch = args[0]
+  configure_args = args[1:]
+
+  parallel_jobs = multiprocessing.cpu_count()
+
+  print('System information:\n'
+        'Target arch   : %s\n'
+        'Parallel jobs : %d\n' % (target_arch, parallel_jobs))
+
+  configure_flags = collections.defaultdict(list)
+
+  # Common configuration.  Note: --disable-everything does not in fact disable
+  # everything, just non-library components such as decoders and demuxers.
+  #TODO(dalesat): Consider --enable-libopus, --enable-decoder=libopus
+  configure_flags['Common'].extend([
+      '--disable-everything',
+      '--disable-all',
+      '--disable-doc',
+      '--disable-htmlpages',
+      '--disable-manpages',
+      '--disable-podpages',
+      '--disable-txtpages',
+      '--disable-static',
+      '--enable-avcodec',
+      '--enable-avformat',
+      '--enable-avutil',
+      '--enable-fft',
+      '--enable-rdft',
+      '--enable-static',
+      '--enable-libopus',
+      # Disable features.
+      '--disable-debug',
+      '--disable-bzlib',
+      '--disable-iconv',
+      '--disable-lzo',
+      '--disable-network',
+      '--disable-schannel',
+      '--disable-sdl2',
+      '--disable-symver',
+      '--disable-xlib',
+      '--disable-zlib',
+      '--disable-securetransport',
+      '--disable-faan',
+      '--disable-alsa',
+
+      # Disable automatically detected external libraries. This prevents
+      # automatic inclusion of things like hardware decoders. Each roll should
+      # audit new [autodetect] configure options and add any desired options to
+      # this file.
+      '--disable-autodetect',
+
+      # Common codecs.
+      '--enable-decoder=vorbis,libopus,flac',
+      '--enable-decoder=pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3',
+      '--enable-decoder=pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw',
+      '--enable-decoder=theora,vp8,sbc,aptx',
+      '--enable-demuxer=ogg,matroska,wav,flac,mp3,mov',
+      '--enable-parser=opus,vorbis,flac,mpegaudio',
+      # Setup include path so Fuchsia's libopus can be used.
+      '--extra-cflags=-I' + os.path.join(FUCHSIA_DIR,
+                                         'third_party/opus/include'),
+      '--enable-parser=vp3,vp8',
+
+      '--optflags="-O2"',
+      '--enable-pic',
+
+      # Force usage of yasm
+      '--x86asmexe=yasm',
+  ])
+
+  configure_flags['Common'].extend([
+      '--enable-pic',
+      '--enable-lto',
+      '--cc=clang',
+      '--cxx=clang++',
+      '--ld=clang',
+  ])
+
+
+  # TODO(dalesat): determine if we can use --enable-lto in x64
+  # TODO(dalesat): enable vp9 on arm64
+
+  if target_arch == 'x64':
+    configure_flags['Common'].extend([
+        '--enable-decoder=vp9',
+        '--enable-parser=vp9',
+        '--sysroot=' + os.path.join(
+            FFMPEG_DIR, '..', '..', 'prebuilt', 'third_party', 'sysroot', 'linux'),
+        '--extra-ldflags=-fuse-ld=lld',
+    ])
+  elif target_arch == 'arm64':
+    configure_flags['Common'].extend([
+        '--enable-cross-compile',
+        '--cross-prefix=/usr/bin/x86_64-linux-gnu-',
+        '--target-os=linux',
+        '--arch=aarch64',
+        '--enable-armv8',
+        '--extra-cflags=-march=armv8-a',
+        '--sysroot=' + os.path.join(
+            FFMPEG_DIR, '..', '..', 'prebuilt', 'third_party', 'sysroot', 'linux'),
+        '--extra-cflags=--target=aarch64-linux-gnu',
+        '--extra-ldflags=--target=aarch64-linux-gnu',
+        '--disable-linux-perf',
+    ])
+  else:
+    print('Error: Unknown target arch %r!' % (target_arch), file=sys.stderr)
+    return 1
+
+  configure_flags['default'].extend([
+      # max enables MPEG4 which requires error resilience :(
+      '--disable-error-resilience',
+  ])
+
+  configure_flags['max'].extend([
+      '--enable-decoder=aac,aac_latm,h264,mp3',
+      '--enable-demuxer=aac,mp3,mov',
+      '--enable-parser=aac,aac_latm,h264,mpegaudio',
+      # Enable playing avi files.
+      '--enable-decoder=mpeg4',
+      '--enable-parser=h263,mpeg4video',
+      '--enable-demuxer=avi',
+      # Enable playing Android 3gp files.
+      '--enable-demuxer=amr',
+      '--enable-decoder=amrnb,amrwb',
+      # Wav files for playing phone messages.
+      '--enable-decoder=gsm_ms',
+      '--enable-demuxer=gsm',
+      '--enable-parser=gsm',
+  ])
+
+  def do_build_ffmpeg(profile, configure_flags):
+    if options.profiles and profile not in options.profiles:
+      print('%s skipped' % profile)
+      return
+
+    print('%s configure/build:' % profile)
+    BuildFFmpeg(target_arch, parallel_jobs,
+                options.config_only, profile, configure_flags)
+
+  do_build_ffmpeg('default',
+                  configure_flags['Common'] +
+                  configure_flags['default'] +
+                  configure_args)
+  do_build_ffmpeg('max',
+                  configure_flags['Common'] +
+                  configure_flags['max'] +
+                  configure_args)
+
+  print('Done. If desired you may copy config.h/config.asm into the '
+        'source/config tree using copy_config.sh.')
+  return 0
+
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv[1:]))
diff --git a/fuchsia/scripts/copy_config.sh b/fuchsia/scripts/copy_config.sh
new file mode 100755
index 0000000..f8c01d3
--- /dev/null
+++ b/fuchsia/scripts/copy_config.sh
@@ -0,0 +1,24 @@
+#!/bin/bash -e
+
+# Copyright (c) 2017 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Use this to copy all config files into the tree.
+for profile in default max; do
+  # Copy config files for the architectures:
+  #   - x64 has config.asm, config.h
+  #   - arm64 has config.h
+  for arch in x64 arm64; do
+    # Don't waste time on non-existent configs, if no config.h then skip.
+    [ ! -e "build.$arch/$profile/config.h" ] && continue
+    for f in config.h config.asm libavutil/avconfig.h libavutil/ffversion.h libavcodec/bsf_list.c libavcodec/codec_list.c libavcodec/parser_list.c libavformat/demuxer_list.c libavformat/muxer_list.c libavformat/protocol_list.c; do
+      FROM="build.$arch/$profile/$f"
+      TO="fuchsia/config/$profile/$arch/$f"
+      if [ "$(dirname $f)" != "" ]; then mkdir -p $(dirname $TO); fi
+      [ -e $FROM ] && cp -v $FROM $TO
+    done
+  done
+done
+
+echo "Copied all existing newer configs successfully."
diff --git a/fuchsia/scripts/credits_updater.py b/fuchsia/scripts/credits_updater.py
new file mode 100644
index 0000000..fc041e9
--- /dev/null
+++ b/fuchsia/scripts/credits_updater.py
@@ -0,0 +1,358 @@
+#!/usr/bin/python
+#
+# Copyright 2017 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Updates the CREDITS.fuchsia file for ffmpeg.
+
+The structure of the output credits file is:
+- FFmpeg LICENSE.md verbatim
+- A few verbatim license headers from files that didn't match typical FFmpeg
+- The entire text of the LGPL
+
+The vast majority of files are covered by the LGPL text, described by the
+common FFmpeg header ("This file is part of FFmpeg...").
+
+The few exceptions are cases where the FFmpeg header has been modified, or
+where the file has historically had another license (e.g MIPS, JPEG, BSD) and
+was pulled into FFmpeg from another project. In some cases there are many files
+that share the exact same non-LGPL license text. These are bucketed together
+(see KNOWN_FILE_BUCKETS) to de-dup their license in the output file.
+
+Change to the licensing text for bucketed files are automatically caught by
+comparing the md5 digest to a previously recorded digest in the
+KNOWN_FILE_BUCKETS table. Changes are generally not expected, but should
+prompt manual inspection of the difference and possibly an update to the
+license text for that bucket.
+"""
+
+import collections
+import difflib
+from enum import enum
+import hashlib
+import os
+import re
+
+# Name of the LICENSE.md file from upstream FFmpeg. This file should be kept in
+# perfect sync w/ upstream at each merge.
+UPSTREAM_LICENSEMD = 'LICENSE.md'
+
+# Default name of the output file generated by CreditsUpdater.WriteCredits. This
+# name must match the "License file: " in README.fuchsia.
+DEFAULT_OUTPUT_FILE = 'CREDITS.fuchsia'
+
+# Minimum similarity threshold to consider a comment header LGPL when compared
+# against FFMPEG_LGPL_REF.
+LGPL_MATCH_THRESHOLD = .9
+
+# Regular expressions for finding license header comments.
+C_COMMENT_BLOCK_START = re.compile('/\*+')
+C_COMMENT_BLOCK_MID = re.compile('^ *\* *')
+C_COMMENT_BLOCK_END = re.compile('\*/')
+ASM_COMMENT_PRE = re.compile('^(;\**|@)')
+ASM_NOT_COMMENT = re.compile('^[^;@]')
+FFMPEG_HEADER_START = re.compile(' *This file is part of FFmpeg')
+
+LICENSE_SEPARATOR = '\n\n' + ('*' * 80) + '\n\n'
+FFMPEG_LGPL_REF = '''
+ * 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.
+ *
+ * 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */'''
+
+# Known licenses
+License = enum('LGPL', 'MIPS', 'JPEG', 'OGG_MA_MR_2005')
+
+# Tuple describing license and similarity to the FFmpeg LGPL reference for a
+# given file. See KNOWN_FILE_BUCKETS.
+FileInfo = collections.namedtuple('FileInfo', 'license, license_digest')
+
+# Most files in FFmpeg are LGPL, but there are a few exceptions that are worth
+# bucketing together to avoid redundant license texts. The hex values are
+# digests of the comment header, used to detect changes in the unlikely event
+# that their license texts are altered. Any changes will require manual review
+# to decide whether the to update the bucketing.
+KNOWN_FILE_BUCKETS = [
+    # Files that are LGPL but just miss the similarity cutoff.
+    ['libavcodec/codec_desc.c', License.LGPL, '091f9c6d1efc62038e516f5c67263962'],
+    # Files with MIPS license.
+    ['libavcodec/mdct_fixed_32.c', License.MIPS, '179c17c9dab77f95dc6540709b5fb8cd'],
+    ['libavcodec/fft_fixed_32.c', License.MIPS, '179c17c9dab77f95dc6540709b5fb8cd'],
+    ['libavcodec/fft_init_table.c', License.MIPS, '179c17c9dab77f95dc6540709b5fb8cd'],
+    ['libavcodec/mips/aacdec_mips.c', License.MIPS, 'a08afe43d908fe6625603d0cbc95da46'],
+    ['libavcodec/mips/sbrdsp_mips.c', License.MIPS, 'c34ece06ebe27e5a7611ef362962b048'],
+    ['libavcodec/mips/aacpsdsp_mips.c', License.MIPS, 'a08afe43d908fe6625603d0cbc95da46'],
+    ['libavutil/mips/float_dsp_mips.c', License.MIPS, 'fb9f51968ec8289768547144b920cf79'],
+    ['libavcodec/mips/aacsbr_mips.c', License.MIPS, '82c53533b2576fe5d2c04880a46595f2'],
+    ['libavutil/fixed_dsp.c', License.MIPS, '7a521412ac91287b3e1026885f6bd56f'],
+    ['libavcodec/mips/aacdec_mips.h', License.MIPS, 'c34ece06ebe27e5a7611ef362962b048'],
+    ['libavcodec/mips/lsp_mips.h', License.MIPS, 'eef419f576f738e66ca3bfc975a37996'],
+    ['libavcodec/mips/aacsbr_mips.h', License.MIPS, '82c53533b2576fe5d2c04880a46595f2'],
+    ['libavutil/mips/libm_mips.h', License.MIPS, '4b408982f2aa83fac9c020c61853bdae'],
+    ['libavcodec/mips/amrwbdec_mips.h', License.MIPS, '4b408982f2aa83fac9c020c61853bdae'],
+    ['libavcodec/fft_table.h', License.MIPS, '179c17c9dab77f95dc6540709b5fb8cd'],
+    ['libavcodec/mips/compute_antialias_float.h', License.MIPS, 'a7ff7e3157e3726cba79e022628d3b93'],
+    ['libavcodec/mips/compute_antialias_fixed.h', License.MIPS, '97e366b4c71ad5ceca991d89044c414d'],
+    ['libavutil/softfloat_tables.h', License.MIPS, 'de3e5c962caa5c8249bef3085ef36bc8'],
+    ['libavutil/fixed_dsp.h', License.MIPS, '4b408982f2aa83fac9c020c61853bdae'],
+    # Files with JPEG Group license.
+    ['libavcodec/jfdctint_template.c', License.JPEG, 'd80cfd2e439eb700aed0f5bc44fef9b5'],
+    ['libavcodec/jfdctfst.c', License.JPEG, '7dcfa68ad9c8fd940fb404ee3242e03f'],
+    ['libavcodec/jrevdct.c', License.JPEG, 'a9b8f5dcb74fa76a72069306b841b042'],
+    # Files written by Ahlberg and RullgAYrd for parsing Ogg (MIT/X11 license).
+    ['libavformat/oggparseogm.c', License.OGG_MA_MR_2005, 'ee65196bafec5d8e871e64bb739bdc79'],
+    ['libavformat/oggdec.c', License.OGG_MA_MR_2005, '43ed5da1268cb2f104095c79410fd394'],
+    ['libavformat/oggdec.h', License.OGG_MA_MR_2005, 'ee65196bafec5d8e871e64bb739bdc79'],
+    ['libavformat/oggparsevorbis.c', License.OGG_MA_MR_2005, '6c432580b4486564e43cd538370e3dbc'],
+]
+
+# Path describing 'license_texts' folder as a sibling of this script's location.
+LICENSE_FOLDER = os.path.join(
+    os.path.dirname(os.path.abspath(__file__)), 'license_texts')
+
+# Files containing license text to be used for the known license buckets. These
+# files should all live in LICENSE_FOLDER.
+LICENSE_TEXTS = {
+    License.MIPS: os.path.join(LICENSE_FOLDER, 'mips.txt'),
+    License.JPEG: os.path.join(LICENSE_FOLDER, 'jpeg.txt'),
+    License.LGPL: os.path.join(LICENSE_FOLDER, 'full_lgpl.txt'),
+    License.OGG_MA_MR_2005: os.path.join(LICENSE_FOLDER,
+                                         'oggparse_ahlberg_rullgayrd_2005.txt'),
+}
+
+
+class CreditsUpdater(object):
+  """CreditsUpdater parses license headers for files supplied via ProcessFile.
+  The parsed headers are stored for generating the FFmpeg credits file
+  (LICENSE.md) upon calling OutputCredits."""
+
+  def __init__(self, source_dir, output_file=DEFAULT_OUTPUT_FILE):
+    """ Creates a CreditsUpdater
+    Args:
+      source_dir: Root of ffmpeg sources; where LICENSE.md is found and where
+        the generated DEFAULT_OUTPUT_FILE will be written.
+      output_file: (Optional) Name of the file to write the credits to. File
+        will live in source_dir.
+    """
+    self.source_dir = source_dir
+    self.output_file = output_file
+    # Files where we failed to find any license header. Any entry in this list
+    # will block updating credits until the parsing code is amended to work for
+    # the difficult files.
+    self.difficult_files = []
+    # Map storing processed files that belong to KNOWN_FILE_BUCKETS.
+    # Key: LICENSE, Value: List of files with the known license.
+    self.known_credits = collections.defaultdict(list)
+    # Map storing processed files that do not belong to any known bucket. These
+    # files will have their license printed verbatim.
+    # Key: file path, Value: license text
+    self.generated_credits = collections.defaultdict(list)
+    # Convert the "buckets" above into a map.
+    self.known_file_map = {}
+    for item in KNOWN_FILE_BUCKETS:
+      self.known_file_map[os.path.join(item[0])] = FileInfo(item[1], item[2])
+
+  def ProcessFile(self, file_path):
+    """ Process the file updating credits.
+    Args:
+      file_path: Path to file to process. Path can be absolute or relative, but
+      should be a descendant of source_dir provided to constructor.
+    """
+    if not os.path.isabs(file_path):
+      file_path = os.path.abspath(os.path.join(self.source_dir, file_path))
+
+    comment_lines = ExtractFirstCommentBlock(file_path)
+    if not comment_lines:
+      self.difficult_files.append(file_path)
+      return
+
+    # Try to pull out customizations in first few lines of license header before
+    # "This file is part of FFmpeg." Failing to normalize indicates either a
+    # totally different header or a header with significant alterations.
+    normalized_lines = NormalizeCommentLines(comment_lines)
+    if normalized_lines:
+      sim_ratio = (
+          difflib.SequenceMatcher(
+              None, ConcatLines(normalized_lines),
+              FFMPEG_LGPL_REF).ratio())
+
+      # File is a close match to typical LGPL case.
+      if sim_ratio >= LGPL_MATCH_THRESHOLD:
+        self.known_credits[License.LGPL].append(file_path)
+      # File matches some LGPL, but has significant differences.
+      else:
+        self.HandleNonLGPLFile(comment_lines, file_path)
+    # File does not contain FFmpeg LGPL header in any form.
+    else:
+      self.HandleNonLGPLFile(comment_lines, file_path)
+
+  def HandleNonLGPLFile(self, comment_lines, file_path):
+    # Make file_path relative to FFmpeg directory to lookup self.known_file_map.
+    rel_file_path = os.path.relpath(file_path, os.path.abspath(self.source_dir))
+
+    # Many non-LGPL files fall into known groups (e.g. MIPS). We bucket these
+    # together to avoid repeating the same license text in the credits.
+    if rel_file_path in self.known_file_map:
+      hasher = hashlib.md5()
+      hasher.update(ConcatLines(comment_lines))
+
+      # Detect changes to file's licensing header.
+      file_license_info = self.known_file_map[rel_file_path]
+      if hasher.hexdigest() != file_license_info.license_digest:
+        exit('File %(file_path)s header has changed (was: %(old_digest)s '
+             'now: %(new_digest)s). Inspect the header and update the '
+             'exceptions table to continue generating credits.'
+             % {'file_path': rel_file_path,
+                'old_digest': file_license_info.license_digest,
+                'new_digest': hasher.hexdigest()})
+      # Store known files in a list for printing.
+      self.known_credits[file_license_info.license].append(rel_file_path)
+    else:
+      # This file does have a known bucket. We'll print its license verbatim.
+      self.generated_credits[rel_file_path] = ConcatLines(comment_lines).strip()
+
+  def PrintStats(self):
+    num_known_credits = 0
+    for license_bucket in self.known_credits:
+      num_known_credits += len(self.known_credits[license_bucket])
+    print 'CreditsUpdater stats:'
+    print '\t%s files w/ known_credits' % num_known_credits
+    print '\t%s generated_credits' % len(self.generated_credits.keys())
+    print '\t%s difficult_files files' % len(self.difficult_files)
+
+  def WriteCredits(self):
+    if self.difficult_files:
+      # After taking a closer look, enhance this tool to work for these or
+      # add them to the white-list if they truly have no licensing header.
+      print 'Failed to find license header for these files:'
+      for filename in self.difficult_files:
+        print filename
+      exit('Update script to work for these to continue generating credits')
+
+    output_path = os.path.join(self.source_dir, self.output_file)
+    licence_md_path = os.path.join(self.source_dir, UPSTREAM_LICENSEMD)
+    with open(output_path, 'w') as open_output:
+      # Always write the FFmpeg overview (LICENSE.md) first.
+      with open(licence_md_path) as open_license_md:
+        open_output.writelines(open_license_md.readlines())
+
+      # Next write verbatim headers from the generated credits map.
+      for filename, file_license in self.generated_credits.iteritems():
+        open_output.writelines(LICENSE_SEPARATOR)
+        open_output.writelines('%s\n\n%s' % (filename, file_license))
+
+      # Write the known licenses, ending with LGPL.
+      for known_license in sorted(self.known_credits.keys()):
+        # Skip LGPL for now. We print it at the end.
+        if known_license is License.LGPL:
+          continue
+
+        file_list = sorted(self.known_credits[known_license])
+        with open(LICENSE_TEXTS[known_license]) as license_text:
+          open_output.writelines(LICENSE_SEPARATOR)
+          open_output.writelines('\n'.join(file_list) + '\n\n')
+          open_output.writelines(license_text.readlines())
+
+      # Finally, write full text of LGPL
+      with open(LICENSE_TEXTS[License.LGPL]) as lgpl_text:
+        open_output.writelines(LICENSE_SEPARATOR)
+        open_output.writelines(lgpl_text.readlines())
+
+
+def ConcatLines(lines):
+  return ''.join(lines)
+
+
+def NormalizeCommentLines(comment_lines):
+  # Copy to leave orig const.
+  comment_lines = list(comment_lines)
+
+  # Find start of ffmpeg lgpl header.
+  line_index = 0
+  for line in comment_lines:
+    if (FFMPEG_HEADER_START.search(line)):
+      break
+    line_index += 1
+
+  if line_index == len(comment_lines):
+    # print "Failed to find start of ffmpeg header"
+    return None
+
+  # Typically just a few lines for copyright and file description. More
+  # than 20 to the start hints that this may not be the typical lgpl header.
+  if line_index > 20:
+    # print "Header start too far from the top of comment"
+    return None
+
+  # Pull out stuff before header start.
+  comment_lines = comment_lines[line_index: len(comment_lines)]
+  return comment_lines
+
+
+def ExtractFirstCommentBlock(file_path):
+  lines = []
+  found_comment_start = False
+  found_comment_end = False
+  is_asm = file_path.endswith('.asm')
+
+  with open(file_path) as open_file:
+    # .S files generally have C style block comments, but a handful have a
+    # special single-line comment prefixed with '@'. Check a few lines to figure
+    # out which case we're dealing with.
+    if file_path.endswith('.S'):
+      first_line = open_file.readline()
+      if ASM_COMMENT_PRE.search(first_line):
+        is_asm = True
+      open_file.seek(0)
+
+    if is_asm:
+      comment_start_re = ASM_COMMENT_PRE
+      comment_end_re = ASM_NOT_COMMENT
+    else:
+      comment_start_re = C_COMMENT_BLOCK_START
+      comment_end_re = C_COMMENT_BLOCK_END
+
+    for _ in xrange(0, 100):
+      line = open_file.readline()
+      found_comment_start = (found_comment_start or
+                             comment_start_re.search(line))
+      if not found_comment_start:
+        continue
+
+      lines.append(line)
+      if comment_end_re.search(line):
+        found_comment_end = True
+        break
+
+  if not (found_comment_start and found_comment_end):
+    return None
+
+  StripCommentChars(lines, is_asm)
+  return lines
+
+
+def StripCommentChars(comment_lines, is_asm=False):
+  if is_asm:
+    for i in xrange(len(comment_lines)):
+      comment_lines[i] = re.sub(ASM_COMMENT_PRE, '', comment_lines[i])
+  else:
+    # Strip off the start slash-star
+    comment_lines[0] = re.sub(C_COMMENT_BLOCK_START, '', comment_lines[0])
+    # Strip off the comment end star-slash
+    comment_lines[-1] = re.sub(C_COMMENT_BLOCK_END, '', comment_lines[-1])
+    # Strip off the comment star for middle lines
+    for i in xrange(1, len(comment_lines)):
+      comment_lines[i] = re.sub(C_COMMENT_BLOCK_MID, '', comment_lines[i])
diff --git a/fuchsia/scripts/credits_updater.pyc b/fuchsia/scripts/credits_updater.pyc
new file mode 100644
index 0000000..c0bbe80
--- /dev/null
+++ b/fuchsia/scripts/credits_updater.pyc
Binary files differ
diff --git a/fuchsia/scripts/enum.py b/fuchsia/scripts/enum.py
new file mode 100644
index 0000000..c803bb5
--- /dev/null
+++ b/fuchsia/scripts/enum.py
@@ -0,0 +1,6 @@
+import collections
+
+# Python has enums now, but Goobuntu machines seem to run very old python. From:
+# http://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python
+def enum(*keys):
+  return collections.namedtuple('Enum', keys)(*keys)
diff --git a/fuchsia/scripts/enum.pyc b/fuchsia/scripts/enum.pyc
new file mode 100644
index 0000000..ffb1bc9
--- /dev/null
+++ b/fuchsia/scripts/enum.pyc
Binary files differ
diff --git a/fuchsia/scripts/generate_gn.py b/fuchsia/scripts/generate_gn.py
new file mode 100755
index 0000000..27f474e
--- /dev/null
+++ b/fuchsia/scripts/generate_gn.py
@@ -0,0 +1,732 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2017 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Creates a GN include file for building FFmpeg from source.
+
+The way this works is a bit silly but it's easier than reverse engineering
+FFmpeg's configure scripts and Makefiles and manually maintaining fuchsia
+build files. It scans through build directories for object files then does a
+reverse lookup against the FFmpeg source tree to find the corresponding C or
+assembly file.
+
+Running build_ffmpeg.py for all (both) architectures is required prior to
+running this script.
+
+Once you've built all architectures you may run this script.
+"""
+
+import collections
+import copy
+import datetime
+from enum import enum
+import fnmatch
+import credits_updater
+import itertools
+import optparse
+import os
+import re
+import shutil
+import string
+import subprocess
+import sys
+
+COPYRIGHT = """# Copyright %d The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# NOTE: this file is autogenerated by ffmpeg/fuchsia/scripts/generate_gn.py
+
+""" % (datetime.datetime.now().year)
+
+GN_HEADER = """import("//build/config/arm.gni")
+import("ffmpeg_options.gni")
+
+# Declare empty versions of each variable for easier +=ing later.
+ffmpeg_c_sources = []
+ffmpeg_gas_sources = []
+ffmpeg_yasm_sources = []
+
+"""
+GN_CONDITION_BEGIN = """if (%s) {
+"""
+GN_CONDITION_END = """}
+
+"""
+GN_C_SOURCES_BEGIN = """ffmpeg_c_sources += [
+"""
+GN_GAS_SOURCES_BEGIN = """ffmpeg_gas_sources += [
+"""
+GN_YASM_SOURCES_BEGIN = """ffmpeg_yasm_sources += [
+"""
+GN_SOURCE_ITEM = """  "%s",
+"""
+GN_SOURCE_END = """]
+"""
+
+# Controls conditional stanza generation.
+Attr = enum('ARCHITECTURE', 'PROFILE')
+SUPPORT_MATRIX = {
+    Attr.ARCHITECTURE: set(['x64', 'arm64']),
+    Attr.PROFILE: set(['default', 'max']),
+}
+
+
+def NormalizeFilename(name):
+  """Removes leading path separators in an attempt to normalize paths."""
+  return string.lstrip(name, os.sep)
+
+
+def CleanObjectFiles(object_files):
+  """Removes unneeded object files due to linker errors, binary size, etc...
+
+  Args:
+    object_files: List of object files that needs cleaning.
+  """
+  blacklist = [
+      'libavcodec/inverse.o',  # Includes libavutil/inverse.c
+      'libavcodec/file_open.o',  # Includes libavutil/file_open.c
+      'libavcodec/log2_tab.o',  # Includes libavutil/log2_tab.c
+      'libavformat/golomb_tab.o',  # Includes libavcodec/golomb.c
+      'libavformat/log2_tab.o',  # Includes libavutil/log2_tab.c
+      'libavformat/file_open.o',  # Includes libavutil/file_open.c
+
+      # The following files are removed to trim down on binary size.
+      # TODO(ihf): Warning, it is *easy* right now to remove more files
+      # than is healthy and end up with a library that the linker does
+      # not complain about but that can't be loaded. Add some verification!
+      'libavcodec/audioconvert.o',
+      'libavcodec/resample.o',
+      'libavcodec/resample2.o',
+      'libavcodec/x86/dnxhd_mmx.o',
+      'libavformat/sdp.o',
+      'libavutil/adler32.o',
+      'libavutil/audio_fifo.o',
+      'libavutil/blowfish.o',
+      'libavutil/cast5.o',
+      'libavutil/des.o',
+      'libavutil/file.o',
+      'libavutil/hash.o',
+      'libavutil/hmac.o',
+      'libavutil/lls.o',
+      'libavutil/murmur3.o',
+      'libavutil/rc4.o',
+      'libavutil/ripemd.o',
+      'libavutil/sha512.o',
+      'libavutil/tree.o',
+      'libavutil/xtea.o',
+      'libavutil/xga_font_data.o',
+  ]
+  for name in blacklist:
+    name = name.replace('/', os.sep)
+    if name in object_files:
+      object_files.remove(name)
+  return object_files
+
+
+def IsAssemblyFile(f):
+  _, ext = os.path.splitext(f)
+  return ext in ['.S', '.asm']
+
+
+def IsGasFile(f):
+  _, ext = os.path.splitext(f)
+  return ext in ['.S']
+
+
+def IsYasmFile(f):
+  _, ext = os.path.splitext(f)
+  return ext in ['.asm']
+
+
+def IsCFile(f):
+  _, ext = os.path.splitext(f)
+  return ext in ['.c']
+
+
+def IsSourceFile(f):
+  return IsAssemblyFile(f) or IsCFile(f)
+
+
+def GetSourceFiles(source_dir):
+  """Returns a list of source files for the given source directory.
+
+  Args:
+    source_dir: Path to build a source mapping for.
+
+  Returns:
+    A python list of source file paths.
+  """
+
+  def IsSourceDir(d):
+    return d != '.git'
+
+  source_files = []
+  for root, dirs, files in os.walk(source_dir):
+    dirs = filter(IsSourceDir, dirs)
+    files = filter(IsSourceFile, files)
+
+    # Strip leading source_dir from root.
+    root = root[len(source_dir):]
+    source_files.extend([NormalizeFilename(os.path.join(root, name)) for name in
+                         files])
+  return source_files
+
+
+def GetObjectFiles(build_dir):
+  """Returns a list of object files for the given build directory.
+
+  Args:
+    build_dir: Path to build an object file list for.
+
+  Returns:
+    A python list of object files paths.
+  """
+  object_files = []
+  for root, _, files in os.walk(build_dir):
+    # Strip leading build_dir from root.
+    root = root[len(build_dir):]
+
+    for name in files:
+      _, ext = os.path.splitext(name)
+      if ext == '.o':
+        name = NormalizeFilename(os.path.join(root, name))
+        object_files.append(name)
+  CleanObjectFiles(object_files)
+  return object_files
+
+
+def GetObjectToSourceMapping(source_files):
+  """Returns a map of object file paths to source file paths.
+
+  Args:
+    source_files: List of source file paths.
+
+  Returns:
+    Map with object file paths as keys and source file paths as values.
+  """
+  object_to_sources = {}
+  for name in source_files:
+    basename, _ = os.path.splitext(name)
+    key = basename + '.o'
+    object_to_sources[key] = name
+  return object_to_sources
+
+
+def GetSourceFileSet(object_to_sources, object_files):
+  """Determines set of source files given object files.
+
+  Args:
+    object_to_sources: A dictionary of object to source file paths.
+    object_files: A list of object file paths.
+
+  Returns:
+    A python set of source files required to build said objects.
+  """
+  source_set = set()
+  for name in object_files:
+    # Intentially raise a KeyError if lookup fails since something is messed
+    # up with our source and object lists.
+    source_set.add(object_to_sources[name])
+  return source_set
+
+SourceListCondition = collections.namedtuple('SourceListCondition',
+                                             [Attr.ARCHITECTURE,
+                                              Attr.PROFILE])
+
+
+class SourceSet(object):
+  """A SourceSet represents a set of source files that are built on each of the
+  given set of SourceListConditions.
+  """
+
+  def __init__(self, sources, conditions):
+    """Creates a SourceSet.
+
+    Args:
+      sources: a python set of source files
+      conditions: a python set of SourceListConditions where the given sources
+        are to be used.
+    """
+    self.sources = sources
+    self.conditions = conditions
+
+  def __repr__(self):
+    return '{%s, %s}' % (self.sources, self.conditions)
+
+  def __eq__(self, other):
+    return (self.sources == other.sources and
+            self.conditions == other.conditions)
+
+  def __hash__(self):
+    return hash((frozenset(self.sources), frozenset(self.conditions)))
+
+  def Intersect(self, other):
+    """Return a new SourceSet containing the set of source files common to both
+    this and the other SourceSet.
+
+    The resulting SourceSet represents the union of the architectures and
+    profiles of this and the other SourceSet.
+    """
+    return SourceSet(self.sources & other.sources,
+                     self.conditions | other.conditions)
+
+  def Difference(self, other):
+    """Return a new SourceSet containing the set of source files not present in
+    the other SourceSet.
+
+    The resulting SourceSet represents the intersection of the
+    SourceListConditions from this and the other SourceSet.
+    """
+    return SourceSet(self.sources - other.sources,
+                     self.conditions & other.conditions)
+
+  def IsEmpty(self):
+    """An empty SourceSet is defined as containing no source files or no
+    conditions (i.e., a set of files that aren't built on anywhere).
+    """
+    return (len(self.sources) == 0 or len(self.conditions) == 0)
+
+  def GenerateGnStanza(self):
+    """Generates a gn conditional stanza representing this source set.
+    """
+
+    conjunctions = []
+    for condition in self.conditions:
+      if condition.ARCHITECTURE == '*':
+        arch_condition = None
+      else:
+        arch_condition = 'current_cpu == "%s"' % condition.ARCHITECTURE
+
+      # Profile conditions look like:
+      #   profile == "default"
+      if condition.PROFILE == '*':
+        profile_condition = None
+      else:
+        profile_condition = 'ffmpeg_profile == "%s"' % condition.PROFILE
+
+      conjunction_parts = filter(
+          None, [arch_condition, profile_condition])
+      conjunctions.append(' && '.join(conjunction_parts))
+
+    # If there is more that one clause, wrap various conditions in parens
+    # before joining.
+    if len(conjunctions) > 1:
+      conjunctions = ['(%s)' % x for x in conjunctions]
+
+    # Sort conjunctions to make order deterministic.
+    joined_conjuctions = ' || '.join(sorted(conjunctions))
+
+    stanza = ''
+    # Output a conditional wrapper around stanzas if necessary.
+    if joined_conjuctions:
+      stanza += GN_CONDITION_BEGIN % joined_conjuctions
+
+      def indent(s):
+        return '  %s' % s
+    else:
+      def indent(s):
+        return s
+
+    sources = sorted(n.replace('\\', '/') for n in self.sources)
+
+    # Write out all C sources.
+    c_sources = filter(IsCFile, sources)
+    if c_sources:
+      stanza += indent(GN_C_SOURCES_BEGIN)
+      for name in c_sources:
+        stanza += indent(GN_SOURCE_ITEM % (name))
+      stanza += indent(GN_SOURCE_END)
+
+    # Write out all assembly sources.
+    gas_sources = filter(IsGasFile, sources)
+    if gas_sources:
+      stanza += indent(GN_GAS_SOURCES_BEGIN)
+      for name in gas_sources:
+        stanza += indent(GN_SOURCE_ITEM % (name))
+      stanza += indent(GN_SOURCE_END)
+
+    # Write out all assembly sources.
+    yasm_sources = filter(IsYasmFile, sources)
+    if yasm_sources:
+      stanza += indent(GN_YASM_SOURCES_BEGIN)
+      for name in yasm_sources:
+        stanza += indent(GN_SOURCE_ITEM % (name))
+      stanza += indent(GN_SOURCE_END)
+
+    # Close the conditional if necessary.
+    if joined_conjuctions:
+      stanza += GN_CONDITION_END
+    else:
+      stanza += '\n'  # Makeup the spacing for the remove conditional.
+    return stanza
+
+
+def CreatePairwiseDisjointSets(sets):
+  """Given a list of SourceSet objects, returns the pairwise disjoint sets.
+
+  NOTE: This isn't the most efficient algorithm, but given how infrequent we
+  need to run this and how small the input size is we'll leave it as is.
+  """
+
+  disjoint_sets = list(sets)
+
+  new_sets = True
+  while new_sets:
+    new_sets = False
+    for pair in itertools.combinations(disjoint_sets, 2):
+      intersection = pair[0].Intersect(pair[1])
+
+      # Both pairs are already disjoint, nothing to do.
+      if intersection.IsEmpty():
+        continue
+
+      # Add the resulting intersection set.
+      new_sets = True
+      disjoint_sets.append(intersection)
+
+      # Calculate the resulting differences for this pair of sets.
+      #
+      # If the differences are an empty set, remove them from the list of sets,
+      # otherwise update the set itself.
+      for p in pair:
+        i = disjoint_sets.index(p)
+        difference = p.Difference(intersection)
+        if difference.IsEmpty():
+          del disjoint_sets[i]
+        else:
+          disjoint_sets[i] = difference
+
+      # Restart the calculation since the list of disjoint sets has changed.
+      break
+
+  return disjoint_sets
+
+
+def GetAllMatchingConditions(conditions, condition_to_match):
+  """Given a set of conditions, find those that match the condition_to_match.
+  Matches are found when all attributes of the condition have the same value as
+  the condition_to_match, or value is accepted for wildcard attributes within
+  condition_to_match.
+  """
+
+  found_matches = set()
+
+  # Check all attributes of condition for matching values.
+  def accepts_all_values(attribute):
+    return getattr(condition_to_match, attribute) == '*'
+  attributes_to_check = [a for a in Attr if not accepts_all_values(a)]
+
+  # If all attributes allow wildcard, all conditions are considered matching
+  if not attributes_to_check:
+    return conditions
+
+  # Check all conditions and accumulate matches.
+  for condition in conditions:
+    condition_matches = True
+    for attribute in attributes_to_check:
+      if (getattr(condition, attribute)
+          != getattr(condition_to_match, attribute)):
+        condition_matches = False
+        break
+    if condition_matches:
+      found_matches.add(condition)
+
+  return found_matches
+
+def GetAttributeValuesRange(attribute, condition):
+  """Get the range of values for the given attribute considering the values
+  of all attributes in the given condition."""
+  if getattr(condition, attribute) == '*':
+    values = copy.copy(SUPPORT_MATRIX[attribute])
+  else:
+    values = set([getattr(condition, attribute)])
+
+  return values
+
+def GenerateConditionExpansion(condition):
+  """Expand wildcard in condition into all possible matching conditions."""
+  architectures = GetAttributeValuesRange(Attr.ARCHITECTURE, condition)
+  profiles = GetAttributeValuesRange(Attr.PROFILE, condition)
+  return set(SourceListCondition(arch, profile)
+                for (arch, profile)
+                in itertools.product(architectures, profiles))
+
+def ReduceConditionalLogic(source_set):
+  """Reduces the conditions for the given SourceSet.
+
+  The reduction leverages what we know about the space of possible combinations,
+  finding cases where conditions span all values possible of a given attribute.
+  In such cases, these conditions can be flattened into a single condition with
+  the spanned attribute removed.
+
+  There is room for further reduction (e.g. Quine-McCluskey), not implemented
+  at this time."""
+
+  ConditionReduction = collections.namedtuple('ConditionReduction',
+                                              'condition, matches')
+  reduced_conditions = set()
+
+  for condition in source_set.conditions:
+    condition_dict = condition._asdict()
+
+    for attribute in Attr:
+      # Set attribute value to wildcard and find matching attributes.
+      original_attribute_value = condition_dict[attribute]
+      condition_dict[attribute] = '*'
+      new_condition = SourceListCondition(**condition_dict)
+
+      # Conditions with wildcards can replace existing conditions iff the
+      # source set contains conditions covering all possible expansions
+      # of the wildcarded values.
+      matches = GetAllMatchingConditions(source_set.conditions, new_condition)
+      if matches == GenerateConditionExpansion(new_condition):
+        reduced_conditions.add(ConditionReduction(new_condition,
+                                                  frozenset(matches)))
+      else:
+        # This wildcard won't work, restore the original value.
+        condition_dict[attribute] = original_attribute_value
+
+  # Finally, find the most efficient reductions. Do a pairwise comparison of all
+  # reductions to de-dup and remove those that are covered by more inclusive
+  # conditions.
+  did_work = True
+  while did_work:
+    did_work = False
+    for reduction_pair in itertools.combinations(reduced_conditions, 2):
+      if reduction_pair[0].matches.issubset(reduction_pair[1].matches):
+        reduced_conditions.remove(reduction_pair[0])
+        did_work = True
+        break
+      elif reduction_pair[1].matches.issubset(reduction_pair[0].matches):
+        reduced_conditions.remove(reduction_pair[1])
+        did_work = True
+        break
+
+  # Apply the reductions to the source_set.
+  for reduction in reduced_conditions:
+    source_set.conditions.difference_update(reduction.matches)
+    source_set.conditions.add(reduction.condition)
+
+
+def ParseOptions():
+  """Parses the options and terminates program if they are not sane.
+
+  Returns:
+    The pair (optparse.OptionValues, [string]), that is the output of
+    a successful call to parser.parse_args().
+  """
+  parser = optparse.OptionParser(
+      usage='usage: %prog [options] DIR')
+
+  parser.add_option('-s',
+                    '--source_dir',
+                    dest='source_dir',
+                    default='.',
+                    metavar='DIR',
+                    help='FFmpeg source directory.')
+
+  parser.add_option('-b',
+                    '--build_dir',
+                    dest='build_dir',
+                    default='.',
+                    metavar='DIR',
+                    help='Build root containing build.x64, etc...')
+
+  options, args = parser.parse_args()
+
+  if not options.source_dir:
+    parser.error('No FFmpeg source directory specified')
+  elif not os.path.exists(options.source_dir):
+    parser.error('FFmpeg source directory does not exist')
+
+  if not options.build_dir:
+    parser.error('No build root directory specified')
+  elif not os.path.exists(options.build_dir):
+    parser.error('FFmpeg build directory does not exist')
+
+  return options, args
+
+
+def WriteGn(fd, disjoint_sets):
+  fd.write(COPYRIGHT)
+  fd.write(GN_HEADER)
+
+  # Generate conditional stanza for each disjoint source set.
+  for s in reversed(disjoint_sets):
+    fd.write(s.GenerateGnStanza())
+
+
+# Lists of files that are exempt from searching in GetIncludedSources.
+IGNORED_INCLUDE_FILES = [
+    # Fuchsia generated files
+    'config.h',
+    os.path.join('libavcodec', 'bsf_list.c'),
+    os.path.join('libavcodec', 'codec_list.c'),
+    os.path.join('libavcodec', 'parser_list.c'),
+    os.path.join('libavformat', 'demuxer_list.c'),
+    os.path.join('libavformat', 'muxer_list.c'),
+    os.path.join('libavformat', 'protocol_list.c'),
+    os.path.join('libavutil', 'avconfig.h'),
+    os.path.join('libavutil', 'ffversion.h'),
+
+    # Current configure values are set such that we don't include these (because
+    # of various defines) and we also don't generate them at all, so we will
+    # fail to find these because they don't exist in our repository.
+    os.path.join('libavcodec', 'aacps_tables.h'),
+    os.path.join('libavcodec', 'aacps_fixed_tables.h'),
+    os.path.join('libavcodec', 'aacsbr_tables.h'),
+    os.path.join('libavcodec', 'aac_tables.h'),
+    os.path.join('libavcodec', 'cabac_tables.h'),
+    os.path.join('libavcodec', 'cbrt_tables.h'),
+    os.path.join('libavcodec', 'cbrt_fixed_tables.h'),
+    os.path.join('libavcodec', 'mpegaudio_tables.h'),
+    os.path.join('libavcodec', 'pcm_tables.h'),
+    os.path.join('libavcodec', 'sinewin_tables.h'),
+    os.path.join('libavcodec', 'sinewin_fixed_tables.h'),
+]
+
+
+# Regex to find lines matching #include "some_dir\some_file.h".
+INCLUDE_REGEX = re.compile('#\s*include\s+"([^"]+)"')
+
+# Regex to find whacky includes that we might be overlooking (e.g. using macros
+# or defines).
+EXOTIC_INCLUDE_REGEX = re.compile('#\s*include\s+[^"<\s].+')
+
+
+def GetIncludedSources(file_path, source_dir, include_set):
+  """Recurse over include tree, accumulating absolute paths to all included
+  files (including the seed file) in include_set.
+
+  Pass in the set returned from previous calls to avoid re-walking parts of the
+  tree. Given file_path may be relative (to options.src_dir) or absolute.
+
+  NOTE: This algorithm is greedy. It does not know which includes may be
+  excluded due to compile-time defines, so it considers any mentioned include.
+
+  NOTE: This algorithm makes hard assumptions about the include search paths.
+  Paths are checked in the order:
+  1. Directory of the file containing the #include directive
+  2. Directory specified by source_dir
+
+  NOTE: Files listed in IGNORED_INCLUDE_FILES will be ignored if not found. See
+  reasons at definition for IGNORED_INCLUDE_FILES.
+  """
+  # Use options.source_dir to correctly resolve relative file path. Use only
+  # absolute paths in the set to avoid same-name-errors.
+  if not os.path.isabs(file_path):
+    file_path = os.path.abspath(os.path.join(source_dir, file_path))
+
+  current_dir = os.path.dirname(file_path)
+
+  # Already processed this file, bail out.
+  if file_path in include_set:
+    return include_set
+
+  include_set.add(file_path)
+
+  for line in open(file_path):
+    include_match = INCLUDE_REGEX.search(line)
+
+    if not include_match:
+      if EXOTIC_INCLUDE_REGEX.search(line):
+        print 'WARNING: Investigate whacky include line:', line
+      continue
+
+    include_file_path = include_match.group(1)
+
+    # These may or may not be where the file lives. Just storing temps here
+    # and we'll checking their validity below.
+    include_path_in_current_dir = os.path.join(current_dir, include_file_path)
+    include_path_in_source_dir = os.path.join(source_dir, include_file_path)
+    resolved_include_path = ''
+
+    # Check if file is in current directory.
+    if os.path.isfile(include_path_in_current_dir):
+      resolved_include_path = include_path_in_current_dir
+    # Else, check source_dir (should be FFmpeg root).
+    elif os.path.isfile(include_path_in_source_dir):
+      resolved_include_path = include_path_in_source_dir
+    # Else, we couldn't find it :(.
+    elif include_file_path in IGNORED_INCLUDE_FILES:
+      continue
+    else:
+      exit('Failed to find file ' + include_file_path)
+
+    # At this point we've found the file. Check if its in our ignore list which
+    # means that the list should be updated to no longer mention this file.
+    if include_file_path in IGNORED_INCLUDE_FILES:
+      print('Found %s in IGNORED_INCLUDE_FILES. Consider updating the list '
+            'to remove this file.' % str(include_file_path))
+
+    GetIncludedSources(resolved_include_path, source_dir, include_set)
+
+
+def FixBasenameCollision(old_path, new_path, content):
+  with open(new_path, "w") as new_file:
+    new_file.write(content)
+
+
+def UpdateCredits(sources_to_check, source_dir):
+  print 'Updating ffmpeg credits...'
+  updater = credits_updater.CreditsUpdater(source_dir)
+  for source_name in sources_to_check:
+    updater.ProcessFile(source_name)
+  updater.PrintStats()
+  updater.WriteCredits()
+
+
+def main():
+  options, _ = ParseOptions()
+
+  # Generate map of FFmpeg source files.
+  source_dir = options.source_dir
+  source_files = GetSourceFiles(source_dir)
+  object_to_sources = GetObjectToSourceMapping(source_files)
+
+  sets = []
+
+  for arch in SUPPORT_MATRIX[Attr.ARCHITECTURE]:
+    for profile in SUPPORT_MATRIX[Attr.PROFILE]:
+      # Assume build directory is of the form build.$arch/$profile.
+      name = ''.join(['build.', arch])
+      build_dir = os.path.join(options.build_dir, name, profile)
+      if not os.path.exists(build_dir):
+        continue
+      print 'Processing build directory: %s' % name
+
+      object_files = GetObjectFiles(build_dir)
+
+      # Generate the set of source files to build said profile.
+      s = GetSourceFileSet(object_to_sources, object_files)
+      sets.append(SourceSet(s, set([SourceListCondition(arch, profile)])))
+
+  sets = CreatePairwiseDisjointSets(sets)
+
+  for source_set in sets:
+    ReduceConditionalLogic(source_set)
+
+  if not sets:
+    exit('ERROR: failed to find any source sets. ' +
+         'Are build_dir (%s) and/or source_dir (%s) options correct?' %
+         (options.build_dir, options.source_dir))
+
+  # Build up set of all sources and includes.
+  sources_to_check = set()
+  for source_set in sets:
+    for source in source_set.sources:
+      GetIncludedSources(source, source_dir, sources_to_check)
+
+  UpdateCredits(sources_to_check, source_dir)
+
+  gn_file_name = os.path.join(options.source_dir, 'ffmpeg_generated.gni')
+  print 'Writing:', gn_file_name
+  with open(gn_file_name, 'w') as fd:
+    WriteGn(fd, sets)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/fuchsia/scripts/license_texts/full_lgpl.txt b/fuchsia/scripts/license_texts/full_lgpl.txt
new file mode 100644
index 0000000..dc6c92d
--- /dev/null
+++ b/fuchsia/scripts/license_texts/full_lgpl.txt
@@ -0,0 +1,502 @@
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library 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.
+
+    This library 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 this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
\ No newline at end of file
diff --git a/fuchsia/scripts/license_texts/jpeg.txt b/fuchsia/scripts/license_texts/jpeg.txt
new file mode 100644
index 0000000..c41ecdb
--- /dev/null
+++ b/fuchsia/scripts/license_texts/jpeg.txt
@@ -0,0 +1,36 @@
+This file is part of the Independent JPEG Group's software.
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and
+you, its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1994-1996, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to
+these conditions:
+(1) If any part of the source code for this software is distributed, then
+this README file must be included, with this copyright and no-warranty
+notice unaltered; and any additions, deletions, or changes to the original
+files must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work
+of the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG
+code, not just to the unmodified library.  If you use our work, you ought
+to acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company
+name in advertising or publicity relating to this software or products
+derived from it.  This software may be referred to only as "the Independent
+JPEG Group's software".
+
+We specifically permit and encourage the use of this software as the basis
+of commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
\ No newline at end of file
diff --git a/fuchsia/scripts/license_texts/mips.txt b/fuchsia/scripts/license_texts/mips.txt
new file mode 100644
index 0000000..3bbf9eb
--- /dev/null
+++ b/fuchsia/scripts/license_texts/mips.txt
@@ -0,0 +1,36 @@
+Copyright (c) 2012
+MIPS Technologies, Inc., California.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+3. Neither the name of the MIPS Technologies, Inc., nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+Authors:
+Branimir Vasic   (bvasic@mips.com)
+Darko Laus       (darko@mips.com)
+Djordje Pesut    (djordje@mips.com)
+Goran Cordasic   (goran@mips.com)
+Nedeljko Babic   (nedeljko.babic imgtec com)
+Mirjana Vulin    (mvulin@mips.com)
+Stanislav Ocovaj (socovaj@mips.com)
+Zoran Lukic      (zoranl@mips.com)
\ No newline at end of file
diff --git a/fuchsia/scripts/license_texts/oggparse_ahlberg_rullgayrd_2005.txt b/fuchsia/scripts/license_texts/oggparse_ahlberg_rullgayrd_2005.txt
new file mode 100644
index 0000000..4af3d44
--- /dev/null
+++ b/fuchsia/scripts/license_texts/oggparse_ahlberg_rullgayrd_2005.txt
@@ -0,0 +1,21 @@
+Copyright (C) 2005  Michael Ahlberg, Måns Rullgård
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/libavcodec/extract_extradata_bsf.c b/libavcodec/extract_extradata_bsf.c
index 46b76df..9fcaf6d 100644
--- a/libavcodec/extract_extradata_bsf.c
+++ b/libavcodec/extract_extradata_bsf.c
@@ -161,7 +161,7 @@
     ret = ff_h2645_packet_split(&s->h2645_pkt, pkt->data, pkt->size,
                                 ctx, 0, 0, ctx->par_in->codec_id, 1, 0);
     if (ret < 0)
-        return ret;
+        goto fail;
 
     for (i = 0; i < s->h2645_pkt.nb_nals; i++) {
         H2645NAL *nal = &s->h2645_pkt.nals[i];
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index a08fe0c..c3ae07b 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -293,6 +293,7 @@
                       int *got_packet)
 {
     X264Context *x4 = ctx->priv_data;
+    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(ctx->pix_fmt);
     x264_nal_t *nal;
     int nnal, i, ret;
     x264_picture_t pic_out = {0};
@@ -852,6 +853,9 @@
 
     x4->params.i_width          = avctx->width;
     x4->params.i_height         = avctx->height;
+#if X264_BUILD >= 153
+    x4->params.i_bitdepth       = av_pix_fmt_desc_get(avctx->pix_fmt)->comp[0].depth;
+#endif
     av_reduce(&sw, &sh, avctx->sample_aspect_ratio.num, avctx->sample_aspect_ratio.den, 4096);
     x4->params.vui.i_sar_width  = sw;
     x4->params.vui.i_sar_height = sh;
@@ -973,6 +977,24 @@
     return 0;
 }
 
+static const enum AVPixelFormat pix_fmts[] = {
+    AV_PIX_FMT_YUV420P,
+    AV_PIX_FMT_YUVJ420P,
+    AV_PIX_FMT_YUV422P,
+    AV_PIX_FMT_YUVJ422P,
+    AV_PIX_FMT_YUV444P,
+    AV_PIX_FMT_YUVJ444P,
+    AV_PIX_FMT_YUV420P10,
+    AV_PIX_FMT_YUV422P10,
+    AV_PIX_FMT_YUV444P10,
+    AV_PIX_FMT_NV12,
+    AV_PIX_FMT_NV16,
+    AV_PIX_FMT_NV20,
+#ifdef X264_CSP_NV21
+    AV_PIX_FMT_NV21,
+#endif
+    AV_PIX_FMT_NONE
+};
 static const enum AVPixelFormat pix_fmts_8bit[] = {
     AV_PIX_FMT_YUV420P,
     AV_PIX_FMT_YUVJ420P,
diff --git a/libavcodec/x86/flac_dsp_gpl.asm b/libavcodec/x86/flac_dsp_gpl.asm
deleted file mode 100644
index e285158..0000000
--- a/libavcodec/x86/flac_dsp_gpl.asm
+++ /dev/null
@@ -1,101 +0,0 @@
-;******************************************************************************
-;* FLAC DSP functions
-;*
-;* Copyright (c) 2014 James Darnley <james.darnley@gmail.com>
-;*
-;* This file is part of FFmpeg.
-;*
-;* FFmpeg is free software; you can redistribute it and/or modify
-;* it under the terms of the GNU General Public License as published by
-;* the Free Software Foundation; either version 2 of the License, or
-;* (at your option) any later version.
-;*
-;* 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 General Public License for more details.
-;*
-;* You should have received a copy of the GNU General Public License along
-;* with FFmpeg; if not, write to the Free Software Foundation, Inc.,
-;* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-;******************************************************************************
-
-%include "libavutil/x86/x86util.asm"
-
-SECTION .text
-
-INIT_XMM sse4
-%if ARCH_X86_64
-    cglobal flac_enc_lpc_16, 5, 7, 8, 0, res, smp, len, order, coefs
-    DECLARE_REG_TMP 5, 6
-    %define length r2d
-
-    movsxd orderq, orderd
-%else
-    cglobal flac_enc_lpc_16, 5, 6, 8, 0, res, smp, len, order, coefs
-    DECLARE_REG_TMP 2, 5
-    %define length r2mp
-%endif
-
-; Here we assume that the maximum order value is 32.  This means that we only
-; need to copy a maximum of 32 samples.  Therefore we let the preprocessor
-; unroll this loop and copy all 32.
-%assign iter 0
-%rep 32/(mmsize/4)
-    movu  m0,         [smpq+iter]
-    movu [resq+iter],  m0
-    %assign iter iter+mmsize
-%endrep
-
-lea  resq,   [resq+orderq*4]
-lea  smpq,   [smpq+orderq*4]
-lea  coefsq, [coefsq+orderq*4]
-sub  length,  orderd
-movd m3,      r5m
-neg  orderq
-
-%define posj t0q
-%define negj t1q
-
-.looplen:
-    pxor m0,   m0
-    pxor m4,   m4
-    pxor m6,   m6
-    mov  posj, orderq
-    xor  negj, negj
-
-    .looporder:
-        movd   m2, [coefsq+posj*4] ; c = coefs[j]
-        SPLATD m2
-        movu   m1, [smpq+negj*4-4] ; s = smp[i-j-1]
-        movu   m5, [smpq+negj*4-4+mmsize]
-        movu   m7, [smpq+negj*4-4+mmsize*2]
-        pmulld m1,  m2
-        pmulld m5,  m2
-        pmulld m7,  m2
-        paddd  m0,  m1             ; p += c * s
-        paddd  m4,  m5
-        paddd  m6,  m7
-
-        dec    negj
-        inc    posj
-    jnz .looporder
-
-    psrad  m0,     m3              ; p >>= shift
-    psrad  m4,     m3
-    psrad  m6,     m3
-    movu   m1,    [smpq]
-    movu   m5,    [smpq+mmsize]
-    movu   m7,    [smpq+mmsize*2]
-    psubd  m1,     m0              ; smp[i] - p
-    psubd  m5,     m4
-    psubd  m7,     m6
-    movu  [resq],  m1              ; res[i] = smp[i] - (p >> shift)
-    movu  [resq+mmsize], m5
-    movu  [resq+mmsize*2], m7
-
-    add resq,    3*mmsize
-    add smpq,    3*mmsize
-    sub length, (3*mmsize)/4
-jg .looplen
-RET
diff --git a/libavfilter/signature.h b/libavfilter/signature.h
deleted file mode 100644
index cc198db..0000000
--- a/libavfilter/signature.h
+++ /dev/null
@@ -1,569 +0,0 @@
-/*
- * Copyright (c) 2017 Gerion Entrup
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * MPEG-7 video signature calculation and lookup filter
- */
-
-#ifndef AVFILTER_SIGNATURE_H
-#define AVFILTER_SIGNATURE_H
-
-#include <float.h>
-#include "libavutil/common.h"
-#include "libavutil/opt.h"
-#include "libavutil/timestamp.h"
-#include "avfilter.h"
-#include "internal.h"
-
-#define ELEMENT_COUNT 10
-#define SIGELEM_SIZE 380
-#define DIFFELEM_SIZE 348 /* SIGELEM_SIZE - elem_a1 - elem_a2 */
-#define COARSE_SIZE 90
-
-enum lookup_mode {
-    MODE_OFF,
-    MODE_FULL,
-    MODE_FAST,
-    NB_LOOKUP_MODE
-};
-
-enum formats {
-    FORMAT_BINARY,
-    FORMAT_XML,
-    NB_FORMATS
-};
-
-typedef struct Point {
-    uint8_t x;
-    uint8_t y;
-} Point;
-
-typedef struct Block {
-    Point up;
-    Point to;
-} Block;
-
-typedef struct ElemCat {
-    int av_elem; /* average element category */
-    short left_count; /* count of blocks that will be added together */
-    short block_count; /* count of blocks per element */
-    short elem_count;
-    const Block* blocks;
-} ElemCat;
-
-typedef struct FineSignature {
-    struct FineSignature* next;
-    struct FineSignature* prev;
-    uint64_t pts;
-    uint32_t index; /* needed for xmlexport */
-    uint8_t confidence;
-    uint8_t words[5];
-    uint8_t framesig[SIGELEM_SIZE/5];
-} FineSignature;
-
-typedef struct CoarseSignature {
-    uint8_t data[5][31]; /* 5 words with min. 243 bit */
-    struct FineSignature* first; /* associated Finesignatures */
-    struct FineSignature* last;
-    struct CoarseSignature* next;
-} CoarseSignature;
-
-/* lookup types */
-typedef struct MatchingInfo {
-    double meandist;
-    double framerateratio; /* second/first */
-    int score;
-    int offset;
-    int matchframes; /* number of matching frames */
-    int whole;
-    struct FineSignature* first;
-    struct FineSignature* second;
-    struct MatchingInfo* next;
-} MatchingInfo;
-
-typedef struct StreamContext {
-    AVRational time_base;
-    /* needed for xml_export */
-    int w; /* height */
-    int h; /* width */
-
-    /* overflow protection */
-    int divide;
-
-    FineSignature* finesiglist;
-    FineSignature* curfinesig;
-
-    CoarseSignature* coarsesiglist;
-    CoarseSignature* coarseend; /* needed for xml export */
-    /* helpers to store the alternating signatures */
-    CoarseSignature* curcoarsesig1;
-    CoarseSignature* curcoarsesig2;
-
-    int coarsecount; /* counter from 0 to 89 */
-    int midcoarse;   /* whether it is a coarsesignature beginning from 45 + i * 90 */
-    uint32_t lastindex; /* helper to store amount of frames */
-
-    int exported; /* boolean whether stream already exported */
-} StreamContext;
-
-typedef struct SignatureContext {
-    const AVClass *class;
-    /* input parameters */
-    int mode;
-    int nb_inputs;
-    char *filename;
-    int format;
-    int thworddist;
-    int thcomposdist;
-    int thl1;
-    int thdi;
-    int thit;
-    /* end input parameters */
-
-    uint8_t l1distlut[243*242/2]; /* 243 + 242 + 241 ... */
-    StreamContext* streamcontexts;
-} SignatureContext;
-
-
-static const Block elem_a1_data[] = {
-    {{ 0, 0},{ 7, 7}},
-    {{ 8, 0},{15, 7}},
-    {{ 0, 8},{ 7,15}},
-    {{ 8, 8},{15,15}},
-    {{16, 0},{23, 7}},
-    {{24, 0},{31, 7}},
-    {{16, 8},{23,15}},
-    {{24, 8},{31,15}},
-    {{ 0,16},{ 7,23}},
-    {{ 8,16},{15,23}},
-    {{ 0,24},{ 7,31}},
-    {{ 8,24},{15,31}},
-    {{16,16},{23,23}},
-    {{24,16},{31,23}},
-    {{16,24},{23,31}},
-    {{24,24},{31,31}},
-    {{ 0, 0},{15,15}},
-    {{16, 0},{31,15}},
-    {{ 0,16},{15,31}},
-    {{16,16},{31,31}}
-};
-static const ElemCat elem_a1 = { 1, 1, 1, 20, elem_a1_data };
-
-static const Block elem_a2_data[] = {
-    {{ 2, 2},{ 9, 9}},
-    {{12, 2},{19, 9}},
-    {{22, 2},{29, 9}},
-    {{ 2,12},{ 9,19}},
-    {{12,12},{19,19}},
-    {{22,12},{29,19}},
-    {{ 2,22},{ 9,29}},
-    {{12,22},{19,29}},
-    {{22,22},{29,29}},
-    {{ 9, 9},{22,22}},
-    {{ 6, 6},{25,25}},
-    {{ 3, 3},{28,28}}
-};
-static const ElemCat elem_a2 = { 1, 1, 1, 12, elem_a2_data };
-
-static const Block elem_d1_data[] = {
-    {{ 0, 0},{ 1, 3}},{{ 2, 0},{ 3, 3}},
-    {{ 4, 0},{ 7, 1}},{{ 4, 2},{ 7, 3}},
-    {{ 0, 6},{ 3, 7}},{{ 0, 4},{ 3, 5}},
-    {{ 6, 4},{ 7, 7}},{{ 4, 4},{ 5, 7}},
-    {{ 8, 0},{ 9, 3}},{{10, 0},{11, 3}},
-    {{12, 0},{15, 1}},{{12, 2},{15, 3}},
-    {{ 8, 6},{11, 7}},{{ 8, 4},{11, 5}},
-    {{14, 4},{15, 7}},{{12, 4},{13, 7}},
-    {{ 0, 8},{ 1,11}},{{ 2, 8},{ 3,11}},
-    {{ 4, 8},{ 7, 9}},{{ 4,10},{ 7,11}},
-    {{ 0,14},{ 3,15}},{{ 0,12},{ 3,13}},
-    {{ 6,12},{ 7,15}},{{ 4,12},{ 5,15}},
-    {{ 8, 8},{ 9,11}},{{10, 8},{11,11}},
-    {{12, 8},{15, 9}},{{12,10},{15,11}},
-    {{ 8,14},{11,15}},{{ 8,12},{11,13}},
-    {{14,12},{15,15}},{{12,12},{13,15}},
-    {{16, 0},{19, 1}},{{16, 2},{19, 3}},
-    {{22, 0},{23, 3}},{{20, 0},{21, 3}},
-    {{16, 4},{17, 7}},{{18, 4},{19, 7}},
-    {{20, 6},{23, 7}},{{20, 4},{23, 5}},
-    {{24, 0},{27, 1}},{{24, 2},{27, 3}},
-    {{30, 0},{31, 3}},{{28, 0},{29, 3}},
-    {{24, 4},{25, 7}},{{26, 4},{27, 7}},
-    {{28, 6},{31, 7}},{{28, 4},{31, 5}},
-    {{16, 8},{19, 9}},{{16,10},{19,11}},
-    {{22, 8},{23,11}},{{20, 8},{21,11}},
-    {{16,12},{17,15}},{{18,12},{19,15}},
-    {{20,14},{23,15}},{{20,12},{23,13}},
-    {{24, 8},{27, 9}},{{24,10},{27,11}},
-    {{30, 8},{31,11}},{{28, 8},{29,11}},
-    {{24,12},{25,15}},{{26,12},{27,15}},
-    {{28,14},{31,15}},{{28,12},{31,13}},
-    {{ 0,16},{ 3,17}},{{ 0,18},{ 3,19}},
-    {{ 6,16},{ 7,19}},{{ 4,16},{ 5,19}},
-    {{ 0,20},{ 1,23}},{{ 2,20},{ 3,23}},
-    {{ 4,22},{ 7,23}},{{ 4,20},{ 7,21}},
-    {{ 8,16},{11,17}},{{ 8,18},{11,19}},
-    {{14,16},{15,19}},{{12,16},{13,19}},
-    {{ 8,20},{ 9,23}},{{10,20},{11,23}},
-    {{12,22},{15,23}},{{12,20},{15,21}},
-    {{ 0,24},{ 3,25}},{{ 0,26},{ 3,27}},
-    {{ 6,24},{ 7,27}},{{ 4,24},{ 5,27}},
-    {{ 0,28},{ 1,31}},{{ 2,28},{ 3,31}},
-    {{ 4,30},{ 7,31}},{{ 4,28},{ 7,29}},
-    {{ 8,24},{11,25}},{{ 8,26},{11,27}},
-    {{14,24},{15,27}},{{12,24},{13,27}},
-    {{ 8,28},{ 9,31}},{{10,28},{11,31}},
-    {{12,30},{15,31}},{{12,28},{15,29}},
-    {{16,16},{17,19}},{{18,16},{19,19}},
-    {{20,16},{23,17}},{{20,18},{23,19}},
-    {{16,22},{19,23}},{{16,20},{19,21}},
-    {{22,20},{23,23}},{{20,20},{21,23}},
-    {{24,16},{25,19}},{{26,16},{27,19}},
-    {{28,16},{31,17}},{{28,18},{31,19}},
-    {{24,22},{27,23}},{{24,20},{27,21}},
-    {{30,20},{31,23}},{{28,20},{29,23}},
-    {{16,24},{17,27}},{{18,24},{19,27}},
-    {{20,24},{23,25}},{{20,26},{23,27}},
-    {{16,30},{19,31}},{{16,28},{19,29}},
-    {{22,28},{23,31}},{{20,28},{21,31}},
-    {{24,24},{25,27}},{{26,24},{27,27}},
-    {{28,24},{31,25}},{{28,26},{31,27}},
-    {{24,30},{27,31}},{{24,28},{27,29}},
-    {{30,28},{31,31}},{{28,28},{29,31}},
-    {{ 2, 2},{ 3, 5}},{{ 4, 2},{ 5, 5}},
-    {{ 6, 2},{ 9, 3}},{{ 6, 4},{ 9, 5}},
-    {{ 2, 8},{ 5, 9}},{{ 2, 6},{ 5, 7}},
-    {{ 8, 6},{ 9, 9}},{{ 6, 6},{ 7, 9}},
-    {{12, 2},{13, 5}},{{14, 2},{15, 5}},
-    {{16, 2},{19, 3}},{{16, 4},{19, 5}},
-    {{12, 8},{15, 9}},{{12, 6},{15, 7}},
-    {{18, 6},{19, 9}},{{16, 6},{17, 9}},
-    {{22, 2},{23, 5}},{{24, 2},{25, 5}},
-    {{26, 2},{29, 3}},{{26, 4},{29, 5}},
-    {{22, 8},{25, 9}},{{22, 6},{25, 7}},
-    {{28, 6},{29, 9}},{{26, 6},{27, 9}},
-    {{ 2,12},{ 3,15}},{{ 4,12},{ 5,15}},
-    {{ 6,12},{ 9,13}},{{ 6,14},{ 9,15}},
-    {{ 2,18},{ 5,19}},{{ 2,16},{ 5,17}},
-    {{ 8,16},{ 9,19}},{{ 6,16},{ 7,19}},
-    {{12,12},{15,13}},{{12,14},{15,15}},
-    {{16,12},{19,13}},{{16,14},{19,15}},
-    {{12,18},{15,19}},{{12,16},{15,17}},
-    {{16,18},{19,19}},{{16,16},{19,17}},
-    {{22,12},{23,15}},{{24,12},{25,15}},
-    {{26,12},{29,13}},{{26,14},{29,15}},
-    {{22,18},{25,19}},{{22,16},{25,17}},
-    {{28,16},{29,19}},{{26,16},{27,19}},
-    {{ 2,22},{ 3,25}},{{ 4,22},{ 5,25}},
-    {{ 6,22},{ 9,23}},{{ 6,24},{ 9,25}},
-    {{ 2,28},{ 5,29}},{{ 2,26},{ 5,27}},
-    {{ 8,26},{ 9,29}},{{ 6,26},{ 7,29}},
-    {{12,22},{13,25}},{{14,22},{15,25}},
-    {{16,22},{19,23}},{{16,24},{19,25}},
-    {{12,28},{15,29}},{{12,26},{15,27}},
-    {{18,26},{19,29}},{{16,26},{17,29}},
-    {{22,22},{23,25}},{{24,22},{25,25}},
-    {{26,22},{29,23}},{{26,24},{29,25}},
-    {{22,28},{25,29}},{{22,26},{25,27}},
-    {{28,26},{29,29}},{{26,26},{27,29}},
-    {{ 7, 7},{10, 8}},{{ 7, 9},{10,10}},
-    {{11, 7},{12,10}},{{13, 7},{14,10}},
-    {{ 7,11},{ 8,14}},{{ 9,11},{10,14}},
-    {{11,11},{14,12}},{{11,13},{14,14}},
-    {{17, 7},{20, 8}},{{17, 9},{20,10}},
-    {{21, 7},{22,10}},{{23, 7},{24,10}},
-    {{17,11},{18,14}},{{19,11},{20,14}},
-    {{21,11},{24,12}},{{21,13},{24,14}},
-    {{ 7,17},{10,18}},{{ 7,19},{10,20}},
-    {{11,17},{12,20}},{{13,17},{14,20}},
-    {{ 7,21},{ 8,24}},{{ 9,21},{10,24}},
-    {{11,21},{14,22}},{{11,23},{14,24}},
-    {{17,17},{20,18}},{{17,19},{20,20}},
-    {{21,17},{22,20}},{{23,17},{24,20}},
-    {{17,21},{18,24}},{{19,21},{20,24}},
-    {{21,21},{24,22}},{{21,23},{24,24}}
-};
-static const ElemCat elem_d1 = { 0, 1, 2, 116, elem_d1_data };
-
-static const Block elem_d2_data[] = {
-    {{ 0, 0},{ 3, 3}},{{ 4, 4},{ 7, 7}},{{ 4, 0},{ 7, 3}},{{ 0, 4},{ 3, 7}},
-    {{ 8, 0},{11, 3}},{{12, 4},{15, 7}},{{12, 0},{15, 3}},{{ 8, 4},{11, 7}},
-    {{16, 0},{19, 3}},{{20, 4},{23, 7}},{{20, 0},{23, 3}},{{16, 4},{19, 7}},
-    {{24, 0},{27, 3}},{{28, 4},{31, 7}},{{28, 0},{31, 3}},{{24, 4},{27, 7}},
-    {{ 0, 8},{ 3,11}},{{ 4,12},{ 7,15}},{{ 4, 8},{ 7,11}},{{ 0,12},{ 3,15}},
-    {{ 8, 8},{11,11}},{{12,12},{15,15}},{{12, 8},{15,11}},{{ 8,12},{11,15}},
-    {{16, 8},{19,11}},{{20,12},{23,15}},{{20, 8},{23,11}},{{16,12},{19,15}},
-    {{24, 8},{27,11}},{{28,12},{31,15}},{{28, 8},{31,11}},{{24,12},{27,15}},
-    {{ 0,16},{ 3,19}},{{ 4,20},{ 7,23}},{{ 4,16},{ 7,19}},{{ 0,20},{ 3,23}},
-    {{ 8,16},{11,19}},{{12,20},{15,23}},{{12,16},{15,19}},{{ 8,20},{11,23}},
-    {{16,16},{19,19}},{{20,20},{23,23}},{{20,16},{23,19}},{{16,20},{19,23}},
-    {{24,16},{27,19}},{{28,20},{31,23}},{{28,16},{31,19}},{{24,20},{27,23}},
-    {{ 0,24},{ 3,27}},{{ 4,28},{ 7,31}},{{ 4,24},{ 7,27}},{{ 0,28},{ 3,31}},
-    {{ 8,24},{11,27}},{{12,28},{15,31}},{{12,24},{15,27}},{{ 8,28},{11,31}},
-    {{16,24},{19,27}},{{20,28},{23,31}},{{20,24},{23,27}},{{16,28},{19,31}},
-    {{24,24},{27,27}},{{28,28},{31,31}},{{28,24},{31,27}},{{24,28},{27,31}},
-    {{ 4, 4},{ 7, 7}},{{ 8, 8},{11,11}},{{ 8, 4},{11, 7}},{{ 4, 8},{ 7,11}},
-    {{12, 4},{15, 7}},{{16, 8},{19,11}},{{16, 4},{19, 7}},{{12, 8},{15,11}},
-    {{20, 4},{23, 7}},{{24, 8},{27,11}},{{24, 4},{27, 7}},{{20, 8},{23,11}},
-    {{ 4,12},{ 7,15}},{{ 8,16},{11,19}},{{ 8,12},{11,15}},{{ 4,16},{ 7,19}},
-    {{12,12},{15,15}},{{16,16},{19,19}},{{16,12},{19,15}},{{12,16},{15,19}},
-    {{20,12},{23,15}},{{24,16},{27,19}},{{24,12},{27,15}},{{20,16},{23,19}},
-    {{ 4,20},{ 7,23}},{{ 8,24},{11,27}},{{ 8,20},{11,23}},{{ 4,24},{ 7,27}},
-    {{12,20},{15,23}},{{16,24},{19,27}},{{16,20},{19,23}},{{12,24},{15,27}},
-    {{20,20},{23,23}},{{24,24},{27,27}},{{24,20},{27,23}},{{20,24},{23,27}}
-};
-static const ElemCat elem_d2 = { 0, 2, 4, 25, elem_d2_data };
-
-static const Block elem_d3_data[] = {
-    {{ 1, 1},{10,10}},{{11, 1},{20,10}},
-    {{ 1, 1},{10,10}},{{21, 1},{30,10}},
-    {{ 1, 1},{10,10}},{{ 1,11},{10,20}},
-    {{ 1, 1},{10,10}},{{11,11},{20,20}},
-    {{ 1, 1},{10,10}},{{21,11},{30,20}},
-    {{ 1, 1},{10,10}},{{ 1,21},{10,30}},
-    {{ 1, 1},{10,10}},{{11,21},{20,30}},
-    {{ 1, 1},{10,10}},{{21,21},{30,30}},
-    {{11, 1},{20,10}},{{21, 1},{30,10}},
-    {{11, 1},{20,10}},{{ 1,11},{10,20}},
-    {{11, 1},{20,10}},{{11,11},{20,20}},
-    {{11, 1},{20,10}},{{21,11},{30,20}},
-    {{11, 1},{20,10}},{{ 1,21},{10,30}},
-    {{11, 1},{20,10}},{{11,21},{20,30}},
-    {{11, 1},{20,10}},{{21,21},{30,30}},
-    {{21, 1},{30,10}},{{ 1,11},{10,20}},
-    {{21, 1},{30,10}},{{11,11},{20,20}},
-    {{21, 1},{30,10}},{{21,11},{30,20}},
-    {{21, 1},{30,10}},{{ 1,21},{10,30}},
-    {{21, 1},{30,10}},{{11,21},{20,30}},
-    {{21, 1},{30,10}},{{21,21},{30,30}},
-    {{ 1,11},{10,20}},{{11,11},{20,20}},
-    {{ 1,11},{10,20}},{{21,11},{30,20}},
-    {{ 1,11},{10,20}},{{ 1,21},{10,30}},
-    {{ 1,11},{10,20}},{{11,21},{20,30}},
-    {{ 1,11},{10,20}},{{21,21},{30,30}},
-    {{11,11},{20,20}},{{21,11},{30,20}},
-    {{11,11},{20,20}},{{ 1,21},{10,30}},
-    {{11,11},{20,20}},{{11,21},{20,30}},
-    {{11,11},{20,20}},{{21,21},{30,30}},
-    {{21,11},{30,20}},{{ 1,21},{10,30}},
-    {{21,11},{30,20}},{{11,21},{20,30}},
-    {{21,11},{30,20}},{{21,21},{30,30}},
-    {{ 1,21},{10,30}},{{11,21},{20,30}},
-    {{ 1,21},{10,30}},{{21,21},{30,30}},
-    {{11,21},{20,30}},{{21,21},{30,30}}
-};
-static const ElemCat elem_d3 = { 0, 1, 2, 36, elem_d3_data };
-
-static const Block elem_d4_data[] = {
-    {{ 7,13},{12,18}},{{19,13},{24,18}},
-    {{13, 7},{18,12}},{{13,19},{18,24}},
-    {{ 7, 7},{12,12}},{{19,19},{24,24}},
-    {{19, 7},{24,12}},{{ 7,19},{12,24}},
-    {{13, 7},{18,12}},{{19,13},{24,18}},
-    {{19,13},{24,18}},{{13,19},{18,24}},
-    {{13,19},{18,24}},{{ 7,13},{12,18}},
-    {{ 7,13},{12,18}},{{13, 7},{18,12}},
-    {{ 7, 7},{12,12}},{{19, 7},{24,12}},
-    {{19, 7},{24,12}},{{19,19},{24,24}},
-    {{19,19},{24,24}},{{ 7,19},{12,24}},
-    {{ 7,19},{12,24}},{{ 7, 7},{12,12}},
-    {{13,13},{18,18}},{{13, 1},{18, 6}},
-    {{13,13},{18,18}},{{25,13},{30,18}},
-    {{13,13},{18,18}},{{13,25},{18,30}},
-    {{13,13},{18,18}},{{ 1,13},{ 6,18}},
-    {{13, 1},{18, 6}},{{13,25},{18,30}},
-    {{ 1,13},{ 6,18}},{{25,13},{30,18}},
-    {{ 7, 1},{12, 6}},{{19, 1},{24, 6}},
-    {{ 7,25},{12,30}},{{19,25},{24,30}},
-    {{ 1, 7},{ 6,12}},{{ 1,19},{ 6,24}},
-    {{25, 7},{30,12}},{{25,19},{30,24}},
-    {{ 7, 1},{12, 6}},{{ 1, 7},{ 6,12}},
-    {{19, 1},{24, 6}},{{25, 7},{30,12}},
-    {{25,19},{30,24}},{{19,25},{24,30}},
-    {{ 1,19},{ 6,24}},{{ 7,25},{12,30}},
-    {{ 1, 1},{ 6, 6}},{{25, 1},{30, 6}},
-    {{25, 1},{30, 6}},{{25,25},{30,30}},
-    {{25,25},{30,30}},{{ 1,25},{ 6,30}},
-    {{ 1,25},{ 6,30}},{{ 1, 1},{ 6, 6}}
-};
-static const ElemCat elem_d4 = { 0, 1, 2, 30, elem_d4_data };
-
-static const Block elem_d5_data[] = {
-    {{ 1, 1},{10, 3}},{{ 1, 4},{ 3, 7}},{{ 8, 4},{10, 7}},{{ 1, 8},{10,10}},{{ 4, 4},{ 7, 7}},
-    {{11, 1},{20, 3}},{{11, 4},{13, 7}},{{18, 4},{20, 7}},{{11, 8},{20,10}},{{14, 4},{17, 7}},
-    {{21, 1},{30, 3}},{{21, 4},{23, 7}},{{28, 4},{30, 7}},{{21, 8},{30,10}},{{24, 4},{27, 7}},
-    {{ 1,11},{10,13}},{{ 1,14},{ 3,17}},{{ 8,14},{10,17}},{{ 1,18},{10,20}},{{ 4,14},{ 7,17}},
-    {{11,11},{20,13}},{{11,14},{13,17}},{{18,14},{20,17}},{{11,18},{20,20}},{{14,14},{17,17}},
-    {{21,11},{30,13}},{{21,14},{23,17}},{{28,14},{30,17}},{{21,18},{30,20}},{{24,14},{27,17}},
-    {{ 1,21},{10,23}},{{ 1,24},{ 3,27}},{{ 8,24},{10,27}},{{ 1,28},{10,30}},{{ 4,24},{ 7,27}},
-    {{11,21},{20,23}},{{11,24},{13,27}},{{18,24},{20,27}},{{11,28},{20,30}},{{14,24},{17,27}},
-    {{21,21},{30,23}},{{21,24},{23,27}},{{28,24},{30,27}},{{21,28},{30,30}},{{24,24},{27,27}},
-    {{ 6, 6},{15, 8}},{{ 6, 9},{ 8,12}},{{13, 9},{15,12}},{{ 6,13},{15,15}},{{ 9, 9},{12,12}},
-    {{16, 6},{25, 8}},{{16, 9},{18,12}},{{23, 9},{25,12}},{{16,13},{25,15}},{{19, 9},{22,12}},
-    {{ 6,16},{15,18}},{{ 6,19},{ 8,22}},{{13,19},{15,22}},{{ 6,23},{15,25}},{{ 9,19},{12,22}},
-    {{16,16},{25,18}},{{16,19},{18,22}},{{23,19},{25,22}},{{16,23},{25,25}},{{19,19},{22,22}},
-    {{ 6, 1},{15, 3}},{{ 6, 4},{ 8, 7}},{{13, 4},{15, 7}},{{ 6, 8},{15,10}},{{ 9, 4},{12, 7}},
-    {{16, 1},{25, 3}},{{16, 4},{18, 7}},{{23, 4},{25, 7}},{{16, 8},{25,10}},{{19, 4},{22, 7}},
-    {{ 1, 6},{10, 8}},{{ 1, 9},{ 3,12}},{{ 8, 9},{10,12}},{{ 1,13},{10,15}},{{ 4, 9},{ 7,12}},
-    {{11, 6},{20, 8}},{{11, 9},{13,12}},{{18, 9},{20,12}},{{11,13},{20,15}},{{14, 9},{17,12}},
-    {{21, 6},{30, 8}},{{21, 9},{23,12}},{{28, 9},{30,12}},{{21,13},{30,15}},{{24, 9},{27,12}},
-    {{ 6,11},{15,13}},{{ 6,14},{ 8,17}},{{13,14},{15,17}},{{ 6,18},{15,20}},{{ 9,14},{12,17}},
-    {{16,11},{25,13}},{{16,14},{18,17}},{{23,14},{25,17}},{{16,18},{25,20}},{{19,14},{22,17}},
-    {{ 1,16},{10,18}},{{ 1,19},{ 3,22}},{{ 8,19},{10,22}},{{ 1,23},{10,25}},{{ 4,19},{ 7,22}},
-    {{11,16},{20,18}},{{11,19},{13,22}},{{18,19},{20,22}},{{11,23},{20,25}},{{14,19},{17,22}},
-    {{21,16},{30,18}},{{21,19},{23,22}},{{28,19},{30,22}},{{21,23},{30,25}},{{24,19},{27,22}},
-    {{ 6,21},{15,23}},{{ 6,24},{ 8,27}},{{13,24},{15,27}},{{ 6,28},{15,30}},{{ 9,24},{12,27}},
-    {{16,21},{25,23}},{{16,24},{18,27}},{{23,24},{25,27}},{{16,28},{25,30}},{{19,24},{22,27}},
-    {{ 2, 2},{14, 6}},{{ 2, 7},{ 6, 9}},{{10, 7},{14, 9}},{{ 2,10},{14,14}},{{ 7, 7},{ 9, 9}},
-    {{ 7, 2},{19, 6}},{{ 7, 7},{11, 9}},{{15, 7},{19, 9}},{{ 7,10},{19,14}},{{12, 7},{14, 9}},
-    {{12, 2},{24, 6}},{{12, 7},{16, 9}},{{20, 7},{24, 9}},{{12,10},{24,14}},{{17, 7},{19, 9}},
-    {{17, 2},{29, 6}},{{17, 7},{21, 9}},{{25, 7},{29, 9}},{{17,10},{29,14}},{{22, 7},{24, 9}},
-    {{ 2, 7},{14,11}},{{ 2,12},{ 6,14}},{{10,12},{14,14}},{{ 2,15},{14,19}},{{ 7,12},{ 9,14}},
-    {{ 7, 7},{19,11}},{{ 7,12},{11,14}},{{15,12},{19,14}},{{ 7,15},{19,19}},{{12,12},{14,14}},
-    {{12, 7},{24,11}},{{12,12},{16,14}},{{20,12},{24,14}},{{12,15},{24,19}},{{17,12},{19,14}},
-    {{17, 7},{29,11}},{{17,12},{21,14}},{{25,12},{29,14}},{{17,15},{29,19}},{{22,12},{24,14}},
-    {{ 2,12},{14,16}},{{ 2,17},{ 6,19}},{{10,17},{14,19}},{{ 2,20},{14,24}},{{ 7,17},{ 9,19}},
-    {{ 7,12},{19,16}},{{ 7,17},{11,19}},{{15,17},{19,19}},{{ 7,20},{19,24}},{{12,17},{14,19}},
-    {{12,12},{24,16}},{{12,17},{16,19}},{{20,17},{24,19}},{{12,20},{24,24}},{{17,17},{19,19}},
-    {{17,12},{29,16}},{{17,17},{21,19}},{{25,17},{29,19}},{{17,20},{29,24}},{{22,17},{24,19}},
-    {{ 2,17},{14,21}},{{ 2,22},{ 6,24}},{{10,22},{14,24}},{{ 2,25},{14,29}},{{ 7,22},{ 9,24}},
-    {{ 7,17},{19,21}},{{ 7,22},{11,24}},{{15,22},{19,24}},{{ 7,25},{19,29}},{{12,22},{14,24}},
-    {{12,17},{24,21}},{{12,22},{16,24}},{{20,22},{24,24}},{{12,25},{24,29}},{{17,22},{19,24}},
-    {{17,17},{29,21}},{{17,22},{21,24}},{{25,22},{29,24}},{{17,25},{29,29}},{{22,22},{24,24}},
-    {{ 8, 3},{13, 4}},{{ 8, 5},{ 9, 6}},{{12, 5},{13, 6}},{{ 8, 7},{13, 8}},{{10, 5},{11, 6}},
-    {{13, 3},{18, 4}},{{13, 5},{14, 6}},{{17, 5},{18, 6}},{{13, 7},{18, 8}},{{15, 5},{16, 6}},
-    {{18, 3},{23, 4}},{{18, 5},{19, 6}},{{22, 5},{23, 6}},{{18, 7},{23, 8}},{{20, 5},{21, 6}},
-    {{ 3, 8},{ 8, 9}},{{ 3,10},{ 4,11}},{{ 7,10},{ 8,11}},{{ 3,12},{ 8,13}},{{ 5,10},{ 6,11}},
-    {{ 8, 8},{13, 9}},{{ 8,10},{ 9,11}},{{12,10},{13,11}},{{ 8,12},{13,13}},{{10,10},{11,11}},
-    {{13, 8},{18, 9}},{{13,10},{14,11}},{{17,10},{18,11}},{{13,12},{18,13}},{{15,10},{16,11}},
-    {{18, 8},{23, 9}},{{18,10},{19,11}},{{22,10},{23,11}},{{18,12},{23,13}},{{20,10},{21,11}},
-    {{23, 8},{28, 9}},{{23,10},{24,11}},{{27,10},{28,11}},{{23,12},{28,13}},{{25,10},{26,11}},
-    {{ 3,13},{ 8,14}},{{ 3,15},{ 4,16}},{{ 7,15},{ 8,16}},{{ 3,17},{ 8,18}},{{ 5,15},{ 6,16}},
-    {{ 8,13},{13,14}},{{ 8,15},{ 9,16}},{{12,15},{13,16}},{{ 8,17},{13,18}},{{10,15},{11,16}},
-    {{13,13},{18,14}},{{13,15},{14,16}},{{17,15},{18,16}},{{13,17},{18,18}},{{15,15},{16,16}},
-    {{18,13},{23,14}},{{18,15},{19,16}},{{22,15},{23,16}},{{18,17},{23,18}},{{20,15},{21,16}},
-    {{23,13},{28,14}},{{23,15},{24,16}},{{27,15},{28,16}},{{23,17},{28,18}},{{25,15},{26,16}},
-    {{ 3,18},{ 8,19}},{{ 3,20},{ 4,21}},{{ 7,20},{ 8,21}},{{ 3,22},{ 8,23}},{{ 5,20},{ 6,21}},
-    {{ 8,18},{13,19}},{{ 8,20},{ 9,21}},{{12,20},{13,21}},{{ 8,22},{13,23}},{{10,20},{11,21}},
-    {{13,18},{18,19}},{{13,20},{14,21}},{{17,20},{18,21}},{{13,22},{18,23}},{{15,20},{16,21}},
-    {{18,18},{23,19}},{{18,20},{19,21}},{{22,20},{23,21}},{{18,22},{23,23}},{{20,20},{21,21}},
-    {{23,18},{28,19}},{{23,20},{24,21}},{{27,20},{28,21}},{{23,22},{28,23}},{{25,20},{26,21}},
-    {{ 8,23},{13,24}},{{ 8,25},{ 9,26}},{{12,25},{13,26}},{{ 8,27},{13,28}},{{10,25},{11,26}},
-    {{13,23},{18,24}},{{13,25},{14,26}},{{17,25},{18,26}},{{13,27},{18,28}},{{15,25},{16,26}},
-    {{18,23},{23,24}},{{18,25},{19,26}},{{22,25},{23,26}},{{18,27},{23,28}},{{20,25},{21,26}}
-};
-static const ElemCat elem_d5 = { 0, 4, 5, 62, elem_d5_data };
-
-static const Block elem_d6_data[] = {
-    {{ 3, 5},{12,10}},{{ 5, 3},{10,12}},
-    {{11, 5},{20,10}},{{13, 3},{18,12}},
-    {{19, 5},{28,10}},{{21, 3},{26,12}},
-    {{ 3,13},{12,18}},{{ 5,11},{10,20}},
-    {{11,13},{20,18}},{{13,11},{18,20}},
-    {{19,13},{28,18}},{{21,11},{26,20}},
-    {{ 3,21},{12,26}},{{ 5,19},{10,28}},
-    {{11,21},{20,26}},{{13,19},{18,28}},
-    {{19,21},{28,26}},{{21,19},{26,28}}
-};
-static const ElemCat elem_d6 = { 0, 1, 2, 9, elem_d6_data };
-
-static const Block elem_d7_data[] = {
-    {{ 0, 4},{ 3, 7}},{{ 8, 4},{11, 7}},{{ 4, 4},{ 7, 7}},
-    {{ 4, 0},{ 7, 3}},{{ 4, 8},{ 7,11}},{{ 4, 4},{ 7, 7}},
-    {{ 5, 4},{ 8, 7}},{{13, 4},{16, 7}},{{ 9, 4},{12, 7}},
-    {{ 9, 0},{12, 3}},{{ 9, 8},{12,11}},{{ 9, 4},{12, 7}},
-    {{10, 4},{13, 7}},{{18, 4},{21, 7}},{{14, 4},{17, 7}},
-    {{14, 0},{17, 3}},{{14, 8},{17,11}},{{14, 4},{17, 7}},
-    {{15, 4},{18, 7}},{{23, 4},{26, 7}},{{19, 4},{22, 7}},
-    {{19, 0},{22, 3}},{{19, 8},{22,11}},{{19, 4},{22, 7}},
-    {{20, 4},{23, 7}},{{28, 4},{31, 7}},{{24, 4},{27, 7}},
-    {{24, 0},{27, 3}},{{24, 8},{27,11}},{{24, 4},{27, 7}},
-    {{ 0, 9},{ 3,12}},{{ 8, 9},{11,12}},{{ 4, 9},{ 7,12}},
-    {{ 4, 5},{ 7, 8}},{{ 4,13},{ 7,16}},{{ 4, 9},{ 7,12}},
-    {{ 5, 9},{ 8,12}},{{13, 9},{16,12}},{{ 9, 9},{12,12}},
-    {{ 9, 5},{12, 8}},{{ 9,13},{12,16}},{{ 9, 9},{12,12}},
-    {{10, 9},{13,12}},{{18, 9},{21,12}},{{14, 9},{17,12}},
-    {{14, 5},{17, 8}},{{14,13},{17,16}},{{14, 9},{17,12}},
-    {{15, 9},{18,12}},{{23, 9},{26,12}},{{19, 9},{22,12}},
-    {{19, 5},{22, 8}},{{19,13},{22,16}},{{19, 9},{22,12}},
-    {{20, 9},{23,12}},{{28, 9},{31,12}},{{24, 9},{27,12}},
-    {{24, 5},{27, 8}},{{24,13},{27,16}},{{24, 9},{27,12}},
-    {{ 0,14},{ 3,17}},{{ 8,14},{11,17}},{{ 4,14},{ 7,17}},
-    {{ 4,10},{ 7,13}},{{ 4,18},{ 7,21}},{{ 4,14},{ 7,17}},
-    {{ 5,14},{ 8,17}},{{13,14},{16,17}},{{ 9,14},{12,17}},
-    {{ 9,10},{12,13}},{{ 9,18},{12,21}},{{ 9,14},{12,17}},
-    {{10,14},{13,17}},{{18,14},{21,17}},{{14,14},{17,17}},
-    {{14,10},{17,13}},{{14,18},{17,21}},{{14,14},{17,17}},
-    {{15,14},{18,17}},{{23,14},{26,17}},{{19,14},{22,17}},
-    {{19,10},{22,13}},{{19,18},{22,21}},{{19,14},{22,17}},
-    {{20,14},{23,17}},{{28,14},{31,17}},{{24,14},{27,17}},
-    {{24,10},{27,13}},{{24,18},{27,21}},{{24,14},{27,17}},
-    {{ 0,19},{ 3,22}},{{ 8,19},{11,22}},{{ 4,19},{ 7,22}},
-    {{ 4,15},{ 7,18}},{{ 4,23},{ 7,26}},{{ 4,19},{ 7,22}},
-    {{ 5,19},{ 8,22}},{{13,19},{16,22}},{{ 9,19},{12,22}},
-    {{ 9,15},{12,18}},{{ 9,23},{12,26}},{{ 9,19},{12,22}},
-    {{10,19},{13,22}},{{18,19},{21,22}},{{14,19},{17,22}},
-    {{14,15},{17,18}},{{14,23},{17,26}},{{14,19},{17,22}},
-    {{15,19},{18,22}},{{23,19},{26,22}},{{19,19},{22,22}},
-    {{19,15},{22,18}},{{19,23},{22,26}},{{19,19},{22,22}},
-    {{20,19},{23,22}},{{28,19},{31,22}},{{24,19},{27,22}},
-    {{24,15},{27,18}},{{24,23},{27,26}},{{24,19},{27,22}},
-    {{ 0,24},{ 3,27}},{{ 8,24},{11,27}},{{ 4,24},{ 7,27}},
-    {{ 4,20},{ 7,23}},{{ 4,28},{ 7,31}},{{ 4,24},{ 7,27}},
-    {{ 5,24},{ 8,27}},{{13,24},{16,27}},{{ 9,24},{12,27}},
-    {{ 9,20},{12,23}},{{ 9,28},{12,31}},{{ 9,24},{12,27}},
-    {{10,24},{13,27}},{{18,24},{21,27}},{{14,24},{17,27}},
-    {{14,20},{17,23}},{{14,28},{17,31}},{{14,24},{17,27}},
-    {{15,24},{18,27}},{{23,24},{26,27}},{{19,24},{22,27}},
-    {{19,20},{22,23}},{{19,28},{22,31}},{{19,24},{22,27}},
-    {{20,24},{23,27}},{{28,24},{31,27}},{{24,24},{27,27}},
-    {{24,20},{27,23}},{{24,28},{27,31}},{{24,24},{27,27}}
-};
-static const ElemCat elem_d7 = { 0, 2, 3, 50, elem_d7_data };
-
-static const Block elem_d8_data[] = {
-    {{ 0, 0},{ 7, 3}},{{ 0, 4},{ 7, 7}},
-    {{ 8, 0},{11, 7}},{{12, 0},{15, 7}},
-    {{ 0, 8},{ 3,15}},{{ 4, 8},{ 7,15}},
-    {{ 8, 8},{15,11}},{{ 8,12},{15,15}},
-    {{16, 0},{19, 7}},{{20, 0},{23, 7}},
-    {{24, 0},{31, 3}},{{24, 4},{31, 7}},
-    {{16, 8},{23,11}},{{16,12},{23,15}},
-    {{24, 8},{27,15}},{{28, 8},{31,15}},
-    {{ 0,16},{ 3,23}},{{ 4,16},{ 7,23}},
-    {{ 8,16},{15,19}},{{ 8,20},{15,23}},
-    {{ 0,24},{ 7,27}},{{ 0,28},{ 7,31}},
-    {{ 8,24},{11,31}},{{12,24},{15,31}},
-    {{16,16},{23,19}},{{16,20},{23,23}},
-    {{24,16},{27,23}},{{28,16},{31,23}},
-    {{16,24},{19,31}},{{20,24},{23,31}},
-    {{24,24},{31,27}},{{24,28},{31,31}},
-    {{ 0, 0},{ 7,15}},{{ 8, 0},{15,15}},
-    {{16, 0},{31, 7}},{{16, 8},{31,15}},
-    {{ 0,16},{15,23}},{{ 0,24},{15,31}},
-    {{16,16},{23,31}},{{24,16},{31,31}}
-};
-static const ElemCat elem_d8 = { 0, 1, 2, 20, elem_d8_data };
-
-static const ElemCat* elements[ELEMENT_COUNT] = { &elem_a1, &elem_a2,
-                                                  &elem_d1, &elem_d2, &elem_d3, &elem_d4,
-                                                  &elem_d5, &elem_d6, &elem_d7, &elem_d8 };
-#endif /* AVFILTER_SIGNATURE_H */
diff --git a/libavfilter/signature_lookup.c b/libavfilter/signature_lookup.c
deleted file mode 100644
index 272c717..0000000
--- a/libavfilter/signature_lookup.c
+++ /dev/null
@@ -1,580 +0,0 @@
-/*
- * Copyright (c) 2017 Gerion Entrup
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * MPEG-7 video signature calculation and lookup filter
- */
-
-#include "signature.h"
-
-#define HOUGH_MAX_OFFSET 90
-#define MAX_FRAMERATE 60
-
-#define DIR_PREV 0
-#define DIR_NEXT 1
-#define DIR_PREV_END 2
-#define DIR_NEXT_END 3
-
-#define STATUS_NULL 0
-#define STATUS_END_REACHED 1
-#define STATUS_BEGIN_REACHED 2
-
-static void fill_l1distlut(uint8_t lut[])
-{
-    int i, j, tmp_i, tmp_j,count;
-    uint8_t dist;
-
-    for (i = 0, count = 0; i < 242; i++) {
-        for (j = i + 1; j < 243; j++, count++) {
-            /* ternary distance between i and j */
-            dist = 0;
-            tmp_i = i; tmp_j = j;
-            do {
-                dist += FFABS((tmp_j % 3) - (tmp_i % 3));
-                tmp_j /= 3;
-                tmp_i /= 3;
-            } while (tmp_i > 0 || tmp_j > 0);
-            lut[count] = dist;
-        }
-    }
-}
-
-static unsigned int intersection_word(const uint8_t *first, const uint8_t *second)
-{
-    unsigned int val=0,i;
-    for (i = 0; i < 28; i += 4) {
-        val += av_popcount( (first[i]   & second[i]  ) << 24 |
-                            (first[i+1] & second[i+1]) << 16 |
-                            (first[i+2] & second[i+2]) << 8  |
-                            (first[i+3] & second[i+3]) );
-    }
-    val += av_popcount( (first[28] & second[28]) << 16 |
-                        (first[29] & second[29]) << 8  |
-                        (first[30] & second[30]) );
-    return val;
-}
-
-static unsigned int union_word(const uint8_t *first, const uint8_t *second)
-{
-    unsigned int val=0,i;
-    for (i = 0; i < 28; i += 4) {
-        val += av_popcount( (first[i]   | second[i]  ) << 24 |
-                            (first[i+1] | second[i+1]) << 16 |
-                            (first[i+2] | second[i+2]) << 8  |
-                            (first[i+3] | second[i+3]) );
-    }
-    val += av_popcount( (first[28] | second[28]) << 16 |
-                        (first[29] | second[29]) << 8  |
-                        (first[30] | second[30]) );
-    return val;
-}
-
-static unsigned int get_l1dist(AVFilterContext *ctx, SignatureContext *sc, const uint8_t *first, const uint8_t *second)
-{
-    unsigned int i;
-    unsigned int dist = 0;
-    uint8_t f, s;
-
-    for (i = 0; i < SIGELEM_SIZE/5; i++) {
-        if (first[i] != second[i]) {
-            f = first[i];
-            s = second[i];
-            if (f > s) {
-                /* little variation of gauss sum formula */
-                dist += sc->l1distlut[243*242/2 - (243-s)*(242-s)/2 + f - s - 1];
-            } else {
-                dist += sc->l1distlut[243*242/2 - (243-f)*(242-f)/2 + s - f - 1];
-            }
-        }
-    }
-    return dist;
-}
-
-/**
- * calculates the jaccard distance and evaluates a pair of coarse signatures as good
- * @return 0 if pair is bad, 1 otherwise
- */
-static int get_jaccarddist(SignatureContext *sc, CoarseSignature *first, CoarseSignature *second)
-{
-    int jaccarddist, i, composdist = 0, cwthcount = 0;
-    for (i = 0; i < 5; i++) {
-        if ((jaccarddist = intersection_word(first->data[i], second->data[i])) > 0) {
-            jaccarddist /= union_word(first->data[i], second->data[i]);
-        }
-        if (jaccarddist >= sc->thworddist) {
-            if (++cwthcount > 2) {
-                /* more than half (5/2) of distances are too wide */
-                return 0;
-            }
-        }
-        composdist += jaccarddist;
-        if (composdist > sc->thcomposdist) {
-            return 0;
-        }
-    }
-    return 1;
-}
-
-/**
- * step through the coarsesignatures as long as a good candidate is found
- * @return 0 if no candidate is found, 1 otherwise
- */
-static int find_next_coarsecandidate(SignatureContext *sc, CoarseSignature *secondstart, CoarseSignature **first, CoarseSignature **second, int start)
-{
-    /* go one coarsesignature foreword */
-    if (!start) {
-        if ((*second)->next) {
-            *second = (*second)->next;
-        } else if ((*first)->next) {
-            *second = secondstart;
-            *first = (*first)->next;
-        } else {
-            return 0;
-        }
-    }
-
-    while (1) {
-        if (get_jaccarddist(sc, *first, *second))
-            return 1;
-
-        /* next signature */
-        if ((*second)->next) {
-            *second = (*second)->next;
-        } else if ((*first)->next) {
-            *second = secondstart;
-            *first = (*first)->next;
-        } else {
-            return 0;
-        }
-    }
-}
-
-/**
- * compares framesignatures and sorts out signatures with a l1 distance above a given threshold.
- * Then tries to find out offset and differences between framerates with a hough transformation
- */
-static MatchingInfo* get_matching_parameters(AVFilterContext *ctx, SignatureContext *sc, FineSignature *first, FineSignature *second)
-{
-    FineSignature *f, *s;
-    size_t i, j, k, l, hmax = 0, score;
-    int framerate, offset, l1dist;
-    double m;
-    MatchingInfo *cands = NULL, *c = NULL;
-
-    struct {
-        uint8_t size;
-        unsigned int dist;
-        FineSignature *a;
-        uint8_t b_pos[COARSE_SIZE];
-        FineSignature *b[COARSE_SIZE];
-    } pairs[COARSE_SIZE];
-
-    typedef struct hspace_elem {
-        int dist;
-        size_t score;
-        FineSignature *a;
-        FineSignature *b;
-    } hspace_elem;
-
-    /* houghspace */
-    hspace_elem** hspace = av_malloc_array(MAX_FRAMERATE, sizeof(hspace_elem *));
-
-    /* initialize houghspace */
-    for (i = 0; i < MAX_FRAMERATE; i++) {
-        hspace[i] = av_malloc_array(2 * HOUGH_MAX_OFFSET + 1, sizeof(hspace_elem));
-        for (j = 0; j < HOUGH_MAX_OFFSET; j++) {
-            hspace[i][j].score = 0;
-            hspace[i][j].dist = 99999;
-        }
-    }
-
-    /* l1 distances */
-    for (i = 0, f = first; i < COARSE_SIZE && f->next; i++, f = f->next) {
-        pairs[i].size = 0;
-        pairs[i].dist = 99999;
-        pairs[i].a = f;
-        for (j = 0, s = second; j < COARSE_SIZE && s->next; j++, s = s->next) {
-            /* l1 distance of finesignature */
-            l1dist = get_l1dist(ctx, sc, f->framesig, s->framesig);
-            if (l1dist < sc->thl1) {
-                if (l1dist < pairs[i].dist) {
-                    pairs[i].size = 1;
-                    pairs[i].dist = l1dist;
-                    pairs[i].b_pos[0] = j;
-                    pairs[i].b[0] = s;
-                } else if (l1dist == pairs[i].dist) {
-                    pairs[i].b[pairs[i].size] = s;
-                    pairs[i].b_pos[pairs[i].size] = j;
-                    pairs[i].size++;
-                }
-            }
-        }
-    }
-    /* last incomplete coarsesignature */
-    if (f->next == NULL) {
-        for (; i < COARSE_SIZE; i++) {
-            pairs[i].size = 0;
-            pairs[i].dist = 99999;
-        }
-    }
-
-    /* hough transformation */
-    for (i = 0; i < COARSE_SIZE; i++) {
-        for (j = 0; j < pairs[i].size; j++) {
-            for (k = i + 1; k < COARSE_SIZE; k++) {
-                for (l = 0; l < pairs[k].size; l++) {
-                    if (pairs[i].b[j] != pairs[k].b[l]) {
-                        /* linear regression */
-                        m = (pairs[k].b_pos[l]-pairs[i].b_pos[j]) / (k-i); /* good value between 0.0 - 2.0 */
-                        framerate = (int) m*30 + 0.5; /* round up to 0 - 60 */
-                        if (framerate>0 && framerate <= MAX_FRAMERATE) {
-                            offset = pairs[i].b_pos[j] - ((int) m*i + 0.5); /* only second part has to be rounded up */
-                            if (offset > -HOUGH_MAX_OFFSET && offset < HOUGH_MAX_OFFSET) {
-                                if (pairs[i].dist < pairs[k].dist) {
-                                    if (pairs[i].dist < hspace[framerate-1][offset+HOUGH_MAX_OFFSET].dist) {
-                                        hspace[framerate-1][offset+HOUGH_MAX_OFFSET].dist = pairs[i].dist;
-                                        hspace[framerate-1][offset+HOUGH_MAX_OFFSET].a = pairs[i].a;
-                                        hspace[framerate-1][offset+HOUGH_MAX_OFFSET].b = pairs[i].b[j];
-                                    }
-                                } else {
-                                    if (pairs[k].dist < hspace[framerate-1][offset+HOUGH_MAX_OFFSET].dist) {
-                                        hspace[framerate-1][offset+HOUGH_MAX_OFFSET].dist = pairs[k].dist;
-                                        hspace[framerate-1][offset+HOUGH_MAX_OFFSET].a = pairs[k].a;
-                                        hspace[framerate-1][offset+HOUGH_MAX_OFFSET].b = pairs[k].b[l];
-                                    }
-                                }
-
-                                score = hspace[framerate-1][offset+HOUGH_MAX_OFFSET].score + 1;
-                                if (score > hmax )
-                                    hmax = score;
-                                hspace[framerate-1][offset+HOUGH_MAX_OFFSET].score = score;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    if (hmax > 0) {
-        hmax = (int) (0.7*hmax);
-        for (i = 0; i < MAX_FRAMERATE; i++) {
-            for (j = 0; j < HOUGH_MAX_OFFSET; j++) {
-                if (hmax < hspace[i][j].score) {
-                    if (c == NULL) {
-                        c = av_malloc(sizeof(MatchingInfo));
-                        if (!c)
-                            av_log(ctx, AV_LOG_FATAL, "Could not allocate memory");
-                        cands = c;
-                    } else {
-                        c->next = av_malloc(sizeof(MatchingInfo));
-                        if (!c->next)
-                            av_log(ctx, AV_LOG_FATAL, "Could not allocate memory");
-                        c = c->next;
-                    }
-                    c->framerateratio = (i+1.0) / 30;
-                    c->score = hspace[i][j].score;
-                    c->offset = j-90;
-                    c->first = hspace[i][j].a;
-                    c->second = hspace[i][j].b;
-                    c->next = NULL;
-
-                    /* not used */
-                    c->meandist = 0;
-                    c->matchframes = 0;
-                    c->whole = 0;
-                }
-            }
-        }
-    }
-    for (i = 0; i < MAX_FRAMERATE; i++) {
-        av_freep(&hspace[i]);
-    }
-    av_freep(&hspace);
-    return cands;
-}
-
-static int iterate_frame(double frr, FineSignature **a, FineSignature **b, int fcount, int *bcount, int dir)
-{
-    int step;
-
-    /* between 1 and 2, because frr is between 1 and 2 */
-    step = ((int) 0.5 + fcount     * frr) /* current frame */
-          -((int) 0.5 + (fcount-1) * frr);/* last frame */
-
-    if (dir == DIR_NEXT) {
-        if (frr >= 1.0) {
-            if ((*a)->next) {
-                *a = (*a)->next;
-            } else {
-                return DIR_NEXT_END;
-            }
-
-            if (step == 1) {
-                if ((*b)->next) {
-                    *b = (*b)->next;
-                    (*bcount)++;
-                } else {
-                    return DIR_NEXT_END;
-                }
-            } else {
-                if ((*b)->next && (*b)->next->next) {
-                    *b = (*b)->next->next;
-                    (*bcount)++;
-                } else {
-                    return DIR_NEXT_END;
-                }
-            }
-        } else {
-            if ((*b)->next) {
-                *b = (*b)->next;
-                (*bcount)++;
-            } else {
-                return DIR_NEXT_END;
-            }
-
-            if (step == 1) {
-                if ((*a)->next) {
-                    *a = (*a)->next;
-                } else {
-                    return DIR_NEXT_END;
-                }
-            } else {
-                if ((*a)->next && (*a)->next->next) {
-                    *a = (*a)->next->next;
-                } else {
-                    return DIR_NEXT_END;
-                }
-            }
-        }
-        return DIR_NEXT;
-    } else {
-        if (frr >= 1.0) {
-            if ((*a)->prev) {
-                *a = (*a)->prev;
-            } else {
-                return DIR_PREV_END;
-            }
-
-            if (step == 1) {
-                if ((*b)->prev) {
-                    *b = (*b)->prev;
-                    (*bcount)++;
-                } else {
-                    return DIR_PREV_END;
-                }
-            } else {
-                if ((*b)->prev && (*b)->prev->prev) {
-                    *b = (*b)->prev->prev;
-                    (*bcount)++;
-                } else {
-                    return DIR_PREV_END;
-                }
-            }
-        } else {
-            if ((*b)->prev) {
-                *b = (*b)->prev;
-                (*bcount)++;
-            } else {
-                return DIR_PREV_END;
-            }
-
-            if (step == 1) {
-                if ((*a)->prev) {
-                    *a = (*a)->prev;
-                } else {
-                    return DIR_PREV_END;
-                }
-            } else {
-                if ((*a)->prev && (*a)->prev->prev) {
-                    *a = (*a)->prev->prev;
-                } else {
-                    return DIR_PREV_END;
-                }
-            }
-        }
-        return DIR_PREV;
-    }
-}
-
-static MatchingInfo evaluate_parameters(AVFilterContext *ctx, SignatureContext *sc, MatchingInfo *infos, MatchingInfo bestmatch, int mode)
-{
-    int dist, distsum = 0, bcount = 1, dir = DIR_NEXT;
-    int fcount = 0, goodfcount = 0, gooda = 0, goodb = 0;
-    double meandist, minmeandist = bestmatch.meandist;
-    int tolerancecount = 0;
-    FineSignature *a, *b, *aprev, *bprev;
-    int status = STATUS_NULL;
-
-    for (; infos != NULL; infos = infos->next) {
-        a = infos->first;
-        b = infos->second;
-        while (1) {
-            dist = get_l1dist(ctx, sc, a->framesig, b->framesig);
-
-            if (dist > sc->thl1) {
-                if (a->confidence >= 1 || b->confidence >= 1) {
-                    /* bad frame (because high different information) */
-                    tolerancecount++;
-                }
-
-                if (tolerancecount > 2) {
-                    a = aprev;
-                    b = bprev;
-                    if (dir == DIR_NEXT) {
-                        /* turn around */
-                        a = infos->first;
-                        b = infos->second;
-                        dir = DIR_PREV;
-                    } else {
-                        break;
-                    }
-                }
-            } else {
-                /* good frame */
-                distsum += dist;
-                goodfcount++;
-                tolerancecount=0;
-
-                aprev = a;
-                bprev = b;
-
-                if (a->confidence < 1) gooda++;
-                if (b->confidence < 1) goodb++;
-            }
-
-            fcount++;
-
-            dir = iterate_frame(infos->framerateratio, &a, &b, fcount, &bcount, dir);
-            if (dir == DIR_NEXT_END) {
-                status = STATUS_END_REACHED;
-                a = infos->first;
-                b = infos->second;
-                dir = iterate_frame(infos->framerateratio, &a, &b, fcount, &bcount, DIR_PREV);
-            }
-
-            if (dir == DIR_PREV_END) {
-                status |= STATUS_BEGIN_REACHED;
-                break;
-            }
-
-            if (sc->thdi != 0 && bcount >= sc->thdi) {
-                break; /* enough frames found */
-            }
-        }
-
-        if (bcount < sc->thdi)
-            continue; /* matching sequence is too short */
-        if ((double) goodfcount / (double) fcount < sc->thit)
-            continue;
-        if ((double) goodfcount*0.5 < FFMAX(gooda, goodb))
-            continue;
-
-        meandist = (double) goodfcount / (double) distsum;
-
-        if (meandist < minmeandist ||
-                status == STATUS_END_REACHED | STATUS_BEGIN_REACHED ||
-                mode == MODE_FAST){
-            minmeandist = meandist;
-            /* bestcandidate in this iteration */
-            bestmatch.meandist = meandist;
-            bestmatch.matchframes = bcount;
-            bestmatch.framerateratio = infos->framerateratio;
-            bestmatch.score = infos->score;
-            bestmatch.offset = infos->offset;
-            bestmatch.first = infos->first;
-            bestmatch.second = infos->second;
-            bestmatch.whole = 0; /* will be set to true later */
-            bestmatch.next = NULL;
-        }
-
-        /* whole sequence is automatically best match */
-        if (status == (STATUS_END_REACHED | STATUS_BEGIN_REACHED)) {
-            bestmatch.whole = 1;
-            break;
-        }
-
-        /* first matching sequence is enough, finding the best one is not necessary */
-        if (mode == MODE_FAST) {
-            break;
-        }
-    }
-    return bestmatch;
-}
-
-static void sll_free(MatchingInfo *sll)
-{
-    void *tmp;
-    while (sll) {
-        tmp = sll;
-        sll = sll->next;
-        av_freep(&tmp);
-    }
-}
-
-static MatchingInfo lookup_signatures(AVFilterContext *ctx, SignatureContext *sc, StreamContext *first, StreamContext *second, int mode)
-{
-    CoarseSignature *cs, *cs2;
-    MatchingInfo *infos;
-    MatchingInfo bestmatch;
-    MatchingInfo *i;
-
-    cs = first->coarsesiglist;
-    cs2 = second->coarsesiglist;
-
-    /* score of bestmatch is 0, if no match is found */
-    bestmatch.score = 0;
-    bestmatch.meandist = 99999;
-    bestmatch.whole = 0;
-
-    fill_l1distlut(sc->l1distlut);
-
-    /* stage 1: coarsesignature matching */
-    if (find_next_coarsecandidate(sc, second->coarsesiglist, &cs, &cs2, 1) == 0)
-        return bestmatch; /* no candidate found */
-    do {
-        av_log(ctx, AV_LOG_DEBUG, "Stage 1: got coarsesignature pair. "
-               "indices of first frame: %"PRIu32" and %"PRIu32"\n",
-               cs->first->index, cs2->first->index);
-        /* stage 2: l1-distance and hough-transform */
-        av_log(ctx, AV_LOG_DEBUG, "Stage 2: calculate matching parameters\n");
-        infos = get_matching_parameters(ctx, sc, cs->first, cs2->first);
-        if (av_log_get_level() == AV_LOG_DEBUG) {
-            for (i = infos; i != NULL; i = i->next) {
-                av_log(ctx, AV_LOG_DEBUG, "Stage 2: matching pair at %"PRIu32" and %"PRIu32", "
-                       "ratio %f, offset %d\n", i->first->index, i->second->index,
-                       i->framerateratio, i->offset);
-            }
-        }
-        /* stage 3: evaluation */
-        av_log(ctx, AV_LOG_DEBUG, "Stage 3: evaluate\n");
-        if (infos) {
-            bestmatch = evaluate_parameters(ctx, sc, infos, bestmatch, mode);
-            av_log(ctx, AV_LOG_DEBUG, "Stage 3: best matching pair at %"PRIu32" and %"PRIu32", "
-                   "ratio %f, offset %d, score %d, %d frames matching\n",
-                   bestmatch.first->index, bestmatch.second->index,
-                   bestmatch.framerateratio, bestmatch.offset, bestmatch.score, bestmatch.matchframes);
-            sll_free(infos);
-        }
-    } while (find_next_coarsecandidate(sc, second->coarsesiglist, &cs, &cs2, 0) && !bestmatch.whole);
-    return bestmatch;
-
-}
diff --git a/libavfilter/tinterlace.h b/libavfilter/tinterlace.h
deleted file mode 100644
index 020887f..0000000
--- a/libavfilter/tinterlace.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2011 Stefano Sabatini
- * Copyright (c) 2010 Baptiste Coudurier
- * Copyright (c) 2003 Michael Zucchi <notzed@ximian.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * temporal field interlace filter, ported from MPlayer/libmpcodecs
- */
-#ifndef AVFILTER_TINTERLACE_H
-#define AVFILTER_TINTERLACE_H
-
-#include "libavutil/bswap.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "drawutils.h"
-#include "avfilter.h"
-
-#define TINTERLACE_FLAG_VLPF 01
-#define TINTERLACE_FLAG_CVLPF 2
-#define TINTERLACE_FLAG_EXACT_TB 4
-#define TINTERLACE_FLAG_BYPASS_IL 8
-
-enum VLPFilter {
-    VLPF_OFF = 0,
-    VLPF_LIN = 1,
-    VLPF_CMP = 2,
-};
-
-enum TInterlaceMode {
-    MODE_MERGE = 0,
-    MODE_DROP_EVEN,
-    MODE_DROP_ODD,
-    MODE_PAD,
-    MODE_INTERLEAVE_TOP,
-    MODE_INTERLEAVE_BOTTOM,
-    MODE_INTERLACEX2,
-    MODE_MERGEX2,
-    MODE_NB,
-};
-
-enum InterlaceScanMode {
-    MODE_TFF = 0,
-    MODE_BFF,
-};
-
-typedef struct TInterlaceContext {
-    const AVClass *class;
-    int mode;                   ///< TInterlaceMode, interlace mode selected
-    AVRational preout_time_base;
-    int flags;                  ///< flags affecting interlacing algorithm
-    int lowpass;                ///< legacy interlace filter lowpass mode
-    int frame;                  ///< number of the output frame
-    int vsub;                   ///< chroma vertical subsampling
-    AVFrame *cur;
-    AVFrame *next;
-    uint8_t *black_data[4];     ///< buffer used to fill padded lines
-    int black_linesize[4];
-    FFDrawContext draw;
-    FFDrawColor color;
-    const AVPixFmtDescriptor *csp;
-    void (*lowpass_line)(uint8_t *dstp, ptrdiff_t width, const uint8_t *srcp,
-                         ptrdiff_t mref, ptrdiff_t pref, int clip_max);
-} TInterlaceContext;
-
-void ff_tinterlace_init_x86(TInterlaceContext *interlace);
-
-#endif /* AVFILTER_TINTERLACE_H */
diff --git a/libavfilter/vf_blackframe.c b/libavfilter/vf_blackframe.c
deleted file mode 100644
index 804965c..0000000
--- a/libavfilter/vf_blackframe.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2010 Stefano Sabatini
- * Copyright (c) 2006 Ivo van Poorten
- * Copyright (c) 2006 Julian Hall
- * Copyright (c) 2002-2003 Brian J. Murrell
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Search for black frames to detect scene transitions.
- * Ported from MPlayer libmpcodecs/vf_blackframe.c.
- */
-
-#include <stdio.h>
-#include <inttypes.h>
-
-#include "libavutil/internal.h"
-#include "libavutil/opt.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-
-typedef struct BlackFrameContext {
-    const AVClass *class;
-    int bamount;          ///< black amount
-    int bthresh;          ///< black threshold
-    unsigned int frame;   ///< frame number
-    unsigned int nblack;  ///< number of black pixels counted so far
-    unsigned int last_keyframe; ///< frame number of the last received key-frame
-} BlackFrameContext;
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV420P, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NV12,
-        AV_PIX_FMT_NV21, AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-#define SET_META(key, format, value) \
-    snprintf(buf, sizeof(buf), format, value);  \
-    av_dict_set(metadata, key, buf, 0)
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
-{
-    AVFilterContext *ctx = inlink->dst;
-    BlackFrameContext *s = ctx->priv;
-    int x, i;
-    int pblack = 0;
-    uint8_t *p = frame->data[0];
-    AVDictionary **metadata;
-    char buf[32];
-
-    for (i = 0; i < frame->height; i++) {
-        for (x = 0; x < inlink->w; x++)
-            s->nblack += p[x] < s->bthresh;
-        p += frame->linesize[0];
-    }
-
-    if (frame->key_frame)
-        s->last_keyframe = s->frame;
-
-    pblack = s->nblack * 100 / (inlink->w * inlink->h);
-    if (pblack >= s->bamount) {
-        metadata = &frame->metadata;
-
-        av_log(ctx, AV_LOG_INFO, "frame:%u pblack:%u pts:%"PRId64" t:%f "
-               "type:%c last_keyframe:%d\n",
-               s->frame, pblack, frame->pts,
-               frame->pts == AV_NOPTS_VALUE ? -1 : frame->pts * av_q2d(inlink->time_base),
-               av_get_picture_type_char(frame->pict_type), s->last_keyframe);
-
-        SET_META("lavfi.blackframe.pblack", "%u", pblack);
-    }
-
-    s->frame++;
-    s->nblack = 0;
-    return ff_filter_frame(inlink->dst->outputs[0], frame);
-}
-
-#define OFFSET(x) offsetof(BlackFrameContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-static const AVOption blackframe_options[] = {
-    { "amount", "percentage of the pixels that have to be below the threshold "
-        "for the frame to be considered black",  OFFSET(bamount), AV_OPT_TYPE_INT, { .i64 = 98 }, 0, 100,     FLAGS },
-    { "threshold", "threshold below which a pixel value is considered black",
-                                                 OFFSET(bthresh), AV_OPT_TYPE_INT, { .i64 = 32 }, 0, 255,     FLAGS },
-    { "thresh", "threshold below which a pixel value is considered black",
-                                                 OFFSET(bthresh), AV_OPT_TYPE_INT, { .i64 = 32 }, 0, 255,     FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(blackframe);
-
-static const AVFilterPad avfilter_vf_blackframe_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad avfilter_vf_blackframe_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_blackframe = {
-    .name          = "blackframe",
-    .description   = NULL_IF_CONFIG_SMALL("Detect frames that are (almost) black."),
-    .priv_size     = sizeof(BlackFrameContext),
-    .priv_class    = &blackframe_class,
-    .query_formats = query_formats,
-    .inputs        = avfilter_vf_blackframe_inputs,
-    .outputs       = avfilter_vf_blackframe_outputs,
-};
diff --git a/libavfilter/vf_boxblur.c b/libavfilter/vf_boxblur.c
deleted file mode 100644
index bde7408..0000000
--- a/libavfilter/vf_boxblur.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2011 Stefano Sabatini
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Apply a boxblur filter to the input video.
- * Ported from MPlayer libmpcodecs/vf_boxblur.c.
- */
-
-#include "libavutil/avstring.h"
-#include "libavutil/common.h"
-#include "libavutil/opt.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-#include "boxblur.h"
-
-
-typedef struct BoxBlurContext {
-    const AVClass *class;
-    FilterParam luma_param;
-    FilterParam chroma_param;
-    FilterParam alpha_param;
-
-    int hsub, vsub;
-    int radius[4];
-    int power[4];
-    uint8_t *temp[2]; ///< temporary buffer used in blur_power()
-} BoxBlurContext;
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    BoxBlurContext *s = ctx->priv;
-
-    av_freep(&s->temp[0]);
-    av_freep(&s->temp[1]);
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    AVFilterFormats *formats = NULL;
-    int fmt, ret;
-
-    for (fmt = 0; av_pix_fmt_desc_get(fmt); fmt++) {
-        const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
-        if (!(desc->flags & (AV_PIX_FMT_FLAG_HWACCEL | AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_PAL)) &&
-            (desc->flags & AV_PIX_FMT_FLAG_PLANAR || desc->nb_components == 1) &&
-            (!(desc->flags & AV_PIX_FMT_FLAG_BE) == !HAVE_BIGENDIAN || desc->comp[0].depth == 8) &&
-            (ret = ff_add_format(&formats, fmt)) < 0)
-            return ret;
-    }
-
-    return ff_set_common_formats(ctx, formats);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    AVFilterContext    *ctx = inlink->dst;
-    BoxBlurContext *s = ctx->priv;
-    int w = inlink->w, h = inlink->h;
-    int ret;
-
-    if (!(s->temp[0] = av_malloc(2*FFMAX(w, h))) ||
-        !(s->temp[1] = av_malloc(2*FFMAX(w, h))))
-        return AVERROR(ENOMEM);
-
-    s->hsub = desc->log2_chroma_w;
-    s->vsub = desc->log2_chroma_h;
-
-    ret = ff_boxblur_eval_filter_params(inlink,
-                                        &s->luma_param,
-                                        &s->chroma_param,
-                                        &s->alpha_param);
-
-    if (ret != 0) {
-        av_log(ctx, AV_LOG_ERROR, "Failed to evaluate "
-               "filter params: %d.\n", ret);
-        return ret;
-    }
-
-    s->radius[Y] = s->luma_param.radius;
-    s->radius[U] = s->radius[V] = s->chroma_param.radius;
-    s->radius[A] = s->alpha_param.radius;
-
-    s->power[Y] = s->luma_param.power;
-    s->power[U] = s->power[V] = s->chroma_param.power;
-    s->power[A] = s->alpha_param.power;
-
-    return 0;
-}
-
-/* Naive boxblur would sum source pixels from x-radius .. x+radius
- * for destination pixel x. That would be O(radius*width).
- * If you now look at what source pixels represent 2 consecutive
- * output pixels, then you see they are almost identical and only
- * differ by 2 pixels, like:
- * src0       111111111
- * dst0           1
- * src1        111111111
- * dst1            1
- * src0-src1  1       -1
- * so when you know one output pixel you can find the next by just adding
- * and subtracting 1 input pixel.
- * The following code adopts this faster variant.
- */
-#define BLUR(type, depth)                                                   \
-static inline void blur ## depth(type *dst, int dst_step, const type *src,  \
-                                 int src_step, int len, int radius)         \
-{                                                                           \
-    const int length = radius*2 + 1;                                        \
-    const int inv = ((1<<16) + length/2)/length;                            \
-    int x, sum = src[radius*src_step];                                      \
-                                                                            \
-    for (x = 0; x < radius; x++)                                            \
-        sum += src[x*src_step]<<1;                                          \
-                                                                            \
-    sum = sum*inv + (1<<15);                                                \
-                                                                            \
-    for (x = 0; x <= radius; x++) {                                         \
-        sum += (src[(radius+x)*src_step] - src[(radius-x)*src_step])*inv;   \
-        dst[x*dst_step] = sum>>16;                                          \
-    }                                                                       \
-                                                                            \
-    for (; x < len-radius; x++) {                                           \
-        sum += (src[(radius+x)*src_step] - src[(x-radius-1)*src_step])*inv; \
-        dst[x*dst_step] = sum >>16;                                         \
-    }                                                                       \
-                                                                            \
-    for (; x < len; x++) {                                                  \
-        sum += (src[(2*len-radius-x-1)*src_step] - src[(x-radius-1)*src_step])*inv; \
-        dst[x*dst_step] = sum>>16;                                          \
-    }                                                                       \
-}
-
-BLUR(uint8_t,   8)
-BLUR(uint16_t, 16)
-
-#undef BLUR
-
-static inline void blur(uint8_t *dst, int dst_step, const uint8_t *src, int src_step,
-                        int len, int radius, int pixsize)
-{
-    if (pixsize == 1) blur8 (dst, dst_step   , src, src_step   , len, radius);
-    else              blur16((uint16_t*)dst, dst_step>>1, (const uint16_t*)src, src_step>>1, len, radius);
-}
-
-static inline void blur_power(uint8_t *dst, int dst_step, const uint8_t *src, int src_step,
-                              int len, int radius, int power, uint8_t *temp[2], int pixsize)
-{
-    uint8_t *a = temp[0], *b = temp[1];
-
-    if (radius && power) {
-        blur(a, pixsize, src, src_step, len, radius, pixsize);
-        for (; power > 2; power--) {
-            uint8_t *c;
-            blur(b, pixsize, a, pixsize, len, radius, pixsize);
-            c = a; a = b; b = c;
-        }
-        if (power > 1) {
-            blur(dst, dst_step, a, pixsize, len, radius, pixsize);
-        } else {
-            int i;
-            if (pixsize == 1) {
-                for (i = 0; i < len; i++)
-                    dst[i*dst_step] = a[i];
-            } else
-                for (i = 0; i < len; i++)
-                    *(uint16_t*)(dst + i*dst_step) = ((uint16_t*)a)[i];
-        }
-    } else {
-        int i;
-        if (pixsize == 1) {
-            for (i = 0; i < len; i++)
-                dst[i*dst_step] = src[i*src_step];
-        } else
-            for (i = 0; i < len; i++)
-                *(uint16_t*)(dst + i*dst_step) = *(uint16_t*)(src + i*src_step);
-    }
-}
-
-static void hblur(uint8_t *dst, int dst_linesize, const uint8_t *src, int src_linesize,
-                  int w, int h, int radius, int power, uint8_t *temp[2], int pixsize)
-{
-    int y;
-
-    if (radius == 0 && dst == src)
-        return;
-
-    for (y = 0; y < h; y++)
-        blur_power(dst + y*dst_linesize, pixsize, src + y*src_linesize, pixsize,
-                   w, radius, power, temp, pixsize);
-}
-
-static void vblur(uint8_t *dst, int dst_linesize, const uint8_t *src, int src_linesize,
-                  int w, int h, int radius, int power, uint8_t *temp[2], int pixsize)
-{
-    int x;
-
-    if (radius == 0 && dst == src)
-        return;
-
-    for (x = 0; x < w; x++)
-        blur_power(dst + x*pixsize, dst_linesize, src + x*pixsize, src_linesize,
-                   h, radius, power, temp, pixsize);
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    BoxBlurContext *s = ctx->priv;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    AVFrame *out;
-    int plane;
-    int cw = AV_CEIL_RSHIFT(inlink->w, s->hsub), ch = AV_CEIL_RSHIFT(in->height, s->vsub);
-    int w[4] = { inlink->w, cw, cw, inlink->w };
-    int h[4] = { in->height, ch, ch, in->height };
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    const int depth = desc->comp[0].depth;
-    const int pixsize = (depth+7)/8;
-
-    out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!out) {
-        av_frame_free(&in);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(out, in);
-
-    for (plane = 0; plane < 4 && in->data[plane] && in->linesize[plane]; plane++)
-        hblur(out->data[plane], out->linesize[plane],
-              in ->data[plane], in ->linesize[plane],
-              w[plane], h[plane], s->radius[plane], s->power[plane],
-              s->temp, pixsize);
-
-    for (plane = 0; plane < 4 && in->data[plane] && in->linesize[plane]; plane++)
-        vblur(out->data[plane], out->linesize[plane],
-              out->data[plane], out->linesize[plane],
-              w[plane], h[plane], s->radius[plane], s->power[plane],
-              s->temp, pixsize);
-
-    av_frame_free(&in);
-
-    return ff_filter_frame(outlink, out);
-}
-
-#define OFFSET(x) offsetof(BoxBlurContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-
-static const AVOption boxblur_options[] = {
-    { "luma_radius", "Radius of the luma blurring box", OFFSET(luma_param.radius_expr), AV_OPT_TYPE_STRING, {.str="2"}, .flags = FLAGS },
-    { "lr",          "Radius of the luma blurring box", OFFSET(luma_param.radius_expr), AV_OPT_TYPE_STRING, {.str="2"}, .flags = FLAGS },
-    { "luma_power",  "How many times should the boxblur be applied to luma",  OFFSET(luma_param.power), AV_OPT_TYPE_INT, {.i64=2}, 0, INT_MAX, .flags = FLAGS },
-    { "lp",          "How many times should the boxblur be applied to luma",  OFFSET(luma_param.power), AV_OPT_TYPE_INT, {.i64=2}, 0, INT_MAX, .flags = FLAGS },
-
-    { "chroma_radius", "Radius of the chroma blurring box", OFFSET(chroma_param.radius_expr), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS },
-    { "cr",            "Radius of the chroma blurring box", OFFSET(chroma_param.radius_expr), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS },
-    { "chroma_power",  "How many times should the boxblur be applied to chroma",  OFFSET(chroma_param.power), AV_OPT_TYPE_INT, {.i64=-1}, -1, INT_MAX, .flags = FLAGS },
-    { "cp",            "How many times should the boxblur be applied to chroma",  OFFSET(chroma_param.power), AV_OPT_TYPE_INT, {.i64=-1}, -1, INT_MAX, .flags = FLAGS },
-
-    { "alpha_radius", "Radius of the alpha blurring box", OFFSET(alpha_param.radius_expr), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS },
-    { "ar",           "Radius of the alpha blurring box", OFFSET(alpha_param.radius_expr), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS },
-    { "alpha_power",  "How many times should the boxblur be applied to alpha",  OFFSET(alpha_param.power), AV_OPT_TYPE_INT, {.i64=-1}, -1, INT_MAX, .flags = FLAGS },
-    { "ap",           "How many times should the boxblur be applied to alpha",  OFFSET(alpha_param.power), AV_OPT_TYPE_INT, {.i64=-1}, -1, INT_MAX, .flags = FLAGS },
-
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(boxblur);
-
-static const AVFilterPad avfilter_vf_boxblur_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad avfilter_vf_boxblur_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_boxblur = {
-    .name          = "boxblur",
-    .description   = NULL_IF_CONFIG_SMALL("Blur the input."),
-    .priv_size     = sizeof(BoxBlurContext),
-    .priv_class    = &boxblur_class,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = avfilter_vf_boxblur_inputs,
-    .outputs       = avfilter_vf_boxblur_outputs,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_colormatrix.c b/libavfilter/vf_colormatrix.c
deleted file mode 100644
index 3a02e2b..0000000
--- a/libavfilter/vf_colormatrix.c
+++ /dev/null
@@ -1,520 +0,0 @@
-/*
- * ColorMatrix v2.2 for Avisynth 2.5.x
- *
- * Copyright (C) 2006-2007 Kevin Stone
- *
- * ColorMatrix 1.x is Copyright (C) Wilbert Dijkhof
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/**
- * @file
- * ColorMatrix 2.0 is based on the original ColorMatrix filter by Wilbert
- * Dijkhof.  It adds the ability to convert between any of: Rec.709, FCC,
- * Rec.601, and SMPTE 240M. It also makes pre and post clipping optional,
- * adds an option to use scaled or non-scaled coefficients, and more...
- */
-
-#include <float.h>
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/avstring.h"
-
-#define NS(n) ((n) < 0 ? (int)((n)*65536.0-0.5+DBL_EPSILON) : (int)((n)*65536.0+0.5))
-#define CB(n) av_clip_uint8(n)
-
-static const double yuv_coeff_luma[5][3] = {
-    { +0.7152, +0.0722, +0.2126 }, // Rec.709 (0)
-    { +0.5900, +0.1100, +0.3000 }, // FCC (1)
-    { +0.5870, +0.1140, +0.2990 }, // Rec.601 (ITU-R BT.470-2/SMPTE 170M) (2)
-    { +0.7010, +0.0870, +0.2120 }, // SMPTE 240M (3)
-    { +0.6780, +0.0593, +0.2627 }, // Rec.2020 (4)
-};
-
-enum ColorMode {
-    COLOR_MODE_NONE = -1,
-    COLOR_MODE_BT709,
-    COLOR_MODE_FCC,
-    COLOR_MODE_BT601,
-    COLOR_MODE_SMPTE240M,
-    COLOR_MODE_BT2020,
-    COLOR_MODE_COUNT
-};
-
-typedef struct ColorMatrixContext {
-    const AVClass *class;
-    int yuv_convert[25][3][3];
-    int interlaced;
-    int source, dest;        ///< ColorMode
-    int mode;
-    int hsub, vsub;
-} ColorMatrixContext;
-
-typedef struct ThreadData {
-    AVFrame *dst;
-    const AVFrame *src;
-    int c2;
-    int c3;
-    int c4;
-    int c5;
-    int c6;
-    int c7;
-} ThreadData;
-
-#define OFFSET(x) offsetof(ColorMatrixContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-
-static const AVOption colormatrix_options[] = {
-    { "src", "set source color matrix",      OFFSET(source), AV_OPT_TYPE_INT, {.i64=COLOR_MODE_NONE}, COLOR_MODE_NONE, COLOR_MODE_COUNT-1, .flags=FLAGS, .unit="color_mode" },
-    { "dst", "set destination color matrix", OFFSET(dest),   AV_OPT_TYPE_INT, {.i64=COLOR_MODE_NONE}, COLOR_MODE_NONE, COLOR_MODE_COUNT-1, .flags=FLAGS, .unit="color_mode" },
-    { "bt709",     "set BT.709 colorspace",      0, AV_OPT_TYPE_CONST, {.i64=COLOR_MODE_BT709},       .flags=FLAGS, .unit="color_mode" },
-    { "fcc",       "set FCC colorspace   ",      0, AV_OPT_TYPE_CONST, {.i64=COLOR_MODE_FCC},         .flags=FLAGS, .unit="color_mode" },
-    { "bt601",     "set BT.601 colorspace",      0, AV_OPT_TYPE_CONST, {.i64=COLOR_MODE_BT601},       .flags=FLAGS, .unit="color_mode" },
-    { "bt470",     "set BT.470 colorspace",      0, AV_OPT_TYPE_CONST, {.i64=COLOR_MODE_BT601},       .flags=FLAGS, .unit="color_mode" },
-    { "bt470bg",   "set BT.470 colorspace",      0, AV_OPT_TYPE_CONST, {.i64=COLOR_MODE_BT601},       .flags=FLAGS, .unit="color_mode" },
-    { "smpte170m", "set SMTPE-170M colorspace",  0, AV_OPT_TYPE_CONST, {.i64=COLOR_MODE_BT601},       .flags=FLAGS, .unit="color_mode" },
-    { "smpte240m", "set SMPTE-240M colorspace",  0, AV_OPT_TYPE_CONST, {.i64=COLOR_MODE_SMPTE240M},   .flags=FLAGS, .unit="color_mode" },
-    { "bt2020",    "set BT.2020 colorspace",     0, AV_OPT_TYPE_CONST, {.i64=COLOR_MODE_BT2020},      .flags=FLAGS, .unit="color_mode" },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(colormatrix);
-
-#define ma m[0][0]
-#define mb m[0][1]
-#define mc m[0][2]
-#define md m[1][0]
-#define me m[1][1]
-#define mf m[1][2]
-#define mg m[2][0]
-#define mh m[2][1]
-#define mi m[2][2]
-
-#define ima im[0][0]
-#define imb im[0][1]
-#define imc im[0][2]
-#define imd im[1][0]
-#define ime im[1][1]
-#define imf im[1][2]
-#define img im[2][0]
-#define imh im[2][1]
-#define imi im[2][2]
-
-static void inverse3x3(double im[3][3], double m[3][3])
-{
-    double det = ma * (me * mi - mf * mh) - mb * (md * mi - mf * mg) + mc * (md * mh - me * mg);
-    det = 1.0 / det;
-    ima = det * (me * mi - mf * mh);
-    imb = det * (mc * mh - mb * mi);
-    imc = det * (mb * mf - mc * me);
-    imd = det * (mf * mg - md * mi);
-    ime = det * (ma * mi - mc * mg);
-    imf = det * (mc * md - ma * mf);
-    img = det * (md * mh - me * mg);
-    imh = det * (mb * mg - ma * mh);
-    imi = det * (ma * me - mb * md);
-}
-
-static void solve_coefficients(double cm[3][3], double rgb[3][3], double yuv[3][3])
-{
-    int i, j;
-    for (i = 0; i < 3; i++)
-        for (j = 0; j < 3; j++)
-            cm[i][j] = yuv[i][0] * rgb[0][j] + yuv[i][1] * rgb[1][j] + yuv[i][2] * rgb[2][j];
-}
-
-static void calc_coefficients(AVFilterContext *ctx)
-{
-    ColorMatrixContext *color = ctx->priv;
-    double yuv_coeff[5][3][3];
-    double rgb_coeffd[5][3][3];
-    double yuv_convertd[25][3][3];
-    double bscale, rscale;
-    int v = 0;
-    int i, j, k;
-    for (i = 0; i < 5; i++) {
-        yuv_coeff[i][0][0] = yuv_coeff_luma[i][0];
-        yuv_coeff[i][0][1] = yuv_coeff_luma[i][1];
-        yuv_coeff[i][0][2] = yuv_coeff_luma[i][2];
-        bscale = 0.5 / (yuv_coeff[i][0][1] - 1.0);
-        rscale = 0.5 / (yuv_coeff[i][0][2] - 1.0);
-        yuv_coeff[i][1][0] = bscale * yuv_coeff[i][0][0];
-        yuv_coeff[i][1][1] = 0.5;
-        yuv_coeff[i][1][2] = bscale * yuv_coeff[i][0][2];
-        yuv_coeff[i][2][0] = rscale * yuv_coeff[i][0][0];
-        yuv_coeff[i][2][1] = rscale * yuv_coeff[i][0][1];
-        yuv_coeff[i][2][2] = 0.5;
-    }
-    for (i = 0; i < 5; i++)
-        inverse3x3(rgb_coeffd[i], yuv_coeff[i]);
-    for (i = 0; i < 5; i++) {
-        for (j = 0; j < 5; j++) {
-            solve_coefficients(yuv_convertd[v], rgb_coeffd[i], yuv_coeff[j]);
-            for (k = 0; k < 3; k++) {
-                color->yuv_convert[v][k][0] = NS(yuv_convertd[v][k][0]);
-                color->yuv_convert[v][k][1] = NS(yuv_convertd[v][k][1]);
-                color->yuv_convert[v][k][2] = NS(yuv_convertd[v][k][2]);
-            }
-            if (color->yuv_convert[v][0][0] != 65536 || color->yuv_convert[v][1][0] != 0 ||
-                color->yuv_convert[v][2][0] != 0) {
-                av_log(ctx, AV_LOG_ERROR, "error calculating conversion coefficients\n");
-            }
-            v++;
-        }
-    }
-}
-
-static const char * const color_modes[] = {"bt709", "fcc", "bt601", "smpte240m", "bt2020"};
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    ColorMatrixContext *color = ctx->priv;
-
-    if (color->dest == COLOR_MODE_NONE) {
-        av_log(ctx, AV_LOG_ERROR, "Unspecified destination color space\n");
-        return AVERROR(EINVAL);
-    }
-
-    if (color->source == color->dest) {
-        av_log(ctx, AV_LOG_ERROR, "Source and destination color space must not be identical\n");
-        return AVERROR(EINVAL);
-    }
-
-    calc_coefficients(ctx);
-
-    return 0;
-}
-
-static int process_slice_uyvy422(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
-{
-    const ThreadData *td = arg;
-    const AVFrame *src = td->src;
-    AVFrame *dst = td->dst;
-    const int height = src->height;
-    const int width = src->width*2;
-    const int src_pitch = src->linesize[0];
-    const int dst_pitch = dst->linesize[0];
-    const int slice_start = (height *  jobnr   ) / nb_jobs;
-    const int slice_end   = (height * (jobnr+1)) / nb_jobs;
-    const unsigned char *srcp = src->data[0] + slice_start * src_pitch;
-    unsigned char *dstp = dst->data[0] + slice_start * dst_pitch;
-    const int c2 = td->c2;
-    const int c3 = td->c3;
-    const int c4 = td->c4;
-    const int c5 = td->c5;
-    const int c6 = td->c6;
-    const int c7 = td->c7;
-    int x, y;
-
-    for (y = slice_start; y < slice_end; y++) {
-        for (x = 0; x < width; x += 4) {
-            const int u = srcp[x + 0] - 128;
-            const int v = srcp[x + 2] - 128;
-            const int uvval = c2 * u + c3 * v + 1081344;
-            dstp[x + 0] = CB((c4 * u + c5 * v + 8421376) >> 16);
-            dstp[x + 1] = CB((65536 * (srcp[x + 1] - 16) + uvval) >> 16);
-            dstp[x + 2] = CB((c6 * u + c7 * v + 8421376) >> 16);
-            dstp[x + 3] = CB((65536 * (srcp[x + 3] - 16) + uvval) >> 16);
-        }
-        srcp += src_pitch;
-        dstp += dst_pitch;
-    }
-
-    return 0;
-}
-
-static int process_slice_yuv444p(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
-{
-    const ThreadData *td = arg;
-    const AVFrame *src = td->src;
-    AVFrame *dst = td->dst;
-    const int height = src->height;
-    const int width = src->width;
-    const int slice_start = (height *  jobnr   ) / nb_jobs;
-    const int slice_end   = (height * (jobnr+1)) / nb_jobs;
-    const int src_pitchY  = src->linesize[0];
-    const int src_pitchUV = src->linesize[1];
-    const unsigned char *srcpU = src->data[1] + slice_start * src_pitchUV;
-    const unsigned char *srcpV = src->data[2] + slice_start * src_pitchUV;
-    const unsigned char *srcpY = src->data[0] + slice_start * src_pitchY;
-    const int dst_pitchY  = dst->linesize[0];
-    const int dst_pitchUV = dst->linesize[1];
-    unsigned char *dstpU = dst->data[1] + slice_start * dst_pitchUV;
-    unsigned char *dstpV = dst->data[2] + slice_start * dst_pitchUV;
-    unsigned char *dstpY = dst->data[0] + slice_start * dst_pitchY;
-    const int c2 = td->c2;
-    const int c3 = td->c3;
-    const int c4 = td->c4;
-    const int c5 = td->c5;
-    const int c6 = td->c6;
-    const int c7 = td->c7;
-    int x, y;
-
-    for (y = slice_start; y < slice_end; y++) {
-        for (x = 0; x < width; x++) {
-            const int u = srcpU[x] - 128;
-            const int v = srcpV[x] - 128;
-            const int uvval = c2 * u + c3 * v + 1081344;
-            dstpY[x] = CB((65536 * (srcpY[x] - 16) + uvval) >> 16);
-            dstpU[x] = CB((c4 * u + c5 * v + 8421376) >> 16);
-            dstpV[x] = CB((c6 * u + c7 * v + 8421376) >> 16);
-        }
-        srcpY += src_pitchY;
-        dstpY += dst_pitchY;
-        srcpU += src_pitchUV;
-        srcpV += src_pitchUV;
-        dstpU += dst_pitchUV;
-        dstpV += dst_pitchUV;
-    }
-
-    return 0;
-}
-
-static int process_slice_yuv422p(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
-{
-    const ThreadData *td = arg;
-    const AVFrame *src = td->src;
-    AVFrame *dst = td->dst;
-    const int height = src->height;
-    const int width = src->width;
-    const int slice_start = (height *  jobnr   ) / nb_jobs;
-    const int slice_end   = (height * (jobnr+1)) / nb_jobs;
-    const int src_pitchY  = src->linesize[0];
-    const int src_pitchUV = src->linesize[1];
-    const unsigned char *srcpU = src->data[1] + slice_start * src_pitchUV;
-    const unsigned char *srcpV = src->data[2] + slice_start * src_pitchUV;
-    const unsigned char *srcpY = src->data[0] + slice_start * src_pitchY;
-    const int dst_pitchY  = dst->linesize[0];
-    const int dst_pitchUV = dst->linesize[1];
-    unsigned char *dstpU = dst->data[1] + slice_start * dst_pitchUV;
-    unsigned char *dstpV = dst->data[2] + slice_start * dst_pitchUV;
-    unsigned char *dstpY = dst->data[0] + slice_start * dst_pitchY;
-    const int c2 = td->c2;
-    const int c3 = td->c3;
-    const int c4 = td->c4;
-    const int c5 = td->c5;
-    const int c6 = td->c6;
-    const int c7 = td->c7;
-    int x, y;
-
-    for (y = slice_start; y < slice_end; y++) {
-        for (x = 0; x < width; x += 2) {
-            const int u = srcpU[x >> 1] - 128;
-            const int v = srcpV[x >> 1] - 128;
-            const int uvval = c2 * u + c3 * v + 1081344;
-            dstpY[x + 0] = CB((65536 * (srcpY[x + 0] - 16) + uvval) >> 16);
-            dstpY[x + 1] = CB((65536 * (srcpY[x + 1] - 16) + uvval) >> 16);
-            dstpU[x >> 1] = CB((c4 * u + c5 * v + 8421376) >> 16);
-            dstpV[x >> 1] = CB((c6 * u + c7 * v + 8421376) >> 16);
-        }
-        srcpY += src_pitchY;
-        dstpY += dst_pitchY;
-        srcpU += src_pitchUV;
-        srcpV += src_pitchUV;
-        dstpU += dst_pitchUV;
-        dstpV += dst_pitchUV;
-    }
-
-    return 0;
-}
-
-static int process_slice_yuv420p(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
-{
-    const ThreadData *td = arg;
-    const AVFrame *src = td->src;
-    AVFrame *dst = td->dst;
-    const int height = FFALIGN(src->height, 2) >> 1;
-    const int width = src->width;
-    const int slice_start = ((height *  jobnr   ) / nb_jobs) << 1;
-    const int slice_end   = ((height * (jobnr+1)) / nb_jobs) << 1;
-    const int src_pitchY  = src->linesize[0];
-    const int src_pitchUV = src->linesize[1];
-    const int dst_pitchY  = dst->linesize[0];
-    const int dst_pitchUV = dst->linesize[1];
-    const unsigned char *srcpY = src->data[0] + src_pitchY * slice_start;
-    const unsigned char *srcpU = src->data[1] + src_pitchUV * (slice_start >> 1);
-    const unsigned char *srcpV = src->data[2] + src_pitchUV * (slice_start >> 1);
-    const unsigned char *srcpN = src->data[0] + src_pitchY * (slice_start + 1);
-    unsigned char *dstpU = dst->data[1] + dst_pitchUV * (slice_start >> 1);
-    unsigned char *dstpV = dst->data[2] + dst_pitchUV * (slice_start >> 1);
-    unsigned char *dstpY = dst->data[0] + dst_pitchY * slice_start;
-    unsigned char *dstpN = dst->data[0] + dst_pitchY * (slice_start + 1);
-    const int c2 = td->c2;
-    const int c3 = td->c3;
-    const int c4 = td->c4;
-    const int c5 = td->c5;
-    const int c6 = td->c6;
-    const int c7 = td->c7;
-    int x, y;
-
-    for (y = slice_start; y < slice_end; y += 2) {
-        for (x = 0; x < width; x += 2) {
-            const int u = srcpU[x >> 1] - 128;
-            const int v = srcpV[x >> 1] - 128;
-            const int uvval = c2 * u + c3 * v + 1081344;
-            dstpY[x + 0] = CB((65536 * (srcpY[x + 0] - 16) + uvval) >> 16);
-            dstpY[x + 1] = CB((65536 * (srcpY[x + 1] - 16) + uvval) >> 16);
-            dstpN[x + 0] = CB((65536 * (srcpN[x + 0] - 16) + uvval) >> 16);
-            dstpN[x + 1] = CB((65536 * (srcpN[x + 1] - 16) + uvval) >> 16);
-            dstpU[x >> 1] = CB((c4 * u + c5 * v + 8421376) >> 16);
-            dstpV[x >> 1] = CB((c6 * u + c7 * v + 8421376) >> 16);
-        }
-        srcpY += src_pitchY << 1;
-        dstpY += dst_pitchY << 1;
-        srcpN += src_pitchY << 1;
-        dstpN += dst_pitchY << 1;
-        srcpU += src_pitchUV;
-        srcpV += src_pitchUV;
-        dstpU += dst_pitchUV;
-        dstpV += dst_pitchUV;
-    }
-
-    return 0;
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    ColorMatrixContext *color = ctx->priv;
-    const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(inlink->format);
-
-    color->hsub = pix_desc->log2_chroma_w;
-    color->vsub = pix_desc->log2_chroma_h;
-
-    av_log(ctx, AV_LOG_VERBOSE, "%s -> %s\n",
-           color_modes[color->source], color_modes[color->dest]);
-
-    return 0;
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_UYVY422,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int filter_frame(AVFilterLink *link, AVFrame *in)
-{
-    AVFilterContext *ctx = link->dst;
-    ColorMatrixContext *color = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *out;
-    ThreadData td = {0};
-
-    out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!out) {
-        av_frame_free(&in);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(out, in);
-
-    if (color->source == COLOR_MODE_NONE) {
-        enum AVColorSpace cs = in->colorspace;
-        enum ColorMode source;
-
-        switch(cs) {
-        case AVCOL_SPC_BT709     : source = COLOR_MODE_BT709     ; break;
-        case AVCOL_SPC_FCC       : source = COLOR_MODE_FCC       ; break;
-        case AVCOL_SPC_SMPTE240M : source = COLOR_MODE_SMPTE240M ; break;
-        case AVCOL_SPC_BT470BG   : source = COLOR_MODE_BT601     ; break;
-        case AVCOL_SPC_SMPTE170M : source = COLOR_MODE_BT601     ; break;
-        case AVCOL_SPC_BT2020_NCL: source = COLOR_MODE_BT2020    ; break;
-        case AVCOL_SPC_BT2020_CL : source = COLOR_MODE_BT2020    ; break;
-        default :
-            av_log(ctx, AV_LOG_ERROR, "Input frame does not specify a supported colorspace, and none has been specified as source either\n");
-            av_frame_free(&out);
-            return AVERROR(EINVAL);
-        }
-        color->mode = source * 5 + color->dest;
-    } else
-        color->mode = color->source * 5 + color->dest;
-
-    switch(color->dest) {
-    case COLOR_MODE_BT709    : out->colorspace = AVCOL_SPC_BT709     ; break;
-    case COLOR_MODE_FCC      : out->colorspace = AVCOL_SPC_FCC       ; break;
-    case COLOR_MODE_SMPTE240M: out->colorspace = AVCOL_SPC_SMPTE240M ; break;
-    case COLOR_MODE_BT601    : out->colorspace = AVCOL_SPC_BT470BG   ; break;
-    case COLOR_MODE_BT2020   : out->colorspace = AVCOL_SPC_BT2020_NCL; break;
-    }
-
-    td.src = in;
-    td.dst = out;
-    td.c2 = color->yuv_convert[color->mode][0][1];
-    td.c3 = color->yuv_convert[color->mode][0][2];
-    td.c4 = color->yuv_convert[color->mode][1][1];
-    td.c5 = color->yuv_convert[color->mode][1][2];
-    td.c6 = color->yuv_convert[color->mode][2][1];
-    td.c7 = color->yuv_convert[color->mode][2][2];
-
-    if (in->format == AV_PIX_FMT_YUV444P)
-        ctx->internal->execute(ctx, process_slice_yuv444p, &td, NULL,
-                               FFMIN(in->height, ff_filter_get_nb_threads(ctx)));
-    else if (in->format == AV_PIX_FMT_YUV422P)
-        ctx->internal->execute(ctx, process_slice_yuv422p, &td, NULL,
-                               FFMIN(in->height, ff_filter_get_nb_threads(ctx)));
-    else if (in->format == AV_PIX_FMT_YUV420P)
-        ctx->internal->execute(ctx, process_slice_yuv420p, &td, NULL,
-                               FFMIN(in->height / 2, ff_filter_get_nb_threads(ctx)));
-    else
-        ctx->internal->execute(ctx, process_slice_uyvy422, &td, NULL,
-                               FFMIN(in->height, ff_filter_get_nb_threads(ctx)));
-
-    av_frame_free(&in);
-    return ff_filter_frame(outlink, out);
-}
-
-static const AVFilterPad colormatrix_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad colormatrix_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_colormatrix = {
-    .name          = "colormatrix",
-    .description   = NULL_IF_CONFIG_SMALL("Convert color matrix."),
-    .priv_size     = sizeof(ColorMatrixContext),
-    .init          = init,
-    .query_formats = query_formats,
-    .inputs        = colormatrix_inputs,
-    .outputs       = colormatrix_outputs,
-    .priv_class    = &colormatrix_class,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
-};
diff --git a/libavfilter/vf_cover_rect.c b/libavfilter/vf_cover_rect.c
deleted file mode 100644
index 898debf..0000000
--- a/libavfilter/vf_cover_rect.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (c) 2014-2015 Michael Niedermayer <michaelni@gmx.at>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @todo switch to dualinput
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "internal.h"
-
-#include "lavfutils.h"
-
-enum mode {
-    MODE_COVER,
-    MODE_BLUR,
-    NB_MODES
-};
-
-typedef struct CoverContext {
-    AVClass *class;
-    int mode;
-    char *cover_filename;
-    AVFrame *cover_frame;
-    int width, height;
-} CoverContext;
-
-#define OFFSET(x) offsetof(CoverContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-static const AVOption cover_rect_options[] = {
-    { "cover",  "cover bitmap filename",  OFFSET(cover_filename),  AV_OPT_TYPE_STRING, {.str = NULL}, .flags = FLAGS },
-    { "mode", "set removal mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = MODE_BLUR}, 0, NB_MODES - 1, FLAGS, "mode" },
-        { "cover", "cover area with bitmap", 0, AV_OPT_TYPE_CONST, {.i64 = MODE_COVER}, INT_MIN, INT_MAX, FLAGS, "mode" },
-        { "blur", "blur area", 0, AV_OPT_TYPE_CONST, {.i64 = MODE_BLUR}, INT_MIN, INT_MAX, FLAGS, "mode" },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(cover_rect);
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUVJ420P,
-        AV_PIX_FMT_NONE
-    };
-
-    return ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    return 0;
-}
-
-static void cover_rect(CoverContext *cover, AVFrame *in, int offx, int offy)
-{
-    int x, y, p;
-
-    for (p = 0; p < 3; p++) {
-        uint8_t *data = in->data[p] + (offx>>!!p) + (offy>>!!p) * in->linesize[p];
-        const uint8_t *src = cover->cover_frame->data[p];
-        int w = AV_CEIL_RSHIFT(cover->cover_frame->width , !!p);
-        int h = AV_CEIL_RSHIFT(cover->cover_frame->height, !!p);
-        for (y = 0; y < h; y++) {
-            for (x = 0; x < w; x++) {
-                data[x] = src[x];
-            }
-            data += in->linesize[p];
-            src += cover->cover_frame->linesize[p];
-        }
-    }
-}
-static void blur(CoverContext *cover, AVFrame *in, int offx, int offy)
-{
-    int x, y, p;
-
-    for (p=0; p<3; p++) {
-        int ox = offx>>!!p;
-        int oy = offy>>!!p;
-        int stride = in->linesize[p];
-        uint8_t *data = in->data[p] + ox + oy * stride;
-        int w = AV_CEIL_RSHIFT(cover->width , !!p);
-        int h = AV_CEIL_RSHIFT(cover->height, !!p);
-        int iw = AV_CEIL_RSHIFT(in->width , !!p);
-        int ih = AV_CEIL_RSHIFT(in->height, !!p);
-        for (y = 0; y < h; y++) {
-            for (x = 0; x < w; x++) {
-                int c = 0;
-                int s = 0;
-                if (ox) {
-                    int scale = 65536 / (x + 1);
-                    s += data[-1 + y*stride] * scale;
-                    c += scale;
-                }
-                if (oy) {
-                    int scale = 65536 / (y + 1);
-                    s += data[x - stride] * scale;
-                    c += scale;
-                }
-                if (ox + w < iw) {
-                    int scale = 65536 / (w - x);
-                    s += data[w + y*stride] * scale;
-                    c += scale;
-                }
-                if (oy + h < ih) {
-                    int scale = 65536 / (h - y);
-                    s += data[x + h*stride] * scale;
-                    c += scale;
-                }
-                data[x + y*stride] = c ? (s + (c>>1)) / c : 0;
-            }
-        }
-    }
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    CoverContext *cover = ctx->priv;
-    AVDictionaryEntry *ex, *ey, *ew, *eh;
-    int x = -1, y = -1, w = -1, h = -1;
-    char *xendptr = NULL, *yendptr = NULL, *wendptr = NULL, *hendptr = NULL;
-
-    ex = av_dict_get(in->metadata, "lavfi.rect.x", NULL, AV_DICT_MATCH_CASE);
-    ey = av_dict_get(in->metadata, "lavfi.rect.y", NULL, AV_DICT_MATCH_CASE);
-    ew = av_dict_get(in->metadata, "lavfi.rect.w", NULL, AV_DICT_MATCH_CASE);
-    eh = av_dict_get(in->metadata, "lavfi.rect.h", NULL, AV_DICT_MATCH_CASE);
-    if (ex && ey && ew && eh) {
-        x = strtol(ex->value, &xendptr, 10);
-        y = strtol(ey->value, &yendptr, 10);
-        w = strtol(ew->value, &wendptr, 10);
-        h = strtol(eh->value, &hendptr, 10);
-    }
-
-    if (!xendptr || *xendptr || !yendptr || *yendptr ||
-        !wendptr || *wendptr || !hendptr || *hendptr
-    ) {
-        return ff_filter_frame(ctx->outputs[0], in);
-    }
-
-    if (x < 0) {
-        w += x;
-        x = 0;
-    }
-    if (y < 0) {
-        h += y;
-        y = 0;
-    }
-    w = FFMIN(w, in->width  - x);
-    h = FFMIN(h, in->height - y);
-
-    if (w > in->width || h > in->height || w <= 0 || h <= 0)
-        return AVERROR(EINVAL);
-
-    if (cover->cover_frame) {
-        if (w != cover->cover_frame->width || h != cover->cover_frame->height)
-            return AVERROR(EINVAL);
-    }
-
-    cover->width  = w;
-    cover->height = h;
-
-    x = av_clip(x, 0, in->width  - w);
-    y = av_clip(y, 0, in->height - h);
-
-    av_frame_make_writable(in);
-
-    if (cover->mode == MODE_BLUR) {
-        blur (cover, in, x, y);
-    } else {
-        cover_rect(cover, in, x, y);
-    }
-    return ff_filter_frame(ctx->outputs[0], in);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    CoverContext *cover = ctx->priv;
-
-    if (cover->cover_frame)
-        av_freep(&cover->cover_frame->data[0]);
-    av_frame_free(&cover->cover_frame);
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    CoverContext *cover = ctx->priv;
-    int ret;
-
-    if (cover->mode == MODE_COVER) {
-        if (!cover->cover_filename) {
-            av_log(ctx, AV_LOG_ERROR, "cover filename not set\n");
-            return AVERROR(EINVAL);
-        }
-
-        cover->cover_frame = av_frame_alloc();
-        if (!cover->cover_frame)
-            return AVERROR(ENOMEM);
-
-        if ((ret = ff_load_image(cover->cover_frame->data, cover->cover_frame->linesize,
-                                &cover->cover_frame->width, &cover->cover_frame->height,
-                                &cover->cover_frame->format, cover->cover_filename, ctx)) < 0)
-            return ret;
-
-        if (cover->cover_frame->format != AV_PIX_FMT_YUV420P && cover->cover_frame->format != AV_PIX_FMT_YUVJ420P) {
-            av_log(ctx, AV_LOG_ERROR, "cover image is not a YUV420 image\n");
-            return AVERROR(EINVAL);
-        }
-    }
-
-    return 0;
-}
-
-static const AVFilterPad cover_rect_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad cover_rect_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_cover_rect = {
-    .name            = "cover_rect",
-    .description     = NULL_IF_CONFIG_SMALL("Find and cover a user specified object."),
-    .priv_size       = sizeof(CoverContext),
-    .init            = init,
-    .uninit          = uninit,
-    .query_formats   = query_formats,
-    .inputs          = cover_rect_inputs,
-    .outputs         = cover_rect_outputs,
-    .priv_class      = &cover_rect_class,
-};
diff --git a/libavfilter/vf_cropdetect.c b/libavfilter/vf_cropdetect.c
deleted file mode 100644
index 7c7d0b9..0000000
--- a/libavfilter/vf_cropdetect.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (c) 2002 A'rpi
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * border detection filter
- * Ported from MPlayer libmpcodecs/vf_cropdetect.c.
- */
-
-#include "libavutil/imgutils.h"
-#include "libavutil/internal.h"
-#include "libavutil/opt.h"
-
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-
-typedef struct CropDetectContext {
-    const AVClass *class;
-    int x1, y1, x2, y2;
-    float limit;
-    int round;
-    int reset_count;
-    int frame_nb;
-    int max_pixsteps[4];
-    int max_outliers;
-} CropDetectContext;
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVJ420P,
-        AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUVJ422P,
-        AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVJ444P,
-        AV_PIX_FMT_YUV411P, AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV410P,
-        AV_PIX_FMT_YUV420P9 , AV_PIX_FMT_YUV422P9 , AV_PIX_FMT_YUV444P9,
-        AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10,
-        AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV444P12,
-        AV_PIX_FMT_YUV420P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV444P14,
-        AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16,
-        AV_PIX_FMT_NV12,    AV_PIX_FMT_NV21,
-        AV_PIX_FMT_RGB24,   AV_PIX_FMT_BGR24,
-        AV_PIX_FMT_RGBA,    AV_PIX_FMT_BGRA,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int checkline(void *ctx, const unsigned char *src, int stride, int len, int bpp)
-{
-    int total = 0;
-    int div = len;
-    const uint16_t *src16 = (const uint16_t *)src;
-
-    switch (bpp) {
-    case 1:
-        while (len >= 8) {
-            total += src[       0] + src[  stride] + src[2*stride] + src[3*stride]
-                  +  src[4*stride] + src[5*stride] + src[6*stride] + src[7*stride];
-            src += 8*stride;
-            len -= 8;
-        }
-        while (--len >= 0) {
-            total += src[0];
-            src += stride;
-        }
-        break;
-    case 2:
-        stride >>= 1;
-        while (len >= 8) {
-            total += src16[       0] + src16[  stride] + src16[2*stride] + src16[3*stride]
-                  +  src16[4*stride] + src16[5*stride] + src16[6*stride] + src16[7*stride];
-            src16 += 8*stride;
-            len -= 8;
-        }
-        while (--len >= 0) {
-            total += src16[0];
-            src16 += stride;
-        }
-        break;
-    case 3:
-    case 4:
-        while (len >= 4) {
-            total += src[0]        + src[1         ] + src[2         ]
-                  +  src[  stride] + src[1+  stride] + src[2+  stride]
-                  +  src[2*stride] + src[1+2*stride] + src[2+2*stride]
-                  +  src[3*stride] + src[1+3*stride] + src[2+3*stride];
-            src += 4*stride;
-            len -= 4;
-        }
-        while (--len >= 0) {
-            total += src[0] + src[1] + src[2];
-            src += stride;
-        }
-        div *= 3;
-        break;
-    }
-    total /= div;
-
-    av_log(ctx, AV_LOG_DEBUG, "total:%d\n", total);
-    return total;
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    CropDetectContext *s = ctx->priv;
-
-    s->frame_nb = -2;
-
-    av_log(ctx, AV_LOG_VERBOSE, "limit:%f round:%d reset_count:%d\n",
-           s->limit, s->round, s->reset_count);
-
-    return 0;
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    CropDetectContext *s = ctx->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-
-    av_image_fill_max_pixsteps(s->max_pixsteps, NULL, desc);
-
-    if (s->limit < 1.0)
-        s->limit *= (1 << desc->comp[0].depth) - 1;
-
-    s->x1 = inlink->w - 1;
-    s->y1 = inlink->h - 1;
-    s->x2 = 0;
-    s->y2 = 0;
-
-    return 0;
-}
-
-#define SET_META(key, value) \
-    av_dict_set_int(metadata, key, value, 0)
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
-{
-    AVFilterContext *ctx = inlink->dst;
-    CropDetectContext *s = ctx->priv;
-    int bpp = s->max_pixsteps[0];
-    int w, h, x, y, shrink_by;
-    AVDictionary **metadata;
-    int outliers, last_y;
-    int limit = lrint(s->limit);
-
-    // ignore first 2 frames - they may be empty
-    if (++s->frame_nb > 0) {
-        metadata = &frame->metadata;
-
-        // Reset the crop area every reset_count frames, if reset_count is > 0
-        if (s->reset_count > 0 && s->frame_nb > s->reset_count) {
-            s->x1 = frame->width  - 1;
-            s->y1 = frame->height - 1;
-            s->x2 = 0;
-            s->y2 = 0;
-            s->frame_nb = 1;
-        }
-
-#define FIND(DST, FROM, NOEND, INC, STEP0, STEP1, LEN) \
-        outliers = 0;\
-        for (last_y = y = FROM; NOEND; y = y INC) {\
-            if (checkline(ctx, frame->data[0] + STEP0 * y, STEP1, LEN, bpp) > limit) {\
-                if (++outliers > s->max_outliers) { \
-                    DST = last_y;\
-                    break;\
-                }\
-            } else\
-                last_y = y INC;\
-        }
-
-        FIND(s->y1,                 0,               y < s->y1, +1, frame->linesize[0], bpp, frame->width);
-        FIND(s->y2, frame->height - 1, y > FFMAX(s->y2, s->y1), -1, frame->linesize[0], bpp, frame->width);
-        FIND(s->x1,                 0,               y < s->x1, +1, bpp, frame->linesize[0], frame->height);
-        FIND(s->x2,  frame->width - 1, y > FFMAX(s->x2, s->x1), -1, bpp, frame->linesize[0], frame->height);
-
-
-        // round x and y (up), important for yuv colorspaces
-        // make sure they stay rounded!
-        x = (s->x1+1) & ~1;
-        y = (s->y1+1) & ~1;
-
-        w = s->x2 - x + 1;
-        h = s->y2 - y + 1;
-
-        // w and h must be divisible by 2 as well because of yuv
-        // colorspace problems.
-        if (s->round <= 1)
-            s->round = 16;
-        if (s->round % 2)
-            s->round *= 2;
-
-        shrink_by = w % s->round;
-        w -= shrink_by;
-        x += (shrink_by/2 + 1) & ~1;
-
-        shrink_by = h % s->round;
-        h -= shrink_by;
-        y += (shrink_by/2 + 1) & ~1;
-
-        SET_META("lavfi.cropdetect.x1", s->x1);
-        SET_META("lavfi.cropdetect.x2", s->x2);
-        SET_META("lavfi.cropdetect.y1", s->y1);
-        SET_META("lavfi.cropdetect.y2", s->y2);
-        SET_META("lavfi.cropdetect.w",  w);
-        SET_META("lavfi.cropdetect.h",  h);
-        SET_META("lavfi.cropdetect.x",  x);
-        SET_META("lavfi.cropdetect.y",  y);
-
-        av_log(ctx, AV_LOG_INFO,
-               "x1:%d x2:%d y1:%d y2:%d w:%d h:%d x:%d y:%d pts:%"PRId64" t:%f crop=%d:%d:%d:%d\n",
-               s->x1, s->x2, s->y1, s->y2, w, h, x, y, frame->pts,
-               frame->pts == AV_NOPTS_VALUE ? -1 : frame->pts * av_q2d(inlink->time_base),
-               w, h, x, y);
-    }
-
-    return ff_filter_frame(inlink->dst->outputs[0], frame);
-}
-
-#define OFFSET(x) offsetof(CropDetectContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-
-static const AVOption cropdetect_options[] = {
-    { "limit", "Threshold below which the pixel is considered black", OFFSET(limit),       AV_OPT_TYPE_FLOAT, { .dbl = 24.0/255 }, 0, 65535, FLAGS },
-    { "round", "Value by which the width/height should be divisible", OFFSET(round),       AV_OPT_TYPE_INT, { .i64 = 16 }, 0, INT_MAX, FLAGS },
-    { "reset", "Recalculate the crop area after this many frames",    OFFSET(reset_count), AV_OPT_TYPE_INT, { .i64 = 0 },  0, INT_MAX, FLAGS },
-    { "reset_count", "Recalculate the crop area after this many frames",OFFSET(reset_count),AV_OPT_TYPE_INT,{ .i64 = 0 },  0, INT_MAX, FLAGS },
-    { "max_outliers", "Threshold count of outliers",                  OFFSET(max_outliers),AV_OPT_TYPE_INT, { .i64 = 0 },  0, INT_MAX, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(cropdetect);
-
-static const AVFilterPad avfilter_vf_cropdetect_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad avfilter_vf_cropdetect_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_cropdetect = {
-    .name          = "cropdetect",
-    .description   = NULL_IF_CONFIG_SMALL("Auto-detect crop size."),
-    .priv_size     = sizeof(CropDetectContext),
-    .priv_class    = &cropdetect_class,
-    .init          = init,
-    .query_formats = query_formats,
-    .inputs        = avfilter_vf_cropdetect_inputs,
-    .outputs       = avfilter_vf_cropdetect_outputs,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_delogo.c b/libavfilter/vf_delogo.c
deleted file mode 100644
index e55673d..0000000
--- a/libavfilter/vf_delogo.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (c) 2002 Jindrich Makovicka <makovick@gmail.com>
- * Copyright (c) 2011 Stefano Sabatini
- * Copyright (c) 2013, 2015 Jean Delvare <jdelvare@suse.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * A very simple tv station logo remover
- * Originally imported from MPlayer libmpcodecs/vf_delogo.c,
- * the algorithm was later improved.
- */
-
-#include "libavutil/common.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/eval.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-static const char * const var_names[] = {
-    "x",
-    "y",
-    "w",
-    "h",
-    "n",            ///< number of frame
-    "t",            ///< timestamp expressed in seconds
-    NULL
-};
-
-enum var_name {
-    VAR_X,
-    VAR_Y,
-    VAR_W,
-    VAR_H,
-    VAR_N,
-    VAR_T,
-    VAR_VARS_NB
-};
-#define TS2T(ts, tb) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts) * av_q2d(tb))
-
-static int set_expr(AVExpr **pexpr, const char *expr, const char *option, void *log_ctx)
-{
-    int ret;
-    AVExpr *old = NULL;
-
-    if (*pexpr)
-        old = *pexpr;
-    ret = av_expr_parse(pexpr, expr, var_names, NULL, NULL, NULL, NULL, 0, log_ctx);
-    if (ret < 0) {
-        av_log(log_ctx, AV_LOG_ERROR,
-               "Error when parsing the expression '%s' for %s\n",
-               expr, option);
-        *pexpr = old;
-        return ret;
-    }
-
-    av_expr_free(old);
-    return 0;
-}
-
-
-/**
- * Apply a simple delogo algorithm to the image in src and put the
- * result in dst.
- *
- * The algorithm is only applied to the region specified by the logo
- * parameters.
- *
- * @param w      width of the input image
- * @param h      height of the input image
- * @param logo_x x coordinate of the top left corner of the logo region
- * @param logo_y y coordinate of the top left corner of the logo region
- * @param logo_w width of the logo
- * @param logo_h height of the logo
- * @param band   the size of the band around the processed area
- * @param show   show a rectangle around the processed area, useful for
- *               parameters tweaking
- * @param direct if non-zero perform in-place processing
- */
-static void apply_delogo(uint8_t *dst, int dst_linesize,
-                         uint8_t *src, int src_linesize,
-                         int w, int h, AVRational sar,
-                         int logo_x, int logo_y, int logo_w, int logo_h,
-                         unsigned int band, int show, int direct)
-{
-    int x, y;
-    uint64_t interp, weightl, weightr, weightt, weightb, weight;
-    uint8_t *xdst, *xsrc;
-
-    uint8_t *topleft, *botleft, *topright;
-    unsigned int left_sample, right_sample;
-    int xclipl, xclipr, yclipt, yclipb;
-    int logo_x1, logo_x2, logo_y1, logo_y2;
-
-    xclipl = FFMAX(-logo_x, 0);
-    xclipr = FFMAX(logo_x+logo_w-w, 0);
-    yclipt = FFMAX(-logo_y, 0);
-    yclipb = FFMAX(logo_y+logo_h-h, 0);
-
-    logo_x1 = logo_x + xclipl;
-    logo_x2 = logo_x + logo_w - xclipr - 1;
-    logo_y1 = logo_y + yclipt;
-    logo_y2 = logo_y + logo_h - yclipb - 1;
-
-    topleft  = src+logo_y1 * src_linesize+logo_x1;
-    topright = src+logo_y1 * src_linesize+logo_x2;
-    botleft  = src+logo_y2 * src_linesize+logo_x1;
-
-    if (!direct)
-        av_image_copy_plane(dst, dst_linesize, src, src_linesize, w, h);
-
-    dst += (logo_y1 + 1) * dst_linesize;
-    src += (logo_y1 + 1) * src_linesize;
-
-    for (y = logo_y1+1; y < logo_y2; y++) {
-        left_sample = topleft[src_linesize*(y-logo_y1)]   +
-                      topleft[src_linesize*(y-logo_y1-1)] +
-                      topleft[src_linesize*(y-logo_y1+1)];
-        right_sample = topright[src_linesize*(y-logo_y1)]   +
-                       topright[src_linesize*(y-logo_y1-1)] +
-                       topright[src_linesize*(y-logo_y1+1)];
-
-        for (x = logo_x1+1,
-             xdst = dst+logo_x1+1,
-             xsrc = src+logo_x1+1; x < logo_x2; x++, xdst++, xsrc++) {
-
-            if (show && (y == logo_y1+1 || y == logo_y2-1 ||
-                         x == logo_x1+1 || x == logo_x2-1)) {
-                *xdst = 0;
-                continue;
-            }
-
-            /* Weighted interpolation based on relative distances, taking SAR into account */
-            weightl = (uint64_t)              (logo_x2-x) * (y-logo_y1) * (logo_y2-y) * sar.den;
-            weightr = (uint64_t)(x-logo_x1)               * (y-logo_y1) * (logo_y2-y) * sar.den;
-            weightt = (uint64_t)(x-logo_x1) * (logo_x2-x)               * (logo_y2-y) * sar.num;
-            weightb = (uint64_t)(x-logo_x1) * (logo_x2-x) * (y-logo_y1)               * sar.num;
-
-            interp =
-                left_sample * weightl
-                +
-                right_sample * weightr
-                +
-                (topleft[x-logo_x1]    +
-                 topleft[x-logo_x1-1]  +
-                 topleft[x-logo_x1+1]) * weightt
-                +
-                (botleft[x-logo_x1]    +
-                 botleft[x-logo_x1-1]  +
-                 botleft[x-logo_x1+1]) * weightb;
-            weight = (weightl + weightr + weightt + weightb) * 3U;
-            interp = (interp + (weight >> 1)) / weight;
-
-            if (y >= logo_y+band && y < logo_y+logo_h-band &&
-                x >= logo_x+band && x < logo_x+logo_w-band) {
-                *xdst = interp;
-            } else {
-                unsigned dist = 0;
-
-                if      (x < logo_x+band)
-                    dist = FFMAX(dist, logo_x-x+band);
-                else if (x >= logo_x+logo_w-band)
-                    dist = FFMAX(dist, x-(logo_x+logo_w-1-band));
-
-                if      (y < logo_y+band)
-                    dist = FFMAX(dist, logo_y-y+band);
-                else if (y >= logo_y+logo_h-band)
-                    dist = FFMAX(dist, y-(logo_y+logo_h-1-band));
-
-                *xdst = (*xsrc*dist + interp*(band-dist))/band;
-            }
-        }
-
-        dst += dst_linesize;
-        src += src_linesize;
-    }
-}
-
-typedef struct DelogoContext {
-    const AVClass *class;
-    int x, y, w, h, band, show;
-    char *x_expr, *y_expr, *w_expr, *h_expr;
-    AVExpr *x_pexpr, *y_pexpr, *w_pexpr, *h_pexpr;
-    double var_values[VAR_VARS_NB];
-}  DelogoContext;
-
-#define OFFSET(x) offsetof(DelogoContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-
-static const AVOption delogo_options[]= {
-    { "x",    "set logo x position",       OFFSET(x_expr),    AV_OPT_TYPE_STRING, { .str = "-1" }, 0, 0, FLAGS },
-    { "y",    "set logo y position",       OFFSET(y_expr),    AV_OPT_TYPE_STRING, { .str = "-1" }, 0, 0, FLAGS },
-    { "w",    "set logo width",            OFFSET(w_expr),    AV_OPT_TYPE_STRING, { .str = "-1" }, 0, 0, FLAGS },
-    { "h",    "set logo height",           OFFSET(h_expr),    AV_OPT_TYPE_STRING, { .str = "-1" }, 0, 0, FLAGS },
-    { "show", "show delogo area",          OFFSET(show),      AV_OPT_TYPE_BOOL,   { .i64 =  0 },   0, 1, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(delogo);
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    DelogoContext *s = ctx->priv;
-
-    av_expr_free(s->x_pexpr);    s->x_pexpr = NULL;
-    av_expr_free(s->y_pexpr);    s->y_pexpr = NULL;
-    av_expr_free(s->w_pexpr);    s->w_pexpr = NULL;
-    av_expr_free(s->h_pexpr);    s->h_pexpr = NULL;
-}
-
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,  AV_PIX_FMT_YUV422P,  AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUV411P,  AV_PIX_FMT_YUV410P,  AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUVA420P, AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    DelogoContext *s = ctx->priv;
-    int ret = 0;
-
-    if ((ret = set_expr(&s->x_pexpr, s->x_expr, "x", ctx)) < 0 ||
-        (ret = set_expr(&s->y_pexpr, s->y_expr, "y", ctx)) < 0 ||
-        (ret = set_expr(&s->w_pexpr, s->w_expr, "w", ctx)) < 0 ||
-        (ret = set_expr(&s->h_pexpr, s->h_expr, "h", ctx)) < 0 )
-        return ret;
-
-    s->x = av_expr_eval(s->x_pexpr, s->var_values, s);
-    s->y = av_expr_eval(s->y_pexpr, s->var_values, s);
-    s->w = av_expr_eval(s->w_pexpr, s->var_values, s);
-    s->h = av_expr_eval(s->h_pexpr, s->var_values, s);
-
-#define CHECK_UNSET_OPT(opt)                                            \
-    if (s->opt == -1) {                                            \
-        av_log(s, AV_LOG_ERROR, "Option %s was not set.\n", #opt); \
-        return AVERROR(EINVAL);                                         \
-    }
-    CHECK_UNSET_OPT(x);
-    CHECK_UNSET_OPT(y);
-    CHECK_UNSET_OPT(w);
-    CHECK_UNSET_OPT(h);
-
-    s->band = 1;
-
-    av_log(ctx, AV_LOG_VERBOSE, "x:%d y:%d, w:%d h:%d band:%d show:%d\n",
-           s->x, s->y, s->w, s->h, s->band, s->show);
-
-    s->w += s->band*2;
-    s->h += s->band*2;
-    s->x -= s->band;
-    s->y -= s->band;
-
-    return 0;
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    DelogoContext *s = inlink->dst->priv;
-
-    /* Check whether the logo area fits in the frame */
-    if (s->x + (s->band - 1) < 0 || s->x + s->w - (s->band*2 - 2) > inlink->w ||
-        s->y + (s->band - 1) < 0 || s->y + s->h - (s->band*2 - 2) > inlink->h) {
-        av_log(s, AV_LOG_ERROR, "Logo area is outside of the frame.\n");
-        return AVERROR(EINVAL);
-    }
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    DelogoContext *s = inlink->dst->priv;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    AVFrame *out;
-    int hsub0 = desc->log2_chroma_w;
-    int vsub0 = desc->log2_chroma_h;
-    int direct = 0;
-    int plane;
-    AVRational sar;
-    int ret;
-
-    s->var_values[VAR_N] = inlink->frame_count_out;
-    s->var_values[VAR_T] = TS2T(in->pts, inlink->time_base);
-    s->x = av_expr_eval(s->x_pexpr, s->var_values, s);
-    s->y = av_expr_eval(s->y_pexpr, s->var_values, s);
-    s->w = av_expr_eval(s->w_pexpr, s->var_values, s);
-    s->h = av_expr_eval(s->h_pexpr, s->var_values, s);
-
-    if (s->x + (s->band - 1) <= 0 || s->x + s->w - (s->band*2 - 2) > inlink->w ||
-        s->y + (s->band - 1) <= 0 || s->y + s->h - (s->band*2 - 2) > inlink->h) {
-        av_log(s, AV_LOG_WARNING, "Logo area is outside of the frame,"
-               " auto set the area inside of the frame\n");
-    }
-
-    if (s->x + (s->band - 1) <= 0)
-        s->x = 1 + s->band;
-    if (s->y + (s->band - 1) <= 0)
-        s->y = 1 + s->band;
-    if (s->x + s->w - (s->band*2 - 2) > inlink->w)
-        s->w = inlink->w - s->x - (s->band*2 - 2);
-    if (s->y + s->h - (s->band*2 - 2) > inlink->h)
-        s->h = inlink->h - s->y - (s->band*2 - 2);
-
-    ret = config_input(inlink);
-    if (ret < 0) {
-        av_frame_free(&in);
-        return ret;
-    }
-
-    s->w += s->band*2;
-    s->h += s->band*2;
-    s->x -= s->band;
-    s->y -= s->band;
-
-    if (av_frame_is_writable(in)) {
-        direct = 1;
-        out = in;
-    } else {
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out) {
-            av_frame_free(&in);
-            return AVERROR(ENOMEM);
-        }
-
-        av_frame_copy_props(out, in);
-    }
-
-    sar = in->sample_aspect_ratio;
-    /* Assume square pixels if SAR is unknown */
-    if (!sar.num)
-        sar.num = sar.den = 1;
-
-    for (plane = 0; plane < desc->nb_components; plane++) {
-        int hsub = plane == 1 || plane == 2 ? hsub0 : 0;
-        int vsub = plane == 1 || plane == 2 ? vsub0 : 0;
-
-        apply_delogo(out->data[plane], out->linesize[plane],
-                     in ->data[plane], in ->linesize[plane],
-                     AV_CEIL_RSHIFT(inlink->w, hsub),
-                     AV_CEIL_RSHIFT(inlink->h, vsub),
-                     sar, s->x>>hsub, s->y>>vsub,
-                     /* Up and left borders were rounded down, inject lost bits
-                      * into width and height to avoid error accumulation */
-                     AV_CEIL_RSHIFT(s->w + (s->x & ((1<<hsub)-1)), hsub),
-                     AV_CEIL_RSHIFT(s->h + (s->y & ((1<<vsub)-1)), vsub),
-                     s->band>>FFMIN(hsub, vsub),
-                     s->show, direct);
-    }
-
-    if (!direct)
-        av_frame_free(&in);
-
-    return ff_filter_frame(outlink, out);
-}
-
-static const AVFilterPad avfilter_vf_delogo_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_input,
-    },
-    { NULL }
-};
-
-static const AVFilterPad avfilter_vf_delogo_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_delogo = {
-    .name          = "delogo",
-    .description   = NULL_IF_CONFIG_SMALL("Remove logo from input video."),
-    .priv_size     = sizeof(DelogoContext),
-    .priv_class    = &delogo_class,
-    .init          = init,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = avfilter_vf_delogo_inputs,
-    .outputs       = avfilter_vf_delogo_outputs,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_eq.c b/libavfilter/vf_eq.c
deleted file mode 100644
index c8c3d5b..0000000
--- a/libavfilter/vf_eq.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * Original MPlayer filters by Richard Felker, Hampa Hug, Daniel Moreno,
- * and Michael Niedermeyer.
- *
- * Copyright (c) 2014 James Darnley <james.darnley@gmail.com>
- * Copyright (c) 2015 Arwa Arif <arwaarif1994@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * very simple video equalizer
- */
-
-#include "libavfilter/internal.h"
-#include "libavutil/common.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "vf_eq.h"
-
-static void create_lut(EQParameters *param)
-{
-    int i;
-    double   g  = 1.0 / param->gamma;
-    double   lw = 1.0 - param->gamma_weight;
-
-    for (i = 0; i < 256; i++) {
-        double v = i / 255.0;
-        v = param->contrast * (v - 0.5) + 0.5 + param->brightness;
-
-        if (v <= 0.0) {
-            param->lut[i] = 0;
-        } else {
-            v = v * lw + pow(v, g) * param->gamma_weight;
-
-            if (v >= 1.0)
-                param->lut[i] = 255;
-            else
-                param->lut[i] = 256.0 * v;
-        }
-    }
-
-    param->lut_clean = 1;
-}
-
-static void apply_lut(EQParameters *param, uint8_t *dst, int dst_stride,
-                      const uint8_t *src, int src_stride, int w, int h)
-{
-    int x, y;
-
-    if (!param->lut_clean)
-        create_lut(param);
-
-    for (y = 0; y < h; y++) {
-        for (x = 0; x < w; x++) {
-            dst[y * dst_stride + x] = param->lut[src[y * src_stride + x]];
-        }
-    }
-}
-
-static void process_c(EQParameters *param, uint8_t *dst, int dst_stride,
-                      const uint8_t *src, int src_stride, int w, int h)
-{
-    int x, y, pel;
-
-    int contrast = (int) (param->contrast * 256 * 16);
-    int brightness = ((int) (100.0 * param->brightness + 100.0) * 511) / 200 - 128 - contrast / 32;
-
-    for (y = 0; y < h; y++) {
-        for (x = 0; x < w; x++) {
-            pel = ((src[y * src_stride + x] * contrast) >> 12) + brightness;
-
-            if (pel & ~255)
-                pel = (-pel) >> 31;
-
-            dst[y * dst_stride + x] = pel;
-        }
-    }
-}
-
-static void check_values(EQParameters *param, EQContext *eq)
-{
-    if (param->contrast == 1.0 && param->brightness == 0.0 && param->gamma == 1.0)
-        param->adjust = NULL;
-    else if (param->gamma == 1.0 && fabs(param->contrast) < 7.9)
-        param->adjust = eq->process;
-    else
-        param->adjust = apply_lut;
-}
-
-static void set_contrast(EQContext *eq)
-{
-    eq->contrast = av_clipf(av_expr_eval(eq->contrast_pexpr, eq->var_values, eq), -1000.0, 1000.0);
-    eq->param[0].contrast = eq->contrast;
-    eq->param[0].lut_clean = 0;
-    check_values(&eq->param[0], eq);
-}
-
-static void set_brightness(EQContext *eq)
-{
-    eq->brightness = av_clipf(av_expr_eval(eq->brightness_pexpr, eq->var_values, eq), -1.0, 1.0);
-    eq->param[0].brightness = eq->brightness;
-    eq->param[0].lut_clean = 0;
-    check_values(&eq->param[0], eq);
-}
-
-static void set_gamma(EQContext *eq)
-{
-    int i;
-
-    eq->gamma        = av_clipf(av_expr_eval(eq->gamma_pexpr,        eq->var_values, eq), 0.1, 10.0);
-    eq->gamma_r      = av_clipf(av_expr_eval(eq->gamma_r_pexpr,      eq->var_values, eq), 0.1, 10.0);
-    eq->gamma_g      = av_clipf(av_expr_eval(eq->gamma_g_pexpr,      eq->var_values, eq), 0.1, 10.0);
-    eq->gamma_b      = av_clipf(av_expr_eval(eq->gamma_b_pexpr,      eq->var_values, eq), 0.1, 10.0);
-    eq->gamma_weight = av_clipf(av_expr_eval(eq->gamma_weight_pexpr, eq->var_values, eq), 0.0,  1.0);
-
-    eq->param[0].gamma = eq->gamma * eq->gamma_g;
-    eq->param[1].gamma = sqrt(eq->gamma_b / eq->gamma_g);
-    eq->param[2].gamma = sqrt(eq->gamma_r / eq->gamma_g);
-
-    for (i = 0; i < 3; i++) {
-        eq->param[i].gamma_weight = eq->gamma_weight;
-        eq->param[i].lut_clean = 0;
-        check_values(&eq->param[i], eq);
-    }
-}
-
-static void set_saturation(EQContext *eq)
-{
-    int i;
-
-    eq->saturation = av_clipf(av_expr_eval(eq->saturation_pexpr, eq->var_values, eq), 0.0, 3.0);
-
-    for (i = 1; i < 3; i++) {
-        eq->param[i].contrast = eq->saturation;
-        eq->param[i].lut_clean = 0;
-        check_values(&eq->param[i], eq);
-    }
-}
-
-static int set_expr(AVExpr **pexpr, const char *expr, const char *option, void *log_ctx)
-{
-    int ret;
-    AVExpr *old = NULL;
-
-    if (*pexpr)
-        old = *pexpr;
-    ret = av_expr_parse(pexpr, expr, var_names, NULL, NULL, NULL, NULL, 0, log_ctx);
-    if (ret < 0) {
-        av_log(log_ctx, AV_LOG_ERROR,
-               "Error when parsing the expression '%s' for %s\n",
-               expr, option);
-        *pexpr = old;
-        return ret;
-    }
-
-    av_expr_free(old);
-    return 0;
-}
-
-void ff_eq_init(EQContext *eq)
-{
-    eq->process = process_c;
-    if (ARCH_X86)
-        ff_eq_init_x86(eq);
-}
-
-static int initialize(AVFilterContext *ctx)
-{
-    EQContext *eq = ctx->priv;
-    int ret;
-    ff_eq_init(eq);
-
-    if ((ret = set_expr(&eq->contrast_pexpr,     eq->contrast_expr,     "contrast",     ctx)) < 0 ||
-        (ret = set_expr(&eq->brightness_pexpr,   eq->brightness_expr,   "brightness",   ctx)) < 0 ||
-        (ret = set_expr(&eq->saturation_pexpr,   eq->saturation_expr,   "saturation",   ctx)) < 0 ||
-        (ret = set_expr(&eq->gamma_pexpr,        eq->gamma_expr,        "gamma",        ctx)) < 0 ||
-        (ret = set_expr(&eq->gamma_r_pexpr,      eq->gamma_r_expr,      "gamma_r",      ctx)) < 0 ||
-        (ret = set_expr(&eq->gamma_g_pexpr,      eq->gamma_g_expr,      "gamma_g",      ctx)) < 0 ||
-        (ret = set_expr(&eq->gamma_b_pexpr,      eq->gamma_b_expr,      "gamma_b",      ctx)) < 0 ||
-        (ret = set_expr(&eq->gamma_weight_pexpr, eq->gamma_weight_expr, "gamma_weight", ctx)) < 0 )
-        return ret;
-
-    if (eq->eval_mode == EVAL_MODE_INIT) {
-        set_gamma(eq);
-        set_contrast(eq);
-        set_brightness(eq);
-        set_saturation(eq);
-    }
-
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    EQContext *eq = ctx->priv;
-
-    av_expr_free(eq->contrast_pexpr);     eq->contrast_pexpr     = NULL;
-    av_expr_free(eq->brightness_pexpr);   eq->brightness_pexpr   = NULL;
-    av_expr_free(eq->saturation_pexpr);   eq->saturation_pexpr   = NULL;
-    av_expr_free(eq->gamma_pexpr);        eq->gamma_pexpr        = NULL;
-    av_expr_free(eq->gamma_weight_pexpr); eq->gamma_weight_pexpr = NULL;
-    av_expr_free(eq->gamma_r_pexpr);      eq->gamma_r_pexpr      = NULL;
-    av_expr_free(eq->gamma_g_pexpr);      eq->gamma_g_pexpr      = NULL;
-    av_expr_free(eq->gamma_b_pexpr);      eq->gamma_b_pexpr      = NULL;
-}
-
-static int config_props(AVFilterLink *inlink)
-{
-    EQContext *eq = inlink->dst->priv;
-
-    eq->var_values[VAR_N] = 0;
-    eq->var_values[VAR_R] = inlink->frame_rate.num == 0 || inlink->frame_rate.den == 0 ?
-        NAN : av_q2d(inlink->frame_rate);
-
-    return 0;
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pixel_fmts_eq[] = {
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_YUV410P,
-        AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pixel_fmts_eq);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-#define TS2T(ts, tb) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts) * av_q2d(tb))
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    EQContext *eq = ctx->priv;
-    AVFrame *out;
-    int64_t pos = in->pkt_pos;
-    const AVPixFmtDescriptor *desc;
-    int i;
-
-    out = ff_get_video_buffer(outlink, inlink->w, inlink->h);
-    if (!out) {
-        av_frame_free(&in);
-        return AVERROR(ENOMEM);
-    }
-
-    av_frame_copy_props(out, in);
-    desc = av_pix_fmt_desc_get(inlink->format);
-
-    eq->var_values[VAR_N]   = inlink->frame_count_out;
-    eq->var_values[VAR_POS] = pos == -1 ? NAN : pos;
-    eq->var_values[VAR_T]   = TS2T(in->pts, inlink->time_base);
-
-    if (eq->eval_mode == EVAL_MODE_FRAME) {
-        set_gamma(eq);
-        set_contrast(eq);
-        set_brightness(eq);
-        set_saturation(eq);
-    }
-
-    for (i = 0; i < desc->nb_components; i++) {
-        int w = inlink->w;
-        int h = inlink->h;
-
-        if (i == 1 || i == 2) {
-            w = AV_CEIL_RSHIFT(w, desc->log2_chroma_w);
-            h = AV_CEIL_RSHIFT(h, desc->log2_chroma_h);
-        }
-
-        if (eq->param[i].adjust)
-            eq->param[i].adjust(&eq->param[i], out->data[i], out->linesize[i],
-                                 in->data[i], in->linesize[i], w, h);
-        else
-            av_image_copy_plane(out->data[i], out->linesize[i],
-                                in->data[i], in->linesize[i], w, h);
-    }
-
-    av_frame_free(&in);
-    return ff_filter_frame(outlink, out);
-}
-
-static inline int set_param(AVExpr **pexpr, const char *args, const char *cmd,
-                            void (*set_fn)(EQContext *eq), AVFilterContext *ctx)
-{
-    EQContext *eq = ctx->priv;
-    int ret;
-    if ((ret = set_expr(pexpr, args, cmd, ctx)) < 0)
-        return ret;
-    if (eq->eval_mode == EVAL_MODE_INIT)
-        set_fn(eq);
-    return 0;
-}
-
-static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
-                           char *res, int res_len, int flags)
-{
-    EQContext *eq = ctx->priv;
-
-#define SET_PARAM(param_name, set_fn_name)                              \
-    if (!strcmp(cmd, #param_name)) return set_param(&eq->param_name##_pexpr, args, cmd, set_##set_fn_name, ctx);
-
-         SET_PARAM(contrast, contrast)
-    else SET_PARAM(brightness, brightness)
-    else SET_PARAM(saturation, saturation)
-    else SET_PARAM(gamma, gamma)
-    else SET_PARAM(gamma_r, gamma)
-    else SET_PARAM(gamma_g, gamma)
-    else SET_PARAM(gamma_b, gamma)
-    else SET_PARAM(gamma_weight, gamma)
-    else return AVERROR(ENOSYS);
-}
-
-static const AVFilterPad eq_inputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_props,
-    },
-    { NULL }
-};
-
-static const AVFilterPad eq_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-#define OFFSET(x) offsetof(EQContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-#define TFLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
-static const AVOption eq_options[] = {
-    { "contrast",     "set the contrast adjustment, negative values give a negative image",
-        OFFSET(contrast_expr),     AV_OPT_TYPE_STRING, {.str = "1.0"}, 0, 0, TFLAGS },
-    { "brightness",   "set the brightness adjustment",
-        OFFSET(brightness_expr),   AV_OPT_TYPE_STRING, {.str = "0.0"}, 0, 0, TFLAGS },
-    { "saturation",   "set the saturation adjustment",
-        OFFSET(saturation_expr),   AV_OPT_TYPE_STRING, {.str = "1.0"}, 0, 0, TFLAGS },
-    { "gamma",        "set the initial gamma value",
-        OFFSET(gamma_expr),        AV_OPT_TYPE_STRING, {.str = "1.0"}, 0, 0, TFLAGS },
-    { "gamma_r",      "gamma value for red",
-        OFFSET(gamma_r_expr),      AV_OPT_TYPE_STRING, {.str = "1.0"}, 0, 0, TFLAGS },
-    { "gamma_g",      "gamma value for green",
-        OFFSET(gamma_g_expr),      AV_OPT_TYPE_STRING, {.str = "1.0"}, 0, 0, TFLAGS },
-    { "gamma_b",      "gamma value for blue",
-        OFFSET(gamma_b_expr),      AV_OPT_TYPE_STRING, {.str = "1.0"}, 0, 0, TFLAGS },
-    { "gamma_weight", "set the gamma weight which reduces the effect of gamma on bright areas",
-        OFFSET(gamma_weight_expr), AV_OPT_TYPE_STRING, {.str = "1.0"}, 0, 0, TFLAGS },
-    { "eval", "specify when to evaluate expressions", OFFSET(eval_mode), AV_OPT_TYPE_INT, {.i64 = EVAL_MODE_INIT}, 0, EVAL_MODE_NB-1, FLAGS, "eval" },
-         { "init",  "eval expressions once during initialization", 0, AV_OPT_TYPE_CONST, {.i64=EVAL_MODE_INIT},  .flags = FLAGS, .unit = "eval" },
-         { "frame", "eval expressions per-frame",                  0, AV_OPT_TYPE_CONST, {.i64=EVAL_MODE_FRAME}, .flags = FLAGS, .unit = "eval" },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(eq);
-
-AVFilter ff_vf_eq = {
-    .name            = "eq",
-    .description     = NULL_IF_CONFIG_SMALL("Adjust brightness, contrast, gamma, and saturation."),
-    .priv_size       = sizeof(EQContext),
-    .priv_class      = &eq_class,
-    .inputs          = eq_inputs,
-    .outputs         = eq_outputs,
-    .process_command = process_command,
-    .query_formats   = query_formats,
-    .init            = initialize,
-    .uninit          = uninit,
-    .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_eq.h b/libavfilter/vf_eq.h
deleted file mode 100644
index cd0cd75..0000000
--- a/libavfilter/vf_eq.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Original MPlayer filters by Richard Felker, Hampa Hug, Daniel Moreno,
- * and Michael Niedermeyer.
- *
- * Copyright (c) 2014 James Darnley <james.darnley@gmail.com>
- * Copyright (c) 2015 Arwa Arif <arwaarif1994@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef AVFILTER_EQ_H
-#define AVFILTER_EQ_H
-
-#include "avfilter.h"
-#include "libavutil/eval.h"
-
-static const char *const var_names[] = {
-    "n",   // frame count
-    "pos", // frame position
-    "r",   // frame rate
-    "t",   // timestamp expressed in seconds
-    NULL
-};
-
-enum var_name {
-    VAR_N,
-    VAR_POS,
-    VAR_R,
-    VAR_T,
-    VAR_NB
-};
-
-typedef struct EQParameters {
-    void (*adjust)(struct EQParameters *eq, uint8_t *dst, int dst_stride,
-                   const uint8_t *src, int src_stride, int w, int h);
-
-    uint8_t lut[256];
-
-    double brightness, contrast, gamma, gamma_weight;
-    int lut_clean;
-
-} EQParameters;
-
-typedef struct EQContext {
-    const AVClass *class;
-
-    EQParameters param[3];
-
-    char   *contrast_expr;
-    AVExpr *contrast_pexpr;
-    double  contrast;
-
-    char   *brightness_expr;
-    AVExpr *brightness_pexpr;
-    double  brightness;
-
-    char   *saturation_expr;
-    AVExpr *saturation_pexpr;
-    double  saturation;
-
-    char   *gamma_expr;
-    AVExpr *gamma_pexpr;
-    double  gamma;
-
-    char   *gamma_weight_expr;
-    AVExpr *gamma_weight_pexpr;
-    double  gamma_weight;
-
-    char   *gamma_r_expr;
-    AVExpr *gamma_r_pexpr;
-    double  gamma_r;
-
-    char   *gamma_g_expr;
-    AVExpr *gamma_g_pexpr;
-    double  gamma_g;
-
-    char   *gamma_b_expr;
-    AVExpr *gamma_b_pexpr;
-    double  gamma_b;
-
-    double var_values[VAR_NB];
-
-    void (*process)(struct EQParameters *par, uint8_t *dst, int dst_stride,
-                    const uint8_t *src, int src_stride, int w, int h);
-
-    enum EvalMode { EVAL_MODE_INIT, EVAL_MODE_FRAME, EVAL_MODE_NB } eval_mode;
-} EQContext;
-
-void ff_eq_init(EQContext *eq);
-void ff_eq_init_x86(EQContext *eq);
-
-#endif /* AVFILTER_EQ_H */
diff --git a/libavfilter/vf_find_rect.c b/libavfilter/vf_find_rect.c
deleted file mode 100644
index 706e59c..0000000
--- a/libavfilter/vf_find_rect.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright (c) 2014-2015 Michael Niedermayer <michaelni@gmx.at>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @todo switch to dualinput
- */
-
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "internal.h"
-
-#include "lavfutils.h"
-
-#define MAX_MIPMAPS 5
-
-typedef struct FOCContext {
-    AVClass *class;
-    float threshold;
-    int mipmaps;
-    int xmin, ymin, xmax, ymax;
-    char *obj_filename;
-    int last_x, last_y;
-    AVFrame *obj_frame;
-    AVFrame *needle_frame[MAX_MIPMAPS];
-    AVFrame *haystack_frame[MAX_MIPMAPS];
-} FOCContext;
-
-#define OFFSET(x) offsetof(FOCContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-static const AVOption find_rect_options[] = {
-    { "object", "object bitmap filename", OFFSET(obj_filename), AV_OPT_TYPE_STRING, {.str = NULL}, .flags = FLAGS },
-    { "threshold", "set threshold", OFFSET(threshold), AV_OPT_TYPE_FLOAT, {.dbl = 0.5}, 0, 1.0, FLAGS },
-    { "mipmaps", "set mipmaps", OFFSET(mipmaps), AV_OPT_TYPE_INT, {.i64 = 3}, 1, MAX_MIPMAPS, FLAGS },
-    { "xmin", "", OFFSET(xmin), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS },
-    { "ymin", "", OFFSET(ymin), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS },
-    { "xmax", "", OFFSET(xmax), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS },
-    { "ymax", "", OFFSET(ymax), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(find_rect);
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUVJ420P,
-        AV_PIX_FMT_NONE
-    };
-
-    return ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
-}
-
-static AVFrame *downscale(AVFrame *in)
-{
-    int x, y;
-    AVFrame *frame = av_frame_alloc();
-    uint8_t *src, *dst;
-    if (!frame)
-        return NULL;
-
-    frame->format = in->format;
-    frame->width  = (in->width + 1) / 2;
-    frame->height = (in->height+ 1) / 2;
-
-    if (av_frame_get_buffer(frame, 32) < 0) {
-        av_frame_free(&frame);
-        return NULL;
-    }
-    src = in   ->data[0];
-    dst = frame->data[0];
-
-    for(y = 0; y < frame->height; y++) {
-        for(x = 0; x < frame->width; x++) {
-            dst[x] = (  src[2*x+0]
-                      + src[2*x+1]
-                      + src[2*x+0 + in->linesize[0]]
-                      + src[2*x+1 + in->linesize[0]]
-                      + 2) >> 2;
-        }
-        src += 2*in->linesize[0];
-        dst += frame->linesize[0];
-    }
-    return frame;
-}
-
-static float compare(const AVFrame *haystack, const AVFrame *obj, int offx, int offy)
-{
-    int x,y;
-    int o_sum_v = 0;
-    int h_sum_v = 0;
-    int64_t oo_sum_v = 0;
-    int64_t hh_sum_v = 0;
-    int64_t oh_sum_v = 0;
-    float c;
-    int n = obj->height * obj->width;
-    const uint8_t *odat = obj     ->data[0];
-    const uint8_t *hdat = haystack->data[0] + offx + offy * haystack->linesize[0];
-    int64_t o_sigma, h_sigma;
-
-    for(y = 0; y < obj->height; y++) {
-        for(x = 0; x < obj->width; x++) {
-            int o_v = odat[x];
-            int h_v = hdat[x];
-            o_sum_v += o_v;
-            h_sum_v += h_v;
-            oo_sum_v += o_v * o_v;
-            hh_sum_v += h_v * h_v;
-            oh_sum_v += o_v * h_v;
-        }
-        odat += obj->linesize[0];
-        hdat += haystack->linesize[0];
-    }
-    o_sigma = n*oo_sum_v - o_sum_v*(int64_t)o_sum_v;
-    h_sigma = n*hh_sum_v - h_sum_v*(int64_t)h_sum_v;
-
-    if (o_sigma == 0 || h_sigma == 0)
-        return 1.0;
-
-    c = (n*oh_sum_v - o_sum_v*(int64_t)h_sum_v) / (sqrt(o_sigma)*sqrt(h_sigma));
-
-    return 1 - fabs(c);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    FOCContext *foc = ctx->priv;
-
-    if (foc->xmax <= 0)
-        foc->xmax = inlink->w - foc->obj_frame->width;
-    if (foc->ymax <= 0)
-        foc->ymax = inlink->h - foc->obj_frame->height;
-
-    return 0;
-}
-
-static float search(FOCContext *foc, int pass, int maxpass, int xmin, int xmax, int ymin, int ymax, int *best_x, int *best_y, float best_score)
-{
-    int x, y;
-
-    if (pass + 1 <= maxpass) {
-        int sub_x, sub_y;
-        search(foc, pass+1, maxpass, xmin>>1, (xmax+1)>>1, ymin>>1, (ymax+1)>>1, &sub_x, &sub_y, 2.0);
-        xmin = FFMAX(xmin, 2*sub_x - 4);
-        xmax = FFMIN(xmax, 2*sub_x + 4);
-        ymin = FFMAX(ymin, 2*sub_y - 4);
-        ymax = FFMIN(ymax, 2*sub_y + 4);
-    }
-
-    for (y = ymin; y <= ymax; y++) {
-        for (x = xmin; x <= xmax; x++) {
-            float score = compare(foc->haystack_frame[pass], foc->needle_frame[pass], x, y);
-            if (score < best_score) {
-                best_score = score;
-                *best_x = x;
-                *best_y = y;
-            }
-        }
-    }
-    return best_score;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    FOCContext *foc = ctx->priv;
-    float best_score;
-    int best_x, best_y;
-    int i;
-
-    foc->haystack_frame[0] = av_frame_clone(in);
-    for (i=1; i<foc->mipmaps; i++) {
-        foc->haystack_frame[i] = downscale(foc->haystack_frame[i-1]);
-    }
-
-    best_score = search(foc, 0, 0,
-                        FFMAX(foc->xmin, foc->last_x - 8),
-                        FFMIN(foc->xmax, foc->last_x + 8),
-                        FFMAX(foc->ymin, foc->last_y - 8),
-                        FFMIN(foc->ymax, foc->last_y + 8),
-                        &best_x, &best_y, 2.0);
-
-    best_score = search(foc, 0, foc->mipmaps - 1, foc->xmin, foc->xmax, foc->ymin, foc->ymax,
-                        &best_x, &best_y, best_score);
-
-    for (i=0; i<MAX_MIPMAPS; i++) {
-        av_frame_free(&foc->haystack_frame[i]);
-    }
-
-    if (best_score > foc->threshold) {
-        return ff_filter_frame(ctx->outputs[0], in);
-    }
-
-    av_log(ctx, AV_LOG_DEBUG, "Found at %d %d score %f\n", best_x, best_y, best_score);
-    foc->last_x = best_x;
-    foc->last_y = best_y;
-
-    av_frame_make_writable(in);
-
-    av_dict_set_int(&in->metadata, "lavfi.rect.w", foc->obj_frame->width, 0);
-    av_dict_set_int(&in->metadata, "lavfi.rect.h", foc->obj_frame->height, 0);
-    av_dict_set_int(&in->metadata, "lavfi.rect.x", best_x, 0);
-    av_dict_set_int(&in->metadata, "lavfi.rect.y", best_y, 0);
-
-    return ff_filter_frame(ctx->outputs[0], in);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    FOCContext *foc = ctx->priv;
-    int i;
-
-    for (i = 0; i < MAX_MIPMAPS; i++) {
-        av_frame_free(&foc->needle_frame[i]);
-        av_frame_free(&foc->haystack_frame[i]);
-    }
-
-    if (foc->obj_frame)
-        av_freep(&foc->obj_frame->data[0]);
-    av_frame_free(&foc->obj_frame);
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    FOCContext *foc = ctx->priv;
-    int ret, i;
-
-    if (!foc->obj_filename) {
-        av_log(ctx, AV_LOG_ERROR, "object filename not set\n");
-        return AVERROR(EINVAL);
-    }
-
-    foc->obj_frame = av_frame_alloc();
-    if (!foc->obj_frame)
-        return AVERROR(ENOMEM);
-
-    if ((ret = ff_load_image(foc->obj_frame->data, foc->obj_frame->linesize,
-                             &foc->obj_frame->width, &foc->obj_frame->height,
-                             &foc->obj_frame->format, foc->obj_filename, ctx)) < 0)
-        return ret;
-
-    if (foc->obj_frame->format != AV_PIX_FMT_GRAY8) {
-        av_log(ctx, AV_LOG_ERROR, "object image is not a grayscale image\n");
-        return AVERROR(EINVAL);
-    }
-
-    foc->needle_frame[0] = av_frame_clone(foc->obj_frame);
-    for (i = 1; i < foc->mipmaps; i++) {
-        foc->needle_frame[i] = downscale(foc->needle_frame[i-1]);
-        if (!foc->needle_frame[i])
-            return AVERROR(ENOMEM);
-    }
-
-    return 0;
-}
-
-static const AVFilterPad foc_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad foc_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_find_rect = {
-    .name            = "find_rect",
-    .description     = NULL_IF_CONFIG_SMALL("Find a user specified object."),
-    .priv_size       = sizeof(FOCContext),
-    .init            = init,
-    .uninit          = uninit,
-    .query_formats   = query_formats,
-    .inputs          = foc_inputs,
-    .outputs         = foc_outputs,
-    .priv_class      = &find_rect_class,
-};
diff --git a/libavfilter/vf_fspp.c b/libavfilter/vf_fspp.c
deleted file mode 100644
index c698904..0000000
--- a/libavfilter/vf_fspp.c
+++ /dev/null
@@ -1,693 +0,0 @@
-/*
- * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (C) 2005 Nikolaj Poroshin <porosh3@psu.ru>
- * Copyright (c) 2014 Arwa Arif <arwaarif1994@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Fast Simple Post-processing filter
- * This implementation is based on an algorithm described in
- * "Aria Nosratinia Embedded Post-Processing for
- * Enhancement of Compressed Images (1999)"
- * (http://www.utdallas.edu/~aria/papers/vlsisp99.pdf)
- * Further, with splitting (I)DCT into horizontal/vertical passes, one of
- * them can be performed once per block, not per pixel. This allows for much
- * higher speed.
- *
- * Originally written by Michael Niedermayer and Nikolaj for the MPlayer
- * project, and ported by Arwa Arif for FFmpeg.
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "internal.h"
-#include "vf_fspp.h"
-
-#define OFFSET(x) offsetof(FSPPContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-static const AVOption fspp_options[] = {
-    { "quality",       "set quality",                          OFFSET(log2_count),    AV_OPT_TYPE_INT, {.i64 = 4},   4, MAX_LEVEL, FLAGS },
-    { "qp",            "force a constant quantizer parameter", OFFSET(qp),            AV_OPT_TYPE_INT, {.i64 = 0},   0, 64,        FLAGS },
-    { "strength",      "set filter strength",                  OFFSET(strength),      AV_OPT_TYPE_INT, {.i64 = 0}, -15, 32,        FLAGS },
-    { "use_bframe_qp", "use B-frames' QP",                     OFFSET(use_bframe_qp), AV_OPT_TYPE_BOOL,{.i64 = 0},   0, 1,         FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(fspp);
-
-DECLARE_ALIGNED(32, static const uint8_t, dither)[8][8] = {
-    {  0,  48,  12,  60,   3,  51,  15,  63, },
-    { 32,  16,  44,  28,  35,  19,  47,  31, },
-    {  8,  56,   4,  52,  11,  59,   7,  55, },
-    { 40,  24,  36,  20,  43,  27,  39,  23, },
-    {  2,  50,  14,  62,   1,  49,  13,  61, },
-    { 34,  18,  46,  30,  33,  17,  45,  29, },
-    { 10,  58,   6,  54,   9,  57,   5,  53, },
-    { 42,  26,  38,  22,  41,  25,  37,  21, },
-};
-
-static const short custom_threshold[64] = {
-// values (296) can't be too high
-// -it causes too big quant dependence
-// or maybe overflow(check), which results in some flashing
-     71, 296, 295, 237,  71,  40,  38,  19,
-    245, 193, 185, 121, 102,  73,  53,  27,
-    158, 129, 141, 107,  97,  73,  50,  26,
-    102, 116, 109,  98,  82,  66,  45,  23,
-     71,  94,  95,  81,  70,  56,  38,  20,
-     56,  77,  74,  66,  56,  44,  30,  15,
-     38,  53,  50,  45,  38,  30,  21,  11,
-     20,  27,  26,  23,  20,  15,  11,   5
-};
-
-//This func reads from 1 slice, 1 and clears 0 & 1
-static void store_slice_c(uint8_t *dst, int16_t *src,
-                          ptrdiff_t dst_stride, ptrdiff_t src_stride,
-                          ptrdiff_t width, ptrdiff_t height, ptrdiff_t log2_scale)
-{
-    int y, x;
-#define STORE(pos)                                                             \
-    temp = (src[x + pos] + (d[pos] >> log2_scale)) >> (6 - log2_scale);        \
-    src[x + pos] = src[x + pos - 8 * src_stride] = 0;                          \
-    if (temp & 0x100) temp = ~(temp >> 31);                                    \
-    dst[x + pos] = temp;
-
-    for (y = 0; y < height; y++) {
-        const uint8_t *d = dither[y];
-        for (x = 0; x < width; x += 8) {
-            int temp;
-            STORE(0);
-            STORE(1);
-            STORE(2);
-            STORE(3);
-            STORE(4);
-            STORE(5);
-            STORE(6);
-            STORE(7);
-        }
-        src += src_stride;
-        dst += dst_stride;
-    }
-}
-
-//This func reads from 2 slices, 0 & 2  and clears 2-nd
-static void store_slice2_c(uint8_t *dst, int16_t *src,
-                           ptrdiff_t dst_stride, ptrdiff_t src_stride,
-                           ptrdiff_t width, ptrdiff_t height, ptrdiff_t log2_scale)
-{
-    int y, x;
-#define STORE2(pos)                                                                                       \
-    temp = (src[x + pos] + src[x + pos + 16 * src_stride] + (d[pos] >> log2_scale)) >> (6 - log2_scale);  \
-    src[x + pos + 16 * src_stride] = 0;                                                                   \
-    if (temp & 0x100) temp = ~(temp >> 31);                                                               \
-    dst[x + pos] = temp;
-
-    for (y = 0; y < height; y++) {
-        const uint8_t *d = dither[y];
-        for (x = 0; x < width; x += 8) {
-            int temp;
-            STORE2(0);
-            STORE2(1);
-            STORE2(2);
-            STORE2(3);
-            STORE2(4);
-            STORE2(5);
-            STORE2(6);
-            STORE2(7);
-        }
-        src += src_stride;
-        dst += dst_stride;
-    }
-}
-
-static void mul_thrmat_c(int16_t *thr_adr_noq, int16_t *thr_adr, int q)
-{
-    int a;
-    for (a = 0; a < 64; a++)
-        thr_adr[a] = q * thr_adr_noq[a];
-}
-
-static void filter(FSPPContext *p, uint8_t *dst, uint8_t *src,
-                   int dst_stride, int src_stride,
-                   int width, int height,
-                   uint8_t *qp_store, int qp_stride, int is_luma)
-{
-    int x, x0, y, es, qy, t;
-
-    const int stride = is_luma ? p->temp_stride : (width + 16);
-    const int step = 6 - p->log2_count;
-    const int qpsh = 4 - p->hsub * !is_luma;
-    const int qpsv = 4 - p->vsub * !is_luma;
-
-    DECLARE_ALIGNED(32, int32_t, block_align)[4 * 8 * BLOCKSZ + 4 * 8 * BLOCKSZ];
-    int16_t *block  = (int16_t *)block_align;
-    int16_t *block3 = (int16_t *)(block_align + 4 * 8 * BLOCKSZ);
-
-    memset(block3, 0, 4 * 8 * BLOCKSZ);
-
-    if (!src || !dst) return;
-
-    for (y = 0; y < height; y++) {
-        int index = 8 + 8 * stride + y * stride;
-        memcpy(p->src + index, src + y * src_stride, width);
-        for (x = 0; x < 8; x++) {
-            p->src[index         - x - 1] = p->src[index +         x    ];
-            p->src[index + width + x    ] = p->src[index + width - x - 1];
-        }
-    }
-
-    for (y = 0; y < 8; y++) {
-        memcpy(p->src + (     7 - y    ) * stride, p->src + (     y + 8    ) * stride, stride);
-        memcpy(p->src + (height + 8 + y) * stride, p->src + (height - y + 7) * stride, stride);
-    }
-    //FIXME (try edge emu)
-
-    for (y = 8; y < 24; y++)
-        memset(p->temp + 8 + y * stride, 0, width * sizeof(int16_t));
-
-    for (y = step; y < height + 8; y += step) {    //step= 1,2
-        const int y1 = y - 8 + step;                 //l5-7  l4-6;
-        qy = y - 4;
-
-        if (qy > height - 1) qy = height - 1;
-        if (qy < 0) qy = 0;
-
-        qy = (qy >> qpsv) * qp_stride;
-        p->row_fdct(block, p->src + y * stride + 2 - (y&1), stride, 2);
-
-        for (x0 = 0; x0 < width + 8 - 8 * (BLOCKSZ - 1); x0 += 8 * (BLOCKSZ - 1)) {
-            p->row_fdct(block + 8 * 8, p->src + y * stride + 8 + x0 + 2 - (y&1), stride, 2 * (BLOCKSZ - 1));
-
-            if (p->qp)
-                p->column_fidct((int16_t *)(&p->threshold_mtx[0]), block + 0 * 8, block3 + 0 * 8, 8 * (BLOCKSZ - 1)); //yes, this is a HOTSPOT
-            else
-                for (x = 0; x < 8 * (BLOCKSZ - 1); x += 8) {
-                    t = x + x0 - 2;                    //correct t=x+x0-2-(y&1), but its the same
-
-                    if (t < 0) t = 0;                   //t always < width-2
-
-                    t = qp_store[qy + (t >> qpsh)];
-                    t = ff_norm_qscale(t, p->qscale_type);
-
-                    if (t != p->prev_q) p->prev_q = t, p->mul_thrmat((int16_t *)(&p->threshold_mtx_noq[0]), (int16_t *)(&p->threshold_mtx[0]), t);
-                    p->column_fidct((int16_t *)(&p->threshold_mtx[0]), block + x * 8, block3 + x * 8, 8); //yes, this is a HOTSPOT
-                }
-            p->row_idct(block3 + 0 * 8, p->temp + (y & 15) * stride + x0 + 2 - (y & 1), stride, 2 * (BLOCKSZ - 1));
-            memmove(block,  block  + (BLOCKSZ - 1) * 64, 8 * 8 * sizeof(int16_t)); //cycling
-            memmove(block3, block3 + (BLOCKSZ - 1) * 64, 6 * 8 * sizeof(int16_t));
-        }
-
-        es = width + 8 - x0; //  8, ...
-        if (es > 8)
-            p->row_fdct(block + 8 * 8, p->src + y * stride + 8 + x0 + 2 - (y & 1), stride, (es - 4) >> 2);
-
-        p->column_fidct((int16_t *)(&p->threshold_mtx[0]), block, block3, es&(~1));
-        if (es > 3)
-            p->row_idct(block3 + 0 * 8, p->temp + (y & 15) * stride + x0 + 2 - (y & 1), stride, es >> 2);
-
-        if (!(y1 & 7) && y1) {
-            if (y1 & 8)
-                p->store_slice(dst + (y1 - 8) * dst_stride, p->temp + 8 + 8 * stride,
-                               dst_stride, stride, width, 8, 5 - p->log2_count);
-            else
-                p->store_slice2(dst + (y1 - 8) * dst_stride, p->temp + 8 + 0 * stride,
-                                dst_stride, stride, width, 8, 5 - p->log2_count);
-        }
-    }
-
-    if (y & 7) {  // height % 8 != 0
-        if (y & 8)
-            p->store_slice(dst + ((y - 8) & ~7) * dst_stride, p->temp + 8 + 8 * stride,
-                           dst_stride, stride, width, y&7, 5 - p->log2_count);
-        else
-            p->store_slice2(dst + ((y - 8) & ~7) * dst_stride, p->temp + 8 + 0 * stride,
-                            dst_stride, stride, width, y&7, 5 - p->log2_count);
-    }
-}
-
-static void column_fidct_c(int16_t *thr_adr, int16_t *data, int16_t *output, int cnt)
-{
-    int_simd16_t tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-    int_simd16_t tmp10, tmp11, tmp12, tmp13;
-    int_simd16_t z1,z2,z3,z4,z5, z10, z11, z12, z13;
-    int_simd16_t d0, d1, d2, d3, d4, d5, d6, d7;
-
-    int16_t *dataptr;
-    int16_t *wsptr;
-    int16_t *threshold;
-    int ctr;
-
-    dataptr = data;
-    wsptr = output;
-
-    for (; cnt > 0; cnt -= 2) { //start positions
-        threshold = (int16_t *)thr_adr;//threshold_mtx
-        for (ctr = DCTSIZE; ctr > 0; ctr--) {
-            // Process columns from input, add to output.
-            tmp0 = dataptr[DCTSIZE * 0] + dataptr[DCTSIZE * 7];
-            tmp7 = dataptr[DCTSIZE * 0] - dataptr[DCTSIZE * 7];
-
-            tmp1 = dataptr[DCTSIZE * 1] + dataptr[DCTSIZE * 6];
-            tmp6 = dataptr[DCTSIZE * 1] - dataptr[DCTSIZE * 6];
-
-            tmp2 = dataptr[DCTSIZE * 2] + dataptr[DCTSIZE * 5];
-            tmp5 = dataptr[DCTSIZE * 2] - dataptr[DCTSIZE * 5];
-
-            tmp3 = dataptr[DCTSIZE * 3] + dataptr[DCTSIZE * 4];
-            tmp4 = dataptr[DCTSIZE * 3] - dataptr[DCTSIZE * 4];
-
-            // Even part of FDCT
-
-            tmp10 = tmp0 + tmp3;
-            tmp13 = tmp0 - tmp3;
-            tmp11 = tmp1 + tmp2;
-            tmp12 = tmp1 - tmp2;
-
-            d0 = tmp10 + tmp11;
-            d4 = tmp10 - tmp11;
-
-            z1 = MULTIPLY16H((tmp12 + tmp13) << 2, FIX_0_707106781);
-            d2 = tmp13 + z1;
-            d6 = tmp13 - z1;
-
-            // Even part of IDCT
-
-            THRESHOLD(tmp0, d0, threshold[0 * 8]);
-            THRESHOLD(tmp1, d2, threshold[2 * 8]);
-            THRESHOLD(tmp2, d4, threshold[4 * 8]);
-            THRESHOLD(tmp3, d6, threshold[6 * 8]);
-            tmp0 += 2;
-            tmp10 = (tmp0 + tmp2) >> 2;
-            tmp11 = (tmp0 - tmp2) >> 2;
-
-            tmp13 = (tmp1 + tmp3) >>2; //+2 !  (psnr decides)
-            tmp12 = MULTIPLY16H((tmp1 - tmp3), FIX_1_414213562_A) - tmp13; //<<2
-
-            tmp0 = tmp10 + tmp13; //->temps
-            tmp3 = tmp10 - tmp13; //->temps
-            tmp1 = tmp11 + tmp12; //->temps
-            tmp2 = tmp11 - tmp12; //->temps
-
-            // Odd part of FDCT
-
-            tmp10 = tmp4 + tmp5;
-            tmp11 = tmp5 + tmp6;
-            tmp12 = tmp6 + tmp7;
-
-            z5 = MULTIPLY16H((tmp10 - tmp12) << 2, FIX_0_382683433);
-            z2 = MULTIPLY16H(tmp10 << 2, FIX_0_541196100) + z5;
-            z4 = MULTIPLY16H(tmp12 << 2, FIX_1_306562965) + z5;
-            z3 = MULTIPLY16H(tmp11 << 2, FIX_0_707106781);
-
-            z11 = tmp7 + z3;
-            z13 = tmp7 - z3;
-
-            d5 = z13 + z2;
-            d3 = z13 - z2;
-            d1 = z11 + z4;
-            d7 = z11 - z4;
-
-            // Odd part of IDCT
-
-            THRESHOLD(tmp4, d1, threshold[1 * 8]);
-            THRESHOLD(tmp5, d3, threshold[3 * 8]);
-            THRESHOLD(tmp6, d5, threshold[5 * 8]);
-            THRESHOLD(tmp7, d7, threshold[7 * 8]);
-
-            //Simd version uses here a shortcut for the tmp5,tmp6,tmp7 == 0
-            z13 = tmp6 + tmp5;
-            z10 = (tmp6 - tmp5) << 1;
-            z11 = tmp4 + tmp7;
-            z12 = (tmp4 - tmp7) << 1;
-
-            tmp7  = (z11 + z13) >> 2; //+2 !
-            tmp11 = MULTIPLY16H((z11 - z13) << 1, FIX_1_414213562);
-            z5    = MULTIPLY16H(z10 + z12,        FIX_1_847759065);
-            tmp10 = MULTIPLY16H(z12,              FIX_1_082392200) - z5;
-            tmp12 = MULTIPLY16H(z10,              FIX_2_613125930) + z5; // - !!
-
-            tmp6 = tmp12 - tmp7;
-            tmp5 = tmp11 - tmp6;
-            tmp4 = tmp10 + tmp5;
-
-            wsptr[DCTSIZE * 0] +=  (tmp0 + tmp7);
-            wsptr[DCTSIZE * 1] +=  (tmp1 + tmp6);
-            wsptr[DCTSIZE * 2] +=  (tmp2 + tmp5);
-            wsptr[DCTSIZE * 3] +=  (tmp3 - tmp4);
-            wsptr[DCTSIZE * 4] +=  (tmp3 + tmp4);
-            wsptr[DCTSIZE * 5] +=  (tmp2 - tmp5);
-            wsptr[DCTSIZE * 6]  =  (tmp1 - tmp6);
-            wsptr[DCTSIZE * 7]  =  (tmp0 - tmp7);
-            //
-            dataptr++; //next column
-            wsptr++;
-            threshold++;
-        }
-        dataptr += 8; //skip each second start pos
-        wsptr   += 8;
-    }
-}
-
-static void row_idct_c(int16_t *workspace, int16_t *output_adr, ptrdiff_t output_stride, int cnt)
-{
-    int_simd16_t tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-    int_simd16_t tmp10, tmp11, tmp12, tmp13;
-    int_simd16_t z5, z10, z11, z12, z13;
-    int16_t *outptr;
-    int16_t *wsptr;
-
-    cnt *= 4;
-    wsptr = workspace;
-    outptr = output_adr;
-    for (; cnt > 0; cnt--) {
-        // Even part
-        //Simd version reads 4x4 block and transposes it
-        tmp10 = wsptr[2] +  wsptr[3];
-        tmp11 = wsptr[2] -  wsptr[3];
-
-        tmp13 = wsptr[0] +  wsptr[1];
-        tmp12 = (MULTIPLY16H(wsptr[0] - wsptr[1], FIX_1_414213562_A) << 2) - tmp13;//this shift order to avoid overflow
-
-        tmp0 = tmp10 + tmp13; //->temps
-        tmp3 = tmp10 - tmp13; //->temps
-        tmp1 = tmp11 + tmp12;
-        tmp2 = tmp11 - tmp12;
-
-        // Odd part
-        //Also transpose, with previous:
-        // ---- ----      ||||
-        // ---- ---- idct ||||
-        // ---- ---- ---> ||||
-        // ---- ----      ||||
-        z13 = wsptr[4] + wsptr[5];
-        z10 = wsptr[4] - wsptr[5];
-        z11 = wsptr[6] + wsptr[7];
-        z12 = wsptr[6] - wsptr[7];
-
-        tmp7 = z11 + z13;
-        tmp11 = MULTIPLY16H(z11 - z13, FIX_1_414213562);
-
-        z5 =    MULTIPLY16H(z10 + z12, FIX_1_847759065);
-        tmp10 = MULTIPLY16H(z12,       FIX_1_082392200) - z5;
-        tmp12 = MULTIPLY16H(z10,       FIX_2_613125930) + z5; // - FIX_
-
-        tmp6 = (tmp12 << 3) - tmp7;
-        tmp5 = (tmp11 << 3) - tmp6;
-        tmp4 = (tmp10 << 3) + tmp5;
-
-        // Final output stage: descale and write column
-        outptr[0 * output_stride] += DESCALE(tmp0 + tmp7, 3);
-        outptr[1 * output_stride] += DESCALE(tmp1 + tmp6, 3);
-        outptr[2 * output_stride] += DESCALE(tmp2 + tmp5, 3);
-        outptr[3 * output_stride] += DESCALE(tmp3 - tmp4, 3);
-        outptr[4 * output_stride] += DESCALE(tmp3 + tmp4, 3);
-        outptr[5 * output_stride] += DESCALE(tmp2 - tmp5, 3);
-        outptr[6 * output_stride] += DESCALE(tmp1 - tmp6, 3); //no += ?
-        outptr[7 * output_stride] += DESCALE(tmp0 - tmp7, 3); //no += ?
-        outptr++;
-
-        wsptr += DCTSIZE;       // advance pointer to next row
-    }
-}
-
-static void row_fdct_c(int16_t *data, const uint8_t *pixels, ptrdiff_t line_size, int cnt)
-{
-    int_simd16_t tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-    int_simd16_t tmp10, tmp11, tmp12, tmp13;
-    int_simd16_t z1, z2, z3, z4, z5, z11, z13;
-    int16_t *dataptr;
-
-    cnt *= 4;
-    // Pass 1: process rows.
-
-    dataptr = data;
-    for (; cnt > 0; cnt--) {
-        tmp0 = pixels[line_size * 0] + pixels[line_size * 7];
-        tmp7 = pixels[line_size * 0] - pixels[line_size * 7];
-        tmp1 = pixels[line_size * 1] + pixels[line_size * 6];
-        tmp6 = pixels[line_size * 1] - pixels[line_size * 6];
-        tmp2 = pixels[line_size * 2] + pixels[line_size * 5];
-        tmp5 = pixels[line_size * 2] - pixels[line_size * 5];
-        tmp3 = pixels[line_size * 3] + pixels[line_size * 4];
-        tmp4 = pixels[line_size * 3] - pixels[line_size * 4];
-
-        // Even part
-
-        tmp10 = tmp0 + tmp3;
-        tmp13 = tmp0 - tmp3;
-        tmp11 = tmp1 + tmp2;
-        tmp12 = tmp1 - tmp2;
-        //Even columns are written first, this leads to different order of columns
-        //in column_fidct(), but they are processed independently, so all ok.
-        //Later in the row_idct() columns readed at the same order.
-        dataptr[2] = tmp10 + tmp11;
-        dataptr[3] = tmp10 - tmp11;
-
-        z1 = MULTIPLY16H((tmp12 + tmp13) << 2, FIX_0_707106781);
-        dataptr[0] = tmp13 + z1;
-        dataptr[1] = tmp13 - z1;
-
-        // Odd part
-
-        tmp10 = (tmp4 + tmp5) << 2;
-        tmp11 = (tmp5 + tmp6) << 2;
-        tmp12 = (tmp6 + tmp7) << 2;
-
-        z5 = MULTIPLY16H(tmp10 - tmp12, FIX_0_382683433);
-        z2 = MULTIPLY16H(tmp10,         FIX_0_541196100) + z5;
-        z4 = MULTIPLY16H(tmp12,         FIX_1_306562965) + z5;
-        z3 = MULTIPLY16H(tmp11,         FIX_0_707106781);
-
-        z11 = tmp7 + z3;
-        z13 = tmp7 - z3;
-
-        dataptr[4] = z13 + z2;
-        dataptr[5] = z13 - z2;
-        dataptr[6] = z11 + z4;
-        dataptr[7] = z11 - z4;
-
-        pixels++;               // advance pointer to next column
-        dataptr += DCTSIZE;
-    }
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,  AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV420P,  AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV410P,  AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ422P,
-        AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_GBRP, AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    FSPPContext *fspp = ctx->priv;
-    const int h = FFALIGN(inlink->h + 16, 16);
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-
-    fspp->hsub = desc->log2_chroma_w;
-    fspp->vsub = desc->log2_chroma_h;
-
-    fspp->temp_stride = FFALIGN(inlink->w + 16, 16);
-    fspp->temp = av_malloc_array(fspp->temp_stride, h * sizeof(*fspp->temp));
-    fspp->src  = av_malloc_array(fspp->temp_stride, h * sizeof(*fspp->src));
-
-    if (!fspp->temp || !fspp->src)
-        return AVERROR(ENOMEM);
-
-    if (!fspp->use_bframe_qp && !fspp->qp) {
-        fspp->non_b_qp_alloc_size = AV_CEIL_RSHIFT(inlink->w, 4) * AV_CEIL_RSHIFT(inlink->h, 4);
-        fspp->non_b_qp_table = av_calloc(fspp->non_b_qp_alloc_size, sizeof(*fspp->non_b_qp_table));
-        if (!fspp->non_b_qp_table)
-            return AVERROR(ENOMEM);
-    }
-
-    fspp->store_slice  = store_slice_c;
-    fspp->store_slice2 = store_slice2_c;
-    fspp->mul_thrmat   = mul_thrmat_c;
-    fspp->column_fidct = column_fidct_c;
-    fspp->row_idct     = row_idct_c;
-    fspp->row_fdct     = row_fdct_c;
-
-    if (ARCH_X86)
-        ff_fspp_init_x86(fspp);
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    FSPPContext *fspp = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *out = in;
-
-    int qp_stride = 0;
-    uint8_t *qp_table = NULL;
-    int i, bias;
-    int custom_threshold_m[64];
-
-    bias = (1 << 4) + fspp->strength;
-
-    for (i = 0; i < 64; i++) //FIXME: tune custom_threshold[] and remove this !
-        custom_threshold_m[i] = (int)(custom_threshold[i] * (bias / 71.0) + 0.5);
-
-    for (i = 0; i < 8; i++) {
-        fspp->threshold_mtx_noq[2 * i] = (uint64_t)custom_threshold_m[i * 8 + 2]
-                                      |(((uint64_t)custom_threshold_m[i * 8 + 6]) << 16)
-                                      |(((uint64_t)custom_threshold_m[i * 8 + 0]) << 32)
-                                      |(((uint64_t)custom_threshold_m[i * 8 + 4]) << 48);
-
-        fspp->threshold_mtx_noq[2 * i + 1] = (uint64_t)custom_threshold_m[i * 8 + 5]
-                                          |(((uint64_t)custom_threshold_m[i * 8 + 3]) << 16)
-                                          |(((uint64_t)custom_threshold_m[i * 8 + 1]) << 32)
-                                          |(((uint64_t)custom_threshold_m[i * 8 + 7]) << 48);
-    }
-
-    if (fspp->qp)
-        fspp->prev_q = fspp->qp, fspp->mul_thrmat((int16_t *)(&fspp->threshold_mtx_noq[0]), (int16_t *)(&fspp->threshold_mtx[0]), fspp->qp);
-
-    /* if we are not in a constant user quantizer mode and we don't want to use
-     * the quantizers from the B-frames (B-frames often have a higher QP), we
-     * need to save the qp table from the last non B-frame; this is what the
-     * following code block does */
-    if (!fspp->qp) {
-        qp_table = av_frame_get_qp_table(in, &qp_stride, &fspp->qscale_type);
-
-        if (qp_table && !fspp->use_bframe_qp && in->pict_type != AV_PICTURE_TYPE_B) {
-            int w, h;
-
-            /* if the qp stride is not set, it means the QP are only defined on
-             * a line basis */
-           if (!qp_stride) {
-                w = AV_CEIL_RSHIFT(inlink->w, 4);
-                h = 1;
-            } else {
-                w = qp_stride;
-                h = AV_CEIL_RSHIFT(inlink->h, 4);
-            }
-            if (w * h > fspp->non_b_qp_alloc_size) {
-                int ret = av_reallocp_array(&fspp->non_b_qp_table, w, h);
-                if (ret < 0) {
-                    fspp->non_b_qp_alloc_size = 0;
-                    return ret;
-                }
-                fspp->non_b_qp_alloc_size = w * h;
-            }
-
-            av_assert0(w * h <= fspp->non_b_qp_alloc_size);
-            memcpy(fspp->non_b_qp_table, qp_table, w * h);
-        }
-    }
-
-    if (fspp->log2_count && !ctx->is_disabled) {
-        if (!fspp->use_bframe_qp && fspp->non_b_qp_table)
-            qp_table = fspp->non_b_qp_table;
-
-        if (qp_table || fspp->qp) {
-            const int cw = AV_CEIL_RSHIFT(inlink->w, fspp->hsub);
-            const int ch = AV_CEIL_RSHIFT(inlink->h, fspp->vsub);
-
-            /* get a new frame if in-place is not possible or if the dimensions
-             * are not multiple of 8 */
-            if (!av_frame_is_writable(in) || (inlink->w & 7) || (inlink->h & 7)) {
-                const int aligned_w = FFALIGN(inlink->w, 8);
-                const int aligned_h = FFALIGN(inlink->h, 8);
-
-                out = ff_get_video_buffer(outlink, aligned_w, aligned_h);
-                if (!out) {
-                    av_frame_free(&in);
-                    return AVERROR(ENOMEM);
-                }
-                av_frame_copy_props(out, in);
-                out->width = in->width;
-                out->height = in->height;
-            }
-
-            filter(fspp, out->data[0], in->data[0], out->linesize[0], in->linesize[0],
-                   inlink->w, inlink->h, qp_table, qp_stride, 1);
-            filter(fspp, out->data[1], in->data[1], out->linesize[1], in->linesize[1],
-                   cw,        ch,        qp_table, qp_stride, 0);
-            filter(fspp, out->data[2], in->data[2], out->linesize[2], in->linesize[2],
-                   cw,        ch,        qp_table, qp_stride, 0);
-            emms_c();
-        }
-    }
-
-    if (in != out) {
-        if (in->data[3])
-            av_image_copy_plane(out->data[3], out->linesize[3],
-                                in ->data[3], in ->linesize[3],
-                                inlink->w, inlink->h);
-        av_frame_free(&in);
-    }
-    return ff_filter_frame(outlink, out);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    FSPPContext *fspp = ctx->priv;
-    av_freep(&fspp->temp);
-    av_freep(&fspp->src);
-    av_freep(&fspp->non_b_qp_table);
-}
-
-static const AVFilterPad fspp_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad fspp_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_fspp = {
-    .name            = "fspp",
-    .description     = NULL_IF_CONFIG_SMALL("Apply Fast Simple Post-processing filter."),
-    .priv_size       = sizeof(FSPPContext),
-    .uninit          = uninit,
-    .query_formats   = query_formats,
-    .inputs          = fspp_inputs,
-    .outputs         = fspp_outputs,
-    .priv_class      = &fspp_class,
-    .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
-};
diff --git a/libavfilter/vf_fspp.h b/libavfilter/vf_fspp.h
deleted file mode 100644
index 73d8c7c..0000000
--- a/libavfilter/vf_fspp.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (C) 2005 Nikolaj Poroshin <porosh3@psu.ru>
- * Copyright (c) 2014 Arwa Arif <arwaarif1994@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef AVFILTER_FSPP_H
-#define AVFILTER_FSPP_H
-
-#include "avfilter.h"
-
-#define BLOCKSZ 12
-#define MAX_LEVEL 5
-
-#define DCTSIZE 8
-#define DCTSIZE_S "8"
-
-#define FIX(x,s)  ((x) * (1 << s) + 0.5)
-
-#define MULTIPLY16H(x,k)   (((x) * (k)) >> 16)
-#define THRESHOLD(r,x,t)                         \
-    if(((unsigned)((x) + t)) > t * 2) r = (x);   \
-    else r = 0;
-#define DESCALE(x,n)  (((x) + (1 << ((n) - 1))) >> n)
-
-typedef int32_t int_simd16_t;
-static const int16_t FIX_0_382683433   = FIX(0.382683433, 14);
-static const int16_t FIX_0_541196100   = FIX(0.541196100, 14);
-static const int16_t FIX_0_707106781   = FIX(M_SQRT1_2  , 14);
-static const int16_t FIX_1_306562965   = FIX(1.306562965, 14);
-static const int16_t FIX_1_414213562_A = FIX(M_SQRT2    , 14);
-static const int16_t FIX_1_847759065   = FIX(1.847759065, 13);
-static const int16_t FIX_2_613125930   = FIX(-2.613125930, 13);
-static const int16_t FIX_1_414213562   = FIX(M_SQRT2    , 13);
-static const int16_t FIX_1_082392200   = FIX(1.082392200, 13);
-
-typedef struct FSPPContext {
-    AVClass *class;
-    uint64_t threshold_mtx_noq[8 * 2];
-    uint64_t threshold_mtx[8 * 2];        //used in both C & MMX (& later SSE2) versions
-
-    int log2_count;
-    int strength;
-    int hsub;
-    int vsub;
-    int temp_stride;
-    int qp;
-    int qscale_type;
-    int prev_q;
-    uint8_t *src;
-    int16_t *temp;
-    uint8_t *non_b_qp_table;
-    int non_b_qp_alloc_size;
-    int use_bframe_qp;
-
-    void (*store_slice)(uint8_t *dst, int16_t *src,
-                        ptrdiff_t dst_stride, ptrdiff_t src_stride,
-                        ptrdiff_t width, ptrdiff_t height, ptrdiff_t log2_scale);
-
-    void (*store_slice2)(uint8_t *dst, int16_t *src,
-                         ptrdiff_t dst_stride, ptrdiff_t src_stride,
-                         ptrdiff_t width, ptrdiff_t height, ptrdiff_t log2_scale);
-
-    void (*mul_thrmat)(int16_t *thr_adr_noq, int16_t *thr_adr, int q);
-
-    void (*column_fidct)(int16_t *thr_adr, int16_t *data,
-                         int16_t *output, int cnt);
-
-    void (*row_idct)(int16_t *workspace, int16_t *output_adr,
-                     ptrdiff_t output_stride, int cnt);
-
-    void (*row_fdct)(int16_t *data, const uint8_t *pixels,
-                     ptrdiff_t line_size, int cnt);
-
-} FSPPContext;
-
-void ff_fspp_init_x86(FSPPContext *fspp);
-
-#endif /* AVFILTER_FSPP_H */
diff --git a/libavfilter/vf_geq.c b/libavfilter/vf_geq.c
deleted file mode 100644
index d7abf96..0000000
--- a/libavfilter/vf_geq.c
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * Copyright (C) 2006 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (C) 2012 Clément Bœsch <u pkh me>
- *
- * 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.
- *
- * 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 FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/**
- * @file
- * Generic equation change filter
- * Originally written by Michael Niedermayer for the MPlayer project, and
- * ported by Clément Bœsch for FFmpeg.
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/avstring.h"
-#include "libavutil/eval.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "internal.h"
-
-#define MAX_NB_THREADS 32
-#define NB_PLANES 4
-
-enum InterpolationMethods {
-    INTERP_NEAREST,
-    INTERP_BILINEAR,
-    NB_INTERP
-};
-
-static const char *const var_names[] = {   "X",   "Y",   "W",   "H",   "N",   "SW",   "SH",   "T",        NULL };
-enum                                   { VAR_X, VAR_Y, VAR_W, VAR_H, VAR_N, VAR_SW, VAR_SH, VAR_T, VAR_VARS_NB };
-
-typedef struct GEQContext {
-    const AVClass *class;
-    AVExpr *e[NB_PLANES][MAX_NB_THREADS]; ///< expressions for each plane and thread
-    char *expr_str[4+3];        ///< expression strings for each plane
-    AVFrame *picref;            ///< current input buffer
-    uint8_t *dst;               ///< reference pointer to the 8bits output
-    uint16_t *dst16;            ///< reference pointer to the 16bits output
-    double values[VAR_VARS_NB]; ///< expression values
-    int hsub, vsub;             ///< chroma subsampling
-    int planes;                 ///< number of planes
-    int interpolation;
-    int is_rgb;
-    int bps;
-
-    double *pixel_sums[NB_PLANES];
-    int needs_sum[NB_PLANES];
-} GEQContext;
-
-enum { Y = 0, U, V, A, G, B, R };
-
-#define OFFSET(x) offsetof(GEQContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-
-static const AVOption geq_options[] = {
-    { "lum_expr",   "set luminance expression",   OFFSET(expr_str[Y]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "lum",        "set luminance expression",   OFFSET(expr_str[Y]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "cb_expr",    "set chroma blue expression", OFFSET(expr_str[U]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "cb",         "set chroma blue expression", OFFSET(expr_str[U]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "cr_expr",    "set chroma red expression",  OFFSET(expr_str[V]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "cr",         "set chroma red expression",  OFFSET(expr_str[V]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "alpha_expr", "set alpha expression",       OFFSET(expr_str[A]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "a",          "set alpha expression",       OFFSET(expr_str[A]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "red_expr",   "set red expression",         OFFSET(expr_str[R]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "r",          "set red expression",         OFFSET(expr_str[R]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "green_expr", "set green expression",       OFFSET(expr_str[G]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "g",          "set green expression",       OFFSET(expr_str[G]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "blue_expr",  "set blue expression",        OFFSET(expr_str[B]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "b",          "set blue expression",        OFFSET(expr_str[B]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
-    { "interpolation","set interpolation method", OFFSET(interpolation), AV_OPT_TYPE_INT, {.i64=INTERP_BILINEAR}, 0, NB_INTERP-1, FLAGS, "interp" },
-    { "i",          "set interpolation method",   OFFSET(interpolation), AV_OPT_TYPE_INT, {.i64=INTERP_BILINEAR}, 0, NB_INTERP-1, FLAGS, "interp" },
-    { "nearest",    "nearest interpolation",      0,                   AV_OPT_TYPE_CONST, {.i64=INTERP_NEAREST},  0, 0, FLAGS, "interp" },
-    { "n",          "nearest interpolation",      0,                   AV_OPT_TYPE_CONST, {.i64=INTERP_NEAREST},  0, 0, FLAGS, "interp" },
-    { "bilinear",   "bilinear interpolation",     0,                   AV_OPT_TYPE_CONST, {.i64=INTERP_BILINEAR}, 0, 0, FLAGS, "interp" },
-    { "b",          "bilinear interpolation",     0,                   AV_OPT_TYPE_CONST, {.i64=INTERP_BILINEAR}, 0, 0, FLAGS, "interp" },
-    {NULL},
-};
-
-AVFILTER_DEFINE_CLASS(geq);
-
-static inline double getpix(void *priv, double x, double y, int plane)
-{
-    int xi, yi;
-    GEQContext *geq = priv;
-    AVFrame *picref = geq->picref;
-    const uint8_t *src = picref->data[plane];
-    int linesize = picref->linesize[plane];
-    const int w = (plane == 1 || plane == 2) ? AV_CEIL_RSHIFT(picref->width,  geq->hsub) : picref->width;
-    const int h = (plane == 1 || plane == 2) ? AV_CEIL_RSHIFT(picref->height, geq->vsub) : picref->height;
-
-    if (!src)
-        return 0;
-
-    if (geq->interpolation == INTERP_BILINEAR) {
-        xi = x = av_clipd(x, 0, w - 2);
-        yi = y = av_clipd(y, 0, h - 2);
-
-        x -= xi;
-        y -= yi;
-
-        if (geq->bps > 8) {
-            const uint16_t *src16 = (const uint16_t*)src;
-            linesize /= 2;
-
-            return (1-y)*((1-x)*src16[xi +  yi    * linesize] + x*src16[xi + 1 +  yi    * linesize])
-                  +   y *((1-x)*src16[xi + (yi+1) * linesize] + x*src16[xi + 1 + (yi+1) * linesize]);
-        } else {
-            return (1-y)*((1-x)*src[xi +  yi    * linesize] + x*src[xi + 1 +  yi    * linesize])
-                  +   y *((1-x)*src[xi + (yi+1) * linesize] + x*src[xi + 1 + (yi+1) * linesize]);
-        }
-    } else {
-        xi = av_clipd(x, 0, w - 1);
-        yi = av_clipd(y, 0, h - 1);
-
-        if (geq->bps > 8) {
-            const uint16_t *src16 = (const uint16_t*)src;
-            linesize /= 2;
-
-            return src16[xi + yi * linesize];
-        } else {
-            return src[xi + yi * linesize];
-        }
-    }
-}
-
-static int calculate_sums(GEQContext *geq, int plane, int w, int h)
-{
-    int xi, yi;
-    AVFrame *picref = geq->picref;
-    const uint8_t *src = picref->data[plane];
-    int linesize = picref->linesize[plane];
-
-    if (!geq->pixel_sums[plane])
-        geq->pixel_sums[plane] = av_malloc_array(w, h * sizeof (*geq->pixel_sums[plane]));
-    if (!geq->pixel_sums[plane])
-        return AVERROR(ENOMEM);
-    if (geq->bps > 8)
-        linesize /= 2;
-    for (yi = 0; yi < h; yi ++) {
-        if (geq->bps > 8) {
-            const uint16_t *src16 = (const uint16_t*)src;
-            double linesum = 0;
-
-            for (xi = 0; xi < w; xi ++) {
-                linesum += src16[xi + yi * linesize];
-                geq->pixel_sums[plane][xi + yi * w] = linesum;
-            }
-        } else {
-            double linesum = 0;
-
-            for (xi = 0; xi < w; xi ++) {
-                linesum += src[xi + yi * linesize];
-                geq->pixel_sums[plane][xi + yi * w] = linesum;
-            }
-        }
-        if (yi)
-            for (xi = 0; xi < w; xi ++) {
-                geq->pixel_sums[plane][xi + yi * w] += geq->pixel_sums[plane][xi + yi * w - w];
-            }
-    }
-    return 0;
-}
-
-static inline double getpix_integrate_internal(GEQContext *geq, int x, int y, int plane, int w, int h)
-{
-    if (x > w - 1) {
-        double boundary =   getpix_integrate_internal(geq, w - 1, y, plane, w, h);
-        return 2*boundary - getpix_integrate_internal(geq, 2*(w - 1) - x, y, plane, w, h);
-    } else if (y > h - 1) {
-        double boundary =   getpix_integrate_internal(geq, x, h - 1, plane, w, h);
-        return 2*boundary - getpix_integrate_internal(geq, x, 2*(h - 1) - y, plane, w, h);
-    } else if (x < 0) {
-        if (x == -1) return 0;
-        return - getpix_integrate_internal(geq, -x-2, y, plane, w, h);
-    } else if (y < 0) {
-        if (y == -1) return 0;
-        return - getpix_integrate_internal(geq, x, -y-2, plane, w, h);
-    }
-
-    return geq->pixel_sums[plane][x + y * w];
-}
-
-static inline double getpix_integrate(void *priv, double x, double y, int plane) {
-    GEQContext *geq = priv;
-    AVFrame *picref = geq->picref;
-    const uint8_t *src = picref->data[plane];
-    const int w = (plane == 1 || plane == 2) ? AV_CEIL_RSHIFT(picref->width,  geq->hsub) : picref->width;
-    const int h = (plane == 1 || plane == 2) ? AV_CEIL_RSHIFT(picref->height, geq->vsub) : picref->height;
-
-    if (!src)
-        return 0;
-
-    return getpix_integrate_internal(geq, lrint(av_clipd(x, -w, 2*w)), lrint(av_clipd(y, -h, 2*h)), plane, w, h);
-}
-
-//TODO: cubic interpolate
-//TODO: keep the last few frames
-static double lum(void *priv, double x, double y) { return getpix(priv, x, y, 0); }
-static double  cb(void *priv, double x, double y) { return getpix(priv, x, y, 1); }
-static double  cr(void *priv, double x, double y) { return getpix(priv, x, y, 2); }
-static double alpha(void *priv, double x, double y) { return getpix(priv, x, y, 3); }
-
-static double   lumsum(void *priv, double x, double y) { return getpix_integrate(priv, x, y, 0); }
-static double    cbsum(void *priv, double x, double y) { return getpix_integrate(priv, x, y, 1); }
-static double    crsub(void *priv, double x, double y) { return getpix_integrate(priv, x, y, 2); }
-static double alphasum(void *priv, double x, double y) { return getpix_integrate(priv, x, y, 3); }
-
-static av_cold int geq_init(AVFilterContext *ctx)
-{
-    GEQContext *geq = ctx->priv;
-    int plane, ret = 0;
-
-    if (!geq->expr_str[Y] && !geq->expr_str[G] && !geq->expr_str[B] && !geq->expr_str[R]) {
-        av_log(ctx, AV_LOG_ERROR, "A luminance or RGB expression is mandatory\n");
-        ret = AVERROR(EINVAL);
-        goto end;
-    }
-    geq->is_rgb = !geq->expr_str[Y];
-
-    if ((geq->expr_str[Y] || geq->expr_str[U] || geq->expr_str[V]) && (geq->expr_str[G] || geq->expr_str[B] || geq->expr_str[R])) {
-        av_log(ctx, AV_LOG_ERROR, "Either YCbCr or RGB but not both must be specified\n");
-        ret = AVERROR(EINVAL);
-        goto end;
-    }
-
-    if (!geq->expr_str[U] && !geq->expr_str[V]) {
-        /* No chroma at all: fallback on luma */
-        geq->expr_str[U] = av_strdup(geq->expr_str[Y]);
-        geq->expr_str[V] = av_strdup(geq->expr_str[Y]);
-    } else {
-        /* One chroma unspecified, fallback on the other */
-        if (!geq->expr_str[U]) geq->expr_str[U] = av_strdup(geq->expr_str[V]);
-        if (!geq->expr_str[V]) geq->expr_str[V] = av_strdup(geq->expr_str[U]);
-    }
-
-    if (!geq->expr_str[A]) {
-        char bps_string[8];
-        snprintf(bps_string, sizeof(bps_string), "%d", (1<<geq->bps) - 1);
-        geq->expr_str[A] = av_strdup(bps_string);
-    }
-    if (!geq->expr_str[G])
-        geq->expr_str[G] = av_strdup("g(X,Y)");
-    if (!geq->expr_str[B])
-        geq->expr_str[B] = av_strdup("b(X,Y)");
-    if (!geq->expr_str[R])
-        geq->expr_str[R] = av_strdup("r(X,Y)");
-
-    if (geq->is_rgb ?
-            (!geq->expr_str[G] || !geq->expr_str[B] || !geq->expr_str[R])
-                    :
-            (!geq->expr_str[U] || !geq->expr_str[V] || !geq->expr_str[A])) {
-        ret = AVERROR(ENOMEM);
-        goto end;
-    }
-
-    for (plane = 0; plane < NB_PLANES; plane++) {
-        static double (*p[])(void *, double, double) = {
-            lum   , cb   , cr   , alpha   ,
-            lumsum, cbsum, crsub, alphasum,
-        };
-        static const char *const func2_yuv_names[]    = {
-            "lum"   , "cb"   , "cr"   , "alpha"   , "p",
-            "lumsum", "cbsum", "crsum", "alphasum", "psum",
-            NULL };
-        static const char *const func2_rgb_names[]    = {
-            "g"   , "b"   , "r"   , "alpha"   , "p",
-            "gsum", "bsum", "rsum", "alphasum", "psum",
-            NULL };
-        const char *const *func2_names       = geq->is_rgb ? func2_rgb_names : func2_yuv_names;
-        double (*func2[])(void *, double, double) = {
-            lum   , cb   , cr   , alpha   , p[plane],
-            lumsum, cbsum, crsub, alphasum, p[plane + 4],
-            NULL };
-        int counter[10] = {0};
-
-        for (int i = 0; i < MAX_NB_THREADS; i++) {
-            ret = av_expr_parse(&geq->e[plane][i], geq->expr_str[plane < 3 && geq->is_rgb ? plane+4 : plane], var_names,
-                                NULL, NULL, func2_names, func2, 0, ctx);
-            if (ret < 0)
-                goto end;
-        }
-
-        av_expr_count_func(geq->e[plane][0], counter, FF_ARRAY_ELEMS(counter), 2);
-        geq->needs_sum[plane] = counter[5] + counter[6] + counter[7] + counter[8] + counter[9];
-    }
-
-end:
-    return ret;
-}
-
-static int geq_query_formats(AVFilterContext *ctx)
-{
-    GEQContext *geq = ctx->priv;
-    static const enum AVPixelFormat yuv_pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,  AV_PIX_FMT_YUV422P,  AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUV411P,  AV_PIX_FMT_YUV410P,  AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUVA444P, AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUVA420P,
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_YUV444P9,  AV_PIX_FMT_YUV422P9,  AV_PIX_FMT_YUV420P9,
-        AV_PIX_FMT_YUVA444P9, AV_PIX_FMT_YUVA422P9, AV_PIX_FMT_YUVA420P9,
-        AV_PIX_FMT_YUV444P10,  AV_PIX_FMT_YUV422P10,  AV_PIX_FMT_YUV420P10,
-        AV_PIX_FMT_YUV440P10,
-        AV_PIX_FMT_YUVA444P10, AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA420P10,
-        AV_PIX_FMT_GRAY9, AV_PIX_FMT_GRAY10,
-        AV_PIX_FMT_YUV444P12,  AV_PIX_FMT_YUV422P12,  AV_PIX_FMT_YUV420P12,
-        AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY14,
-        AV_PIX_FMT_YUV444P14,  AV_PIX_FMT_YUV422P14,  AV_PIX_FMT_YUV420P14,
-        AV_PIX_FMT_YUV444P16,  AV_PIX_FMT_YUV422P16,  AV_PIX_FMT_YUV420P16,
-        AV_PIX_FMT_YUVA444P16, AV_PIX_FMT_YUVA422P16, AV_PIX_FMT_YUVA420P16,
-        AV_PIX_FMT_GRAY16,
-        AV_PIX_FMT_NONE
-    };
-    static const enum AVPixelFormat rgb_pix_fmts[] = {
-        AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP,
-        AV_PIX_FMT_GBRP9,
-        AV_PIX_FMT_GBRP10, AV_PIX_FMT_GBRAP10,
-        AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRAP12,
-        AV_PIX_FMT_GBRP14,
-        AV_PIX_FMT_GBRP16, AV_PIX_FMT_GBRAP16,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list;
-
-    if (geq->is_rgb) {
-        fmts_list = ff_make_format_list(rgb_pix_fmts);
-    } else
-        fmts_list = ff_make_format_list(yuv_pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int geq_config_props(AVFilterLink *inlink)
-{
-    GEQContext *geq = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-
-    av_assert0(desc);
-
-    geq->hsub = desc->log2_chroma_w;
-    geq->vsub = desc->log2_chroma_h;
-    geq->bps = desc->comp[0].depth;
-    geq->planes = desc->nb_components;
-    return 0;
-}
-
-typedef struct ThreadData {
-    int height;
-    int width;
-    int plane;
-    int linesize;
-} ThreadData;
-
-static int slice_geq_filter(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
-{
-    GEQContext *geq = ctx->priv;
-    ThreadData *td = arg;
-    const int height = td->height;
-    const int width = td->width;
-    const int plane = td->plane;
-    const int linesize = td->linesize;
-    const int slice_start = (height *  jobnr) / nb_jobs;
-    const int slice_end = (height * (jobnr+1)) / nb_jobs;
-    int x, y;
-
-    double values[VAR_VARS_NB];
-    values[VAR_W] = geq->values[VAR_W];
-    values[VAR_H] = geq->values[VAR_H];
-    values[VAR_N] = geq->values[VAR_N];
-    values[VAR_SW] = geq->values[VAR_SW];
-    values[VAR_SH] = geq->values[VAR_SH];
-    values[VAR_T] = geq->values[VAR_T];
-
-    if (geq->bps == 8) {
-        uint8_t *ptr = geq->dst + linesize * slice_start;
-        for (y = slice_start; y < slice_end; y++) {
-            values[VAR_Y] = y;
-
-            for (x = 0; x < width; x++) {
-                values[VAR_X] = x;
-                ptr[x] = av_expr_eval(geq->e[plane][jobnr], values, geq);
-            }
-            ptr += linesize;
-        }
-    } else {
-        uint16_t *ptr16 = geq->dst16 + (linesize/2) * slice_start;
-        for (y = slice_start; y < slice_end; y++) {
-            values[VAR_Y] = y;
-            for (x = 0; x < width; x++) {
-                values[VAR_X] = x;
-                ptr16[x] = av_expr_eval(geq->e[plane][jobnr], values, geq);
-            }
-            ptr16 += linesize/2;
-        }
-    }
-
-    return 0;
-}
-
-static int geq_filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    int plane;
-    AVFilterContext *ctx = inlink->dst;
-    const int nb_threads = FFMIN(MAX_NB_THREADS, ff_filter_get_nb_threads(ctx));
-    GEQContext *geq = ctx->priv;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    AVFrame *out;
-
-    geq->values[VAR_N] = inlink->frame_count_out,
-    geq->values[VAR_T] = in->pts == AV_NOPTS_VALUE ? NAN : in->pts * av_q2d(inlink->time_base),
-
-    geq->picref = in;
-    out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!out) {
-        av_frame_free(&in);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(out, in);
-
-    for (plane = 0; plane < geq->planes && out->data[plane]; plane++) {
-        const int width = (plane == 1 || plane == 2) ? AV_CEIL_RSHIFT(inlink->w, geq->hsub) : inlink->w;
-        const int height = (plane == 1 || plane == 2) ? AV_CEIL_RSHIFT(inlink->h, geq->vsub) : inlink->h;
-        const int linesize = out->linesize[plane];
-        ThreadData td;
-
-        geq->dst = out->data[plane];
-        geq->dst16 = (uint16_t*)out->data[plane];
-
-        geq->values[VAR_W]  = width;
-        geq->values[VAR_H]  = height;
-        geq->values[VAR_SW] = width / (double)inlink->w;
-        geq->values[VAR_SH] = height / (double)inlink->h;
-
-        td.width = width;
-        td.height = height;
-        td.plane = plane;
-        td.linesize = linesize;
-
-        if (geq->needs_sum[plane])
-            calculate_sums(geq, plane, width, height);
-
-        ctx->internal->execute(ctx, slice_geq_filter, &td, NULL, FFMIN(height, nb_threads));
-    }
-
-    av_frame_free(&geq->picref);
-    return ff_filter_frame(outlink, out);
-}
-
-static av_cold void geq_uninit(AVFilterContext *ctx)
-{
-    int i;
-    GEQContext *geq = ctx->priv;
-
-    for (i = 0; i < NB_PLANES; i++)
-        for (int j = 0; j < MAX_NB_THREADS; j++)
-            av_expr_free(geq->e[i][j]);
-    for (i = 0; i < NB_PLANES; i++)
-        av_freep(&geq->pixel_sums);
-}
-
-static const AVFilterPad geq_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = geq_config_props,
-        .filter_frame = geq_filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad geq_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_geq = {
-    .name          = "geq",
-    .description   = NULL_IF_CONFIG_SMALL("Apply generic equation to each pixel."),
-    .priv_size     = sizeof(GEQContext),
-    .init          = geq_init,
-    .uninit        = geq_uninit,
-    .query_formats = geq_query_formats,
-    .inputs        = geq_inputs,
-    .outputs       = geq_outputs,
-    .priv_class    = &geq_class,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
-};
diff --git a/libavfilter/vf_histeq.c b/libavfilter/vf_histeq.c
deleted file mode 100644
index 2449e10..0000000
--- a/libavfilter/vf_histeq.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (c) 2012 Jeremy Tran
- * Copyright (c) 2001 Donald A. Graft
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Histogram equalization filter, based on the VirtualDub filter by
- * Donald A. Graft  <neuron2 AT home DOT com>.
- * Implements global automatic contrast adjustment by means of
- * histogram equalization.
- */
-
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-
-#include "avfilter.h"
-#include "drawutils.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-
-// #define DEBUG
-
-// Linear Congruential Generator, see "Numerical Recipes"
-#define LCG_A 4096
-#define LCG_C 150889
-#define LCG_M 714025
-#define LCG(x) (((x) * LCG_A + LCG_C) % LCG_M)
-#define LCG_SEED 739187
-
-enum HisteqAntibanding {
-    HISTEQ_ANTIBANDING_NONE   = 0,
-    HISTEQ_ANTIBANDING_WEAK   = 1,
-    HISTEQ_ANTIBANDING_STRONG = 2,
-    HISTEQ_ANTIBANDING_NB,
-};
-
-typedef struct HisteqContext {
-    const AVClass *class;
-    float strength;
-    float intensity;
-    int antibanding;               ///< HisteqAntibanding
-    int in_histogram [256];        ///< input histogram
-    int out_histogram[256];        ///< output histogram
-    int LUT[256];                  ///< lookup table derived from histogram[]
-    uint8_t rgba_map[4];           ///< components position
-    int bpp;                       ///< bytes per pixel
-} HisteqContext;
-
-#define OFFSET(x) offsetof(HisteqContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-#define CONST(name, help, val, unit) { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, INT_MIN, INT_MAX, FLAGS, unit }
-
-static const AVOption histeq_options[] = {
-    { "strength",    "set the strength", OFFSET(strength), AV_OPT_TYPE_FLOAT, {.dbl=0.2}, 0, 1, FLAGS },
-    { "intensity",   "set the intensity", OFFSET(intensity), AV_OPT_TYPE_FLOAT, {.dbl=0.21}, 0, 1, FLAGS },
-    { "antibanding", "set the antibanding level", OFFSET(antibanding), AV_OPT_TYPE_INT, {.i64=HISTEQ_ANTIBANDING_NONE}, 0, HISTEQ_ANTIBANDING_NB-1, FLAGS, "antibanding" },
-    CONST("none",    "apply no antibanding",     HISTEQ_ANTIBANDING_NONE,   "antibanding"),
-    CONST("weak",    "apply weak antibanding",   HISTEQ_ANTIBANDING_WEAK,   "antibanding"),
-    CONST("strong",  "apply strong antibanding", HISTEQ_ANTIBANDING_STRONG, "antibanding"),
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(histeq);
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    HisteqContext *histeq = ctx->priv;
-
-    av_log(ctx, AV_LOG_VERBOSE,
-           "strength:%0.3f intensity:%0.3f antibanding:%d\n",
-           histeq->strength, histeq->intensity, histeq->antibanding);
-
-    return 0;
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_ARGB, AV_PIX_FMT_RGBA, AV_PIX_FMT_ABGR, AV_PIX_FMT_BGRA,
-        AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    HisteqContext *histeq = ctx->priv;
-    const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(inlink->format);
-
-    histeq->bpp = av_get_bits_per_pixel(pix_desc) / 8;
-    ff_fill_rgba_map(histeq->rgba_map, inlink->format);
-
-    return 0;
-}
-
-#define R 0
-#define G 1
-#define B 2
-#define A 3
-
-#define GET_RGB_VALUES(r, g, b, src, map) do { \
-    r = src[x + map[R]];                       \
-    g = src[x + map[G]];                       \
-    b = src[x + map[B]];                       \
-} while (0)
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
-{
-    AVFilterContext   *ctx     = inlink->dst;
-    HisteqContext     *histeq  = ctx->priv;
-    AVFilterLink      *outlink = ctx->outputs[0];
-    int strength  = histeq->strength  * 1000;
-    int intensity = histeq->intensity * 1000;
-    int x, y, i, luthi, lutlo, lut, luma, oluma, m;
-    AVFrame *outpic;
-    unsigned int r, g, b, jran;
-    uint8_t *src, *dst;
-
-    outpic = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!outpic) {
-        av_frame_free(&inpic);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(outpic, inpic);
-
-    /* Seed random generator for antibanding. */
-    jran = LCG_SEED;
-
-    /* Calculate and store the luminance and calculate the global histogram
-       based on the luminance. */
-    memset(histeq->in_histogram, 0, sizeof(histeq->in_histogram));
-    src = inpic->data[0];
-    dst = outpic->data[0];
-    for (y = 0; y < inlink->h; y++) {
-        for (x = 0; x < inlink->w * histeq->bpp; x += histeq->bpp) {
-            GET_RGB_VALUES(r, g, b, src, histeq->rgba_map);
-            luma = (55 * r + 182 * g + 19 * b) >> 8;
-            dst[x + histeq->rgba_map[A]] = luma;
-            histeq->in_histogram[luma]++;
-        }
-        src += inpic->linesize[0];
-        dst += outpic->linesize[0];
-    }
-
-#ifdef DEBUG
-    for (x = 0; x < 256; x++)
-        ff_dlog(ctx, "in[%d]: %u\n", x, histeq->in_histogram[x]);
-#endif
-
-    /* Calculate the lookup table. */
-    histeq->LUT[0] = histeq->in_histogram[0];
-    /* Accumulate */
-    for (x = 1; x < 256; x++)
-        histeq->LUT[x] = histeq->LUT[x-1] + histeq->in_histogram[x];
-
-    /* Normalize */
-    for (x = 0; x < 256; x++)
-        histeq->LUT[x] = (histeq->LUT[x] * intensity) / (inlink->h * inlink->w);
-
-    /* Adjust the LUT based on the selected strength. This is an alpha
-       mix of the calculated LUT and a linear LUT with gain 1. */
-    for (x = 0; x < 256; x++)
-        histeq->LUT[x] = (strength * histeq->LUT[x]) / 255 +
-                         ((255 - strength) * x)      / 255;
-
-    /* Output the equalized frame. */
-    memset(histeq->out_histogram, 0, sizeof(histeq->out_histogram));
-
-    src = inpic->data[0];
-    dst = outpic->data[0];
-    for (y = 0; y < inlink->h; y++) {
-        for (x = 0; x < inlink->w * histeq->bpp; x += histeq->bpp) {
-            luma = dst[x + histeq->rgba_map[A]];
-            if (luma == 0) {
-                for (i = 0; i < histeq->bpp; ++i)
-                    dst[x + i] = 0;
-                histeq->out_histogram[0]++;
-            } else {
-                lut = histeq->LUT[luma];
-                if (histeq->antibanding != HISTEQ_ANTIBANDING_NONE) {
-                    if (luma > 0) {
-                        lutlo = histeq->antibanding == HISTEQ_ANTIBANDING_WEAK ?
-                                (histeq->LUT[luma] + histeq->LUT[luma - 1]) / 2 :
-                                 histeq->LUT[luma - 1];
-                    } else
-                        lutlo = lut;
-
-                    if (luma < 255) {
-                        luthi = (histeq->antibanding == HISTEQ_ANTIBANDING_WEAK) ?
-                            (histeq->LUT[luma] + histeq->LUT[luma + 1]) / 2 :
-                             histeq->LUT[luma + 1];
-                    } else
-                        luthi = lut;
-
-                    if (lutlo != luthi) {
-                        jran = LCG(jran);
-                        lut = lutlo + ((luthi - lutlo + 1) * jran) / LCG_M;
-                    }
-                }
-
-                GET_RGB_VALUES(r, g, b, src, histeq->rgba_map);
-                if (((m = FFMAX3(r, g, b)) * lut) / luma > 255) {
-                    r = (r * 255) / m;
-                    g = (g * 255) / m;
-                    b = (b * 255) / m;
-                } else {
-                    r = (r * lut) / luma;
-                    g = (g * lut) / luma;
-                    b = (b * lut) / luma;
-                }
-                dst[x + histeq->rgba_map[R]] = r;
-                dst[x + histeq->rgba_map[G]] = g;
-                dst[x + histeq->rgba_map[B]] = b;
-                oluma = av_clip_uint8((55 * r + 182 * g + 19 * b) >> 8);
-                histeq->out_histogram[oluma]++;
-            }
-        }
-        src += inpic->linesize[0];
-        dst += outpic->linesize[0];
-    }
-#ifdef DEBUG
-    for (x = 0; x < 256; x++)
-        ff_dlog(ctx, "out[%d]: %u\n", x, histeq->out_histogram[x]);
-#endif
-
-    av_frame_free(&inpic);
-    return ff_filter_frame(outlink, outpic);
-}
-
-static const AVFilterPad histeq_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad histeq_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_histeq = {
-    .name          = "histeq",
-    .description   = NULL_IF_CONFIG_SMALL("Apply global color histogram equalization."),
-    .priv_size     = sizeof(HisteqContext),
-    .init          = init,
-    .query_formats = query_formats,
-    .inputs        = histeq_inputs,
-    .outputs       = histeq_outputs,
-    .priv_class    = &histeq_class,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_hqdn3d.c b/libavfilter/vf_hqdn3d.c
deleted file mode 100644
index 803f90c..0000000
--- a/libavfilter/vf_hqdn3d.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (c) 2003 Daniel Moreno <comac AT comac DOT darktech DOT org>
- * Copyright (c) 2010 Baptiste Coudurier
- * Copyright (c) 2012 Loren Merritt
- *
- * This file is part of FFmpeg, ported from MPlayer.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * high quality 3d video denoiser, ported from MPlayer
- * libmpcodecs/vf_hqdn3d.c.
- */
-
-#include <float.h>
-
-#include "config.h"
-#include "libavutil/attributes.h"
-#include "libavutil/common.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/intreadwrite.h"
-#include "libavutil/opt.h"
-
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-#include "vf_hqdn3d.h"
-
-#define LUT_BITS (depth==16 ? 8 : 4)
-#define LOAD(x) (((depth == 8 ? src[x] : AV_RN16A(src + (x) * 2)) << (16 - depth))\
-                 + (((1 << (16 - depth)) - 1) >> 1))
-#define STORE(x,val) (depth == 8 ? dst[x] = (val) >> (16 - depth) : \
-                                   AV_WN16A(dst + (x) * 2, (val) >> (16 - depth)))
-
-av_always_inline
-static uint32_t lowpass(int prev, int cur, int16_t *coef, int depth)
-{
-    int d = (prev - cur) >> (8 - LUT_BITS);
-    return cur + coef[d];
-}
-
-av_always_inline
-static void denoise_temporal(uint8_t *src, uint8_t *dst,
-                             uint16_t *frame_ant,
-                             int w, int h, int sstride, int dstride,
-                             int16_t *temporal, int depth)
-{
-    long x, y;
-    uint32_t tmp;
-
-    temporal += 256 << LUT_BITS;
-
-    for (y = 0; y < h; y++) {
-        for (x = 0; x < w; x++) {
-            frame_ant[x] = tmp = lowpass(frame_ant[x], LOAD(x), temporal, depth);
-            STORE(x, tmp);
-        }
-        src += sstride;
-        dst += dstride;
-        frame_ant += w;
-    }
-}
-
-av_always_inline
-static void denoise_spatial(HQDN3DContext *s,
-                            uint8_t *src, uint8_t *dst,
-                            uint16_t *line_ant, uint16_t *frame_ant,
-                            int w, int h, int sstride, int dstride,
-                            int16_t *spatial, int16_t *temporal, int depth)
-{
-    long x, y;
-    uint32_t pixel_ant;
-    uint32_t tmp;
-
-    spatial  += 256 << LUT_BITS;
-    temporal += 256 << LUT_BITS;
-
-    /* First line has no top neighbor. Only left one for each tmp and
-     * last frame */
-    pixel_ant = LOAD(0);
-    for (x = 0; x < w; x++) {
-        line_ant[x] = tmp = pixel_ant = lowpass(pixel_ant, LOAD(x), spatial, depth);
-        frame_ant[x] = tmp = lowpass(frame_ant[x], tmp, temporal, depth);
-        STORE(x, tmp);
-    }
-
-    for (y = 1; y < h; y++) {
-        src += sstride;
-        dst += dstride;
-        frame_ant += w;
-        if (s->denoise_row[depth]) {
-            s->denoise_row[depth](src, dst, line_ant, frame_ant, w, spatial, temporal);
-            continue;
-        }
-        pixel_ant = LOAD(0);
-        for (x = 0; x < w-1; x++) {
-            line_ant[x] = tmp = lowpass(line_ant[x], pixel_ant, spatial, depth);
-            pixel_ant = lowpass(pixel_ant, LOAD(x+1), spatial, depth);
-            frame_ant[x] = tmp = lowpass(frame_ant[x], tmp, temporal, depth);
-            STORE(x, tmp);
-        }
-        line_ant[x] = tmp = lowpass(line_ant[x], pixel_ant, spatial, depth);
-        frame_ant[x] = tmp = lowpass(frame_ant[x], tmp, temporal, depth);
-        STORE(x, tmp);
-    }
-}
-
-av_always_inline
-static int denoise_depth(HQDN3DContext *s,
-                         uint8_t *src, uint8_t *dst,
-                         uint16_t *line_ant, uint16_t **frame_ant_ptr,
-                         int w, int h, int sstride, int dstride,
-                         int16_t *spatial, int16_t *temporal, int depth)
-{
-    // FIXME: For 16-bit depth, frame_ant could be a pointer to the previous
-    // filtered frame rather than a separate buffer.
-    long x, y;
-    uint16_t *frame_ant = *frame_ant_ptr;
-    if (!frame_ant) {
-        uint8_t *frame_src = src;
-        *frame_ant_ptr = frame_ant = av_malloc_array(w, h*sizeof(uint16_t));
-        if (!frame_ant)
-            return AVERROR(ENOMEM);
-        for (y = 0; y < h; y++, src += sstride, frame_ant += w)
-            for (x = 0; x < w; x++)
-                frame_ant[x] = LOAD(x);
-        src = frame_src;
-        frame_ant = *frame_ant_ptr;
-    }
-
-    if (spatial[0])
-        denoise_spatial(s, src, dst, line_ant, frame_ant,
-                        w, h, sstride, dstride, spatial, temporal, depth);
-    else
-        denoise_temporal(src, dst, frame_ant,
-                         w, h, sstride, dstride, temporal, depth);
-    emms_c();
-    return 0;
-}
-
-#define denoise(...)                                                          \
-    do {                                                                      \
-        int ret = AVERROR_BUG;                                                \
-        switch (s->depth) {                                                   \
-            case  8: ret = denoise_depth(__VA_ARGS__,  8); break;             \
-            case  9: ret = denoise_depth(__VA_ARGS__,  9); break;             \
-            case 10: ret = denoise_depth(__VA_ARGS__, 10); break;             \
-            case 12: ret = denoise_depth(__VA_ARGS__, 12); break;             \
-            case 14: ret = denoise_depth(__VA_ARGS__, 14); break;             \
-            case 16: ret = denoise_depth(__VA_ARGS__, 16); break;             \
-        }                                                                     \
-        if (ret < 0) {                                                        \
-            av_frame_free(&out);                                              \
-            if (!direct)                                                      \
-                av_frame_free(&in);                                           \
-            return ret;                                                       \
-        }                                                                     \
-    } while (0)
-
-static void precalc_coefs(double dist25, int depth, int16_t *ct)
-{
-    int i;
-    double gamma, simil, C;
-
-    gamma = log(0.25) / log(1.0 - FFMIN(dist25,252.0)/255.0 - 0.00001);
-
-    for (i = -256<<LUT_BITS; i < 256<<LUT_BITS; i++) {
-        double f = ((i<<(9-LUT_BITS)) + (1<<(8-LUT_BITS)) - 1) / 512.0; // midpoint of the bin
-        simil = FFMAX(0, 1.0 - fabs(f) / 255.0);
-        C = pow(simil, gamma) * 256.0 * f;
-        ct[(256<<LUT_BITS)+i] = lrint(C);
-    }
-
-    ct[0] = !!dist25;
-}
-
-#define PARAM1_DEFAULT 4.0
-#define PARAM2_DEFAULT 3.0
-#define PARAM3_DEFAULT 6.0
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    HQDN3DContext *s = ctx->priv;
-
-    if (!s->strength[LUMA_SPATIAL])
-        s->strength[LUMA_SPATIAL] = PARAM1_DEFAULT;
-    if (!s->strength[CHROMA_SPATIAL])
-        s->strength[CHROMA_SPATIAL] = PARAM2_DEFAULT * s->strength[LUMA_SPATIAL] / PARAM1_DEFAULT;
-    if (!s->strength[LUMA_TMP])
-        s->strength[LUMA_TMP]   = PARAM3_DEFAULT * s->strength[LUMA_SPATIAL] / PARAM1_DEFAULT;
-    if (!s->strength[CHROMA_TMP])
-        s->strength[CHROMA_TMP] = s->strength[LUMA_TMP] * s->strength[CHROMA_SPATIAL] / s->strength[LUMA_SPATIAL];
-
-    av_log(ctx, AV_LOG_VERBOSE, "ls:%f cs:%f lt:%f ct:%f\n",
-           s->strength[LUMA_SPATIAL], s->strength[CHROMA_SPATIAL],
-           s->strength[LUMA_TMP], s->strength[CHROMA_TMP]);
-
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    HQDN3DContext *s = ctx->priv;
-
-    av_freep(&s->coefs[0]);
-    av_freep(&s->coefs[1]);
-    av_freep(&s->coefs[2]);
-    av_freep(&s->coefs[3]);
-    av_freep(&s->line[0]);
-    av_freep(&s->line[1]);
-    av_freep(&s->line[2]);
-    av_freep(&s->frame_prev[0]);
-    av_freep(&s->frame_prev[1]);
-    av_freep(&s->frame_prev[2]);
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV444P9,
-        AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10,
-        AV_PIX_FMT_YUV440P10,
-        AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV420P12,
-        AV_PIX_FMT_YUV440P12,
-        AV_PIX_FMT_YUV444P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV420P14,
-        AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static void calc_coefs(AVFilterContext *ctx)
-{
-    HQDN3DContext *s = ctx->priv;
-
-    for (int i = 0; i < 4; i++)
-        precalc_coefs(s->strength[i], s->depth, s->coefs[i]);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    HQDN3DContext *s = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int i, depth;
-
-    uninit(inlink->dst);
-
-    s->hsub  = desc->log2_chroma_w;
-    s->vsub  = desc->log2_chroma_h;
-    s->depth = depth = desc->comp[0].depth;
-
-    for (i = 0; i < 3; i++) {
-        s->line[i] = av_malloc_array(inlink->w, sizeof(*s->line[i]));
-        if (!s->line[i])
-            return AVERROR(ENOMEM);
-    }
-
-    for (i = 0; i < 4; i++) {
-        s->coefs[i] = av_malloc((512<<LUT_BITS) * sizeof(int16_t));
-        if (!s->coefs[i])
-            return AVERROR(ENOMEM);
-    }
-
-    calc_coefs(ctx);
-
-    if (ARCH_X86)
-        ff_hqdn3d_init_x86(s);
-
-    return 0;
-}
-
-typedef struct ThreadData {
-    AVFrame *in, *out;
-    int direct;
-} ThreadData;
-
-static int do_denoise(AVFilterContext *ctx, void *data, int job_nr, int n_jobs)
-{
-    HQDN3DContext *s = ctx->priv;
-    const ThreadData *td = data;
-    AVFrame *out = td->out;
-    AVFrame *in = td->in;
-    int direct = td->direct;
-
-    denoise(s, in->data[job_nr], out->data[job_nr],
-                s->line[job_nr], &s->frame_prev[job_nr],
-                AV_CEIL_RSHIFT(in->width,  (!!job_nr * s->hsub)),
-                AV_CEIL_RSHIFT(in->height, (!!job_nr * s->vsub)),
-                in->linesize[job_nr], out->linesize[job_nr],
-                s->coefs[job_nr ? CHROMA_SPATIAL : LUMA_SPATIAL],
-                s->coefs[job_nr ? CHROMA_TMP     : LUMA_TMP]);
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx  = inlink->dst;
-    AVFilterLink *outlink = ctx->outputs[0];
-
-    AVFrame *out;
-    int direct = av_frame_is_writable(in) && !ctx->is_disabled;
-    ThreadData td;
-
-    if (direct) {
-        out = in;
-    } else {
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out) {
-            av_frame_free(&in);
-            return AVERROR(ENOMEM);
-        }
-
-        av_frame_copy_props(out, in);
-    }
-
-    td.in = in;
-    td.out = out;
-    td.direct = direct;
-    /* one thread per plane */
-    ctx->internal->execute(ctx, do_denoise, &td, NULL, 3);
-
-    if (ctx->is_disabled) {
-        av_frame_free(&out);
-        return ff_filter_frame(outlink, in);
-    }
-
-    if (!direct)
-        av_frame_free(&in);
-
-    return ff_filter_frame(outlink, out);
-}
-
-static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
-                           char *res, int res_len, int flags)
-{
-    int ret;
-
-    ret = ff_filter_process_command(ctx, cmd, args, res, res_len, flags);
-    if (ret < 0)
-        return ret;
-
-    calc_coefs(ctx);
-
-    return 0;
-}
-
-#define OFFSET(x) offsetof(HQDN3DContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_RUNTIME_PARAM
-static const AVOption hqdn3d_options[] = {
-    { "luma_spatial",   "spatial luma strength",    OFFSET(strength[LUMA_SPATIAL]),   AV_OPT_TYPE_DOUBLE, { .dbl = 0.0 }, 0, DBL_MAX, FLAGS },
-    { "chroma_spatial", "spatial chroma strength",  OFFSET(strength[CHROMA_SPATIAL]), AV_OPT_TYPE_DOUBLE, { .dbl = 0.0 }, 0, DBL_MAX, FLAGS },
-    { "luma_tmp",       "temporal luma strength",   OFFSET(strength[LUMA_TMP]),       AV_OPT_TYPE_DOUBLE, { .dbl = 0.0 }, 0, DBL_MAX, FLAGS },
-    { "chroma_tmp",     "temporal chroma strength", OFFSET(strength[CHROMA_TMP]),     AV_OPT_TYPE_DOUBLE, { .dbl = 0.0 }, 0, DBL_MAX, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(hqdn3d);
-
-static const AVFilterPad avfilter_vf_hqdn3d_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-
-static const AVFilterPad avfilter_vf_hqdn3d_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_hqdn3d = {
-    .name          = "hqdn3d",
-    .description   = NULL_IF_CONFIG_SMALL("Apply a High Quality 3D Denoiser."),
-    .priv_size     = sizeof(HQDN3DContext),
-    .priv_class    = &hqdn3d_class,
-    .init          = init,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = avfilter_vf_hqdn3d_inputs,
-    .outputs       = avfilter_vf_hqdn3d_outputs,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
-    .process_command = process_command,
-};
diff --git a/libavfilter/vf_hqdn3d.h b/libavfilter/vf_hqdn3d.h
deleted file mode 100644
index 3279bbc..0000000
--- a/libavfilter/vf_hqdn3d.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2003 Daniel Moreno <comac AT comac DOT darktech DOT org>
- * Copyright (c) 2010 Baptiste Coudurier
- * Copyright (c) 2012 Loren Merritt
- *
- * This file is part of FFmpeg, ported from MPlayer.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef AVFILTER_HQDN3D_H
-#define AVFILTER_HQDN3D_H
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "libavutil/opt.h"
-
-typedef struct HQDN3DContext {
-    const AVClass *class;
-    int16_t *coefs[4];
-    uint16_t *line[3];
-    uint16_t *frame_prev[3];
-    double strength[4];
-    int hsub, vsub;
-    int depth;
-    void (*denoise_row[17])(uint8_t *src, uint8_t *dst, uint16_t *line_ant, uint16_t *frame_ant, ptrdiff_t w, int16_t *spatial, int16_t *temporal);
-} HQDN3DContext;
-
-#define LUMA_SPATIAL   0
-#define LUMA_TMP       1
-#define CHROMA_SPATIAL 2
-#define CHROMA_TMP     3
-
-void ff_hqdn3d_init_x86(HQDN3DContext *hqdn3d);
-
-#endif /* AVFILTER_HQDN3D_H */
diff --git a/libavfilter/vf_kerndeint.c b/libavfilter/vf_kerndeint.c
deleted file mode 100644
index 057d15f..0000000
--- a/libavfilter/vf_kerndeint.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * Copyright (c) 2012 Jeremy Tran
- * Copyright (c) 2004 Tobias Diedrich
- * Copyright (c) 2003 Donald A. Graft
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Kernel Deinterlacer
- * Ported from MPlayer libmpcodecs/vf_kerndeint.c.
- */
-
-#include "libavutil/imgutils.h"
-#include "libavutil/intreadwrite.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-
-typedef struct KerndeintContext {
-    const AVClass *class;
-    int           frame; ///< frame count, starting from 0
-    int           thresh, map, order, sharp, twoway;
-    int           vsub;
-    int           is_packed_rgb;
-    uint8_t       *tmp_data    [4];  ///< temporary plane data buffer
-    int            tmp_linesize[4];  ///< temporary plane byte linesize
-    int            tmp_bwidth  [4];  ///< temporary plane byte width
-} KerndeintContext;
-
-#define OFFSET(x) offsetof(KerndeintContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-static const AVOption kerndeint_options[] = {
-    { "thresh", "set the threshold", OFFSET(thresh), AV_OPT_TYPE_INT, {.i64=10}, 0, 255, FLAGS },
-    { "map",    "set the map",    OFFSET(map),    AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS },
-    { "order",  "set the order",  OFFSET(order),  AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS },
-    { "sharp",  "set sharpening", OFFSET(sharp),  AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS },
-    { "twoway", "set twoway",     OFFSET(twoway), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(kerndeint);
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    KerndeintContext *kerndeint = ctx->priv;
-
-    av_freep(&kerndeint->tmp_data[0]);
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUYV422,
-        AV_PIX_FMT_ARGB, AV_PIX_FMT_0RGB,
-        AV_PIX_FMT_ABGR, AV_PIX_FMT_0BGR,
-        AV_PIX_FMT_RGBA, AV_PIX_FMT_RGB0,
-        AV_PIX_FMT_BGRA, AV_PIX_FMT_BGR0,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_props(AVFilterLink *inlink)
-{
-    KerndeintContext *kerndeint = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int ret;
-
-    kerndeint->is_packed_rgb = av_pix_fmt_desc_get(inlink->format)->flags & AV_PIX_FMT_FLAG_RGB;
-    kerndeint->vsub = desc->log2_chroma_h;
-
-    ret = av_image_alloc(kerndeint->tmp_data, kerndeint->tmp_linesize,
-                         inlink->w, inlink->h, inlink->format, 16);
-    if (ret < 0)
-        return ret;
-    memset(kerndeint->tmp_data[0], 0, ret);
-
-    if ((ret = av_image_fill_linesizes(kerndeint->tmp_bwidth, inlink->format, inlink->w)) < 0)
-        return ret;
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
-{
-    KerndeintContext *kerndeint = inlink->dst->priv;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    AVFrame *outpic;
-    const uint8_t *prvp;   ///< Previous field's pixel line number n
-    const uint8_t *prvpp;  ///< Previous field's pixel line number (n - 1)
-    const uint8_t *prvpn;  ///< Previous field's pixel line number (n + 1)
-    const uint8_t *prvppp; ///< Previous field's pixel line number (n - 2)
-    const uint8_t *prvpnn; ///< Previous field's pixel line number (n + 2)
-    const uint8_t *prvp4p; ///< Previous field's pixel line number (n - 4)
-    const uint8_t *prvp4n; ///< Previous field's pixel line number (n + 4)
-
-    const uint8_t *srcp;   ///< Current field's pixel line number n
-    const uint8_t *srcpp;  ///< Current field's pixel line number (n - 1)
-    const uint8_t *srcpn;  ///< Current field's pixel line number (n + 1)
-    const uint8_t *srcppp; ///< Current field's pixel line number (n - 2)
-    const uint8_t *srcpnn; ///< Current field's pixel line number (n + 2)
-    const uint8_t *srcp3p; ///< Current field's pixel line number (n - 3)
-    const uint8_t *srcp3n; ///< Current field's pixel line number (n + 3)
-    const uint8_t *srcp4p; ///< Current field's pixel line number (n - 4)
-    const uint8_t *srcp4n; ///< Current field's pixel line number (n + 4)
-
-    uint8_t *dstp, *dstp_saved;
-    const uint8_t *srcp_saved;
-
-    int src_linesize, psrc_linesize, dst_linesize, bwidth;
-    int x, y, plane, val, hi, lo, g, h, n = kerndeint->frame++;
-    double valf;
-
-    const int thresh = kerndeint->thresh;
-    const int order  = kerndeint->order;
-    const int map    = kerndeint->map;
-    const int sharp  = kerndeint->sharp;
-    const int twoway = kerndeint->twoway;
-
-    const int is_packed_rgb = kerndeint->is_packed_rgb;
-
-    outpic = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!outpic) {
-        av_frame_free(&inpic);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(outpic, inpic);
-    outpic->interlaced_frame = 0;
-
-    for (plane = 0; plane < 4 && inpic->data[plane] && inpic->linesize[plane]; plane++) {
-        h = plane == 0 ? inlink->h : AV_CEIL_RSHIFT(inlink->h, kerndeint->vsub);
-        bwidth = kerndeint->tmp_bwidth[plane];
-
-        srcp_saved        = inpic->data[plane];
-        src_linesize      = inpic->linesize[plane];
-        psrc_linesize     = kerndeint->tmp_linesize[plane];
-        dstp_saved        = outpic->data[plane];
-        dst_linesize      = outpic->linesize[plane];
-        srcp              = srcp_saved + (1 - order) * src_linesize;
-        dstp              = dstp_saved + (1 - order) * dst_linesize;
-
-        for (y = 0; y < h; y += 2) {
-            memcpy(dstp, srcp, bwidth);
-            srcp += 2 * src_linesize;
-            dstp += 2 * dst_linesize;
-        }
-
-        // Copy through the lines that will be missed below.
-        memcpy(dstp_saved + order            * dst_linesize, srcp_saved + (1 -     order) * src_linesize, bwidth);
-        memcpy(dstp_saved + (2 + order    )  * dst_linesize, srcp_saved + (3 -     order) * src_linesize, bwidth);
-        memcpy(dstp_saved + (h - 2 + order)  * dst_linesize, srcp_saved + (h - 1 - order) * src_linesize, bwidth);
-        memcpy(dstp_saved + (h - 4 + order)  * dst_linesize, srcp_saved + (h - 3 - order) * src_linesize, bwidth);
-
-        /* For the other field choose adaptively between using the previous field
-           or the interpolant from the current field. */
-        prvp   = kerndeint->tmp_data[plane] + 5 * psrc_linesize - (1 - order) * psrc_linesize;
-        prvpp  = prvp - psrc_linesize;
-        prvppp = prvp - 2 * psrc_linesize;
-        prvp4p = prvp - 4 * psrc_linesize;
-        prvpn  = prvp + psrc_linesize;
-        prvpnn = prvp + 2 * psrc_linesize;
-        prvp4n = prvp + 4 * psrc_linesize;
-
-        srcp   = srcp_saved + 5 * src_linesize - (1 - order) * src_linesize;
-        srcpp  = srcp - src_linesize;
-        srcppp = srcp - 2 * src_linesize;
-        srcp3p = srcp - 3 * src_linesize;
-        srcp4p = srcp - 4 * src_linesize;
-
-        srcpn  = srcp + src_linesize;
-        srcpnn = srcp + 2 * src_linesize;
-        srcp3n = srcp + 3 * src_linesize;
-        srcp4n = srcp + 4 * src_linesize;
-
-        dstp   = dstp_saved + 5 * dst_linesize - (1 - order) * dst_linesize;
-
-        for (y = 5 - (1 - order); y <= h - 5 - (1 - order); y += 2) {
-            for (x = 0; x < bwidth; x++) {
-                if (thresh == 0 || n == 0 ||
-                    (abs((int)prvp[x]  - (int)srcp[x])  > thresh) ||
-                    (abs((int)prvpp[x] - (int)srcpp[x]) > thresh) ||
-                    (abs((int)prvpn[x] - (int)srcpn[x]) > thresh)) {
-                    if (map) {
-                        g = x & ~3;
-
-                        if (is_packed_rgb) {
-                            AV_WB32(dstp + g, 0xffffffff);
-                            x = g + 3;
-                        } else if (inlink->format == AV_PIX_FMT_YUYV422) {
-                            // y <- 235, u <- 128, y <- 235, v <- 128
-                            AV_WB32(dstp + g, 0xeb80eb80);
-                            x = g + 3;
-                        } else {
-                            dstp[x] = plane == 0 ? 235 : 128;
-                        }
-                    } else {
-                        if (is_packed_rgb) {
-                            hi = 255;
-                            lo = 0;
-                        } else if (inlink->format == AV_PIX_FMT_YUYV422) {
-                            hi = x & 1 ? 240 : 235;
-                            lo = 16;
-                        } else {
-                            hi = plane == 0 ? 235 : 240;
-                            lo = 16;
-                        }
-
-                        if (sharp) {
-                            if (twoway) {
-                                valf = + 0.526 * ((int)srcpp[x] + (int)srcpn[x])
-                                    + 0.170 * ((int)srcp[x] + (int)prvp[x])
-                                    - 0.116 * ((int)srcppp[x] + (int)srcpnn[x] + (int)prvppp[x] + (int)prvpnn[x])
-                                    - 0.026 * ((int)srcp3p[x] + (int)srcp3n[x])
-                                    + 0.031 * ((int)srcp4p[x] + (int)srcp4n[x] + (int)prvp4p[x] + (int)prvp4n[x]);
-                            } else {
-                                valf = + 0.526 * ((int)srcpp[x] + (int)srcpn[x])
-                                    + 0.170 * ((int)prvp[x])
-                                    - 0.116 * ((int)prvppp[x] + (int)prvpnn[x])
-                                    - 0.026 * ((int)srcp3p[x] + (int)srcp3n[x])
-                                    + 0.031 * ((int)prvp4p[x] + (int)prvp4p[x]);
-                            }
-                            dstp[x] = av_clip(valf, lo, hi);
-                        } else {
-                            if (twoway) {
-                                val = (8 * ((int)srcpp[x] + (int)srcpn[x]) + 2 * ((int)srcp[x] + (int)prvp[x])
-                                       - (int)(srcppp[x]) - (int)(srcpnn[x])
-                                       - (int)(prvppp[x]) - (int)(prvpnn[x])) >> 4;
-                            } else {
-                                val = (8 * ((int)srcpp[x] + (int)srcpn[x]) + 2 * ((int)prvp[x])
-                                       - (int)(prvppp[x]) - (int)(prvpnn[x])) >> 4;
-                            }
-                            dstp[x] = av_clip(val, lo, hi);
-                        }
-                    }
-                } else {
-                    dstp[x] = srcp[x];
-                }
-            }
-            prvp   += 2 * psrc_linesize;
-            prvpp  += 2 * psrc_linesize;
-            prvppp += 2 * psrc_linesize;
-            prvpn  += 2 * psrc_linesize;
-            prvpnn += 2 * psrc_linesize;
-            prvp4p += 2 * psrc_linesize;
-            prvp4n += 2 * psrc_linesize;
-            srcp   += 2 * src_linesize;
-            srcpp  += 2 * src_linesize;
-            srcppp += 2 * src_linesize;
-            srcp3p += 2 * src_linesize;
-            srcp4p += 2 * src_linesize;
-            srcpn  += 2 * src_linesize;
-            srcpnn += 2 * src_linesize;
-            srcp3n += 2 * src_linesize;
-            srcp4n += 2 * src_linesize;
-            dstp   += 2 * dst_linesize;
-        }
-
-        srcp = inpic->data[plane];
-        dstp = kerndeint->tmp_data[plane];
-        av_image_copy_plane(dstp, psrc_linesize, srcp, src_linesize, bwidth, h);
-    }
-
-    av_frame_free(&inpic);
-    return ff_filter_frame(outlink, outpic);
-}
-
-static const AVFilterPad kerndeint_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_props,
-    },
-    { NULL }
-};
-
-static const AVFilterPad kerndeint_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-
-AVFilter ff_vf_kerndeint = {
-    .name          = "kerndeint",
-    .description   = NULL_IF_CONFIG_SMALL("Apply kernel deinterlacing to the input."),
-    .priv_size     = sizeof(KerndeintContext),
-    .priv_class    = &kerndeint_class,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = kerndeint_inputs,
-    .outputs       = kerndeint_outputs,
-};
diff --git a/libavfilter/vf_mcdeint.c b/libavfilter/vf_mcdeint.c
deleted file mode 100644
index 9cdec63..0000000
--- a/libavfilter/vf_mcdeint.c
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Motion Compensation Deinterlacer
- * Ported from MPlayer libmpcodecs/vf_mcdeint.c.
- *
- * Known Issues:
- *
- * The motion estimation is somewhat at the mercy of the input, if the
- * input frames are created purely based on spatial interpolation then
- * for example a thin black line or another random and not
- * interpolateable pattern will cause problems.
- * Note: completely ignoring the "unavailable" lines during motion
- * estimation did not look any better, so the most obvious solution
- * would be to improve tfields or penalize problematic motion vectors.
- *
- * If non iterative ME is used then snow currently ignores the OBMC
- * window and as a result sometimes creates artifacts.
- *
- * Only past frames are used, we should ideally use future frames too,
- * something like filtering the whole movie in forward and then
- * backward direction seems like an interesting idea but the current
- * filter framework is FAR from supporting such things.
- *
- * Combining the motion compensated image with the input image also is
- * not as trivial as it seems, simple blindly taking even lines from
- * one and odd ones from the other does not work at all as ME/MC
- * sometimes has nothing in the previous frames which matches the
- * current. The current algorithm has been found by trial and error
- * and almost certainly can be improved...
- */
-
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "libavcodec/avcodec.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-
-enum MCDeintMode {
-    MODE_FAST = 0,
-    MODE_MEDIUM,
-    MODE_SLOW,
-    MODE_EXTRA_SLOW,
-    MODE_NB,
-};
-
-enum MCDeintParity {
-    PARITY_TFF  =  0, ///< top field first
-    PARITY_BFF  =  1, ///< bottom field first
-};
-
-typedef struct MCDeintContext {
-    const AVClass *class;
-    int mode;           ///< MCDeintMode
-    int parity;         ///< MCDeintParity
-    int qp;
-    AVCodecContext *enc_ctx;
-} MCDeintContext;
-
-#define OFFSET(x) offsetof(MCDeintContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-#define CONST(name, help, val, unit) { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, INT_MIN, INT_MAX, FLAGS, unit }
-
-static const AVOption mcdeint_options[] = {
-    { "mode", "set mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=MODE_FAST}, 0, MODE_NB-1, FLAGS, .unit="mode" },
-    CONST("fast",       NULL, MODE_FAST,       "mode"),
-    CONST("medium",     NULL, MODE_MEDIUM,     "mode"),
-    CONST("slow",       NULL, MODE_SLOW,       "mode"),
-    CONST("extra_slow", NULL, MODE_EXTRA_SLOW, "mode"),
-
-    { "parity", "set the assumed picture field parity", OFFSET(parity), AV_OPT_TYPE_INT, {.i64=PARITY_BFF}, -1, 1, FLAGS, "parity" },
-    CONST("tff", "assume top field first",    PARITY_TFF, "parity"),
-    CONST("bff", "assume bottom field first", PARITY_BFF, "parity"),
-
-    { "qp", "set qp", OFFSET(qp), AV_OPT_TYPE_INT, {.i64=1}, INT_MIN, INT_MAX, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(mcdeint);
-
-static int config_props(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    MCDeintContext *mcdeint = ctx->priv;
-    AVCodec *enc;
-    AVCodecContext *enc_ctx;
-    AVDictionary *opts = NULL;
-    int ret;
-
-    if (!(enc = avcodec_find_encoder(AV_CODEC_ID_SNOW))) {
-        av_log(ctx, AV_LOG_ERROR, "Snow encoder is not enabled in libavcodec\n");
-        return AVERROR(EINVAL);
-    }
-
-    mcdeint->enc_ctx = avcodec_alloc_context3(enc);
-    if (!mcdeint->enc_ctx)
-        return AVERROR(ENOMEM);
-    enc_ctx = mcdeint->enc_ctx;
-    enc_ctx->width  = inlink->w;
-    enc_ctx->height = inlink->h;
-    enc_ctx->time_base = (AVRational){1,25};  // meaningless
-    enc_ctx->gop_size = INT_MAX;
-    enc_ctx->max_b_frames = 0;
-    enc_ctx->pix_fmt = AV_PIX_FMT_YUV420P;
-    enc_ctx->flags = AV_CODEC_FLAG_QSCALE | AV_CODEC_FLAG_LOW_DELAY;
-    enc_ctx->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
-    enc_ctx->global_quality = 1;
-    enc_ctx->me_cmp = enc_ctx->me_sub_cmp = FF_CMP_SAD;
-    enc_ctx->mb_cmp = FF_CMP_SSE;
-    av_dict_set(&opts, "memc_only", "1", 0);
-    av_dict_set(&opts, "no_bitstream", "1", 0);
-
-    switch (mcdeint->mode) {
-    case MODE_EXTRA_SLOW:
-        enc_ctx->refs = 3;
-    case MODE_SLOW:
-        av_dict_set(&opts, "motion_est", "iter", 0);
-    case MODE_MEDIUM:
-        enc_ctx->flags |= AV_CODEC_FLAG_4MV;
-        enc_ctx->dia_size = 2;
-    case MODE_FAST:
-        enc_ctx->flags |= AV_CODEC_FLAG_QPEL;
-    }
-
-    ret = avcodec_open2(enc_ctx, enc, &opts);
-    av_dict_free(&opts);
-    if (ret < 0)
-        return ret;
-
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    MCDeintContext *mcdeint = ctx->priv;
-
-    avcodec_free_context(&mcdeint->enc_ctx);
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
-{
-    MCDeintContext *mcdeint = inlink->dst->priv;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    AVFrame *outpic, *frame_dec;
-    AVPacket pkt = {0};
-    int x, y, i, ret, got_frame = 0;
-
-    outpic = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!outpic) {
-        av_frame_free(&inpic);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(outpic, inpic);
-    inpic->quality = mcdeint->qp * FF_QP2LAMBDA;
-
-    av_init_packet(&pkt);
-
-    ret = avcodec_encode_video2(mcdeint->enc_ctx, &pkt, inpic, &got_frame);
-    if (ret < 0)
-        goto end;
-
-    frame_dec = mcdeint->enc_ctx->coded_frame;
-
-    for (i = 0; i < 3; i++) {
-        int is_chroma = !!i;
-        int w = AV_CEIL_RSHIFT(inlink->w, is_chroma);
-        int h = AV_CEIL_RSHIFT(inlink->h, is_chroma);
-        int fils = frame_dec->linesize[i];
-        int srcs = inpic    ->linesize[i];
-        int dsts = outpic   ->linesize[i];
-
-        for (y = 0; y < h; y++) {
-            if ((y ^ mcdeint->parity) & 1) {
-                for (x = 0; x < w; x++) {
-                    uint8_t *filp = &frame_dec->data[i][x + y*fils];
-                    uint8_t *srcp = &inpic    ->data[i][x + y*srcs];
-                    uint8_t *dstp = &outpic   ->data[i][x + y*dsts];
-
-                    if (y > 0 && y < h-1){
-                        int is_edge = x < 3 || x > w-4;
-                        int diff0 = filp[-fils] - srcp[-srcs];
-                        int diff1 = filp[+fils] - srcp[+srcs];
-                        int temp = filp[0];
-
-#define DELTA(j) av_clip(j, -x, w-1-x)
-
-#define GET_SCORE_EDGE(j)\
-   FFABS(srcp[-srcs+DELTA(-1+(j))] - srcp[+srcs+DELTA(-1-(j))])+\
-   FFABS(srcp[-srcs+DELTA(j)     ] - srcp[+srcs+DELTA(  -(j))])+\
-   FFABS(srcp[-srcs+DELTA(1+(j)) ] - srcp[+srcs+DELTA( 1-(j))])
-
-#define GET_SCORE(j)\
-   FFABS(srcp[-srcs-1+(j)] - srcp[+srcs-1-(j)])+\
-   FFABS(srcp[-srcs  +(j)] - srcp[+srcs  -(j)])+\
-   FFABS(srcp[-srcs+1+(j)] - srcp[+srcs+1-(j)])
-
-#define CHECK_EDGE(j)\
-    {   int score = GET_SCORE_EDGE(j);\
-        if (score < spatial_score){\
-            spatial_score = score;\
-            diff0 = filp[-fils+DELTA(j)]    - srcp[-srcs+DELTA(j)];\
-            diff1 = filp[+fils+DELTA(-(j))] - srcp[+srcs+DELTA(-(j))];\
-
-#define CHECK(j)\
-    {   int score = GET_SCORE(j);\
-        if (score < spatial_score){\
-            spatial_score= score;\
-            diff0 = filp[-fils+(j)] - srcp[-srcs+(j)];\
-            diff1 = filp[+fils-(j)] - srcp[+srcs-(j)];\
-
-                        if (is_edge) {
-                            int spatial_score = GET_SCORE_EDGE(0) - 1;
-                            CHECK_EDGE(-1) CHECK_EDGE(-2) }} }}
-                            CHECK_EDGE( 1) CHECK_EDGE( 2) }} }}
-                        } else {
-                            int spatial_score = GET_SCORE(0) - 1;
-                            CHECK(-1) CHECK(-2) }} }}
-                            CHECK( 1) CHECK( 2) }} }}
-                        }
-
-
-                        if (diff0 + diff1 > 0)
-                            temp -= (diff0 + diff1 - FFABS(FFABS(diff0) - FFABS(diff1)) / 2) / 2;
-                        else
-                            temp -= (diff0 + diff1 + FFABS(FFABS(diff0) - FFABS(diff1)) / 2) / 2;
-                        *filp = *dstp = temp > 255U ? ~(temp>>31) : temp;
-                    } else {
-                        *dstp = *filp;
-                    }
-                }
-            }
-        }
-
-        for (y = 0; y < h; y++) {
-            if (!((y ^ mcdeint->parity) & 1)) {
-                for (x = 0; x < w; x++) {
-                    frame_dec->data[i][x + y*fils] =
-                    outpic   ->data[i][x + y*dsts] = inpic->data[i][x + y*srcs];
-                }
-            }
-        }
-    }
-    mcdeint->parity ^= 1;
-
-end:
-    av_packet_unref(&pkt);
-    av_frame_free(&inpic);
-    if (ret < 0) {
-        av_frame_free(&outpic);
-        return ret;
-    }
-    return ff_filter_frame(outlink, outpic);
-}
-
-static const AVFilterPad mcdeint_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_props,
-    },
-    { NULL }
-};
-
-static const AVFilterPad mcdeint_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_mcdeint = {
-    .name          = "mcdeint",
-    .description   = NULL_IF_CONFIG_SMALL("Apply motion compensating deinterlacing."),
-    .priv_size     = sizeof(MCDeintContext),
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = mcdeint_inputs,
-    .outputs       = mcdeint_outputs,
-    .priv_class    = &mcdeint_class,
-};
diff --git a/libavfilter/vf_mpdecimate.c b/libavfilter/vf_mpdecimate.c
deleted file mode 100644
index c9a9cb3..0000000
--- a/libavfilter/vf_mpdecimate.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (c) 2003 Rich Felker
- * Copyright (c) 2012 Stefano Sabatini
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file mpdecimate filter, ported from libmpcodecs/vf_decimate.c by
- * Rich Felker.
- */
-
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/pixelutils.h"
-#include "libavutil/timestamp.h"
-#include "avfilter.h"
-#include "internal.h"
-#include "formats.h"
-#include "video.h"
-
-typedef struct DecimateContext {
-    const AVClass *class;
-    int lo, hi;                    ///< lower and higher threshold number of differences
-                                   ///< values for 8x8 blocks
-
-    float frac;                    ///< threshold of changed pixels over the total fraction
-
-    int max_drop_count;            ///< if positive: maximum number of sequential frames to drop
-                                   ///< if negative: minimum number of frames between two drops
-
-    int drop_count;                ///< if positive: number of frames sequentially dropped
-                                   ///< if negative: number of sequential frames which were not dropped
-
-    int hsub, vsub;                ///< chroma subsampling values
-    AVFrame *ref;                  ///< reference picture
-    av_pixelutils_sad_fn sad;      ///< sum of absolute difference function
-} DecimateContext;
-
-#define OFFSET(x) offsetof(DecimateContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-
-static const AVOption mpdecimate_options[] = {
-    { "max",  "set the maximum number of consecutive dropped frames (positive), or the minimum interval between dropped frames (negative)",
-      OFFSET(max_drop_count), AV_OPT_TYPE_INT, {.i64=0}, INT_MIN, INT_MAX, FLAGS },
-    { "hi",   "set high dropping threshold", OFFSET(hi), AV_OPT_TYPE_INT, {.i64=64*12}, INT_MIN, INT_MAX, FLAGS },
-    { "lo",   "set low dropping threshold", OFFSET(lo), AV_OPT_TYPE_INT, {.i64=64*5}, INT_MIN, INT_MAX, FLAGS },
-    { "frac", "set fraction dropping threshold",  OFFSET(frac), AV_OPT_TYPE_FLOAT, {.dbl=0.33}, 0, 1, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(mpdecimate);
-
-/**
- * Return 1 if the two planes are different, 0 otherwise.
- */
-static int diff_planes(AVFilterContext *ctx,
-                       uint8_t *cur, int cur_linesize,
-                       uint8_t *ref, int ref_linesize,
-                       int w, int h)
-{
-    DecimateContext *decimate = ctx->priv;
-
-    int x, y;
-    int d, c = 0;
-    int t = (w/16)*(h/16)*decimate->frac;
-
-    /* compute difference for blocks of 8x8 bytes */
-    for (y = 0; y < h-7; y += 4) {
-        for (x = 8; x < w-7; x += 4) {
-            d = decimate->sad(cur + y*cur_linesize + x, cur_linesize,
-                              ref + y*ref_linesize + x, ref_linesize);
-            if (d > decimate->hi) {
-                av_log(ctx, AV_LOG_DEBUG, "%d>=hi ", d);
-                return 1;
-            }
-            if (d > decimate->lo) {
-                c++;
-                if (c > t) {
-                    av_log(ctx, AV_LOG_DEBUG, "lo:%d>=%d ", c, t);
-                    return 1;
-                }
-            }
-        }
-    }
-
-    av_log(ctx, AV_LOG_DEBUG, "lo:%d<%d ", c, t);
-    return 0;
-}
-
-/**
- * Tell if the frame should be decimated, for example if it is no much
- * different with respect to the reference frame ref.
- */
-static int decimate_frame(AVFilterContext *ctx,
-                          AVFrame *cur, AVFrame *ref)
-{
-    DecimateContext *decimate = ctx->priv;
-    int plane;
-
-    if (decimate->max_drop_count > 0 &&
-        decimate->drop_count >= decimate->max_drop_count)
-        return 0;
-    if (decimate->max_drop_count < 0 &&
-        (decimate->drop_count-1) > decimate->max_drop_count)
-        return 0;
-
-    for (plane = 0; ref->data[plane] && ref->linesize[plane]; plane++) {
-        /* use 8x8 SAD even on subsampled planes.  The blocks won't match up with
-         * luma blocks, but hopefully nobody is depending on this to catch
-         * localized chroma changes that wouldn't exceed the thresholds when
-         * diluted by using what's effectively a larger block size.
-         */
-        int vsub = plane == 1 || plane == 2 ? decimate->vsub : 0;
-        int hsub = plane == 1 || plane == 2 ? decimate->hsub : 0;
-        if (diff_planes(ctx,
-                        cur->data[plane], cur->linesize[plane],
-                        ref->data[plane], ref->linesize[plane],
-                        AV_CEIL_RSHIFT(ref->width,  hsub),
-                        AV_CEIL_RSHIFT(ref->height, vsub))) {
-            emms_c();
-            return 0;
-        }
-    }
-
-    emms_c();
-    return 1;
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    DecimateContext *decimate = ctx->priv;
-
-    decimate->sad = av_pixelutils_get_sad_fn(3, 3, 0, ctx); // 8x8, not aligned on blocksize
-    if (!decimate->sad)
-        return AVERROR(EINVAL);
-
-    av_log(ctx, AV_LOG_VERBOSE, "max_drop_count:%d hi:%d lo:%d frac:%f\n",
-           decimate->max_drop_count, decimate->hi, decimate->lo, decimate->frac);
-
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    DecimateContext *decimate = ctx->priv;
-    av_frame_free(&decimate->ref);
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,      AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV420P,      AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV410P,      AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUVJ444P,     AV_PIX_FMT_YUVJ422P,
-        AV_PIX_FMT_YUVJ420P,     AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_YUVA420P,
-
-        AV_PIX_FMT_GBRP,
-
-        AV_PIX_FMT_YUVA444P,
-        AV_PIX_FMT_YUVA422P,
-
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    DecimateContext *decimate = ctx->priv;
-    const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(inlink->format);
-    decimate->hsub = pix_desc->log2_chroma_w;
-    decimate->vsub = pix_desc->log2_chroma_h;
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *cur)
-{
-    DecimateContext *decimate = inlink->dst->priv;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    int ret;
-
-    if (decimate->ref && decimate_frame(inlink->dst, cur, decimate->ref)) {
-        decimate->drop_count = FFMAX(1, decimate->drop_count+1);
-    } else {
-        av_frame_free(&decimate->ref);
-        decimate->ref = cur;
-        decimate->drop_count = FFMIN(-1, decimate->drop_count-1);
-
-        if ((ret = ff_filter_frame(outlink, av_frame_clone(cur))) < 0)
-            return ret;
-    }
-
-    av_log(inlink->dst, AV_LOG_DEBUG,
-           "%s pts:%s pts_time:%s drop_count:%d\n",
-           decimate->drop_count > 0 ? "drop" : "keep",
-           av_ts2str(cur->pts), av_ts2timestr(cur->pts, &inlink->time_base),
-           decimate->drop_count);
-
-    if (decimate->drop_count > 0)
-        av_frame_free(&cur);
-
-    return 0;
-}
-
-static const AVFilterPad mpdecimate_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad mpdecimate_outputs[] = {
-    {
-        .name          = "default",
-        .type          = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_mpdecimate = {
-    .name          = "mpdecimate",
-    .description   = NULL_IF_CONFIG_SMALL("Remove near-duplicate frames."),
-    .init          = init,
-    .uninit        = uninit,
-    .priv_size     = sizeof(DecimateContext),
-    .priv_class    = &mpdecimate_class,
-    .query_formats = query_formats,
-    .inputs        = mpdecimate_inputs,
-    .outputs       = mpdecimate_outputs,
-};
diff --git a/libavfilter/vf_nnedi.c b/libavfilter/vf_nnedi.c
deleted file mode 100644
index 9bad99e9..0000000
--- a/libavfilter/vf_nnedi.c
+++ /dev/null
@@ -1,1211 +0,0 @@
-/*
- * Copyright (C) 2010-2011 Kevin Stone
- * Copyright (C) 2016 Paul B Mahol
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <float.h>
-
-#include "libavutil/common.h"
-#include "libavutil/float_dsp.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-
-typedef struct FrameData {
-    uint8_t *paddedp[3];
-    int padded_stride[3];
-    int padded_width[3];
-    int padded_height[3];
-
-    uint8_t *dstp[3];
-    int dst_stride[3];
-
-    int field[3];
-
-    int32_t *lcount[3];
-    float *input;
-    float *temp;
-} FrameData;
-
-typedef struct NNEDIContext {
-    const AVClass *class;
-
-    char *weights_file;
-
-    AVFrame *src;
-    AVFrame *second;
-    AVFrame *dst;
-    int eof;
-    int64_t cur_pts;
-
-    AVFloatDSPContext *fdsp;
-    int nb_planes;
-    int linesize[4];
-    int planeheight[4];
-
-    float *weights0;
-    float *weights1[2];
-    int asize;
-    int nns;
-    int xdia;
-    int ydia;
-
-    // Parameters
-    int deint;
-    int field;
-    int process_plane;
-    int nsize;
-    int nnsparam;
-    int qual;
-    int etype;
-    int pscrn;
-    int fapprox;
-
-    int max_value;
-
-    void (*copy_pad)(const AVFrame *, FrameData *, struct NNEDIContext *, int);
-    void (*evalfunc_0)(struct NNEDIContext *, FrameData *);
-    void (*evalfunc_1)(struct NNEDIContext *, FrameData *);
-
-    // Functions used in evalfunc_0
-    void (*readpixels)(const uint8_t *, const int, float *);
-    void (*compute_network0)(struct NNEDIContext *s, const float *, const float *, uint8_t *);
-    int32_t (*process_line0)(const uint8_t *, int, uint8_t *, const uint8_t *, const int, const int, const int);
-
-    // Functions used in evalfunc_1
-    void (*extract)(const uint8_t *, const int, const int, const int, float *, float *);
-    void (*dot_prod)(struct NNEDIContext *, const float *, const float *, float *, const int, const int, const float *);
-    void (*expfunc)(float *, const int);
-    void (*wae5)(const float *, const int, float *);
-
-    FrameData frame_data;
-} NNEDIContext;
-
-#define OFFSET(x) offsetof(NNEDIContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-
-static const AVOption nnedi_options[] = {
-    {"weights",  "set weights file", OFFSET(weights_file),  AV_OPT_TYPE_STRING, {.str="nnedi3_weights.bin"}, 0, 0, FLAGS },
-    {"deint",         "set which frames to deinterlace", OFFSET(deint),         AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS, "deint" },
-        {"all",        "deinterlace all frames",                       0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "deint" },
-        {"interlaced", "only deinterlace frames marked as interlaced", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "deint" },
-    {"field",  "set mode of operation", OFFSET(field),         AV_OPT_TYPE_INT, {.i64=-1}, -2, 3, FLAGS, "field" },
-        {"af", "use frame flags, both fields",  0, AV_OPT_TYPE_CONST, {.i64=-2}, 0, 0, FLAGS, "field" },
-        {"a",  "use frame flags, single field", 0, AV_OPT_TYPE_CONST, {.i64=-1}, 0, 0, FLAGS, "field" },
-        {"t",  "use top field only",            0, AV_OPT_TYPE_CONST, {.i64=0},  0, 0, FLAGS, "field" },
-        {"b",  "use bottom field only",         0, AV_OPT_TYPE_CONST, {.i64=1},  0, 0, FLAGS, "field" },
-        {"tf", "use both fields, top first",    0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "field" },
-        {"bf", "use both fields, bottom first", 0, AV_OPT_TYPE_CONST, {.i64=3}, 0, 0, FLAGS, "field" },
-    {"planes", "set which planes to process", OFFSET(process_plane), AV_OPT_TYPE_INT, {.i64=7}, 0, 7, FLAGS },
-    {"nsize",  "set size of local neighborhood around each pixel, used by the predictor neural network", OFFSET(nsize), AV_OPT_TYPE_INT, {.i64=6}, 0, 6, FLAGS, "nsize" },
-        {"s8x6",     NULL, 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "nsize" },
-        {"s16x6",    NULL, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "nsize" },
-        {"s32x6",    NULL, 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "nsize" },
-        {"s48x6",    NULL, 0, AV_OPT_TYPE_CONST, {.i64=3}, 0, 0, FLAGS, "nsize" },
-        {"s8x4",     NULL, 0, AV_OPT_TYPE_CONST, {.i64=4}, 0, 0, FLAGS, "nsize" },
-        {"s16x4",    NULL, 0, AV_OPT_TYPE_CONST, {.i64=5}, 0, 0, FLAGS, "nsize" },
-        {"s32x4",    NULL, 0, AV_OPT_TYPE_CONST, {.i64=6}, 0, 0, FLAGS, "nsize" },
-    {"nns",    "set number of neurons in predictor neural network", OFFSET(nnsparam), AV_OPT_TYPE_INT, {.i64=1}, 0, 4, FLAGS, "nns" },
-        {"n16",       NULL, 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "nns" },
-        {"n32",       NULL, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "nns" },
-        {"n64",       NULL, 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "nns" },
-        {"n128",      NULL, 0, AV_OPT_TYPE_CONST, {.i64=3}, 0, 0, FLAGS, "nns" },
-        {"n256",      NULL, 0, AV_OPT_TYPE_CONST, {.i64=4}, 0, 0, FLAGS, "nns" },
-    {"qual",  "set quality", OFFSET(qual), AV_OPT_TYPE_INT, {.i64=1}, 1, 2, FLAGS, "qual" },
-        {"fast", NULL, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "qual" },
-        {"slow", NULL, 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "qual" },
-    {"etype", "set which set of weights to use in the predictor", OFFSET(etype), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS, "etype" },
-        {"a",  "weights trained to minimize absolute error", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "etype" },
-        {"s",  "weights trained to minimize squared error",  0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "etype" },
-    {"pscrn", "set prescreening", OFFSET(pscrn), AV_OPT_TYPE_INT, {.i64=2}, 0, 2, FLAGS, "pscrn" },
-        {"none",      NULL, 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "pscrn" },
-        {"original",  NULL, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "pscrn" },
-        {"new",       NULL, 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "pscrn" },
-    {"fapprox",       NULL, OFFSET(fapprox),       AV_OPT_TYPE_INT, {.i64=0}, 0, 3, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(nnedi);
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    NNEDIContext *s = ctx->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int ret;
-
-    s->nb_planes = av_pix_fmt_count_planes(inlink->format);
-    if ((ret = av_image_fill_linesizes(s->linesize, inlink->format, inlink->w)) < 0)
-        return ret;
-
-    s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
-    s->planeheight[0] = s->planeheight[3] = inlink->h;
-
-    return 0;
-}
-
-static int config_output(AVFilterLink *outlink)
-{
-    AVFilterContext *ctx = outlink->src;
-    NNEDIContext *s = ctx->priv;
-
-    outlink->time_base.num = ctx->inputs[0]->time_base.num;
-    outlink->time_base.den = ctx->inputs[0]->time_base.den * 2;
-    outlink->w             = ctx->inputs[0]->w;
-    outlink->h             = ctx->inputs[0]->h;
-
-    if (s->field > 1 || s->field == -2)
-        outlink->frame_rate = av_mul_q(ctx->inputs[0]->frame_rate,
-                                       (AVRational){2, 1});
-
-    return 0;
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ420P,
-        AV_PIX_FMT_YUVJ411P,
-        AV_PIX_FMT_GBRP,
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static void copy_pad(const AVFrame *src, FrameData *frame_data, NNEDIContext *s, int fn)
-{
-    const int off = 1 - fn;
-    int plane, y, x;
-
-    for (plane = 0; plane < s->nb_planes; plane++) {
-        const uint8_t *srcp = (const uint8_t *)src->data[plane];
-        uint8_t *dstp = (uint8_t *)frame_data->paddedp[plane];
-
-        const int src_stride = src->linesize[plane];
-        const int dst_stride = frame_data->padded_stride[plane];
-
-        const int src_height = s->planeheight[plane];
-        const int dst_height = frame_data->padded_height[plane];
-
-        const int src_width = s->linesize[plane];
-        const int dst_width = frame_data->padded_width[plane];
-
-        int c = 4;
-
-        if (!(s->process_plane & (1 << plane)))
-            continue;
-
-        // Copy.
-        for (y = off; y < src_height; y += 2)
-            memcpy(dstp + 32 + (6 + y) * dst_stride,
-                   srcp + y * src_stride,
-                   src_width * sizeof(uint8_t));
-
-        // And pad.
-        dstp += (6 + off) * dst_stride;
-        for (y = 6 + off; y < dst_height - 6; y += 2) {
-            int c = 2;
-
-            for (x = 0; x < 32; x++)
-                dstp[x] = dstp[64 - x];
-
-            for (x = dst_width - 32; x < dst_width; x++, c += 2)
-                dstp[x] = dstp[x - c];
-
-            dstp += dst_stride * 2;
-        }
-
-        dstp = (uint8_t *)frame_data->paddedp[plane];
-        for (y = off; y < 6; y += 2)
-            memcpy(dstp + y * dst_stride,
-                   dstp + (12 + 2 * off - y) * dst_stride,
-                   dst_width * sizeof(uint8_t));
-
-        for (y = dst_height - 6 + off; y < dst_height; y += 2, c += 4)
-            memcpy(dstp + y * dst_stride,
-                   dstp + (y - c) * dst_stride,
-                   dst_width * sizeof(uint8_t));
-    }
-}
-
-static void elliott(float *data, const int n)
-{
-    int i;
-
-    for (i = 0; i < n; i++)
-        data[i] = data[i] / (1.0f + FFABS(data[i]));
-}
-
-static void dot_prod(NNEDIContext *s, const float *data, const float *weights, float *vals, const int n, const int len, const float *scale)
-{
-    int i;
-
-    for (i = 0; i < n; i++) {
-        float sum;
-
-        sum = s->fdsp->scalarproduct_float(data, &weights[i * len], len);
-
-        vals[i] = sum * scale[0] + weights[n * len + i];
-    }
-}
-
-static void dot_prods(NNEDIContext *s, const float *dataf, const float *weightsf, float *vals, const int n, const int len, const float *scale)
-{
-    const int16_t *data = (int16_t *)dataf;
-    const int16_t *weights = (int16_t *)weightsf;
-    const float *wf = (float *)&weights[n * len];
-    int i, j;
-
-    for (i = 0; i < n; i++) {
-        int sum = 0, off = ((i >> 2) << 3) + (i & 3);
-        for (j = 0; j < len; j++)
-            sum += data[j] * weights[i * len + j];
-
-        vals[i] = sum * wf[off] * scale[0] + wf[off + 4];
-    }
-}
-
-static void compute_network0(NNEDIContext *s, const float *input, const float *weights, uint8_t *d)
-{
-    float t, temp[12], scale = 1.0f;
-
-    dot_prod(s, input, weights, temp, 4, 48, &scale);
-    t = temp[0];
-    elliott(temp, 4);
-    temp[0] = t;
-    dot_prod(s, temp, weights + 4 * 49, temp + 4, 4, 4, &scale);
-    elliott(temp + 4, 4);
-    dot_prod(s, temp, weights + 4 * 49 + 4 * 5, temp + 8, 4, 8, &scale);
-    if (FFMAX(temp[10], temp[11]) <= FFMAX(temp[8], temp[9]))
-        d[0] = 1;
-    else
-        d[0] = 0;
-}
-
-static void compute_network0_i16(NNEDIContext *s, const float *inputf, const float *weightsf, uint8_t *d)
-{
-    const float *wf = weightsf + 2 * 48;
-    float t, temp[12], scale = 1.0f;
-
-    dot_prods(s, inputf, weightsf, temp, 4, 48, &scale);
-    t = temp[0];
-    elliott(temp, 4);
-    temp[0] = t;
-    dot_prod(s, temp, wf + 8, temp + 4, 4, 4, &scale);
-    elliott(temp + 4, 4);
-    dot_prod(s, temp, wf + 8 + 4 * 5, temp + 8, 4, 8, &scale);
-    if (FFMAX(temp[10], temp[11]) <= FFMAX(temp[8], temp[9]))
-        d[0] = 1;
-    else
-        d[0] = 0;
-}
-
-static void pixel2float48(const uint8_t *t8, const int pitch, float *p)
-{
-    const uint8_t *t = (const uint8_t *)t8;
-    int y, x;
-
-    for (y = 0; y < 4; y++)
-        for (x = 0; x < 12; x++)
-            p[y * 12 + x] = t[y * pitch * 2 + x];
-}
-
-static void byte2word48(const uint8_t *t, const int pitch, float *pf)
-{
-    int16_t *p = (int16_t *)pf;
-    int y, x;
-
-    for (y = 0; y < 4; y++)
-        for (x = 0; x < 12; x++)
-            p[y * 12 + x] = t[y * pitch * 2 + x];
-}
-
-static int32_t process_line0(const uint8_t *tempu, int width, uint8_t *dstp8, const uint8_t *src3p8, const int src_pitch, const int max_value, const int chroma)
-{
-    uint8_t *dstp = (uint8_t *)dstp8;
-    const uint8_t *src3p = (const uint8_t *)src3p8;
-    int minimum = 0;
-    int maximum = max_value - 1; // Technically the -1 is only needed for 8 and 16 bit input.
-    int count = 0, x;
-    for (x = 0; x < width; x++) {
-        if (tempu[x]) {
-            int tmp = 19 * (src3p[x + src_pitch * 2] + src3p[x + src_pitch * 4]) - 3 * (src3p[x] + src3p[x + src_pitch * 6]);
-            tmp /= 32;
-            dstp[x] = FFMAX(FFMIN(tmp, maximum), minimum);
-        } else {
-            dstp[x] = 255;
-            count++;
-        }
-    }
-    return count;
-}
-
-// new prescreener functions
-static void byte2word64(const uint8_t *t, const int pitch, float *p)
-{
-    int16_t *ps = (int16_t *)p;
-    int y, x;
-
-    for (y = 0; y < 4; y++)
-        for (x = 0; x < 16; x++)
-            ps[y * 16 + x] = t[y * pitch * 2 + x];
-}
-
-static void compute_network0new(NNEDIContext *s, const float *datai, const float *weights, uint8_t *d)
-{
-    int16_t *data = (int16_t *)datai;
-    int16_t *ws = (int16_t *)weights;
-    float *wf = (float *)&ws[4 * 64];
-    float vals[8];
-    int mask, i, j;
-
-    for (i = 0; i < 4; i++) {
-        int sum = 0;
-        float t;
-
-        for (j = 0; j < 64; j++)
-            sum += data[j] * ws[(i << 3) + ((j >> 3) << 5) + (j & 7)];
-        t = sum * wf[i] + wf[4 + i];
-        vals[i] = t / (1.0f + FFABS(t));
-    }
-
-    for (i = 0; i < 4; i++) {
-        float sum = 0.0f;
-
-        for (j = 0; j < 4; j++)
-            sum += vals[j] * wf[8 + i + (j << 2)];
-        vals[4 + i] = sum + wf[8 + 16 + i];
-    }
-
-    mask = 0;
-    for (i = 0; i < 4; i++) {
-        if (vals[4 + i] > 0.0f)
-            mask |= (0x1 << (i << 3));
-    }
-
-    ((int *)d)[0] = mask;
-}
-
-static void evalfunc_0(NNEDIContext *s, FrameData *frame_data)
-{
-    float *input = frame_data->input;
-    const float *weights0 = s->weights0;
-    float *temp = frame_data->temp;
-    uint8_t *tempu = (uint8_t *)temp;
-    int plane, x, y;
-
-    // And now the actual work.
-    for (plane = 0; plane < s->nb_planes; plane++) {
-        const uint8_t *srcp = (const uint8_t *)frame_data->paddedp[plane];
-        const int src_stride = frame_data->padded_stride[plane] / sizeof(uint8_t);
-
-        const int width = frame_data->padded_width[plane];
-        const int height = frame_data->padded_height[plane];
-
-        uint8_t *dstp = (uint8_t *)frame_data->dstp[plane];
-        const int dst_stride = frame_data->dst_stride[plane] / sizeof(uint8_t);
-        const uint8_t *src3p;
-        int ystart, ystop;
-        int32_t *lcount;
-
-        if (!(s->process_plane & (1 << plane)))
-            continue;
-
-        for (y = 1 - frame_data->field[plane]; y < height - 12; y += 2) {
-            memcpy(dstp + y * dst_stride,
-                   srcp + 32 + (6 + y) * src_stride,
-                   (width - 64) * sizeof(uint8_t));
-
-        }
-
-        ystart = 6 + frame_data->field[plane];
-        ystop = height - 6;
-        srcp += ystart * src_stride;
-        dstp += (ystart - 6) * dst_stride - 32;
-        src3p = srcp - src_stride * 3;
-        lcount = frame_data->lcount[plane] - 6;
-
-        if (s->pscrn == 1) { // original
-            for (y = ystart; y < ystop; y += 2) {
-                for (x = 32; x < width - 32; x++) {
-                    s->readpixels((const uint8_t *)(src3p + x - 5), src_stride, input);
-                    s->compute_network0(s, input, weights0, tempu+x);
-                }
-                lcount[y] += s->process_line0(tempu + 32, width - 64, (uint8_t *)(dstp + 32), (const uint8_t *)(src3p + 32), src_stride, s->max_value, plane);
-                src3p += src_stride * 2;
-                dstp += dst_stride * 2;
-            }
-        } else if (s->pscrn > 1) { // new
-            for (y = ystart; y < ystop; y += 2) {
-                for (x = 32; x < width - 32; x += 4) {
-                    s->readpixels((const uint8_t *)(src3p + x - 6), src_stride, input);
-                    s->compute_network0(s, input, weights0, tempu + x);
-                }
-                lcount[y] += s->process_line0(tempu + 32, width - 64, (uint8_t *)(dstp + 32), (const uint8_t *)(src3p + 32), src_stride, s->max_value, plane);
-                src3p += src_stride * 2;
-                dstp += dst_stride * 2;
-            }
-        } else { // no prescreening
-            for (y = ystart; y < ystop; y += 2) {
-                memset(dstp + 32, 255, (width - 64) * sizeof(uint8_t));
-                lcount[y] += width - 64;
-                dstp += dst_stride * 2;
-            }
-        }
-    }
-}
-
-static void extract_m8(const uint8_t *srcp8, const int stride, const int xdia, const int ydia, float *mstd, float *input)
-{
-    // uint8_t or uint16_t or float
-    const uint8_t *srcp = (const uint8_t *)srcp8;
-    float scale;
-    double tmp;
-
-    // int32_t or int64_t or double
-    int64_t sum = 0, sumsq = 0;
-    int y, x;
-
-    for (y = 0; y < ydia; y++) {
-        const uint8_t *srcpT = srcp + y * stride * 2;
-
-        for (x = 0; x < xdia; x++) {
-            sum += srcpT[x];
-            sumsq += (uint32_t)srcpT[x] * (uint32_t)srcpT[x];
-            input[x] = srcpT[x];
-        }
-        input += xdia;
-    }
-    scale = 1.0f / (xdia * ydia);
-    mstd[0] = sum * scale;
-    tmp = (double)sumsq * scale - (double)mstd[0] * mstd[0];
-    mstd[3] = 0.0f;
-    if (tmp <= FLT_EPSILON)
-        mstd[1] = mstd[2] = 0.0f;
-    else {
-        mstd[1] = sqrt(tmp);
-        mstd[2] = 1.0f / mstd[1];
-    }
-}
-
-static void extract_m8_i16(const uint8_t *srcp, const int stride, const int xdia, const int ydia, float *mstd, float *inputf)
-{
-    int16_t *input = (int16_t *)inputf;
-    float scale;
-    int sum = 0, sumsq = 0;
-    int y, x;
-
-    for (y = 0; y < ydia; y++) {
-        const uint8_t *srcpT = srcp + y * stride * 2;
-        for (x = 0; x < xdia; x++) {
-            sum += srcpT[x];
-            sumsq += srcpT[x] * srcpT[x];
-            input[x] = srcpT[x];
-        }
-        input += xdia;
-    }
-    scale = 1.0f / (float)(xdia * ydia);
-    mstd[0] = sum * scale;
-    mstd[1] = sumsq * scale - mstd[0] * mstd[0];
-    mstd[3] = 0.0f;
-    if (mstd[1] <= FLT_EPSILON)
-        mstd[1] = mstd[2] = 0.0f;
-    else {
-        mstd[1] = sqrt(mstd[1]);
-        mstd[2] = 1.0f / mstd[1];
-    }
-}
-
-
-static const float exp_lo = -80.0f;
-static const float exp_hi = +80.0f;
-
-static void e2_m16(float *s, const int n)
-{
-    int i;
-
-    for (i = 0; i < n; i++)
-        s[i] = exp(av_clipf(s[i], exp_lo, exp_hi));
-}
-
-const float min_weight_sum = 1e-10f;
-
-static void weighted_avg_elliott_mul5_m16(const float *w, const int n, float *mstd)
-{
-    float vsum = 0.0f, wsum = 0.0f;
-    int i;
-
-    for (i = 0; i < n; i++) {
-        vsum += w[i] * (w[n + i] / (1.0f + FFABS(w[n + i])));
-        wsum += w[i];
-    }
-    if (wsum > min_weight_sum)
-        mstd[3] += ((5.0f * vsum) / wsum) * mstd[1] + mstd[0];
-    else
-        mstd[3] += mstd[0];
-}
-
-
-static void evalfunc_1(NNEDIContext *s, FrameData *frame_data)
-{
-    float *input = frame_data->input;
-    float *temp = frame_data->temp;
-    float **weights1 = s->weights1;
-    const int qual = s->qual;
-    const int asize = s->asize;
-    const int nns = s->nns;
-    const int xdia = s->xdia;
-    const int xdiad2m1 = (xdia / 2) - 1;
-    const int ydia = s->ydia;
-    const float scale = 1.0f / (float)qual;
-    int plane, y, x, i;
-
-    for (plane = 0; plane < s->nb_planes; plane++) {
-        const uint8_t *srcp = (const uint8_t *)frame_data->paddedp[plane];
-        const int src_stride = frame_data->padded_stride[plane] / sizeof(uint8_t);
-
-        const int width = frame_data->padded_width[plane];
-        const int height = frame_data->padded_height[plane];
-
-        uint8_t *dstp = (uint8_t *)frame_data->dstp[plane];
-        const int dst_stride = frame_data->dst_stride[plane] / sizeof(uint8_t);
-
-        const int ystart = frame_data->field[plane];
-        const int ystop = height - 12;
-        const uint8_t *srcpp;
-
-        if (!(s->process_plane & (1 << plane)))
-            continue;
-
-        srcp += (ystart + 6) * src_stride;
-        dstp += ystart * dst_stride - 32;
-        srcpp = srcp - (ydia - 1) * src_stride - xdiad2m1;
-
-        for (y = ystart; y < ystop; y += 2) {
-            for (x = 32; x < width - 32; x++) {
-                float mstd[4];
-
-                if (dstp[x] != 255)
-                    continue;
-
-                s->extract((const uint8_t *)(srcpp + x), src_stride, xdia, ydia, mstd, input);
-                for (i = 0; i < qual; i++) {
-                    s->dot_prod(s, input, weights1[i], temp, nns * 2, asize, mstd + 2);
-                    s->expfunc(temp, nns);
-                    s->wae5(temp, nns, mstd);
-                }
-
-                dstp[x] = FFMIN(FFMAX((int)(mstd[3] * scale + 0.5f), 0), s->max_value);
-            }
-            srcpp += src_stride * 2;
-            dstp += dst_stride * 2;
-        }
-    }
-}
-
-#define NUM_NSIZE 7
-#define NUM_NNS 5
-
-static int roundds(const double f)
-{
-    if (f - floor(f) >= 0.5)
-        return FFMIN((int)ceil(f), 32767);
-    return FFMAX((int)floor(f), -32768);
-}
-
-static void select_functions(NNEDIContext *s)
-{
-    s->copy_pad = copy_pad;
-    s->evalfunc_0 = evalfunc_0;
-    s->evalfunc_1 = evalfunc_1;
-
-    // evalfunc_0
-    s->process_line0 = process_line0;
-
-    if (s->pscrn < 2) { // original prescreener
-        if (s->fapprox & 1) { // int16 dot products
-            s->readpixels = byte2word48;
-            s->compute_network0 = compute_network0_i16;
-        } else {
-            s->readpixels = pixel2float48;
-            s->compute_network0 = compute_network0;
-        }
-    } else { // new prescreener
-        // only int16 dot products
-        s->readpixels = byte2word64;
-        s->compute_network0 = compute_network0new;
-    }
-
-    // evalfunc_1
-    s->wae5 = weighted_avg_elliott_mul5_m16;
-
-    if (s->fapprox & 2) { // use int16 dot products
-        s->extract = extract_m8_i16;
-        s->dot_prod = dot_prods;
-    } else { // use float dot products
-        s->extract = extract_m8;
-        s->dot_prod = dot_prod;
-    }
-
-    s->expfunc = e2_m16;
-}
-
-static int modnpf(const int m, const int n)
-{
-    if ((m % n) == 0)
-        return m;
-    return m + n - (m % n);
-}
-
-static int get_frame(AVFilterContext *ctx, int is_second)
-{
-    NNEDIContext *s = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *src = s->src;
-    FrameData *frame_data;
-    int effective_field = s->field;
-    size_t temp_size;
-    int field_n;
-    int plane;
-
-    if (effective_field > 1)
-        effective_field -= 2;
-    else if (effective_field < 0)
-        effective_field += 2;
-
-    if (s->field < 0 && src->interlaced_frame && src->top_field_first == 0)
-        effective_field = 0;
-    else if (s->field < 0 && src->interlaced_frame && src->top_field_first == 1)
-        effective_field = 1;
-    else
-        effective_field = !effective_field;
-
-    if (s->field > 1 || s->field == -2) {
-        if (is_second) {
-            field_n = (effective_field == 0);
-        } else {
-            field_n = (effective_field == 1);
-        }
-    } else {
-        field_n = effective_field;
-    }
-
-    s->dst = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!s->dst)
-        return AVERROR(ENOMEM);
-    av_frame_copy_props(s->dst, src);
-    s->dst->interlaced_frame = 0;
-
-    frame_data = &s->frame_data;
-
-    for (plane = 0; plane < s->nb_planes; plane++) {
-        int dst_height = s->planeheight[plane];
-        int dst_width = s->linesize[plane];
-
-        const int min_alignment = 16;
-        const int min_pad = 10;
-
-        if (!(s->process_plane & (1 << plane))) {
-            av_image_copy_plane(s->dst->data[plane], s->dst->linesize[plane],
-                                src->data[plane], src->linesize[plane],
-                                s->linesize[plane],
-                                s->planeheight[plane]);
-            continue;
-        }
-
-        frame_data->padded_width[plane]  = dst_width + 64;
-        frame_data->padded_height[plane] = dst_height + 12;
-        frame_data->padded_stride[plane] = modnpf(frame_data->padded_width[plane] + min_pad, min_alignment); // TODO: maybe min_pad is in pixels too?
-        if (!frame_data->paddedp[plane]) {
-            frame_data->paddedp[plane] = av_malloc_array(frame_data->padded_stride[plane], frame_data->padded_height[plane]);
-            if (!frame_data->paddedp[plane])
-                return AVERROR(ENOMEM);
-        }
-
-        frame_data->dstp[plane] = s->dst->data[plane];
-        frame_data->dst_stride[plane] = s->dst->linesize[plane];
-
-        if (!frame_data->lcount[plane]) {
-            frame_data->lcount[plane] = av_calloc(dst_height, sizeof(int32_t) * 16);
-            if (!frame_data->lcount[plane])
-                return AVERROR(ENOMEM);
-        } else {
-            memset(frame_data->lcount[plane], 0, dst_height * sizeof(int32_t) * 16);
-        }
-
-        frame_data->field[plane] = field_n;
-    }
-
-    if (!frame_data->input) {
-        frame_data->input = av_malloc(512 * sizeof(float));
-        if (!frame_data->input)
-            return AVERROR(ENOMEM);
-    }
-    // evalfunc_0 requires at least padded_width[0] bytes.
-    // evalfunc_1 requires at least 512 floats.
-    if (!frame_data->temp) {
-        temp_size = FFMAX(frame_data->padded_width[0], 512 * sizeof(float));
-        frame_data->temp = av_malloc(temp_size);
-        if (!frame_data->temp)
-            return AVERROR(ENOMEM);
-    }
-
-    // Copy src to a padded "frame" in frame_data and mirror the edges.
-    s->copy_pad(src, frame_data, s, field_n);
-
-    // Handles prescreening and the cubic interpolation.
-    s->evalfunc_0(s, frame_data);
-
-    // The rest.
-    s->evalfunc_1(s, frame_data);
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *src)
-{
-    AVFilterContext *ctx = inlink->dst;
-    AVFilterLink *outlink = ctx->outputs[0];
-    NNEDIContext *s = ctx->priv;
-    int ret;
-
-    if ((s->field > 1 ||
-         s->field == -2) && !s->second) {
-        goto second;
-    } else if (s->field > 1 ||
-               s->field == -2) {
-        AVFrame *dst;
-
-        s->src = s->second;
-        ret = get_frame(ctx, 1);
-        if (ret < 0) {
-            av_frame_free(&s->dst);
-            av_frame_free(&s->second);
-            s->src = NULL;
-            return ret;
-        }
-        dst = s->dst;
-
-        if (src->pts != AV_NOPTS_VALUE &&
-            dst->pts != AV_NOPTS_VALUE)
-            dst->pts += src->pts;
-        else
-            dst->pts = AV_NOPTS_VALUE;
-
-        ret = ff_filter_frame(outlink, dst);
-        if (ret < 0)
-            return ret;
-        if (s->eof)
-            return 0;
-        s->cur_pts = s->second->pts;
-        av_frame_free(&s->second);
-second:
-        if ((s->deint && src->interlaced_frame &&
-             !ctx->is_disabled) ||
-            (!s->deint && !ctx->is_disabled)) {
-            s->second = src;
-        }
-    }
-
-    if ((s->deint && !src->interlaced_frame) || ctx->is_disabled) {
-        AVFrame *dst = av_frame_clone(src);
-        if (!dst) {
-            av_frame_free(&src);
-            av_frame_free(&s->second);
-            return AVERROR(ENOMEM);
-        }
-
-        if (s->field > 1 || s->field == -2) {
-            av_frame_free(&s->second);
-            if ((s->deint && src->interlaced_frame) ||
-                (!s->deint))
-                s->second = src;
-        } else {
-            av_frame_free(&src);
-        }
-        if (dst->pts != AV_NOPTS_VALUE)
-            dst->pts *= 2;
-        return ff_filter_frame(outlink, dst);
-    }
-
-    s->src = src;
-    ret = get_frame(ctx, 0);
-    if (ret < 0) {
-        av_frame_free(&s->dst);
-        av_frame_free(&s->src);
-        av_frame_free(&s->second);
-        return ret;
-    }
-
-    if (src->pts != AV_NOPTS_VALUE)
-        s->dst->pts = src->pts * 2;
-    if (s->field <= 1 && s->field > -2) {
-        av_frame_free(&src);
-        s->src = NULL;
-    }
-
-    return ff_filter_frame(outlink, s->dst);
-}
-
-static int request_frame(AVFilterLink *link)
-{
-    AVFilterContext *ctx = link->src;
-    NNEDIContext *s = ctx->priv;
-    int ret;
-
-    if (s->eof)
-        return AVERROR_EOF;
-
-    ret  = ff_request_frame(ctx->inputs[0]);
-
-    if (ret == AVERROR_EOF && s->second) {
-        AVFrame *next = av_frame_clone(s->second);
-
-        if (!next)
-            return AVERROR(ENOMEM);
-
-        next->pts = s->second->pts * 2 - s->cur_pts;
-        s->eof = 1;
-
-        filter_frame(ctx->inputs[0], next);
-    } else if (ret < 0) {
-        return ret;
-    }
-
-    return 0;
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    NNEDIContext *s = ctx->priv;
-    FILE *weights_file = NULL;
-    int64_t expected_size = 13574928;
-    int64_t weights_size;
-    float *bdata;
-    size_t bytes_read;
-    const int xdia_table[NUM_NSIZE] = { 8, 16, 32, 48, 8, 16, 32 };
-    const int ydia_table[NUM_NSIZE] = { 6, 6, 6, 6, 4, 4, 4 };
-    const int nns_table[NUM_NNS] = { 16, 32, 64, 128, 256 };
-    const int dims0 = 49 * 4 + 5 * 4 + 9 * 4;
-    const int dims0new = 4 * 65 + 4 * 5;
-    const int dims1 = nns_table[s->nnsparam] * 2 * (xdia_table[s->nsize] * ydia_table[s->nsize] + 1);
-    int dims1tsize = 0;
-    int dims1offset = 0;
-    int ret = 0, i, j, k;
-
-    weights_file = fopen(s->weights_file, "rb");
-    if (!weights_file) {
-        av_log(ctx, AV_LOG_ERROR, "No weights file provided, aborting!\n");
-        return AVERROR(EINVAL);
-    }
-
-    if (fseek(weights_file, 0, SEEK_END)) {
-        av_log(ctx, AV_LOG_ERROR, "Couldn't seek to the end of weights file.\n");
-        fclose(weights_file);
-        return AVERROR(EINVAL);
-    }
-
-    weights_size = ftell(weights_file);
-
-    if (weights_size == -1) {
-        fclose(weights_file);
-        av_log(ctx, AV_LOG_ERROR, "Couldn't get size of weights file.\n");
-        return AVERROR(EINVAL);
-    } else if (weights_size != expected_size) {
-        fclose(weights_file);
-        av_log(ctx, AV_LOG_ERROR, "Unexpected weights file size.\n");
-        return AVERROR(EINVAL);
-    }
-
-    if (fseek(weights_file, 0, SEEK_SET)) {
-        fclose(weights_file);
-        av_log(ctx, AV_LOG_ERROR, "Couldn't seek to the start of weights file.\n");
-        return AVERROR(EINVAL);
-    }
-
-    bdata = (float *)av_malloc(expected_size);
-    if (!bdata) {
-        fclose(weights_file);
-        return AVERROR(ENOMEM);
-    }
-
-    bytes_read = fread(bdata, 1, expected_size, weights_file);
-
-    if (bytes_read != (size_t)expected_size) {
-        fclose(weights_file);
-        ret = AVERROR_INVALIDDATA;
-        av_log(ctx, AV_LOG_ERROR, "Couldn't read weights file.\n");
-        goto fail;
-    }
-
-    fclose(weights_file);
-
-    for (j = 0; j < NUM_NNS; j++) {
-        for (i = 0; i < NUM_NSIZE; i++) {
-            if (i == s->nsize && j == s->nnsparam)
-                dims1offset = dims1tsize;
-            dims1tsize += nns_table[j] * 2 * (xdia_table[i] * ydia_table[i] + 1) * 2;
-        }
-    }
-
-    s->weights0 = av_malloc_array(FFMAX(dims0, dims0new), sizeof(float));
-    if (!s->weights0) {
-        ret = AVERROR(ENOMEM);
-        goto fail;
-    }
-
-    for (i = 0; i < 2; i++) {
-        s->weights1[i] = av_malloc_array(dims1, sizeof(float));
-        if (!s->weights1[i]) {
-            ret = AVERROR(ENOMEM);
-            goto fail;
-        }
-    }
-
-    // Adjust prescreener weights
-    if (s->pscrn >= 2) {// using new prescreener
-        const float *bdw;
-        int16_t *ws;
-        float *wf;
-        double mean[4] = { 0.0, 0.0, 0.0, 0.0 };
-        int *offt = av_calloc(4 * 64, sizeof(int));
-
-        if (!offt) {
-            ret = AVERROR(ENOMEM);
-            goto fail;
-        }
-
-        for (j = 0; j < 4; j++)
-            for (k = 0; k < 64; k++)
-                offt[j * 64 + k] = ((k >> 3) << 5) + ((j & 3) << 3) + (k & 7);
-
-        bdw = bdata + dims0 + dims0new * (s->pscrn - 2);
-        ws = (int16_t *)s->weights0;
-        wf = (float *)&ws[4 * 64];
-        // Calculate mean weight of each first layer neuron
-        for (j = 0; j < 4; j++) {
-            double cmean = 0.0;
-            for (k = 0; k < 64; k++)
-                cmean += bdw[offt[j * 64 + k]];
-            mean[j] = cmean / 64.0;
-        }
-        // Factor mean removal and 1.0/127.5 scaling
-        // into first layer weights. scale to int16 range
-        for (j = 0; j < 4; j++) {
-            double scale, mval = 0.0;
-
-            for (k = 0; k < 64; k++)
-                mval = FFMAX(mval, FFABS((bdw[offt[j * 64 + k]] - mean[j]) / 127.5));
-            scale = 32767.0 / mval;
-            for (k = 0; k < 64; k++)
-                ws[offt[j * 64 + k]] = roundds(((bdw[offt[j * 64 + k]] - mean[j]) / 127.5) * scale);
-            wf[j] = (float)(mval / 32767.0);
-        }
-        memcpy(wf + 4, bdw + 4 * 64, (dims0new - 4 * 64) * sizeof(float));
-        av_free(offt);
-    } else { // using old prescreener
-        double mean[4] = { 0.0, 0.0, 0.0, 0.0 };
-        // Calculate mean weight of each first layer neuron
-        for (j = 0; j < 4; j++) {
-            double cmean = 0.0;
-            for (k = 0; k < 48; k++)
-                cmean += bdata[j * 48 + k];
-            mean[j] = cmean / 48.0;
-        }
-        if (s->fapprox & 1) {// use int16 dot products in first layer
-            int16_t *ws = (int16_t *)s->weights0;
-            float *wf = (float *)&ws[4 * 48];
-            // Factor mean removal and 1.0/127.5 scaling
-            // into first layer weights. scale to int16 range
-            for (j = 0; j < 4; j++) {
-                double scale, mval = 0.0;
-                for (k = 0; k < 48; k++)
-                    mval = FFMAX(mval, FFABS((bdata[j * 48 + k] - mean[j]) / 127.5));
-                scale = 32767.0 / mval;
-                for (k = 0; k < 48; k++)
-                    ws[j * 48 + k] = roundds(((bdata[j * 48 + k] - mean[j]) / 127.5) * scale);
-                wf[j] = (float)(mval / 32767.0);
-            }
-            memcpy(wf + 4, bdata + 4 * 48, (dims0 - 4 * 48) * sizeof(float));
-        } else {// use float dot products in first layer
-            double half = (1 << 8) - 1;
-
-            half /= 2;
-
-            // Factor mean removal and 1.0/half scaling
-            // into first layer weights.
-            for (j = 0; j < 4; j++)
-                for (k = 0; k < 48; k++)
-                    s->weights0[j * 48 + k] = (float)((bdata[j * 48 + k] - mean[j]) / half);
-            memcpy(s->weights0 + 4 * 48, bdata + 4 * 48, (dims0 - 4 * 48) * sizeof(float));
-        }
-    }
-
-    // Adjust prediction weights
-    for (i = 0; i < 2; i++) {
-        const float *bdataT = bdata + dims0 + dims0new * 3 + dims1tsize * s->etype + dims1offset + i * dims1;
-        const int nnst = nns_table[s->nnsparam];
-        const int asize = xdia_table[s->nsize] * ydia_table[s->nsize];
-        const int boff = nnst * 2 * asize;
-        double *mean = (double *)av_calloc(asize + 1 + nnst * 2, sizeof(double));
-
-        if (!mean) {
-            ret = AVERROR(ENOMEM);
-            goto fail;
-        }
-
-        // Calculate mean weight of each neuron (ignore bias)
-        for (j = 0; j < nnst * 2; j++) {
-            double cmean = 0.0;
-            for (k = 0; k < asize; k++)
-                cmean += bdataT[j * asize + k];
-            mean[asize + 1 + j] = cmean / (double)asize;
-        }
-        // Calculate mean softmax neuron
-        for (j = 0; j < nnst; j++) {
-            for (k = 0; k < asize; k++)
-                mean[k] += bdataT[j * asize + k] - mean[asize + 1 + j];
-            mean[asize] += bdataT[boff + j];
-        }
-        for (j = 0; j < asize + 1; j++)
-            mean[j] /= (double)(nnst);
-
-        if (s->fapprox & 2) { // use int16 dot products
-            int16_t *ws = (int16_t *)s->weights1[i];
-            float *wf = (float *)&ws[nnst * 2 * asize];
-            // Factor mean removal into weights, remove global offset from
-            // softmax neurons, and scale weights to int16 range.
-            for (j = 0; j < nnst; j++) { // softmax neurons
-                double scale, mval = 0.0;
-                for (k = 0; k < asize; k++)
-                    mval = FFMAX(mval, FFABS(bdataT[j * asize + k] - mean[asize + 1 + j] - mean[k]));
-                scale = 32767.0 / mval;
-                for (k = 0; k < asize; k++)
-                    ws[j * asize + k] = roundds((bdataT[j * asize + k] - mean[asize + 1 + j] - mean[k]) * scale);
-                wf[(j >> 2) * 8 + (j & 3)] = (float)(mval / 32767.0);
-                wf[(j >> 2) * 8 + (j & 3) + 4] = (float)(bdataT[boff + j] - mean[asize]);
-            }
-            for (j = nnst; j < nnst * 2; j++) { // elliott neurons
-                double scale, mval = 0.0;
-                for (k = 0; k < asize; k++)
-                    mval = FFMAX(mval, FFABS(bdataT[j * asize + k] - mean[asize + 1 + j]));
-                scale = 32767.0 / mval;
-                for (k = 0; k < asize; k++)
-                    ws[j * asize + k] = roundds((bdataT[j * asize + k] - mean[asize + 1 + j]) * scale);
-                wf[(j >> 2) * 8 + (j & 3)] = (float)(mval / 32767.0);
-                wf[(j >> 2) * 8 + (j & 3) + 4] = bdataT[boff + j];
-            }
-        } else { // use float dot products
-            // Factor mean removal into weights, and remove global
-            // offset from softmax neurons.
-            for (j = 0; j < nnst * 2; j++) {
-                for (k = 0; k < asize; k++) {
-                    const double q = j < nnst ? mean[k] : 0.0;
-                    s->weights1[i][j * asize + k] = (float)(bdataT[j * asize + k] - mean[asize + 1 + j] - q);
-                }
-                s->weights1[i][boff + j] = (float)(bdataT[boff + j] - (j < nnst ? mean[asize] : 0.0));
-            }
-        }
-        av_free(mean);
-    }
-
-    s->nns = nns_table[s->nnsparam];
-    s->xdia = xdia_table[s->nsize];
-    s->ydia = ydia_table[s->nsize];
-    s->asize = xdia_table[s->nsize] * ydia_table[s->nsize];
-
-    s->max_value = 65535 >> 8;
-
-    select_functions(s);
-
-    s->fdsp = avpriv_float_dsp_alloc(0);
-    if (!s->fdsp)
-        ret = AVERROR(ENOMEM);
-
-fail:
-    av_free(bdata);
-    return ret;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    NNEDIContext *s = ctx->priv;
-    int i;
-
-    av_freep(&s->weights0);
-
-    for (i = 0; i < 2; i++)
-        av_freep(&s->weights1[i]);
-
-    for (i = 0; i < s->nb_planes; i++) {
-        av_freep(&s->frame_data.paddedp[i]);
-        av_freep(&s->frame_data.lcount[i]);
-    }
-
-    av_freep(&s->frame_data.input);
-    av_freep(&s->frame_data.temp);
-    av_freep(&s->fdsp);
-    av_frame_free(&s->second);
-}
-
-static const AVFilterPad inputs[] = {
-    {
-        .name          = "default",
-        .type          = AVMEDIA_TYPE_VIDEO,
-        .filter_frame  = filter_frame,
-        .config_props  = config_input,
-    },
-    { NULL }
-};
-
-static const AVFilterPad outputs[] = {
-    {
-        .name          = "default",
-        .type          = AVMEDIA_TYPE_VIDEO,
-        .config_props  = config_output,
-        .request_frame = request_frame,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_nnedi = {
-    .name          = "nnedi",
-    .description   = NULL_IF_CONFIG_SMALL("Apply neural network edge directed interpolation intra-only deinterlacer."),
-    .priv_size     = sizeof(NNEDIContext),
-    .priv_class    = &nnedi_class,
-    .init          = init,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = inputs,
-    .outputs       = outputs,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
-};
diff --git a/libavfilter/vf_owdenoise.c b/libavfilter/vf_owdenoise.c
deleted file mode 100644
index 6d6c2a3..0000000
--- a/libavfilter/vf_owdenoise.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * Copyright (c) 2007 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2013 Clément Bœsch <u pkh me>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @todo try to change to int
- * @todo try lifting based implementation
- * @todo optimize optimize optimize
- * @todo hard thresholding
- * @todo use QP to decide filter strength
- * @todo wavelet normalization / least squares optimal signal vs. noise thresholds
- */
-
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "avfilter.h"
-#include "internal.h"
-
-typedef struct OWDenoiseContext {
-    const AVClass *class;
-    double luma_strength;
-    double chroma_strength;
-    int depth;
-    float *plane[16+1][4];
-    int linesize;
-    int hsub, vsub;
-    int pixel_depth;
-} OWDenoiseContext;
-
-#define OFFSET(x) offsetof(OWDenoiseContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-static const AVOption owdenoise_options[] = {
-    { "depth",           "set depth",           OFFSET(depth),           AV_OPT_TYPE_INT,    {.i64 =   8}, 8,   16, FLAGS },
-    { "luma_strength",   "set luma strength",   OFFSET(luma_strength),   AV_OPT_TYPE_DOUBLE, {.dbl = 1.0}, 0, 1000, FLAGS },
-    { "ls",              "set luma strength",   OFFSET(luma_strength),   AV_OPT_TYPE_DOUBLE, {.dbl = 1.0}, 0, 1000, FLAGS },
-    { "chroma_strength", "set chroma strength", OFFSET(chroma_strength), AV_OPT_TYPE_DOUBLE, {.dbl = 1.0}, 0, 1000, FLAGS },
-    { "cs",              "set chroma strength", OFFSET(chroma_strength), AV_OPT_TYPE_DOUBLE, {.dbl = 1.0}, 0, 1000, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(owdenoise);
-
-DECLARE_ALIGNED(8, static const uint8_t, dither)[8][8] = {
-    {  0,  48,  12,  60,   3,  51,  15,  63 },
-    { 32,  16,  44,  28,  35,  19,  47,  31 },
-    {  8,  56,   4,  52,  11,  59,   7,  55 },
-    { 40,  24,  36,  20,  43,  27,  39,  23 },
-    {  2,  50,  14,  62,   1,  49,  13,  61 },
-    { 34,  18,  46,  30,  33,  17,  45,  29 },
-    { 10,  58,   6,  54,   9,  57,   5,  53 },
-    { 42,  26,  38,  22,  41,  25,  37,  21 },
-};
-
-static const double coeff[2][5] = {
-    {
-         0.6029490182363579  * M_SQRT2,
-         0.2668641184428723  * M_SQRT2,
-        -0.07822326652898785 * M_SQRT2,
-        -0.01686411844287495 * M_SQRT2,
-         0.02674875741080976 * M_SQRT2,
-    },{
-         1.115087052456994   / M_SQRT2,
-        -0.5912717631142470  / M_SQRT2,
-        -0.05754352622849957 / M_SQRT2,
-         0.09127176311424948 / M_SQRT2,
-    }
-};
-
-static const double icoeff[2][5] = {
-    {
-         1.115087052456994   / M_SQRT2,
-         0.5912717631142470  / M_SQRT2,
-        -0.05754352622849957 / M_SQRT2,
-        -0.09127176311424948 / M_SQRT2,
-    },{
-         0.6029490182363579  * M_SQRT2,
-        -0.2668641184428723  * M_SQRT2,
-        -0.07822326652898785 * M_SQRT2,
-         0.01686411844287495 * M_SQRT2,
-         0.02674875741080976 * M_SQRT2,
-    }
-};
-
-
-static inline void decompose(float *dst_l, float *dst_h, const float *src,
-                             int linesize, int w)
-{
-    int x, i;
-    for (x = 0; x < w; x++) {
-        double sum_l = src[x * linesize] * coeff[0][0];
-        double sum_h = src[x * linesize] * coeff[1][0];
-        for (i = 1; i <= 4; i++) {
-            const double s = src[avpriv_mirror(x - i, w - 1) * linesize]
-                           + src[avpriv_mirror(x + i, w - 1) * linesize];
-
-            sum_l += coeff[0][i] * s;
-            sum_h += coeff[1][i] * s;
-        }
-        dst_l[x * linesize] = sum_l;
-        dst_h[x * linesize] = sum_h;
-    }
-}
-
-static inline void compose(float *dst, const float *src_l, const float *src_h,
-                           int linesize, int w)
-{
-    int x, i;
-    for (x = 0; x < w; x++) {
-        double sum_l = src_l[x * linesize] * icoeff[0][0];
-        double sum_h = src_h[x * linesize] * icoeff[1][0];
-        for (i = 1; i <= 4; i++) {
-            const int x0 = avpriv_mirror(x - i, w - 1) * linesize;
-            const int x1 = avpriv_mirror(x + i, w - 1) * linesize;
-
-            sum_l += icoeff[0][i] * (src_l[x0] + src_l[x1]);
-            sum_h += icoeff[1][i] * (src_h[x0] + src_h[x1]);
-        }
-        dst[x * linesize] = (sum_l + sum_h) * 0.5;
-    }
-}
-
-static inline void decompose2D(float *dst_l, float *dst_h, const float *src,
-                               int xlinesize, int ylinesize,
-                               int step, int w, int h)
-{
-    int y, x;
-    for (y = 0; y < h; y++)
-        for (x = 0; x < step; x++)
-            decompose(dst_l + ylinesize*y + xlinesize*x,
-                      dst_h + ylinesize*y + xlinesize*x,
-                      src   + ylinesize*y + xlinesize*x,
-                      step * xlinesize, (w - x + step - 1) / step);
-}
-
-static inline void compose2D(float *dst, const float *src_l, const float *src_h,
-                             int xlinesize, int ylinesize,
-                             int step, int w, int h)
-{
-    int y, x;
-    for (y = 0; y < h; y++)
-        for (x = 0; x < step; x++)
-            compose(dst   + ylinesize*y + xlinesize*x,
-                    src_l + ylinesize*y + xlinesize*x,
-                    src_h + ylinesize*y + xlinesize*x,
-                    step * xlinesize, (w - x + step - 1) / step);
-}
-
-static void decompose2D2(float *dst[4], float *src, float *temp[2],
-                         int linesize, int step, int w, int h)
-{
-    decompose2D(temp[0], temp[1], src,     1, linesize, step, w, h);
-    decompose2D( dst[0],  dst[1], temp[0], linesize, 1, step, h, w);
-    decompose2D( dst[2],  dst[3], temp[1], linesize, 1, step, h, w);
-}
-
-static void compose2D2(float *dst, float *src[4], float *temp[2],
-                       int linesize, int step, int w, int h)
-{
-    compose2D(temp[0],  src[0],  src[1], linesize, 1, step, h, w);
-    compose2D(temp[1],  src[2],  src[3], linesize, 1, step, h, w);
-    compose2D(dst,     temp[0], temp[1], 1, linesize, step, w, h);
-}
-
-static void filter(OWDenoiseContext *s,
-                   uint8_t       *dst, int dst_linesize,
-                   const uint8_t *src, int src_linesize,
-                   int width, int height, double strength)
-{
-    int x, y, i, j, depth = s->depth;
-
-    while (1<<depth > width || 1<<depth > height)
-        depth--;
-
-    if (s->pixel_depth <= 8) {
-        for (y = 0; y < height; y++)
-            for(x = 0; x < width; x++)
-                s->plane[0][0][y*s->linesize + x] = src[y*src_linesize + x];
-    } else {
-        const uint16_t *src16 = (const uint16_t *)src;
-
-        src_linesize /= 2;
-        for (y = 0; y < height; y++)
-            for(x = 0; x < width; x++)
-                s->plane[0][0][y*s->linesize + x] = src16[y*src_linesize + x];
-    }
-
-    for (i = 0; i < depth; i++)
-        decompose2D2(s->plane[i + 1], s->plane[i][0], s->plane[0] + 1, s->linesize, 1<<i, width, height);
-
-    for (i = 0; i < depth; i++) {
-        for (j = 1; j < 4; j++) {
-            for (y = 0; y < height; y++) {
-                for (x = 0; x < width; x++) {
-                    double v = s->plane[i + 1][j][y*s->linesize + x];
-                    if      (v >  strength) v -= strength;
-                    else if (v < -strength) v += strength;
-                    else                    v  = 0;
-                    s->plane[i + 1][j][x + y*s->linesize] = v;
-                }
-            }
-        }
-    }
-    for (i = depth-1; i >= 0; i--)
-        compose2D2(s->plane[i][0], s->plane[i + 1], s->plane[0] + 1, s->linesize, 1<<i, width, height);
-
-    if (s->pixel_depth <= 8) {
-        for (y = 0; y < height; y++) {
-            for (x = 0; x < width; x++) {
-                i = s->plane[0][0][y*s->linesize + x] + dither[x&7][y&7]*(1.0/64) + 1.0/128; // yes the rounding is insane but optimal :)
-                if ((unsigned)i > 255U) i = ~(i >> 31);
-                dst[y*dst_linesize + x] = i;
-            }
-        }
-    } else {
-        uint16_t *dst16 = (uint16_t *)dst;
-
-        dst_linesize /= 2;
-        for (y = 0; y < height; y++) {
-            for (x = 0; x < width; x++) {
-                i = s->plane[0][0][y*s->linesize + x];
-                dst16[y*dst_linesize + x] = i;
-            }
-        }
-    }
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    OWDenoiseContext *s = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *out;
-    const int cw = AV_CEIL_RSHIFT(inlink->w, s->hsub);
-    const int ch = AV_CEIL_RSHIFT(inlink->h, s->vsub);
-
-    if (av_frame_is_writable(in)) {
-        out = in;
-
-        if (s->luma_strength > 0)
-            filter(s, out->data[0], out->linesize[0], in->data[0], in->linesize[0], inlink->w, inlink->h, s->luma_strength);
-        if (s->chroma_strength > 0) {
-            filter(s, out->data[1], out->linesize[1], in->data[1], in->linesize[1], cw,        ch,        s->chroma_strength);
-            filter(s, out->data[2], out->linesize[2], in->data[2], in->linesize[2], cw,        ch,        s->chroma_strength);
-        }
-    } else {
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out) {
-            av_frame_free(&in);
-            return AVERROR(ENOMEM);
-        }
-        av_frame_copy_props(out, in);
-
-        if (s->luma_strength > 0) {
-            filter(s, out->data[0], out->linesize[0], in->data[0], in->linesize[0], inlink->w, inlink->h, s->luma_strength);
-        } else {
-            av_image_copy_plane(out->data[0], out->linesize[0], in ->data[0], in ->linesize[0], inlink->w, inlink->h);
-        }
-        if (s->chroma_strength > 0) {
-            filter(s, out->data[1], out->linesize[1], in->data[1], in->linesize[1], cw, ch, s->chroma_strength);
-            filter(s, out->data[2], out->linesize[2], in->data[2], in->linesize[2], cw, ch, s->chroma_strength);
-        } else {
-            av_image_copy_plane(out->data[1], out->linesize[1], in ->data[1], in ->linesize[1], inlink->w, inlink->h);
-            av_image_copy_plane(out->data[2], out->linesize[2], in ->data[2], in ->linesize[2], inlink->w, inlink->h);
-        }
-
-        if (in->data[3])
-            av_image_copy_plane(out->data[3], out->linesize[3],
-                                in ->data[3], in ->linesize[3],
-                                inlink->w, inlink->h);
-        av_frame_free(&in);
-    }
-
-    return ff_filter_frame(outlink, out);
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,      AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV420P,      AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV410P,      AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUVA444P,     AV_PIX_FMT_YUVA422P,
-        AV_PIX_FMT_YUVA420P,
-        AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV444P9,
-        AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10,
-        AV_PIX_FMT_YUV440P10,
-        AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV420P12,
-        AV_PIX_FMT_YUV440P12,
-        AV_PIX_FMT_YUV444P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV420P14,
-        AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    int i, j;
-    OWDenoiseContext *s = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    const int h = FFALIGN(inlink->h, 16);
-
-    s->hsub = desc->log2_chroma_w;
-    s->vsub = desc->log2_chroma_h;
-    s->pixel_depth = desc->comp[0].depth;
-
-    s->linesize = FFALIGN(inlink->w, 16);
-    for (j = 0; j < 4; j++) {
-        for (i = 0; i <= s->depth; i++) {
-            s->plane[i][j] = av_malloc_array(s->linesize, h * sizeof(s->plane[0][0][0]));
-            if (!s->plane[i][j])
-                return AVERROR(ENOMEM);
-        }
-    }
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    int i, j;
-    OWDenoiseContext *s = ctx->priv;
-
-    for (j = 0; j < 4; j++)
-        for (i = 0; i <= s->depth; i++)
-            av_freep(&s->plane[i][j]);
-}
-
-static const AVFilterPad owdenoise_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_input,
-    },
-    { NULL }
-};
-
-static const AVFilterPad owdenoise_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_owdenoise = {
-    .name          = "owdenoise",
-    .description   = NULL_IF_CONFIG_SMALL("Denoise using wavelets."),
-    .priv_size     = sizeof(OWDenoiseContext),
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = owdenoise_inputs,
-    .outputs       = owdenoise_outputs,
-    .priv_class    = &owdenoise_class,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_perspective.c b/libavfilter/vf_perspective.c
deleted file mode 100644
index 9249509..0000000
--- a/libavfilter/vf_perspective.c
+++ /dev/null
@@ -1,525 +0,0 @@
-/*
- * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2013 Paul B Mahol
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/eval.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/opt.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-
-#define SUB_PIXEL_BITS  8
-#define SUB_PIXELS      (1 << SUB_PIXEL_BITS)
-#define COEFF_BITS      11
-
-#define LINEAR 0
-#define CUBIC  1
-
-typedef struct PerspectiveContext {
-    const AVClass *class;
-    char *expr_str[4][2];
-    double ref[4][2];
-    int32_t (*pv)[2];
-    int32_t coeff[SUB_PIXELS][4];
-    int interpolation;
-    int linesize[4];
-    int height[4];
-    int hsub, vsub;
-    int nb_planes;
-    int sense;
-    int eval_mode;
-
-    int (*perspective)(AVFilterContext *ctx,
-                       void *arg, int job, int nb_jobs);
-} PerspectiveContext;
-
-#define OFFSET(x) offsetof(PerspectiveContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-
-enum PERSPECTIVESense {
-    PERSPECTIVE_SENSE_SOURCE      = 0, ///< coordinates give locations in source of corners of destination.
-    PERSPECTIVE_SENSE_DESTINATION = 1, ///< coordinates give locations in destination of corners of source.
-};
-
-enum EvalMode {
-    EVAL_MODE_INIT,
-    EVAL_MODE_FRAME,
-    EVAL_MODE_NB
-};
-
-static const AVOption perspective_options[] = {
-    { "x0", "set top left x coordinate",     OFFSET(expr_str[0][0]), AV_OPT_TYPE_STRING, {.str="0"}, 0, 0, FLAGS },
-    { "y0", "set top left y coordinate",     OFFSET(expr_str[0][1]), AV_OPT_TYPE_STRING, {.str="0"}, 0, 0, FLAGS },
-    { "x1", "set top right x coordinate",    OFFSET(expr_str[1][0]), AV_OPT_TYPE_STRING, {.str="W"}, 0, 0, FLAGS },
-    { "y1", "set top right y coordinate",    OFFSET(expr_str[1][1]), AV_OPT_TYPE_STRING, {.str="0"}, 0, 0, FLAGS },
-    { "x2", "set bottom left x coordinate",  OFFSET(expr_str[2][0]), AV_OPT_TYPE_STRING, {.str="0"}, 0, 0, FLAGS },
-    { "y2", "set bottom left y coordinate",  OFFSET(expr_str[2][1]), AV_OPT_TYPE_STRING, {.str="H"}, 0, 0, FLAGS },
-    { "x3", "set bottom right x coordinate", OFFSET(expr_str[3][0]), AV_OPT_TYPE_STRING, {.str="W"}, 0, 0, FLAGS },
-    { "y3", "set bottom right y coordinate", OFFSET(expr_str[3][1]), AV_OPT_TYPE_STRING, {.str="H"}, 0, 0, FLAGS },
-    { "interpolation", "set interpolation", OFFSET(interpolation), AV_OPT_TYPE_INT, {.i64=LINEAR}, 0, 1, FLAGS, "interpolation" },
-    {      "linear", "", 0, AV_OPT_TYPE_CONST, {.i64=LINEAR}, 0, 0, FLAGS, "interpolation" },
-    {       "cubic", "", 0, AV_OPT_TYPE_CONST, {.i64=CUBIC},  0, 0, FLAGS, "interpolation" },
-    { "sense",   "specify the sense of the coordinates", OFFSET(sense), AV_OPT_TYPE_INT, {.i64=PERSPECTIVE_SENSE_SOURCE}, 0, 1, FLAGS, "sense"},
-    {       "source", "specify locations in source to send to corners in destination",
-                0, AV_OPT_TYPE_CONST, {.i64=PERSPECTIVE_SENSE_SOURCE}, 0, 0, FLAGS, "sense"},
-    {       "destination", "specify locations in destination to send corners of source",
-                0, AV_OPT_TYPE_CONST, {.i64=PERSPECTIVE_SENSE_DESTINATION}, 0, 0, FLAGS, "sense"},
-    { "eval", "specify when to evaluate expressions", OFFSET(eval_mode), AV_OPT_TYPE_INT, {.i64 = EVAL_MODE_INIT}, 0, EVAL_MODE_NB-1, FLAGS, "eval" },
-         { "init",  "eval expressions once during initialization", 0, AV_OPT_TYPE_CONST, {.i64=EVAL_MODE_INIT},  .flags = FLAGS, .unit = "eval" },
-         { "frame", "eval expressions per-frame",                  0, AV_OPT_TYPE_CONST, {.i64=EVAL_MODE_FRAME}, .flags = FLAGS, .unit = "eval" },
-
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(perspective);
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUVA444P, AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUVA420P,
-        AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ440P, AV_PIX_FMT_YUVJ422P,AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ411P,
-        AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUV410P,
-        AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static inline double get_coeff(double d)
-{
-    double coeff, A = -0.60;
-
-    d = fabs(d);
-
-    if (d < 1.0)
-        coeff = (1.0 - (A + 3.0) * d * d + (A + 2.0) * d * d * d);
-    else if (d < 2.0)
-        coeff = (-4.0 * A + 8.0 * A * d - 5.0 * A * d * d + A * d * d * d);
-    else
-        coeff = 0.0;
-
-    return coeff;
-}
-
-static const char *const var_names[] = {   "W",   "H",   "in",   "on",        NULL };
-enum                                   { VAR_W, VAR_H, VAR_IN, VAR_ON, VAR_VARS_NB };
-
-static int calc_persp_luts(AVFilterContext *ctx, AVFilterLink *inlink)
-{
-    PerspectiveContext *s = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    double (*ref)[2]      = s->ref;
-
-    double values[VAR_VARS_NB] = { [VAR_W] = inlink->w, [VAR_H] = inlink->h,
-                                   [VAR_IN] = inlink->frame_count_out + 1,
-                                   [VAR_ON] = outlink->frame_count_in + 1 };
-    const int h = values[VAR_H];
-    const int w = values[VAR_W];
-    double x0, x1, x2, x3, x4, x5, x6, x7, x8, q;
-    double t0, t1, t2, t3;
-    int x, y, i, j, ret;
-
-    for (i = 0; i < 4; i++) {
-        for (j = 0; j < 2; j++) {
-            if (!s->expr_str[i][j])
-                return AVERROR(EINVAL);
-            ret = av_expr_parse_and_eval(&s->ref[i][j], s->expr_str[i][j],
-                                         var_names, &values[0],
-                                         NULL, NULL, NULL, NULL,
-                                         0, 0, ctx);
-            if (ret < 0)
-                return ret;
-        }
-    }
-
-    switch (s->sense) {
-    case PERSPECTIVE_SENSE_SOURCE:
-        x6 = ((ref[0][0] - ref[1][0] - ref[2][0] + ref[3][0]) *
-              (ref[2][1] - ref[3][1]) -
-             ( ref[0][1] - ref[1][1] - ref[2][1] + ref[3][1]) *
-              (ref[2][0] - ref[3][0])) * h;
-        x7 = ((ref[0][1] - ref[1][1] - ref[2][1] + ref[3][1]) *
-              (ref[1][0] - ref[3][0]) -
-             ( ref[0][0] - ref[1][0] - ref[2][0] + ref[3][0]) *
-              (ref[1][1] - ref[3][1])) * w;
-        q =  ( ref[1][0] - ref[3][0]) * (ref[2][1] - ref[3][1]) -
-             ( ref[2][0] - ref[3][0]) * (ref[1][1] - ref[3][1]);
-
-        x0 = q * (ref[1][0] - ref[0][0]) * h + x6 * ref[1][0];
-        x1 = q * (ref[2][0] - ref[0][0]) * w + x7 * ref[2][0];
-        x2 = q *  ref[0][0] * w * h;
-        x3 = q * (ref[1][1] - ref[0][1]) * h + x6 * ref[1][1];
-        x4 = q * (ref[2][1] - ref[0][1]) * w + x7 * ref[2][1];
-        x5 = q *  ref[0][1] * w * h;
-        x8 = q * w * h;
-        break;
-    case PERSPECTIVE_SENSE_DESTINATION:
-        t0 = ref[0][0] * (ref[3][1] - ref[1][1]) +
-             ref[1][0] * (ref[0][1] - ref[3][1]) +
-             ref[3][0] * (ref[1][1] - ref[0][1]);
-        t1 = ref[1][0] * (ref[2][1] - ref[3][1]) +
-             ref[2][0] * (ref[3][1] - ref[1][1]) +
-             ref[3][0] * (ref[1][1] - ref[2][1]);
-        t2 = ref[0][0] * (ref[3][1] - ref[2][1]) +
-             ref[2][0] * (ref[0][1] - ref[3][1]) +
-             ref[3][0] * (ref[2][1] - ref[0][1]);
-        t3 = ref[0][0] * (ref[1][1] - ref[2][1]) +
-             ref[1][0] * (ref[2][1] - ref[0][1]) +
-             ref[2][0] * (ref[0][1] - ref[1][1]);
-
-        x0 = t0 * t1 * w * (ref[2][1] - ref[0][1]);
-        x1 = t0 * t1 * w * (ref[0][0] - ref[2][0]);
-        x2 = t0 * t1 * w * (ref[0][1] * ref[2][0] - ref[0][0] * ref[2][1]);
-        x3 = t1 * t2 * h * (ref[1][1] - ref[0][1]);
-        x4 = t1 * t2 * h * (ref[0][0] - ref[1][0]);
-        x5 = t1 * t2 * h * (ref[0][1] * ref[1][0] - ref[0][0] * ref[1][1]);
-        x6 = t1 * t2 * (ref[1][1] - ref[0][1]) +
-             t0 * t3 * (ref[2][1] - ref[3][1]);
-        x7 = t1 * t2 * (ref[0][0] - ref[1][0]) +
-             t0 * t3 * (ref[3][0] - ref[2][0]);
-        x8 = t1 * t2 * (ref[0][1] * ref[1][0] - ref[0][0] * ref[1][1]) +
-             t0 * t3 * (ref[2][0] * ref[3][1] - ref[2][1] * ref[3][0]);
-        break;
-    default:
-        av_assert0(0);
-    }
-
-    for (y = 0; y < h; y++){
-        for (x = 0; x < w; x++){
-            int u, v;
-
-            u =      lrint(SUB_PIXELS * (x0 * x + x1 * y + x2) /
-                                        (x6 * x + x7 * y + x8));
-            v =      lrint(SUB_PIXELS * (x3 * x + x4 * y + x5) /
-                                        (x6 * x + x7 * y + x8));
-
-            s->pv[x + y * w][0] = u;
-            s->pv[x + y * w][1] = v;
-        }
-    }
-
-    return 0;
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    PerspectiveContext *s = ctx->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int h = inlink->h;
-    int w = inlink->w;
-    int i, j, ret;
-    s->hsub = desc->log2_chroma_w;
-    s->vsub = desc->log2_chroma_h;
-    s->nb_planes = av_pix_fmt_count_planes(inlink->format);
-    if ((ret = av_image_fill_linesizes(s->linesize, inlink->format, inlink->w)) < 0)
-        return ret;
-
-    s->height[1] = s->height[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
-    s->height[0] = s->height[3] = inlink->h;
-
-    s->pv = av_realloc_f(s->pv, w * h, 2 * sizeof(*s->pv));
-    if (!s->pv)
-        return AVERROR(ENOMEM);
-
-    if (s->eval_mode == EVAL_MODE_INIT) {
-        if ((ret = calc_persp_luts(ctx, inlink)) < 0) {
-            return ret;
-        }
-    }
-
-    for (i = 0; i < SUB_PIXELS; i++){
-        double d = i / (double)SUB_PIXELS;
-        double temp[4];
-        double sum = 0;
-
-        for (j = 0; j < 4; j++)
-            temp[j] = get_coeff(j - d - 1);
-
-        for (j = 0; j < 4; j++)
-            sum += temp[j];
-
-        for (j = 0; j < 4; j++)
-            s->coeff[i][j] = lrint((1 << COEFF_BITS) * temp[j] / sum);
-    }
-
-    return 0;
-}
-
-typedef struct ThreadData {
-    uint8_t *dst;
-    int dst_linesize;
-    uint8_t *src;
-    int src_linesize;
-    int w, h;
-    int hsub, vsub;
-} ThreadData;
-
-static int resample_cubic(AVFilterContext *ctx, void *arg,
-                          int job, int nb_jobs)
-{
-    PerspectiveContext *s = ctx->priv;
-    ThreadData *td = arg;
-    uint8_t *dst = td->dst;
-    int dst_linesize = td->dst_linesize;
-    uint8_t *src = td->src;
-    int src_linesize = td->src_linesize;
-    int w = td->w;
-    int h = td->h;
-    int hsub = td->hsub;
-    int vsub = td->vsub;
-    int start = (h * job) / nb_jobs;
-    int end   = (h * (job+1)) / nb_jobs;
-    const int linesize = s->linesize[0];
-    int x, y;
-
-    for (y = start; y < end; y++) {
-        int sy = y << vsub;
-        for (x = 0; x < w; x++) {
-            int u, v, subU, subV, sum, sx;
-
-            sx   = x << hsub;
-            u    = s->pv[sx + sy * linesize][0] >> hsub;
-            v    = s->pv[sx + sy * linesize][1] >> vsub;
-            subU = u & (SUB_PIXELS - 1);
-            subV = v & (SUB_PIXELS - 1);
-            u  >>= SUB_PIXEL_BITS;
-            v  >>= SUB_PIXEL_BITS;
-
-            if (u > 0 && v > 0 && u < w - 2 && v < h - 2){
-                const int index = u + v*src_linesize;
-                const int a = s->coeff[subU][0];
-                const int b = s->coeff[subU][1];
-                const int c = s->coeff[subU][2];
-                const int d = s->coeff[subU][3];
-
-                sum = s->coeff[subV][0] * (a * src[index - 1 -     src_linesize] + b * src[index - 0 -     src_linesize]  +
-                                      c *      src[index + 1 -     src_linesize] + d * src[index + 2 -     src_linesize]) +
-                      s->coeff[subV][1] * (a * src[index - 1                   ] + b * src[index - 0                   ]  +
-                                      c *      src[index + 1                   ] + d * src[index + 2                   ]) +
-                      s->coeff[subV][2] * (a * src[index - 1 +     src_linesize] + b * src[index - 0 +     src_linesize]  +
-                                      c *      src[index + 1 +     src_linesize] + d * src[index + 2 +     src_linesize]) +
-                      s->coeff[subV][3] * (a * src[index - 1 + 2 * src_linesize] + b * src[index - 0 + 2 * src_linesize]  +
-                                      c *      src[index + 1 + 2 * src_linesize] + d * src[index + 2 + 2 * src_linesize]);
-            } else {
-                int dx, dy;
-
-                sum = 0;
-
-                for (dy = 0; dy < 4; dy++) {
-                    int iy = v + dy - 1;
-
-                    if (iy < 0)
-                        iy = 0;
-                    else if (iy >= h)
-                        iy = h-1;
-                    for (dx = 0; dx < 4; dx++) {
-                        int ix = u + dx - 1;
-
-                        if (ix < 0)
-                            ix = 0;
-                        else if (ix >= w)
-                            ix = w - 1;
-
-                        sum += s->coeff[subU][dx] * s->coeff[subV][dy] * src[ ix + iy * src_linesize];
-                    }
-                }
-            }
-
-            sum = (sum + (1<<(COEFF_BITS * 2 - 1))) >> (COEFF_BITS * 2);
-            sum = av_clip_uint8(sum);
-            dst[x + y * dst_linesize] = sum;
-        }
-    }
-    return 0;
-}
-
-static int resample_linear(AVFilterContext *ctx, void *arg,
-                           int job, int nb_jobs)
-{
-    PerspectiveContext *s = ctx->priv;
-    ThreadData *td = arg;
-    uint8_t *dst = td->dst;
-    int dst_linesize = td->dst_linesize;
-    uint8_t *src = td->src;
-    int src_linesize = td->src_linesize;
-    int w = td->w;
-    int h = td->h;
-    int hsub = td->hsub;
-    int vsub = td->vsub;
-    int start = (h * job) / nb_jobs;
-    int end   = (h * (job+1)) / nb_jobs;
-    const int linesize = s->linesize[0];
-    int x, y;
-
-    for (y = start; y < end; y++){
-        int sy = y << vsub;
-        for (x = 0; x < w; x++){
-            int u, v, subU, subV, sum, sx, index, subUI, subVI;
-
-            sx   = x << hsub;
-            u    = s->pv[sx + sy * linesize][0] >> hsub;
-            v    = s->pv[sx + sy * linesize][1] >> vsub;
-            subU = u & (SUB_PIXELS - 1);
-            subV = v & (SUB_PIXELS - 1);
-            u  >>= SUB_PIXEL_BITS;
-            v  >>= SUB_PIXEL_BITS;
-
-            index = u + v * src_linesize;
-            subUI = SUB_PIXELS - subU;
-            subVI = SUB_PIXELS - subV;
-
-            if ((unsigned)u < (unsigned)(w - 1)){
-                if((unsigned)v < (unsigned)(h - 1)){
-                    sum = subVI * (subUI * src[index] + subU * src[index + 1]) +
-                          subV  * (subUI * src[index + src_linesize] + subU * src[index + src_linesize + 1]);
-                    sum = (sum + (1 << (SUB_PIXEL_BITS * 2 - 1)))>> (SUB_PIXEL_BITS * 2);
-                } else {
-                    if (v < 0)
-                        v = 0;
-                    else
-                        v = h - 1;
-                    index = u + v * src_linesize;
-                    sum   = subUI * src[index] + subU * src[index + 1];
-                    sum   = (sum + (1 << (SUB_PIXEL_BITS - 1))) >> SUB_PIXEL_BITS;
-                }
-            } else {
-                if (u < 0)
-                    u = 0;
-                else
-                    u = w - 1;
-                if ((unsigned)v < (unsigned)(h - 1)){
-                    index = u + v * src_linesize;
-                    sum   = subVI * src[index] + subV * src[index + src_linesize];
-                    sum   = (sum + (1 << (SUB_PIXEL_BITS - 1))) >> SUB_PIXEL_BITS;
-                } else {
-                    if (v < 0)
-                        v = 0;
-                    else
-                        v = h - 1;
-                    index = u + v * src_linesize;
-                    sum   = src[index];
-                }
-            }
-
-            sum = av_clip_uint8(sum);
-            dst[x + y * dst_linesize] = sum;
-        }
-    }
-    return 0;
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    PerspectiveContext *s = ctx->priv;
-
-    switch (s->interpolation) {
-    case LINEAR: s->perspective = resample_linear; break;
-    case CUBIC:  s->perspective = resample_cubic;  break;
-    }
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
-{
-    AVFilterContext *ctx = inlink->dst;
-    AVFilterLink *outlink = ctx->outputs[0];
-    PerspectiveContext *s = ctx->priv;
-    AVFrame *out;
-    int plane;
-    int ret;
-
-    out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!out) {
-        av_frame_free(&frame);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(out, frame);
-
-    if (s->eval_mode == EVAL_MODE_FRAME) {
-        if ((ret = calc_persp_luts(ctx, inlink)) < 0) {
-            av_frame_free(&out);
-            return ret;
-        }
-    }
-
-    for (plane = 0; plane < s->nb_planes; plane++) {
-        int hsub = plane == 1 || plane == 2 ? s->hsub : 0;
-        int vsub = plane == 1 || plane == 2 ? s->vsub : 0;
-        ThreadData td = {.dst = out->data[plane],
-                         .dst_linesize = out->linesize[plane],
-                         .src = frame->data[plane],
-                         .src_linesize = frame->linesize[plane],
-                         .w = s->linesize[plane],
-                         .h = s->height[plane],
-                         .hsub = hsub,
-                         .vsub = vsub };
-        ctx->internal->execute(ctx, s->perspective, &td, NULL, FFMIN(td.h, ff_filter_get_nb_threads(ctx)));
-    }
-
-    av_frame_free(&frame);
-    return ff_filter_frame(outlink, out);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    PerspectiveContext *s = ctx->priv;
-
-    av_freep(&s->pv);
-}
-
-static const AVFilterPad perspective_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_input,
-    },
-    { NULL }
-};
-
-static const AVFilterPad perspective_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_perspective = {
-    .name          = "perspective",
-    .description   = NULL_IF_CONFIG_SMALL("Correct the perspective of video."),
-    .priv_size     = sizeof(PerspectiveContext),
-    .init          = init,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = perspective_inputs,
-    .outputs       = perspective_outputs,
-    .priv_class    = &perspective_class,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
-};
diff --git a/libavfilter/vf_phase.c b/libavfilter/vf_phase.c
deleted file mode 100644
index 8536444..0000000
--- a/libavfilter/vf_phase.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (c) 2004 Ville Saari
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/opt.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-
-enum PhaseMode {
-    PROGRESSIVE,
-    TOP_FIRST,
-    BOTTOM_FIRST,
-    TOP_FIRST_ANALYZE,
-    BOTTOM_FIRST_ANALYZE,
-    ANALYZE,
-    FULL_ANALYZE,
-    AUTO,
-    AUTO_ANALYZE
-};
-
-#define DEPTH 8
-#include "phase_template.c"
-
-#undef DEPTH
-#define DEPTH 9
-#include "phase_template.c"
-
-#undef DEPTH
-#define DEPTH 10
-#include "phase_template.c"
-
-#undef DEPTH
-#define DEPTH 12
-#include "phase_template.c"
-
-#undef DEPTH
-#define DEPTH 14
-#include "phase_template.c"
-
-#undef DEPTH
-#define DEPTH 16
-#include "phase_template.c"
-
-typedef struct PhaseContext {
-    const AVClass *class;
-    int mode;                   ///<PhaseMode
-    AVFrame *frame; /* previous frame */
-    int nb_planes;
-    int planeheight[4];
-    int linesize[4];
-
-    enum PhaseMode (*analyze_plane)(void *ctx, enum PhaseMode mode, AVFrame *old, AVFrame *new);
-} PhaseContext;
-
-#define OFFSET(x) offsetof(PhaseContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-#define CONST(name, help, val, unit) { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, 0, 0, FLAGS, unit }
-
-static const AVOption phase_options[] = {
-    { "mode", "set phase mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=AUTO_ANALYZE}, PROGRESSIVE, AUTO_ANALYZE, FLAGS, "mode" },
-    CONST("p", "progressive",          PROGRESSIVE,          "mode"),
-    CONST("t", "top first",            TOP_FIRST,            "mode"),
-    CONST("b", "bottom first",         BOTTOM_FIRST,         "mode"),
-    CONST("T", "top first analyze",    TOP_FIRST_ANALYZE,    "mode"),
-    CONST("B", "bottom first analyze", BOTTOM_FIRST_ANALYZE, "mode"),
-    CONST("u", "analyze",              ANALYZE,              "mode"),
-    CONST("U", "full analyze",         FULL_ANALYZE,         "mode"),
-    CONST("a", "auto",                 AUTO,                 "mode"),
-    CONST("A", "auto analyze",         AUTO_ANALYZE,         "mode"),
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(phase);
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_GRAY9,
-        AV_PIX_FMT_GRAY10,
-        AV_PIX_FMT_GRAY12,
-        AV_PIX_FMT_GRAY14,
-        AV_PIX_FMT_GRAY16,
-        AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P,
-        AV_PIX_FMT_YUVJ440P, AV_PIX_FMT_YUVJ444P,
-        AV_PIX_FMT_YUVJ411P,
-        AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV444P9,
-        AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10,
-        AV_PIX_FMT_YUV440P10,
-        AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV420P12,
-        AV_PIX_FMT_YUV440P12,
-        AV_PIX_FMT_YUV444P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV420P14,
-        AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16,
-        AV_PIX_FMT_GBRP,   AV_PIX_FMT_GBRP9,  AV_PIX_FMT_GBRP10,
-        AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16,
-        AV_PIX_FMT_YUVA420P,  AV_PIX_FMT_YUVA422P,   AV_PIX_FMT_YUVA444P,
-        AV_PIX_FMT_YUVA444P9, AV_PIX_FMT_YUVA444P10, AV_PIX_FMT_YUVA444P12, AV_PIX_FMT_YUVA444P16,
-        AV_PIX_FMT_YUVA422P9, AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA422P12, AV_PIX_FMT_YUVA422P16,
-        AV_PIX_FMT_YUVA420P9, AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUVA420P16,
-        AV_PIX_FMT_GBRAP,     AV_PIX_FMT_GBRAP10,    AV_PIX_FMT_GBRAP12,    AV_PIX_FMT_GBRAP16,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    PhaseContext *s = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int ret;
-
-    switch (desc->comp[0].depth) {
-    case  8: s->analyze_plane = analyze_plane_8;  break;
-    case  9: s->analyze_plane = analyze_plane_9;  break;
-    case 10: s->analyze_plane = analyze_plane_10; break;
-    case 12: s->analyze_plane = analyze_plane_12; break;
-    case 14: s->analyze_plane = analyze_plane_14; break;
-    case 16: s->analyze_plane = analyze_plane_16; break;
-    default: av_assert0(0);
-    };
-
-    if ((ret = av_image_fill_linesizes(s->linesize, inlink->format, inlink->w)) < 0)
-        return ret;
-
-    s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
-    s->planeheight[0] = s->planeheight[3] = inlink->h;
-
-    s->nb_planes = av_pix_fmt_count_planes(inlink->format);
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    AVFilterLink *outlink = ctx->outputs[0];
-    PhaseContext *s = ctx->priv;
-    enum PhaseMode mode;
-    int plane, top, y;
-    AVFrame *out;
-
-    if (ctx->is_disabled) {
-        av_frame_free(&s->frame);
-        /* we keep a reference to the previous frame so the filter can start
-         * being useful as soon as it's not disabled, avoiding the 1-frame
-         * delay. */
-        s->frame = av_frame_clone(in);
-        return ff_filter_frame(outlink, in);
-    }
-
-    out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!out) {
-        av_frame_free(&in);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(out, in);
-
-    if (!s->frame) {
-        s->frame = in;
-        mode = PROGRESSIVE;
-    } else {
-        mode = s->analyze_plane(ctx, s->mode, s->frame, in);
-    }
-
-    for (plane = 0; plane < s->nb_planes; plane++) {
-        const uint8_t *buf = s->frame->data[plane];
-        const uint8_t *from = in->data[plane];
-        uint8_t *to = out->data[plane];
-
-        for (y = 0, top = 1; y < s->planeheight[plane]; y++, top ^= 1) {
-            memcpy(to, mode == (top ? BOTTOM_FIRST : TOP_FIRST) ? buf : from, s->linesize[plane]);
-
-            buf += s->frame->linesize[plane];
-            from += in->linesize[plane];
-            to += out->linesize[plane];
-        }
-    }
-
-    if (in != s->frame)
-        av_frame_free(&s->frame);
-    s->frame = in;
-    return ff_filter_frame(outlink, out);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    PhaseContext *s = ctx->priv;
-
-    av_frame_free(&s->frame);
-}
-
-static const AVFilterPad phase_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_input,
-    },
-    { NULL }
-};
-
-static const AVFilterPad phase_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_phase = {
-    .name          = "phase",
-    .description   = NULL_IF_CONFIG_SMALL("Phase shift fields."),
-    .priv_size     = sizeof(PhaseContext),
-    .priv_class    = &phase_class,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = phase_inputs,
-    .outputs       = phase_outputs,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
-};
diff --git a/libavfilter/vf_pp.c b/libavfilter/vf_pp.c
deleted file mode 100644
index 524ef1b..0000000
--- a/libavfilter/vf_pp.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2002 A'rpi
- * Copyright (C) 2012 Clément Bœsch
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * libpostproc filter, ported from MPlayer.
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/opt.h"
-#include "internal.h"
-
-#include "libpostproc/postprocess.h"
-
-typedef struct PPFilterContext {
-    const AVClass *class;
-    char *subfilters;
-    int mode_id;
-    pp_mode *modes[PP_QUALITY_MAX + 1];
-    void *pp_ctx;
-} PPFilterContext;
-
-#define OFFSET(x) offsetof(PPFilterContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-static const AVOption pp_options[] = {
-    { "subfilters", "set postprocess subfilters", OFFSET(subfilters), AV_OPT_TYPE_STRING, {.str="de"}, .flags = FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(pp);
-
-static av_cold int pp_init(AVFilterContext *ctx)
-{
-    int i;
-    PPFilterContext *pp = ctx->priv;
-
-    for (i = 0; i <= PP_QUALITY_MAX; i++) {
-        pp->modes[i] = pp_get_mode_by_name_and_quality(pp->subfilters, i);
-        if (!pp->modes[i])
-            return AVERROR_EXTERNAL;
-    }
-    pp->mode_id = PP_QUALITY_MAX;
-    return 0;
-}
-
-static int pp_process_command(AVFilterContext *ctx, const char *cmd, const char *args,
-                              char *res, int res_len, int flags)
-{
-    PPFilterContext *pp = ctx->priv;
-
-    if (!strcmp(cmd, "quality")) {
-        pp->mode_id = av_clip(strtol(args, NULL, 10), 0, PP_QUALITY_MAX);
-        return 0;
-    }
-    return AVERROR(ENOSYS);
-}
-
-static int pp_query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVJ420P,
-        AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUVJ422P,
-        AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_GBRP,
-        AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVJ444P,
-        AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int pp_config_props(AVFilterLink *inlink)
-{
-    int flags = PP_CPU_CAPS_AUTO;
-    PPFilterContext *pp = inlink->dst->priv;
-
-    switch (inlink->format) {
-    case AV_PIX_FMT_GRAY8:
-    case AV_PIX_FMT_YUVJ420P:
-    case AV_PIX_FMT_YUV420P: flags |= PP_FORMAT_420; break;
-    case AV_PIX_FMT_YUVJ422P:
-    case AV_PIX_FMT_YUV422P: flags |= PP_FORMAT_422; break;
-    case AV_PIX_FMT_YUV411P: flags |= PP_FORMAT_411; break;
-    case AV_PIX_FMT_GBRP:
-    case AV_PIX_FMT_YUVJ444P:
-    case AV_PIX_FMT_YUV444P: flags |= PP_FORMAT_444; break;
-    case AV_PIX_FMT_YUVJ440P:
-    case AV_PIX_FMT_YUV440P: flags |= PP_FORMAT_440; break;
-    default: av_assert0(0);
-    }
-
-    pp->pp_ctx = pp_get_context(inlink->w, inlink->h, flags);
-    if (!pp->pp_ctx)
-        return AVERROR(ENOMEM);
-    return 0;
-}
-
-static int pp_filter_frame(AVFilterLink *inlink, AVFrame *inbuf)
-{
-    AVFilterContext *ctx = inlink->dst;
-    PPFilterContext *pp = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    const int aligned_w = FFALIGN(outlink->w, 8);
-    const int aligned_h = FFALIGN(outlink->h, 8);
-    AVFrame *outbuf;
-    int qstride, qp_type;
-    int8_t *qp_table ;
-
-    outbuf = ff_get_video_buffer(outlink, aligned_w, aligned_h);
-    if (!outbuf) {
-        av_frame_free(&inbuf);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(outbuf, inbuf);
-    outbuf->width  = inbuf->width;
-    outbuf->height = inbuf->height;
-    qp_table = av_frame_get_qp_table(inbuf, &qstride, &qp_type);
-
-    pp_postprocess((const uint8_t **)inbuf->data, inbuf->linesize,
-                   outbuf->data,                 outbuf->linesize,
-                   aligned_w, outlink->h,
-                   qp_table,
-                   qstride,
-                   pp->modes[pp->mode_id],
-                   pp->pp_ctx,
-                   outbuf->pict_type | (qp_type ? PP_PICT_TYPE_QP2 : 0));
-
-    av_frame_free(&inbuf);
-    return ff_filter_frame(outlink, outbuf);
-}
-
-static av_cold void pp_uninit(AVFilterContext *ctx)
-{
-    int i;
-    PPFilterContext *pp = ctx->priv;
-
-    for (i = 0; i <= PP_QUALITY_MAX; i++)
-        pp_free_mode(pp->modes[i]);
-    if (pp->pp_ctx)
-        pp_free_context(pp->pp_ctx);
-}
-
-static const AVFilterPad pp_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = pp_config_props,
-        .filter_frame = pp_filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad pp_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_pp = {
-    .name            = "pp",
-    .description     = NULL_IF_CONFIG_SMALL("Filter video using libpostproc."),
-    .priv_size       = sizeof(PPFilterContext),
-    .init            = pp_init,
-    .uninit          = pp_uninit,
-    .query_formats   = pp_query_formats,
-    .inputs          = pp_inputs,
-    .outputs         = pp_outputs,
-    .process_command = pp_process_command,
-    .priv_class      = &pp_class,
-    .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_pp7.c b/libavfilter/vf_pp7.c
deleted file mode 100644
index 570a1c9..0000000
--- a/libavfilter/vf_pp7.c
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- * Copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2014 Arwa Arif <arwaarif1994@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Postprocessing filter - 7
- *
- * Originally written by Michael Niedermayer for the MPlayer
- * project, and ported by Arwa Arif for FFmpeg.
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "internal.h"
-#include "vf_pp7.h"
-
-enum mode {
-    MODE_HARD,
-    MODE_SOFT,
-    MODE_MEDIUM
-};
-
-#define OFFSET(x) offsetof(PP7Context, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-static const AVOption pp7_options[] = {
-    { "qp", "force a constant quantizer parameter", OFFSET(qp), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 64, FLAGS },
-    { "mode", "set thresholding mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = MODE_MEDIUM}, 0, 2, FLAGS, "mode" },
-        { "hard",   "hard thresholding",   0, AV_OPT_TYPE_CONST, {.i64 = MODE_HARD},   INT_MIN, INT_MAX, FLAGS, "mode" },
-        { "soft",   "soft thresholding",   0, AV_OPT_TYPE_CONST, {.i64 = MODE_SOFT},   INT_MIN, INT_MAX, FLAGS, "mode" },
-        { "medium", "medium thresholding", 0, AV_OPT_TYPE_CONST, {.i64 = MODE_MEDIUM}, INT_MIN, INT_MAX, FLAGS, "mode" },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(pp7);
-
-DECLARE_ALIGNED(8, static const uint8_t, dither)[8][8] = {
-    {  0,  48,  12,  60,   3,  51,  15,  63, },
-    { 32,  16,  44,  28,  35,  19,  47,  31, },
-    {  8,  56,   4,  52,  11,  59,   7,  55, },
-    { 40,  24,  36,  20,  43,  27,  39,  23, },
-    {  2,  50,  14,  62,   1,  49,  13,  61, },
-    { 34,  18,  46,  30,  33,  17,  45,  29, },
-    { 10,  58,   6,  54,   9,  57,   5,  53, },
-    { 42,  26,  38,  22,  41,  25,  37,  21, },
-};
-
-#define N0 4
-#define N1 5
-#define N2 10
-#define SN0 2
-#define SN1 2.2360679775
-#define SN2 3.16227766017
-#define N (1 << 16)
-
-static const int factor[16] = {
-    N / (N0 * N0), N / (N0 * N1), N / (N0 * N0), N / (N0 * N2),
-    N / (N1 * N0), N / (N1 * N1), N / (N1 * N0), N / (N1 * N2),
-    N / (N0 * N0), N / (N0 * N1), N / (N0 * N0), N / (N0 * N2),
-    N / (N2 * N0), N / (N2 * N1), N / (N2 * N0), N / (N2 * N2),
-};
-
-static void init_thres2(PP7Context *p)
-{
-    int qp, i;
-    int bias = 0; //FIXME
-
-    for (qp = 0; qp < 99; qp++) {
-        for (i = 0; i < 16; i++) {
-            p->thres2[qp][i] = ((i&1) ? SN2 : SN0) * ((i&4) ? SN2 : SN0) * FFMAX(1, qp) * (1<<2) - 1 - bias;
-        }
-    }
-}
-
-static inline void dctA_c(int16_t *dst, uint8_t *src, int stride)
-{
-    int i;
-
-    for (i = 0; i < 4; i++) {
-        int s0 = src[0 * stride] + src[6 * stride];
-        int s1 = src[1 * stride] + src[5 * stride];
-        int s2 = src[2 * stride] + src[4 * stride];
-        int s3 = src[3 * stride];
-        int s = s3 + s3;
-        s3 = s  - s0;
-        s0 = s  + s0;
-        s  = s2 + s1;
-        s2 = s2 - s1;
-        dst[0] = s0 + s;
-        dst[2] = s0 - s;
-        dst[1] = 2 * s3 +     s2;
-        dst[3] =     s3 - 2 * s2;
-        src++;
-        dst += 4;
-    }
-}
-
-static void dctB_c(int16_t *dst, int16_t *src)
-{
-    int i;
-
-    for (i = 0; i < 4; i++) {
-        int s0 = src[0 * 4] + src[6 * 4];
-        int s1 = src[1 * 4] + src[5 * 4];
-        int s2 = src[2 * 4] + src[4 * 4];
-        int s3 = src[3 * 4];
-        int s = s3 + s3;
-        s3 = s  - s0;
-        s0 = s  + s0;
-        s  = s2 + s1;
-        s2 = s2 - s1;
-        dst[0 * 4] = s0 + s;
-        dst[2 * 4] = s0 - s;
-        dst[1 * 4] = 2 * s3 +     s2;
-        dst[3 * 4] =     s3 - 2 * s2;
-        src++;
-        dst++;
-    }
-}
-
-static int hardthresh_c(PP7Context *p, int16_t *src, int qp)
-{
-    int i;
-    int a;
-
-    a = src[0] * factor[0];
-    for (i = 1; i < 16; i++) {
-        unsigned int threshold1 = p->thres2[qp][i];
-        unsigned int threshold2 = threshold1 << 1;
-        int level = src[i];
-        if (((unsigned)(level + threshold1)) > threshold2)
-            a += level * factor[i];
-    }
-    return (a + (1 << 11)) >> 12;
-}
-
-static int mediumthresh_c(PP7Context *p, int16_t *src, int qp)
-{
-    int i;
-    int a;
-
-    a = src[0] * factor[0];
-    for (i = 1; i < 16; i++) {
-        unsigned int threshold1 = p->thres2[qp][i];
-        unsigned int threshold2 = threshold1 << 1;
-        int level = src[i];
-        if (((unsigned)(level + threshold1)) > threshold2) {
-            if (((unsigned)(level + 2 * threshold1)) > 2 * threshold2)
-                a += level * factor[i];
-            else {
-                if (level > 0)
-                    a += 2 * (level - (int)threshold1) * factor[i];
-                else
-                    a += 2 * (level + (int)threshold1) * factor[i];
-            }
-        }
-    }
-    return (a + (1 << 11)) >> 12;
-}
-
-static int softthresh_c(PP7Context *p, int16_t *src, int qp)
-{
-    int i;
-    int a;
-
-    a = src[0] * factor[0];
-    for (i = 1; i < 16; i++) {
-        unsigned int threshold1 = p->thres2[qp][i];
-        unsigned int threshold2 = threshold1 << 1;
-        int level = src[i];
-        if (((unsigned)(level + threshold1)) > threshold2) {
-            if (level > 0)
-                a += (level - (int)threshold1) * factor[i];
-            else
-                a += (level + (int)threshold1) * factor[i];
-        }
-    }
-    return (a + (1 << 11)) >> 12;
-}
-
-static void filter(PP7Context *p, uint8_t *dst, uint8_t *src,
-                   int dst_stride, int src_stride,
-                   int width, int height,
-                   uint8_t *qp_store, int qp_stride, int is_luma)
-{
-    int x, y;
-    const int stride = is_luma ? p->temp_stride : ((width + 16 + 15) & (~15));
-    uint8_t *p_src = p->src + 8 * stride;
-    int16_t *block = (int16_t *)p->src;
-    int16_t *temp  = (int16_t *)(p->src + 32);
-
-    if (!src || !dst) return;
-    for (y = 0; y < height; y++) {
-        int index = 8 + 8 * stride + y * stride;
-        memcpy(p_src + index, src + y * src_stride, width);
-        for (x = 0; x < 8; x++) {
-            p_src[index         - x - 1]= p_src[index +         x    ];
-            p_src[index + width + x    ]= p_src[index + width - x - 1];
-        }
-    }
-    for (y = 0; y < 8; y++) {
-        memcpy(p_src + (    7 - y     ) * stride, p_src + (    y + 8     ) * stride, stride);
-        memcpy(p_src + (height + 8 + y) * stride, p_src + (height - y + 7) * stride, stride);
-    }
-    //FIXME (try edge emu)
-
-    for (y = 0; y < height; y++) {
-        for (x = -8; x < 0; x += 4) {
-            const int index = x + y * stride + (8 - 3) * (1 + stride) + 8; //FIXME silly offset
-            uint8_t *src  = p_src + index;
-            int16_t *tp   = temp + 4 * x;
-
-            dctA_c(tp + 4 * 8, src, stride);
-        }
-        for (x = 0; x < width; ) {
-            const int qps = 3 + is_luma;
-            int qp;
-            int end = FFMIN(x + 8, width);
-
-            if (p->qp)
-                qp = p->qp;
-            else {
-                qp = qp_store[ (FFMIN(x, width - 1) >> qps) + (FFMIN(y, height - 1) >> qps) * qp_stride];
-                qp = ff_norm_qscale(qp, p->qscale_type);
-            }
-            for (; x < end; x++) {
-                const int index = x + y * stride + (8 - 3) * (1 + stride) + 8; //FIXME silly offset
-                uint8_t *src = p_src + index;
-                int16_t *tp  = temp + 4 * x;
-                int v;
-
-                if ((x & 3) == 0)
-                    dctA_c(tp + 4 * 8, src, stride);
-
-                p->dctB(block, tp);
-
-                v = p->requantize(p, block, qp);
-                v = (v + dither[y & 7][x & 7]) >> 6;
-                if ((unsigned)v > 255)
-                    v = (-v) >> 31;
-                dst[x + y * dst_stride] = v;
-            }
-        }
-    }
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,  AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV420P,  AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV410P,  AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ422P,
-        AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_GBRP,
-        AV_PIX_FMT_GRAY8,    AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    PP7Context *pp7 = ctx->priv;
-    const int h = FFALIGN(inlink->h + 16, 16);
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-
-    pp7->hsub = desc->log2_chroma_w;
-    pp7->vsub = desc->log2_chroma_h;
-
-    pp7->temp_stride = FFALIGN(inlink->w + 16, 16);
-    pp7->src = av_malloc_array(pp7->temp_stride,  (h + 8) * sizeof(uint8_t));
-
-    if (!pp7->src)
-        return AVERROR(ENOMEM);
-
-    init_thres2(pp7);
-
-    switch (pp7->mode) {
-        case 0: pp7->requantize = hardthresh_c; break;
-        case 1: pp7->requantize = softthresh_c; break;
-        default:
-        case 2: pp7->requantize = mediumthresh_c; break;
-    }
-
-    pp7->dctB = dctB_c;
-
-    if (ARCH_X86)
-        ff_pp7_init_x86(pp7);
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    PP7Context *pp7 = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *out = in;
-
-    int qp_stride = 0;
-    uint8_t *qp_table = NULL;
-
-    if (!pp7->qp)
-        qp_table = av_frame_get_qp_table(in, &qp_stride, &pp7->qscale_type);
-
-    if (!ctx->is_disabled) {
-        const int cw = AV_CEIL_RSHIFT(inlink->w, pp7->hsub);
-        const int ch = AV_CEIL_RSHIFT(inlink->h, pp7->vsub);
-
-        /* get a new frame if in-place is not possible or if the dimensions
-        * are not multiple of 8 */
-        if (!av_frame_is_writable(in) || (inlink->w & 7) || (inlink->h & 7)) {
-            const int aligned_w = FFALIGN(inlink->w, 8);
-            const int aligned_h = FFALIGN(inlink->h, 8);
-
-            out = ff_get_video_buffer(outlink, aligned_w, aligned_h);
-            if (!out) {
-                av_frame_free(&in);
-                return AVERROR(ENOMEM);
-            }
-            av_frame_copy_props(out, in);
-            out->width = in->width;
-            out->height = in->height;
-        }
-
-        if (qp_table || pp7->qp) {
-
-            filter(pp7, out->data[0], in->data[0], out->linesize[0], in->linesize[0],
-                   inlink->w, inlink->h, qp_table, qp_stride, 1);
-            filter(pp7, out->data[1], in->data[1], out->linesize[1], in->linesize[1],
-                   cw,        ch,        qp_table, qp_stride, 0);
-            filter(pp7, out->data[2], in->data[2], out->linesize[2], in->linesize[2],
-                   cw,        ch,        qp_table, qp_stride, 0);
-            emms_c();
-        }
-    }
-
-    if (in != out) {
-        if (in->data[3])
-            av_image_copy_plane(out->data[3], out->linesize[3],
-                                in ->data[3], in ->linesize[3],
-                                inlink->w, inlink->h);
-        av_frame_free(&in);
-    }
-    return ff_filter_frame(outlink, out);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    PP7Context *pp7 = ctx->priv;
-    av_freep(&pp7->src);
-}
-
-static const AVFilterPad pp7_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad pp7_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_pp7 = {
-    .name            = "pp7",
-    .description     = NULL_IF_CONFIG_SMALL("Apply Postprocessing 7 filter."),
-    .priv_size       = sizeof(PP7Context),
-    .uninit          = uninit,
-    .query_formats   = query_formats,
-    .inputs          = pp7_inputs,
-    .outputs         = pp7_outputs,
-    .priv_class      = &pp7_class,
-    .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
-};
diff --git a/libavfilter/vf_pp7.h b/libavfilter/vf_pp7.h
deleted file mode 100644
index 9aa8d73..0000000
--- a/libavfilter/vf_pp7.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2014 Arwa Arif <arwaarif1994@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef AVFILTER_PP7_H
-#define AVFILTER_PP7_H
-
-#include "avfilter.h"
-
-typedef struct PP7Context {
-    AVClass *class;
-    int thres2[99][16];
-
-    int qp;
-    int mode;
-    int qscale_type;
-    int hsub;
-    int vsub;
-    int temp_stride;
-    uint8_t *src;
-
-    int (*requantize)(struct PP7Context *p, int16_t *src, int qp);
-    void (*dctB)(int16_t *dst, int16_t *src);
-
-} PP7Context;
-
-void ff_pp7_init_x86(PP7Context *pp7);
-
-#endif /* AVFILTER_PP7_H */
diff --git a/libavfilter/vf_pullup.c b/libavfilter/vf_pullup.c
deleted file mode 100644
index fa76caa..0000000
--- a/libavfilter/vf_pullup.c
+++ /dev/null
@@ -1,776 +0,0 @@
-/*
- * Copyright (c) 2003 Rich Felker
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-#include "vf_pullup.h"
-
-#define F_HAVE_BREAKS   1
-#define F_HAVE_AFFINITY 2
-
-#define BREAK_LEFT  1
-#define BREAK_RIGHT 2
-
-#define OFFSET(x) offsetof(PullupContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
-
-static const AVOption pullup_options[] = {
-    { "jl", "set left junk size",  OFFSET(junk_left),  AV_OPT_TYPE_INT, {.i64=1}, 0, INT_MAX, FLAGS },
-    { "jr", "set right junk size", OFFSET(junk_right), AV_OPT_TYPE_INT, {.i64=1}, 0, INT_MAX, FLAGS },
-    { "jt", "set top junk size",   OFFSET(junk_top),   AV_OPT_TYPE_INT, {.i64=4}, 1, INT_MAX, FLAGS },
-    { "jb", "set bottom junk size", OFFSET(junk_bottom), AV_OPT_TYPE_INT, {.i64=4}, 1, INT_MAX, FLAGS },
-    { "sb", "set strict breaks", OFFSET(strict_breaks), AV_OPT_TYPE_BOOL,{.i64=0},-1, 1, FLAGS },
-    { "mp", "set metric plane",  OFFSET(metric_plane),  AV_OPT_TYPE_INT, {.i64=0}, 0, 2, FLAGS, "mp" },
-    { "y", "luma",        0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "mp" },
-    { "u", "chroma blue", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "mp" },
-    { "v", "chroma red",  0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "mp" },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(pullup);
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ420P,
-        AV_PIX_FMT_YUV444P,  AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUV422P,  AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUV411P,  AV_PIX_FMT_YUV410P,
-        AV_PIX_FMT_YUVJ411P, AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-#define ABS(a) (((a) ^ ((a) >> 31)) - ((a) >> 31))
-
-static int diff_c(const uint8_t *a, const uint8_t *b, ptrdiff_t s)
-{
-    int i, j, diff = 0;
-
-    for (i = 0; i < 4; i++) {
-        for (j = 0; j < 8; j++)
-            diff += ABS(a[j] - b[j]);
-        a += s;
-        b += s;
-    }
-
-    return diff;
-}
-
-static int comb_c(const uint8_t *a, const uint8_t *b, ptrdiff_t s)
-{
-    int i, j, comb = 0;
-
-    for (i = 0; i < 4; i++) {
-        for (j = 0; j < 8; j++)
-            comb += ABS((a[j] << 1) - b[j - s] - b[j    ]) +
-                    ABS((b[j] << 1) - a[j    ] - a[j + s]);
-        a += s;
-        b += s;
-    }
-
-    return comb;
-}
-
-static int var_c(const uint8_t *a, const uint8_t *b, ptrdiff_t s)
-{
-    int i, j, var = 0;
-
-    for (i = 0; i < 3; i++) {
-        for (j = 0; j < 8; j++)
-            var += ABS(a[j] - a[j + s]);
-        a += s;
-    }
-
-    return 4 * var; /* match comb scaling */
-}
-
-static int alloc_metrics(PullupContext *s, PullupField *f)
-{
-    f->diffs = av_calloc(FFALIGN(s->metric_length, 16), sizeof(*f->diffs));
-    f->combs = av_calloc(FFALIGN(s->metric_length, 16), sizeof(*f->combs));
-    f->vars  = av_calloc(FFALIGN(s->metric_length, 16), sizeof(*f->vars));
-
-    if (!f->diffs || !f->combs || !f->vars) {
-        av_freep(&f->diffs);
-        av_freep(&f->combs);
-        av_freep(&f->vars);
-        return AVERROR(ENOMEM);
-    }
-    return 0;
-}
-
-static void free_field_queue(PullupField *head)
-{
-    PullupField *f = head;
-    do {
-        PullupField *next;
-        if (!f)
-            break;
-        av_free(f->diffs);
-        av_free(f->combs);
-        av_free(f->vars);
-        next = f->next;
-        memset(f, 0, sizeof(*f)); // clear all pointers to avoid stale ones
-        av_free(f);
-        f = next;
-    } while (f != head);
-}
-
-static PullupField *make_field_queue(PullupContext *s, int len)
-{
-    PullupField *head, *f;
-
-    f = head = av_mallocz(sizeof(*head));
-    if (!f)
-        return NULL;
-
-    if (alloc_metrics(s, f) < 0) {
-        av_free(f);
-        return NULL;
-    }
-
-    for (; len > 0; len--) {
-        f->next = av_mallocz(sizeof(*f->next));
-        if (!f->next) {
-            free_field_queue(head);
-            return NULL;
-        }
-
-        f->next->prev = f;
-        f = f->next;
-        if (alloc_metrics(s, f) < 0) {
-            free_field_queue(head);
-            return NULL;
-        }
-    }
-
-    f->next = head;
-    head->prev = f;
-
-    return head;
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    PullupContext *s = ctx->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int mp = s->metric_plane;
-
-    s->nb_planes = av_pix_fmt_count_planes(inlink->format);
-
-    if (mp + 1 > s->nb_planes) {
-        av_log(ctx, AV_LOG_ERROR, "input format does not have such plane\n");
-        return AVERROR(EINVAL);
-    }
-
-    s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
-    s->planeheight[0] = s->planeheight[3] = inlink->h;
-    s->planewidth[1]  = s->planewidth[2]  = AV_CEIL_RSHIFT(inlink->w, desc->log2_chroma_w);
-    s->planewidth[0]  = s->planewidth[3]  = inlink->w;
-
-    s->metric_w      = (s->planewidth[mp]  - ((s->junk_left + s->junk_right)  << 3)) >> 3;
-    s->metric_h      = (s->planeheight[mp] - ((s->junk_top  + s->junk_bottom) << 1)) >> 3;
-    s->metric_offset = (s->junk_left << 3) + (s->junk_top << 1) * s->planewidth[mp];
-    s->metric_length = s->metric_w * s->metric_h;
-
-    av_log(ctx, AV_LOG_DEBUG, "w: %d h: %d\n", s->metric_w, s->metric_h);
-    av_log(ctx, AV_LOG_DEBUG, "offset: %d length: %d\n", s->metric_offset, s->metric_length);
-
-    s->head = make_field_queue(s, 8);
-    if (!s->head)
-        return AVERROR(ENOMEM);
-
-    s->diff = diff_c;
-    s->comb = comb_c;
-    s->var  = var_c;
-
-    if (ARCH_X86)
-        ff_pullup_init_x86(s);
-    return 0;
-}
-
-static PullupBuffer *pullup_lock_buffer(PullupBuffer *b, int parity)
-{
-    if (!b)
-        return NULL;
-
-    if ((parity + 1) & 1)
-        b->lock[0]++;
-    if ((parity + 1) & 2)
-        b->lock[1]++;
-
-    return b;
-}
-
-static void pullup_release_buffer(PullupBuffer *b, int parity)
-{
-    if (!b)
-        return;
-
-    if ((parity + 1) & 1)
-        b->lock[0]--;
-    if ((parity + 1) & 2)
-        b->lock[1]--;
-}
-
-static int alloc_buffer(PullupContext *s, PullupBuffer *b)
-{
-    int i;
-
-    if (b->planes[0])
-        return 0;
-    for (i = 0; i < s->nb_planes; i++) {
-        b->planes[i] = av_malloc(s->planeheight[i] * s->planewidth[i]);
-    }
-    if (s->nb_planes == 1)
-        b->planes[1] = av_malloc(4*256);
-
-    return 0;
-}
-
-static PullupBuffer *pullup_get_buffer(PullupContext *s, int parity)
-{
-    int i;
-
-    /* Try first to get the sister buffer for the previous field */
-    if (parity < 2 && s->last && parity != s->last->parity
-        && !s->last->buffer->lock[parity]) {
-        alloc_buffer(s, s->last->buffer);
-        return pullup_lock_buffer(s->last->buffer, parity);
-    }
-
-    /* Prefer a buffer with both fields open */
-    for (i = 0; i < FF_ARRAY_ELEMS(s->buffers); i++) {
-        if (s->buffers[i].lock[0])
-            continue;
-        if (s->buffers[i].lock[1])
-            continue;
-        alloc_buffer(s, &s->buffers[i]);
-        return pullup_lock_buffer(&s->buffers[i], parity);
-    }
-
-    if (parity == 2)
-        return 0;
-
-    /* Search for any half-free buffer */
-    for (i = 0; i < FF_ARRAY_ELEMS(s->buffers); i++) {
-        if (((parity + 1) & 1) && s->buffers[i].lock[0])
-            continue;
-        if (((parity + 1) & 2) && s->buffers[i].lock[1])
-            continue;
-        alloc_buffer(s, &s->buffers[i]);
-        return pullup_lock_buffer(&s->buffers[i], parity);
-    }
-
-    return NULL;
-}
-
-static int queue_length(PullupField *begin, PullupField *end)
-{
-    PullupField *f;
-    int count = 1;
-
-    if (!begin || !end)
-        return 0;
-
-    for (f = begin; f != end; f = f->next)
-        count++;
-
-    return count;
-}
-
-static int find_first_break(PullupField *f, int max)
-{
-    int i;
-
-    for (i = 0; i < max; i++) {
-        if (f->breaks & BREAK_RIGHT || f->next->breaks & BREAK_LEFT)
-            return i + 1;
-        f = f->next;
-    }
-
-    return 0;
-}
-
-static void compute_breaks(PullupContext *s, PullupField *f0)
-{
-    PullupField *f1 = f0->next;
-    PullupField *f2 = f1->next;
-    PullupField *f3 = f2->next;
-    int i, l, max_l = 0, max_r = 0;
-
-    if (f0->flags & F_HAVE_BREAKS)
-        return;
-
-    f0->flags |= F_HAVE_BREAKS;
-
-    /* Special case when fields are 100% identical */
-    if (f0->buffer == f2->buffer && f1->buffer != f3->buffer) {
-        f2->breaks |= BREAK_RIGHT;
-        return;
-    }
-
-    if (f0->buffer != f2->buffer && f1->buffer == f3->buffer) {
-        f1->breaks |= BREAK_LEFT;
-        return;
-    }
-
-    for (i = 0; i < s->metric_length; i++) {
-        l = f2->diffs[i] - f3->diffs[i];
-
-        if ( l > max_l)
-            max_l =  l;
-        if (-l > max_r)
-            max_r = -l;
-    }
-
-    /* Don't get tripped up when differences are mostly quant error */
-    if (max_l + max_r < 128)
-        return;
-    if (max_l > 4 * max_r)
-        f1->breaks |= BREAK_LEFT;
-    if (max_r > 4 * max_l)
-        f2->breaks |= BREAK_RIGHT;
-}
-
-static void compute_affinity(PullupContext *s, PullupField *f)
-{
-    int i, max_l = 0, max_r = 0, l;
-
-    if (f->flags & F_HAVE_AFFINITY)
-        return;
-
-    f->flags |= F_HAVE_AFFINITY;
-
-    if (f->buffer == f->next->next->buffer) {
-        f->affinity             =  1;
-        f->next->affinity       =  0;
-        f->next->next->affinity = -1;
-        f->next->flags         |= F_HAVE_AFFINITY;
-        f->next->next->flags   |= F_HAVE_AFFINITY;
-        return;
-    }
-
-    for (i = 0; i < s->metric_length; i++) {
-        int v  = f->vars[i];
-        int lv = f->prev->vars[i];
-        int rv = f->next->vars[i];
-        int lc = f->      combs[i] - 2*(v < lv ? v : lv);
-        int rc = f->next->combs[i] - 2*(v < rv ? v : rv);
-
-        lc = FFMAX(lc, 0);
-        rc = FFMAX(rc, 0);
-        l  = lc - rc;
-
-        if ( l > max_l)
-            max_l =  l;
-        if (-l > max_r)
-            max_r = -l;
-    }
-
-    if (max_l + max_r < 64)
-        return;
-
-    if (max_r > 6 * max_l)
-        f->affinity = -1;
-    else if (max_l > 6 * max_r)
-        f->affinity =  1;
-}
-
-static int decide_frame_length(PullupContext *s)
-{
-    PullupField *f0 = s->first;
-    PullupField *f1 = f0->next;
-    PullupField *f2 = f1->next;
-    PullupField *f;
-    int i, l, n;
-
-    if (queue_length(s->first, s->last) < 4)
-        return 0;
-
-    f = s->first;
-    n = queue_length(f, s->last);
-    for (i = 0; i < n - 1; i++) {
-        if (i < n - 3)
-            compute_breaks(s, f);
-
-        compute_affinity(s, f);
-
-        f = f->next;
-    }
-
-    if (f0->affinity == -1)
-        return 1;
-
-    l = find_first_break(f0, 3);
-
-    if (l == 1 && s->strict_breaks < 0)
-        l = 0;
-
-    switch (l) {
-    case 1:
-        return 1 + (s->strict_breaks < 1 && f0->affinity == 1 && f1->affinity == -1);
-    case 2:
-        /* FIXME: strictly speaking, f0->prev is no longer valid... :) */
-        if (s->strict_pairs
-            && (f0->prev->breaks & BREAK_RIGHT) && (f2->breaks & BREAK_LEFT)
-            && (f0->affinity != 1 || f1->affinity != -1) )
-            return 1;
-        return 1 + (f1->affinity != 1);
-    case 3:
-        return 2 + (f2->affinity != 1);
-    default:
-        /* 9 possibilities covered before switch */
-        if (f1->affinity == 1)
-            return 1; /* covers 6 */
-        else if (f1->affinity == -1)
-            return 2; /* covers 6 */
-        else if (f2->affinity == -1) { /* covers 2 */
-            return (f0->affinity == 1) ? 3 : 1;
-        } else {
-            return 2; /* the remaining 6 */
-        }
-    }
-}
-
-static PullupFrame *pullup_get_frame(PullupContext *s)
-{
-    PullupFrame *fr = &s->frame;
-    int i, n = decide_frame_length(s);
-    int aff = s->first->next->affinity;
-
-    av_assert1(n < FF_ARRAY_ELEMS(fr->ifields));
-    if (!n || fr->lock)
-        return NULL;
-
-    fr->lock++;
-    fr->length = n;
-    fr->parity = s->first->parity;
-    fr->buffer = 0;
-
-    for (i = 0; i < n; i++) {
-        /* We cheat and steal the buffer without release+relock */
-        fr->ifields[i]   = s->first->buffer;
-        s->first->buffer = 0;
-        s->first         = s->first->next;
-    }
-
-    if (n == 1) {
-        fr->ofields[fr->parity    ] = fr->ifields[0];
-        fr->ofields[fr->parity ^ 1] = 0;
-    } else if (n == 2) {
-        fr->ofields[fr->parity    ] = fr->ifields[0];
-        fr->ofields[fr->parity ^ 1] = fr->ifields[1];
-    } else if (n == 3) {
-        if (!aff)
-            aff = (fr->ifields[0] == fr->ifields[1]) ? -1 : 1;
-        fr->ofields[fr->parity    ] = fr->ifields[1 + aff];
-        fr->ofields[fr->parity ^ 1] = fr->ifields[1      ];
-    }
-
-    pullup_lock_buffer(fr->ofields[0], 0);
-    pullup_lock_buffer(fr->ofields[1], 1);
-
-    if (fr->ofields[0] == fr->ofields[1]) {
-        fr->buffer = fr->ofields[0];
-        pullup_lock_buffer(fr->buffer, 2);
-        return fr;
-    }
-
-    return fr;
-}
-
-static void pullup_release_frame(PullupFrame *f)
-{
-    int i;
-
-    for (i = 0; i < f->length; i++)
-        pullup_release_buffer(f->ifields[i], f->parity ^ (i & 1));
-
-    pullup_release_buffer(f->ofields[0], 0);
-    pullup_release_buffer(f->ofields[1], 1);
-
-    if (f->buffer)
-        pullup_release_buffer(f->buffer, 2);
-    f->lock--;
-}
-
-static void compute_metric(PullupContext *s, int *dest,
-                           PullupField *fa, int pa, PullupField *fb, int pb,
-                           int (*func)(const uint8_t *, const uint8_t *, ptrdiff_t))
-{
-    int mp = s->metric_plane;
-    int xstep = 8;
-    int ystep = s->planewidth[mp] << 3;
-    int stride = s->planewidth[mp] << 1; /* field stride */
-    int w = s->metric_w * xstep;
-    uint8_t *a, *b;
-    int x, y;
-
-    if (!fa->buffer || !fb->buffer)
-        return;
-
-    /* Shortcut for duplicate fields (e.g. from RFF flag) */
-    if (fa->buffer == fb->buffer && pa == pb) {
-        memset(dest, 0, s->metric_length * sizeof(*dest));
-        return;
-    }
-
-    a = fa->buffer->planes[mp] + pa * s->planewidth[mp] + s->metric_offset;
-    b = fb->buffer->planes[mp] + pb * s->planewidth[mp] + s->metric_offset;
-
-    for (y = 0; y < s->metric_h; y++) {
-        for (x = 0; x < w; x += xstep)
-            *dest++ = func(a + x, b + x, stride);
-        a += ystep; b += ystep;
-    }
-}
-
-static int check_field_queue(PullupContext *s)
-{
-    int ret;
-
-    if (s->head->next == s->first) {
-        PullupField *f = av_mallocz(sizeof(*f));
-
-        if (!f)
-            return AVERROR(ENOMEM);
-
-        if ((ret = alloc_metrics(s, f)) < 0) {
-            av_free(f);
-            return ret;
-        }
-
-        f->prev        = s->head;
-        f->next        = s->first;
-        s->head->next  = f;
-        s->first->prev = f;
-    }
-
-    return 0;
-}
-
-static void pullup_submit_field(PullupContext *s, PullupBuffer *b, int parity)
-{
-    PullupField *f;
-
-    /* Grow the circular list if needed */
-    if (check_field_queue(s) < 0)
-        return;
-
-    /* Cannot have two fields of same parity in a row; drop the new one */
-    if (s->last && s->last->parity == parity)
-        return;
-
-    f = s->head;
-    f->parity   = parity;
-    f->buffer   = pullup_lock_buffer(b, parity);
-    f->flags    = 0;
-    f->breaks   = 0;
-    f->affinity = 0;
-
-    compute_metric(s, f->diffs, f, parity, f->prev->prev, parity, s->diff);
-    compute_metric(s, f->combs, parity ? f->prev : f, 0, parity ? f : f->prev, 1, s->comb);
-    compute_metric(s, f->vars, f, parity, f, -1, s->var);
-    emms_c();
-
-    /* Advance the circular list */
-    if (!s->first)
-        s->first = s->head;
-
-    s->last = s->head;
-    s->head = s->head->next;
-}
-
-static void copy_field(PullupContext *s,
-                       PullupBuffer *dst, PullupBuffer *src, int parity)
-{
-    uint8_t *dd, *ss;
-    int i;
-
-    for (i = 0; i < s->nb_planes; i++) {
-        ss = src->planes[i] + parity * s->planewidth[i];
-        dd = dst->planes[i] + parity * s->planewidth[i];
-
-        av_image_copy_plane(dd, s->planewidth[i] << 1,
-                            ss, s->planewidth[i] << 1,
-                            s->planewidth[i], s->planeheight[i] >> 1);
-    }
-}
-
-static void pullup_pack_frame(PullupContext *s, PullupFrame *fr)
-{
-    int i;
-
-    if (fr->buffer)
-        return;
-
-    if (fr->length < 2)
-        return; /* FIXME: deal with this */
-
-    for (i = 0; i < 2; i++) {
-        if (fr->ofields[i]->lock[i^1])
-            continue;
-
-        fr->buffer = fr->ofields[i];
-        pullup_lock_buffer(fr->buffer, 2);
-        copy_field(s, fr->buffer, fr->ofields[i^1], i^1);
-        return;
-    }
-
-    fr->buffer = pullup_get_buffer(s, 2);
-
-    copy_field(s, fr->buffer, fr->ofields[0], 0);
-    copy_field(s, fr->buffer, fr->ofields[1], 1);
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    AVFilterLink *outlink = ctx->outputs[0];
-    PullupContext *s = ctx->priv;
-    PullupBuffer *b;
-    PullupFrame *f;
-    AVFrame *out;
-    int p, ret = 0;
-
-    b = pullup_get_buffer(s, 2);
-    if (!b) {
-        av_log(ctx, AV_LOG_WARNING, "Could not get buffer!\n");
-        f = pullup_get_frame(s);
-        pullup_release_frame(f);
-        goto end;
-    }
-
-    av_image_copy(b->planes, s->planewidth,
-                  (const uint8_t**)in->data, in->linesize,
-                  inlink->format, inlink->w, inlink->h);
-
-    p = in->interlaced_frame ? !in->top_field_first : 0;
-    pullup_submit_field(s, b, p  );
-    pullup_submit_field(s, b, p^1);
-
-    if (in->repeat_pict)
-        pullup_submit_field(s, b, p);
-
-    pullup_release_buffer(b, 2);
-
-    f = pullup_get_frame(s);
-    if (!f)
-        goto end;
-
-    if (f->length < 2) {
-        pullup_release_frame(f);
-        f = pullup_get_frame(s);
-        if (!f)
-            goto end;
-        if (f->length < 2) {
-            pullup_release_frame(f);
-            if (!in->repeat_pict)
-                goto end;
-            f = pullup_get_frame(s);
-            if (!f)
-                goto end;
-            if (f->length < 2) {
-                pullup_release_frame(f);
-                goto end;
-            }
-        }
-    }
-
-    /* If the frame isn't already exportable... */
-    if (!f->buffer)
-        pullup_pack_frame(s, f);
-
-    out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!out) {
-        ret = AVERROR(ENOMEM);
-        goto end;
-    }
-    av_frame_copy_props(out, in);
-
-    av_image_copy(out->data, out->linesize,
-                  (const uint8_t**)f->buffer->planes, s->planewidth,
-                  inlink->format, inlink->w, inlink->h);
-
-    ret = ff_filter_frame(outlink, out);
-    pullup_release_frame(f);
-end:
-    av_frame_free(&in);
-    return ret;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    PullupContext *s = ctx->priv;
-    int i;
-
-    free_field_queue(s->head);
-    s->last = NULL;
-
-    for (i = 0; i < FF_ARRAY_ELEMS(s->buffers); i++) {
-        av_freep(&s->buffers[i].planes[0]);
-        av_freep(&s->buffers[i].planes[1]);
-        av_freep(&s->buffers[i].planes[2]);
-    }
-}
-
-static const AVFilterPad pullup_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_input,
-    },
-    { NULL }
-};
-
-static const AVFilterPad pullup_outputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_pullup = {
-    .name          = "pullup",
-    .description   = NULL_IF_CONFIG_SMALL("Pullup from field sequence to frames."),
-    .priv_size     = sizeof(PullupContext),
-    .priv_class    = &pullup_class,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = pullup_inputs,
-    .outputs       = pullup_outputs,
-};
diff --git a/libavfilter/vf_pullup.h b/libavfilter/vf_pullup.h
deleted file mode 100644
index 8f59335..0000000
--- a/libavfilter/vf_pullup.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef AVFILTER_PULLUP_H
-#define AVFILTER_PULLUP_H
-
-#include "avfilter.h"
-
-typedef struct PullupBuffer {
-    int lock[2];
-    uint8_t *planes[4];
-} PullupBuffer;
-
-typedef struct PullupField {
-    int parity;
-    PullupBuffer *buffer;
-    unsigned flags;
-    int breaks;
-    int affinity;
-    int *diffs;
-    int *combs;
-    int *vars;
-    struct PullupField *prev, *next;
-} PullupField;
-
-typedef struct PullupFrame {
-    int lock;
-    int length;
-    int parity;
-    PullupBuffer *ifields[4], *ofields[2];
-    PullupBuffer *buffer;
-} PullupFrame;
-
-typedef struct PullupContext {
-    const AVClass *class;
-    int junk_left, junk_right, junk_top, junk_bottom;
-    int metric_plane;
-    int strict_breaks;
-    int strict_pairs;
-    int metric_w, metric_h, metric_length;
-    int metric_offset;
-    int nb_planes;
-    int planewidth[4];
-    int planeheight[4];
-    PullupField *first, *last, *head;
-    PullupBuffer buffers[10];
-    PullupFrame frame;
-
-    int (*diff)(const uint8_t *a, const uint8_t *b, ptrdiff_t s);
-    int (*comb)(const uint8_t *a, const uint8_t *b, ptrdiff_t s);
-    int (*var )(const uint8_t *a, const uint8_t *b, ptrdiff_t s);
-} PullupContext;
-
-void ff_pullup_init_x86(PullupContext *s);
-
-#endif /* AVFILTER_PULLUP_H */
diff --git a/libavfilter/vf_repeatfields.c b/libavfilter/vf_repeatfields.c
deleted file mode 100644
index 3ac432b..0000000
--- a/libavfilter/vf_repeatfields.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (c) 2003 Tobias Diedrich
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "libavutil/imgutils.h"
-#include "avfilter.h"
-#include "internal.h"
-
-typedef struct RepeatFieldsContext {
-    const AVClass *class;
-    int state;
-    int nb_planes;
-    int linesize[4];
-    int planeheight[4];
-    AVFrame *frame;
-} RepeatFieldsContext;
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    RepeatFieldsContext *s = ctx->priv;
-
-    av_frame_free(&s->frame);
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pixel_fmts_eq[] = {
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_YUV410P,
-        AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pixel_fmts_eq);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    RepeatFieldsContext *s = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int ret;
-
-    if ((ret = av_image_fill_linesizes(s->linesize, inlink->format, inlink->w)) < 0)
-        return ret;
-
-    s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
-    s->planeheight[0] = s->planeheight[3] = inlink->h;
-
-    s->nb_planes = av_pix_fmt_count_planes(inlink->format);
-
-    return 0;
-}
-
-static void update_pts(AVFilterLink *link, AVFrame *f, int64_t pts, int fields)
-{
-    if (av_cmp_q(link->frame_rate, (AVRational){30000, 1001}) == 0 &&
-         av_cmp_q(link->time_base, (AVRational){1001, 60000}) <= 0
-    ) {
-        f->pts = pts + av_rescale_q(fields, (AVRational){1001, 60000}, link->time_base);
-    } else
-        f->pts = AV_NOPTS_VALUE;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in) {
-    AVFilterContext *ctx = inlink->dst;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    RepeatFieldsContext *s = ctx->priv;
-    AVFrame *out;
-    int ret, i;
-    int state = s->state;
-
-    if (!s->frame) {
-        s->frame = av_frame_clone(in);
-        if (!s->frame)
-            return AVERROR(ENOMEM);
-        s->frame->pts = AV_NOPTS_VALUE;
-    }
-
-    out = s->frame;
-
-    if ((state == 0 && !in->top_field_first) ||
-        (state == 1 &&  in->top_field_first)) {
-        av_log(ctx, AV_LOG_WARNING, "Unexpected field flags: "
-                                    "state=%d top_field_first=%d repeat_first_field=%d\n",
-                                    state, in->top_field_first, in->repeat_pict);
-        state ^= 1;
-    }
-
-    if (state == 0) {
-        AVFrame *new;
-
-        new = av_frame_clone(in);
-        if (!new)
-            return AVERROR(ENOMEM);
-
-        ret = ff_filter_frame(outlink, new);
-
-        if (in->repeat_pict) {
-            av_frame_make_writable(out);
-            update_pts(outlink, out, in->pts, 2);
-            for (i = 0; i < s->nb_planes; i++) {
-                av_image_copy_plane(out->data[i], out->linesize[i] * 2,
-                                    in->data[i], in->linesize[i] * 2,
-                                    s->linesize[i], s->planeheight[i] / 2);
-            }
-            state = 1;
-        }
-    } else {
-        for (i = 0; i < s->nb_planes; i++) {
-            av_frame_make_writable(out);
-            av_image_copy_plane(out->data[i] + out->linesize[i], out->linesize[i] * 2,
-                                in->data[i] + in->linesize[i], in->linesize[i] * 2,
-                                s->linesize[i], s->planeheight[i] / 2);
-        }
-
-        ret = ff_filter_frame(outlink, av_frame_clone(out));
-
-        if (in->repeat_pict) {
-            AVFrame *new;
-
-            new = av_frame_clone(in);
-            if (!new)
-                return AVERROR(ENOMEM);
-
-            ret = ff_filter_frame(outlink, new);
-            state = 0;
-        } else {
-            av_frame_make_writable(out);
-            update_pts(outlink, out, in->pts, 1);
-            for (i = 0; i < s->nb_planes; i++) {
-                av_image_copy_plane(out->data[i], out->linesize[i] * 2,
-                                    in->data[i], in->linesize[i] * 2,
-                                    s->linesize[i], s->planeheight[i] / 2);
-            }
-        }
-    }
-
-    s->state = state;
-
-    av_frame_free(&in);
-    return ret;
-}
-
-static const AVFilterPad repeatfields_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_input,
-    },
-    { NULL }
-};
-
-static const AVFilterPad repeatfields_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_repeatfields = {
-    .name          = "repeatfields",
-    .description   = NULL_IF_CONFIG_SMALL("Hard repeat fields based on MPEG repeat field flag."),
-    .priv_size     = sizeof(RepeatFieldsContext),
-    .uninit        = uninit,
-    .inputs        = repeatfields_inputs,
-    .outputs       = repeatfields_outputs,
-    .query_formats = query_formats,
-};
diff --git a/libavfilter/vf_sab.c b/libavfilter/vf_sab.c
deleted file mode 100644
index 6f63654..0000000
--- a/libavfilter/vf_sab.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Shape Adaptive Blur filter, ported from MPlayer libmpcodecs/vf_sab.c
- */
-
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "libswscale/swscale.h"
-
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-
-typedef struct FilterParam {
-    float radius;
-    float pre_filter_radius;
-    float strength;
-    float quality;
-    struct SwsContext *pre_filter_context;
-    uint8_t *pre_filter_buf;
-    int pre_filter_linesize;
-    int dist_width;
-    int dist_linesize;
-    int *dist_coeff;
-#define COLOR_DIFF_COEFF_SIZE 512
-    int color_diff_coeff[COLOR_DIFF_COEFF_SIZE];
-} FilterParam;
-
-typedef struct SabContext {
-    const AVClass *class;
-    FilterParam  luma;
-    FilterParam  chroma;
-    int          hsub;
-    int          vsub;
-    unsigned int sws_flags;
-} SabContext;
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUV410P,
-        AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-#define RADIUS_MIN 0.1
-#define RADIUS_MAX 4.0
-
-#define PRE_FILTER_RADIUS_MIN 0.1
-#define PRE_FILTER_RADIUS_MAX 2.0
-
-#define STRENGTH_MIN 0.1
-#define STRENGTH_MAX 100.0
-
-#define OFFSET(x) offsetof(SabContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-
-static const AVOption sab_options[] = {
-    { "luma_radius",            "set luma radius", OFFSET(luma.radius), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, RADIUS_MIN, RADIUS_MAX, .flags=FLAGS },
-    { "lr"         ,            "set luma radius", OFFSET(luma.radius), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, RADIUS_MIN, RADIUS_MAX, .flags=FLAGS },
-    { "luma_pre_filter_radius", "set luma pre-filter radius", OFFSET(luma.pre_filter_radius), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, PRE_FILTER_RADIUS_MIN, PRE_FILTER_RADIUS_MAX, .flags=FLAGS },
-    { "lpfr",                   "set luma pre-filter radius", OFFSET(luma.pre_filter_radius), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, PRE_FILTER_RADIUS_MIN, PRE_FILTER_RADIUS_MAX, .flags=FLAGS },
-    { "luma_strength",          "set luma strength", OFFSET(luma.strength), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, STRENGTH_MIN, STRENGTH_MAX, .flags=FLAGS },
-    { "ls",                     "set luma strength", OFFSET(luma.strength), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, STRENGTH_MIN, STRENGTH_MAX, .flags=FLAGS },
-
-    { "chroma_radius",            "set chroma radius", OFFSET(chroma.radius), AV_OPT_TYPE_FLOAT, {.dbl=RADIUS_MIN-1}, RADIUS_MIN-1, RADIUS_MAX, .flags=FLAGS },
-    { "cr",                       "set chroma radius", OFFSET(chroma.radius), AV_OPT_TYPE_FLOAT, {.dbl=RADIUS_MIN-1}, RADIUS_MIN-1, RADIUS_MAX, .flags=FLAGS },
-    { "chroma_pre_filter_radius", "set chroma pre-filter radius",  OFFSET(chroma.pre_filter_radius), AV_OPT_TYPE_FLOAT, {.dbl=PRE_FILTER_RADIUS_MIN-1},
-                                  PRE_FILTER_RADIUS_MIN-1, PRE_FILTER_RADIUS_MAX, .flags=FLAGS },
-    { "cpfr",                     "set chroma pre-filter radius",  OFFSET(chroma.pre_filter_radius), AV_OPT_TYPE_FLOAT, {.dbl=PRE_FILTER_RADIUS_MIN-1},
-                                  PRE_FILTER_RADIUS_MIN-1, PRE_FILTER_RADIUS_MAX, .flags=FLAGS },
-    { "chroma_strength",          "set chroma strength", OFFSET(chroma.strength), AV_OPT_TYPE_FLOAT, {.dbl=STRENGTH_MIN-1}, STRENGTH_MIN-1, STRENGTH_MAX, .flags=FLAGS },
-    { "cs",                       "set chroma strength", OFFSET(chroma.strength), AV_OPT_TYPE_FLOAT, {.dbl=STRENGTH_MIN-1}, STRENGTH_MIN-1, STRENGTH_MAX, .flags=FLAGS },
-
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(sab);
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    SabContext *s = ctx->priv;
-
-    /* make chroma default to luma values, if not explicitly set */
-    if (s->chroma.radius < RADIUS_MIN)
-        s->chroma.radius = s->luma.radius;
-    if (s->chroma.pre_filter_radius < PRE_FILTER_RADIUS_MIN)
-        s->chroma.pre_filter_radius = s->luma.pre_filter_radius;
-    if (s->chroma.strength < STRENGTH_MIN)
-        s->chroma.strength = s->luma.strength;
-
-    s->luma.quality = s->chroma.quality = 3.0;
-    s->sws_flags = SWS_POINT;
-
-    av_log(ctx, AV_LOG_VERBOSE,
-           "luma_radius:%f luma_pre_filter_radius::%f luma_strength:%f "
-           "chroma_radius:%f chroma_pre_filter_radius:%f chroma_strength:%f\n",
-           s->luma  .radius, s->luma  .pre_filter_radius, s->luma  .strength,
-           s->chroma.radius, s->chroma.pre_filter_radius, s->chroma.strength);
-    return 0;
-}
-
-static void close_filter_param(FilterParam *f)
-{
-    if (f->pre_filter_context) {
-        sws_freeContext(f->pre_filter_context);
-        f->pre_filter_context = NULL;
-    }
-    av_freep(&f->pre_filter_buf);
-    av_freep(&f->dist_coeff);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    SabContext *s = ctx->priv;
-
-    close_filter_param(&s->luma);
-    close_filter_param(&s->chroma);
-}
-
-static int open_filter_param(FilterParam *f, int width, int height, unsigned int sws_flags)
-{
-    SwsVector *vec;
-    SwsFilter sws_f;
-    int i, x, y;
-    int linesize = FFALIGN(width, 8);
-
-    f->pre_filter_buf = av_malloc(linesize * height);
-    if (!f->pre_filter_buf)
-        return AVERROR(ENOMEM);
-
-    f->pre_filter_linesize = linesize;
-    vec = sws_getGaussianVec(f->pre_filter_radius, f->quality);
-    sws_f.lumH = sws_f.lumV = vec;
-    sws_f.chrH = sws_f.chrV = NULL;
-    f->pre_filter_context = sws_getContext(width, height, AV_PIX_FMT_GRAY8,
-                                           width, height, AV_PIX_FMT_GRAY8,
-                                           sws_flags, &sws_f, NULL, NULL);
-    sws_freeVec(vec);
-
-    vec = sws_getGaussianVec(f->strength, 5.0);
-    for (i = 0; i < COLOR_DIFF_COEFF_SIZE; i++) {
-        double d;
-        int index = i-COLOR_DIFF_COEFF_SIZE/2 + vec->length/2;
-
-        if (index < 0 || index >= vec->length) d = 0.0;
-        else                                   d = vec->coeff[index];
-
-        f->color_diff_coeff[i] = (int)(d/vec->coeff[vec->length/2]*(1<<12) + 0.5);
-    }
-    sws_freeVec(vec);
-
-    vec = sws_getGaussianVec(f->radius, f->quality);
-    f->dist_width    = vec->length;
-    f->dist_linesize = FFALIGN(vec->length, 8);
-    f->dist_coeff    = av_malloc_array(f->dist_width, f->dist_linesize * sizeof(*f->dist_coeff));
-    if (!f->dist_coeff) {
-        sws_freeVec(vec);
-        return AVERROR(ENOMEM);
-    }
-
-    for (y = 0; y < vec->length; y++) {
-        for (x = 0; x < vec->length; x++) {
-            double d = vec->coeff[x] * vec->coeff[y];
-            f->dist_coeff[x + y*f->dist_linesize] = (int)(d*(1<<10) + 0.5);
-        }
-    }
-    sws_freeVec(vec);
-
-    return 0;
-}
-
-static int config_props(AVFilterLink *inlink)
-{
-    SabContext *s = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int ret;
-
-    s->hsub = desc->log2_chroma_w;
-    s->vsub = desc->log2_chroma_h;
-
-    close_filter_param(&s->luma);
-    ret = open_filter_param(&s->luma, inlink->w, inlink->h, s->sws_flags);
-    if (ret < 0)
-        return ret;
-
-    close_filter_param(&s->chroma);
-    ret = open_filter_param(&s->chroma,
-                            AV_CEIL_RSHIFT(inlink->w, s->hsub),
-                            AV_CEIL_RSHIFT(inlink->h, s->vsub), s->sws_flags);
-    return ret;
-}
-
-#define NB_PLANES 4
-
-static void blur(uint8_t       *dst, const int dst_linesize,
-                 const uint8_t *src, const int src_linesize,
-                 const int w, const int h, FilterParam *fp)
-{
-    int x, y;
-    FilterParam f = *fp;
-    const int radius = f.dist_width/2;
-
-    const uint8_t * const src2[NB_PLANES] = { src };
-    int          src2_linesize[NB_PLANES] = { src_linesize };
-    uint8_t     *dst2[NB_PLANES] = { f.pre_filter_buf };
-    int dst2_linesize[NB_PLANES] = { f.pre_filter_linesize };
-
-    sws_scale(f.pre_filter_context, src2, src2_linesize, 0, h, dst2, dst2_linesize);
-
-#define UPDATE_FACTOR do {                                              \
-        int factor;                                                     \
-        factor = f.color_diff_coeff[COLOR_DIFF_COEFF_SIZE/2 + pre_val - \
-                 f.pre_filter_buf[ix + iy*f.pre_filter_linesize]] * f.dist_coeff[dx + dy*f.dist_linesize]; \
-        sum += src[ix + iy*src_linesize] * factor;                      \
-        div += factor;                                                  \
-    } while (0)
-
-    for (y = 0; y < h; y++) {
-        for (x = 0; x < w; x++) {
-            int sum = 0;
-            int div = 0;
-            int dy;
-            const int pre_val = f.pre_filter_buf[x + y*f.pre_filter_linesize];
-            if (x >= radius && x < w - radius) {
-                for (dy = 0; dy < radius*2 + 1; dy++) {
-                    int dx;
-                    int iy = y+dy - radius;
-                    iy = avpriv_mirror(iy, h-1);
-
-                    for (dx = 0; dx < radius*2 + 1; dx++) {
-                        const int ix = x+dx - radius;
-                        UPDATE_FACTOR;
-                    }
-                }
-            } else {
-                for (dy = 0; dy < radius*2+1; dy++) {
-                    int dx;
-                    int iy = y+dy - radius;
-                    iy = avpriv_mirror(iy, h-1);
-
-                    for (dx = 0; dx < radius*2 + 1; dx++) {
-                        int ix = x+dx - radius;
-                        ix = avpriv_mirror(ix, w-1);
-                        UPDATE_FACTOR;
-                    }
-                }
-            }
-            dst[x + y*dst_linesize] = (sum + div/2) / div;
-        }
-    }
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
-{
-    SabContext  *s = inlink->dst->priv;
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    AVFrame *outpic;
-
-    outpic = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!outpic) {
-        av_frame_free(&inpic);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(outpic, inpic);
-
-    blur(outpic->data[0], outpic->linesize[0], inpic->data[0],  inpic->linesize[0],
-         inlink->w, inlink->h, &s->luma);
-    if (inpic->data[2]) {
-        int cw = AV_CEIL_RSHIFT(inlink->w, s->hsub);
-        int ch = AV_CEIL_RSHIFT(inlink->h, s->vsub);
-        blur(outpic->data[1], outpic->linesize[1], inpic->data[1], inpic->linesize[1], cw, ch, &s->chroma);
-        blur(outpic->data[2], outpic->linesize[2], inpic->data[2], inpic->linesize[2], cw, ch, &s->chroma);
-    }
-
-    av_frame_free(&inpic);
-    return ff_filter_frame(outlink, outpic);
-}
-
-static const AVFilterPad sab_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_props,
-    },
-    { NULL }
-};
-
-static const AVFilterPad sab_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_sab = {
-    .name          = "sab",
-    .description   = NULL_IF_CONFIG_SMALL("Apply shape adaptive blur."),
-    .priv_size     = sizeof(SabContext),
-    .init          = init,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = sab_inputs,
-    .outputs       = sab_outputs,
-    .priv_class    = &sab_class,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
deleted file mode 100644
index d07b213..0000000
--- a/libavfilter/vf_signature.c
+++ /dev/null
@@ -1,771 +0,0 @@
-/*
- * Copyright (c) 2017 Gerion Entrup
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * MPEG-7 video signature calculation and lookup filter
- * @see http://epubs.surrey.ac.uk/531590/1/MPEG-7%20Video%20Signature%20Author%27s%20Copy.pdf
- */
-
-#include <float.h>
-#include "libavcodec/put_bits.h"
-#include "libavformat/avformat.h"
-#include "libavutil/opt.h"
-#include "libavutil/avstring.h"
-#include "libavutil/intreadwrite.h"
-#include "libavutil/timestamp.h"
-#include "avfilter.h"
-#include "internal.h"
-#include "signature.h"
-#include "signature_lookup.c"
-
-#define OFFSET(x) offsetof(SignatureContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM
-#define BLOCK_LCM (int64_t) 476985600
-
-static const AVOption signature_options[] = {
-    { "detectmode", "set the detectmode",
-        OFFSET(mode),         AV_OPT_TYPE_INT,    {.i64 = MODE_OFF}, 0, NB_LOOKUP_MODE-1, FLAGS, "mode" },
-        { "off",  NULL, 0, AV_OPT_TYPE_CONST, {.i64 = MODE_OFF},  0, 0, .flags = FLAGS, "mode" },
-        { "full", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = MODE_FULL}, 0, 0, .flags = FLAGS, "mode" },
-        { "fast", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = MODE_FAST}, 0, 0, .flags = FLAGS, "mode" },
-    { "nb_inputs",  "number of inputs",
-        OFFSET(nb_inputs),    AV_OPT_TYPE_INT,    {.i64 = 1},        1, INT_MAX,          FLAGS },
-    { "filename",   "filename for output files",
-        OFFSET(filename),     AV_OPT_TYPE_STRING, {.str = ""},       0, NB_FORMATS-1,     FLAGS },
-    { "format",     "set output format",
-        OFFSET(format),       AV_OPT_TYPE_INT,    {.i64 = FORMAT_BINARY}, 0, 1,           FLAGS , "format" },
-        { "binary", 0, 0, AV_OPT_TYPE_CONST, {.i64=FORMAT_BINARY}, 0, 0, FLAGS, "format" },
-        { "xml",    0, 0, AV_OPT_TYPE_CONST, {.i64=FORMAT_XML},    0, 0, FLAGS, "format" },
-    { "th_d",       "threshold to detect one word as similar",
-        OFFSET(thworddist),   AV_OPT_TYPE_INT,    {.i64 = 9000},     1, INT_MAX,          FLAGS },
-    { "th_dc",      "threshold to detect all words as similar",
-        OFFSET(thcomposdist), AV_OPT_TYPE_INT,    {.i64 = 60000},    1, INT_MAX,          FLAGS },
-    { "th_xh",      "threshold to detect frames as similar",
-        OFFSET(thl1),         AV_OPT_TYPE_INT,    {.i64 = 116},      1, INT_MAX,          FLAGS },
-    { "th_di",      "minimum length of matching sequence in frames",
-        OFFSET(thdi),         AV_OPT_TYPE_INT,    {.i64 = 0},        0, INT_MAX,          FLAGS },
-    { "th_it",      "threshold for relation of good to all frames",
-        OFFSET(thit),         AV_OPT_TYPE_DOUBLE, {.dbl = 0.5},    0.0, 1.0,              FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(signature);
-
-static int query_formats(AVFilterContext *ctx)
-{
-    /* all formats with a separate gray value */
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUVJ411P, AV_PIX_FMT_YUVJ420P,
-        AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P,
-        AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_NV12, AV_PIX_FMT_NV21,
-        AV_PIX_FMT_NONE
-    };
-
-    return ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    AVFilterContext *ctx = inlink->dst;
-    SignatureContext *sic = ctx->priv;
-    StreamContext *sc = &(sic->streamcontexts[FF_INLINK_IDX(inlink)]);
-
-    sc->time_base = inlink->time_base;
-    /* test for overflow */
-    sc->divide = (((uint64_t) inlink->w/32) * (inlink->w/32 + 1) * (inlink->h/32 * inlink->h/32 + 1) > INT64_MAX / (BLOCK_LCM * 255));
-    if (sc->divide) {
-        av_log(ctx, AV_LOG_WARNING, "Input dimension too high for precise calculation, numbers will be rounded.\n");
-    }
-    sc->w = inlink->w;
-    sc->h = inlink->h;
-    return 0;
-}
-
-static int get_block_size(const Block *b)
-{
-    return (b->to.y - b->up.y + 1) * (b->to.x - b->up.x + 1);
-}
-
-static uint64_t get_block_sum(StreamContext *sc, uint64_t intpic[32][32], const Block *b)
-{
-    uint64_t sum = 0;
-
-    int x0, y0, x1, y1;
-
-    x0 = b->up.x;
-    y0 = b->up.y;
-    x1 = b->to.x;
-    y1 = b->to.y;
-
-    if (x0-1 >= 0 && y0-1 >= 0) {
-        sum = intpic[y1][x1] + intpic[y0-1][x0-1] - intpic[y1][x0-1] - intpic[y0-1][x1];
-    } else if (x0-1 >= 0) {
-        sum = intpic[y1][x1] - intpic[y1][x0-1];
-    } else if (y0-1 >= 0) {
-        sum = intpic[y1][x1] - intpic[y0-1][x1];
-    } else {
-        sum = intpic[y1][x1];
-    }
-    return sum;
-}
-
-static int cmp(const uint64_t *a, const uint64_t *b)
-{
-    return *a < *b ? -1 : ( *a > *b ? 1 : 0 );
-}
-
-/**
- * sets the bit at position pos to 1 in data
- */
-static void set_bit(uint8_t* data, size_t pos)
-{
-    uint8_t mask = 1 << 7-(pos%8);
-    data[pos/8] |= mask;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
-{
-    AVFilterContext *ctx = inlink->dst;
-    SignatureContext *sic = ctx->priv;
-    StreamContext *sc = &(sic->streamcontexts[FF_INLINK_IDX(inlink)]);
-    FineSignature* fs;
-
-    static const uint8_t pot3[5] = { 3*3*3*3, 3*3*3, 3*3, 3, 1 };
-    /* indexes of words : 210,217,219,274,334  44,175,233,270,273  57,70,103,237,269  100,285,295,337,354  101,102,111,275,296
-    s2usw = sorted to unsorted wordvec: 44 is at index 5, 57 at index 10...
-    */
-    static const unsigned int wordvec[25] = {44,57,70,100,101,102,103,111,175,210,217,219,233,237,269,270,273,274,275,285,295,296,334,337,354};
-    static const uint8_t      s2usw[25]   = { 5,10,11, 15, 20, 21, 12, 22,  6,  0,  1,  2,  7, 13, 14,  8,  9,  3, 23, 16, 17, 24,  4, 18, 19};
-
-    uint8_t wordt2b[5] = { 0, 0, 0, 0, 0 }; /* word ternary to binary */
-    uint64_t intpic[32][32];
-    uint64_t rowcount;
-    uint8_t *p = picref->data[0];
-    int inti, intj;
-    int *intjlut;
-
-    uint64_t conflist[DIFFELEM_SIZE];
-    int f = 0, g = 0, w = 0;
-    int32_t dh1 = 1, dh2 = 1, dw1 = 1, dw2 = 1, a, b;
-    int64_t denom;
-    int i, j, k, ternary;
-    uint64_t blocksum;
-    int blocksize;
-    int64_t th; /* threshold */
-    int64_t sum;
-
-    int64_t precfactor = (sc->divide) ? 65536 : BLOCK_LCM;
-
-    /* initialize fs */
-    if (sc->curfinesig) {
-        fs = av_mallocz(sizeof(FineSignature));
-        if (!fs)
-            return AVERROR(ENOMEM);
-        sc->curfinesig->next = fs;
-        fs->prev = sc->curfinesig;
-        sc->curfinesig = fs;
-    } else {
-        fs = sc->curfinesig = sc->finesiglist;
-        sc->curcoarsesig1->first = fs;
-    }
-
-    fs->pts = picref->pts;
-    fs->index = sc->lastindex++;
-
-    memset(intpic, 0, sizeof(uint64_t)*32*32);
-    intjlut = av_malloc_array(inlink->w, sizeof(int));
-    if (!intjlut)
-        return AVERROR(ENOMEM);
-    for (i = 0; i < inlink->w; i++) {
-        intjlut[i] = (i*32)/inlink->w;
-    }
-
-    for (i = 0; i < inlink->h; i++) {
-        inti = (i*32)/inlink->h;
-        for (j = 0; j < inlink->w; j++) {
-            intj = intjlut[j];
-            intpic[inti][intj] += p[j];
-        }
-        p += picref->linesize[0];
-    }
-    av_freep(&intjlut);
-
-    /* The following calculates a summed area table (intpic) and brings the numbers
-     * in intpic to the same denominator.
-     * So you only have to handle the numinator in the following sections.
-     */
-    dh1 = inlink->h / 32;
-    if (inlink->h % 32)
-        dh2 = dh1 + 1;
-    dw1 = inlink->w / 32;
-    if (inlink->w % 32)
-        dw2 = dw1 + 1;
-    denom = (sc->divide) ? dh1 * dh2 * dw1 * dw2 : 1;
-
-    for (i = 0; i < 32; i++) {
-        rowcount = 0;
-        a = 1;
-        if (dh2 > 1) {
-            a = ((inlink->h*(i+1))%32 == 0) ? (inlink->h*(i+1))/32 - 1 : (inlink->h*(i+1))/32;
-            a -= ((inlink->h*i)%32 == 0) ? (inlink->h*i)/32 - 1 : (inlink->h*i)/32;
-            a = (a == dh1)? dh2 : dh1;
-        }
-        for (j = 0; j < 32; j++) {
-            b = 1;
-            if (dw2 > 1) {
-                b = ((inlink->w*(j+1))%32 == 0) ? (inlink->w*(j+1))/32 - 1 : (inlink->w*(j+1))/32;
-                b -= ((inlink->w*j)%32 == 0) ? (inlink->w*j)/32 - 1 : (inlink->w*j)/32;
-                b = (b == dw1)? dw2 : dw1;
-            }
-            rowcount += intpic[i][j] * a * b * precfactor / denom;
-            if (i > 0) {
-                intpic[i][j] = intpic[i-1][j] + rowcount;
-            } else {
-                intpic[i][j] = rowcount;
-            }
-        }
-    }
-
-    denom = (sc->divide) ? 1 : dh1 * dh2 * dw1 * dw2;
-
-    for (i = 0; i < ELEMENT_COUNT; i++) {
-        const ElemCat* elemcat = elements[i];
-        int64_t* elemsignature;
-        uint64_t* sortsignature;
-
-        elemsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
-        if (!elemsignature)
-            return AVERROR(ENOMEM);
-        sortsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
-        if (!sortsignature) {
-            av_freep(&elemsignature);
-            return AVERROR(ENOMEM);
-        }
-
-        for (j = 0; j < elemcat->elem_count; j++) {
-            blocksum = 0;
-            blocksize = 0;
-            for (k = 0; k < elemcat->left_count; k++) {
-                blocksum += get_block_sum(sc, intpic, &elemcat->blocks[j*elemcat->block_count+k]);
-                blocksize += get_block_size(&elemcat->blocks[j*elemcat->block_count+k]);
-            }
-            sum = blocksum / blocksize;
-            if (elemcat->av_elem) {
-                sum -= 128 * precfactor * denom;
-            } else {
-                blocksum = 0;
-                blocksize = 0;
-                for (; k < elemcat->block_count; k++) {
-                    blocksum += get_block_sum(sc, intpic, &elemcat->blocks[j*elemcat->block_count+k]);
-                    blocksize += get_block_size(&elemcat->blocks[j*elemcat->block_count+k]);
-                }
-                sum -= blocksum / blocksize;
-                conflist[g++] = FFABS(sum * 8 / (precfactor * denom));
-            }
-
-            elemsignature[j] = sum;
-            sortsignature[j] = FFABS(sum);
-        }
-
-        /* get threshold */
-        qsort(sortsignature, elemcat->elem_count, sizeof(uint64_t), (void*) cmp);
-        th = sortsignature[(int) (elemcat->elem_count*0.333)];
-
-        /* ternarize */
-        for (j = 0; j < elemcat->elem_count; j++) {
-            if (elemsignature[j] < -th) {
-                ternary = 0;
-            } else if (elemsignature[j] <= th) {
-                ternary = 1;
-            } else {
-                ternary = 2;
-            }
-            fs->framesig[f/5] += ternary * pot3[f%5];
-
-            if (f == wordvec[w]) {
-                fs->words[s2usw[w]/5] += ternary * pot3[wordt2b[s2usw[w]/5]++];
-                if (w < 24)
-                    w++;
-            }
-            f++;
-        }
-        av_freep(&elemsignature);
-        av_freep(&sortsignature);
-    }
-
-    /* confidence */
-    qsort(conflist, DIFFELEM_SIZE, sizeof(uint64_t), (void*) cmp);
-    fs->confidence = FFMIN(conflist[DIFFELEM_SIZE/2], 255);
-
-    /* coarsesignature */
-    if (sc->coarsecount == 0) {
-        if (sc->curcoarsesig2) {
-            sc->curcoarsesig1 = av_mallocz(sizeof(CoarseSignature));
-            if (!sc->curcoarsesig1)
-                return AVERROR(ENOMEM);
-            sc->curcoarsesig1->first = fs;
-            sc->curcoarsesig2->next = sc->curcoarsesig1;
-            sc->coarseend = sc->curcoarsesig1;
-        }
-    }
-    if (sc->coarsecount == 45) {
-        sc->midcoarse = 1;
-        sc->curcoarsesig2 = av_mallocz(sizeof(CoarseSignature));
-        if (!sc->curcoarsesig2)
-            return AVERROR(ENOMEM);
-        sc->curcoarsesig2->first = fs;
-        sc->curcoarsesig1->next = sc->curcoarsesig2;
-        sc->coarseend = sc->curcoarsesig2;
-    }
-    for (i = 0; i < 5; i++) {
-        set_bit(sc->curcoarsesig1->data[i], fs->words[i]);
-    }
-    /* assuming the actual frame is the last */
-    sc->curcoarsesig1->last = fs;
-    if (sc->midcoarse) {
-        for (i = 0; i < 5; i++) {
-            set_bit(sc->curcoarsesig2->data[i], fs->words[i]);
-        }
-        sc->curcoarsesig2->last = fs;
-    }
-
-    sc->coarsecount = (sc->coarsecount+1)%90;
-
-    /* debug printing finesignature */
-    if (av_log_get_level() == AV_LOG_DEBUG) {
-        av_log(ctx, AV_LOG_DEBUG, "input %d, confidence: %d\n", FF_INLINK_IDX(inlink), fs->confidence);
-
-        av_log(ctx, AV_LOG_DEBUG, "words:");
-        for (i = 0; i < 5; i++) {
-            av_log(ctx, AV_LOG_DEBUG, " %d:", fs->words[i] );
-            av_log(ctx, AV_LOG_DEBUG, " %d", fs->words[i] / pot3[0] );
-            for (j = 1; j < 5; j++)
-                av_log(ctx, AV_LOG_DEBUG, ",%d", fs->words[i] % pot3[j-1] / pot3[j] );
-            av_log(ctx, AV_LOG_DEBUG, ";");
-        }
-        av_log(ctx, AV_LOG_DEBUG, "\n");
-
-        av_log(ctx, AV_LOG_DEBUG, "framesignature:");
-        for (i = 0; i < SIGELEM_SIZE/5; i++) {
-            av_log(ctx, AV_LOG_DEBUG, " %d", fs->framesig[i] / pot3[0] );
-            for (j = 1; j < 5; j++)
-                av_log(ctx, AV_LOG_DEBUG, ",%d", fs->framesig[i] % pot3[j-1] / pot3[j] );
-        }
-        av_log(ctx, AV_LOG_DEBUG, "\n");
-    }
-
-    if (FF_INLINK_IDX(inlink) == 0)
-        return ff_filter_frame(inlink->dst->outputs[0], picref);
-    return 1;
-}
-
-static int xml_export(AVFilterContext *ctx, StreamContext *sc, const char* filename)
-{
-    FineSignature* fs;
-    CoarseSignature* cs;
-    int i, j;
-    FILE* f;
-    unsigned int pot3[5] = { 3*3*3*3, 3*3*3, 3*3, 3, 1 };
-
-    f = fopen(filename, "w");
-    if (!f) {
-        int err = AVERROR(EINVAL);
-        char buf[128];
-        av_strerror(err, buf, sizeof(buf));
-        av_log(ctx, AV_LOG_ERROR, "cannot open xml file %s: %s\n", filename, buf);
-        return err;
-    }
-
-    /* header */
-    fprintf(f, "<?xml version='1.0' encoding='ASCII' ?>\n");
-    fprintf(f, "<Mpeg7 xmlns=\"urn:mpeg:mpeg7:schema:2001\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:mpeg:mpeg7:schema:2001 schema/Mpeg7-2001.xsd\">\n");
-    fprintf(f, "  <DescriptionUnit xsi:type=\"DescriptorCollectionType\">\n");
-    fprintf(f, "    <Descriptor xsi:type=\"VideoSignatureType\">\n");
-    fprintf(f, "      <VideoSignatureRegion>\n");
-    fprintf(f, "        <VideoSignatureSpatialRegion>\n");
-    fprintf(f, "          <Pixel>0 0 </Pixel>\n");
-    fprintf(f, "          <Pixel>%d %d </Pixel>\n", sc->w - 1, sc->h - 1);
-    fprintf(f, "        </VideoSignatureSpatialRegion>\n");
-    fprintf(f, "        <StartFrameOfSpatialRegion>0</StartFrameOfSpatialRegion>\n");
-    /* hoping num is 1, other values are vague */
-    fprintf(f, "        <MediaTimeUnit>%d</MediaTimeUnit>\n", sc->time_base.den / sc->time_base.num);
-    fprintf(f, "        <MediaTimeOfSpatialRegion>\n");
-    fprintf(f, "          <StartMediaTimeOfSpatialRegion>0</StartMediaTimeOfSpatialRegion>\n");
-    fprintf(f, "          <EndMediaTimeOfSpatialRegion>%" PRIu64 "</EndMediaTimeOfSpatialRegion>\n", sc->coarseend->last->pts);
-    fprintf(f, "        </MediaTimeOfSpatialRegion>\n");
-
-    /* coarsesignatures */
-    for (cs = sc->coarsesiglist; cs; cs = cs->next) {
-        fprintf(f, "        <VSVideoSegment>\n");
-        fprintf(f, "          <StartFrameOfSegment>%" PRIu32 "</StartFrameOfSegment>\n", cs->first->index);
-        fprintf(f, "          <EndFrameOfSegment>%" PRIu32 "</EndFrameOfSegment>\n", cs->last->index);
-        fprintf(f, "          <MediaTimeOfSegment>\n");
-        fprintf(f, "            <StartMediaTimeOfSegment>%" PRIu64 "</StartMediaTimeOfSegment>\n", cs->first->pts);
-        fprintf(f, "            <EndMediaTimeOfSegment>%" PRIu64 "</EndMediaTimeOfSegment>\n", cs->last->pts);
-        fprintf(f, "          </MediaTimeOfSegment>\n");
-        for (i = 0; i < 5; i++) {
-            fprintf(f, "          <BagOfWords>");
-            for (j = 0; j < 31; j++) {
-                uint8_t n = cs->data[i][j];
-                if (j < 30) {
-                    fprintf(f, "%d  %d  %d  %d  %d  %d  %d  %d  ", (n & 0x80) >> 7,
-                                                                   (n & 0x40) >> 6,
-                                                                   (n & 0x20) >> 5,
-                                                                   (n & 0x10) >> 4,
-                                                                   (n & 0x08) >> 3,
-                                                                   (n & 0x04) >> 2,
-                                                                   (n & 0x02) >> 1,
-                                                                   (n & 0x01));
-                } else {
-                    /* print only 3 bit in last byte */
-                    fprintf(f, "%d  %d  %d ", (n & 0x80) >> 7,
-                                              (n & 0x40) >> 6,
-                                              (n & 0x20) >> 5);
-                }
-            }
-            fprintf(f, "</BagOfWords>\n");
-        }
-        fprintf(f, "        </VSVideoSegment>\n");
-    }
-
-    /* finesignatures */
-    for (fs = sc->finesiglist; fs; fs = fs->next) {
-        fprintf(f, "        <VideoFrame>\n");
-        fprintf(f, "          <MediaTimeOfFrame>%" PRIu64 "</MediaTimeOfFrame>\n", fs->pts);
-        /* confidence */
-        fprintf(f, "          <FrameConfidence>%d</FrameConfidence>\n", fs->confidence);
-        /* words */
-        fprintf(f, "          <Word>");
-        for (i = 0; i < 5; i++) {
-            fprintf(f, "%d ", fs->words[i]);
-            if (i < 4) {
-                fprintf(f, " ");
-            }
-        }
-        fprintf(f, "</Word>\n");
-        /* framesignature */
-        fprintf(f, "          <FrameSignature>");
-        for (i = 0; i< SIGELEM_SIZE/5; i++) {
-            if (i > 0) {
-                fprintf(f, " ");
-            }
-            fprintf(f, "%d ", fs->framesig[i] / pot3[0]);
-            for (j = 1; j < 5; j++)
-                fprintf(f, " %d ", fs->framesig[i] % pot3[j-1] / pot3[j] );
-        }
-        fprintf(f, "</FrameSignature>\n");
-        fprintf(f, "        </VideoFrame>\n");
-    }
-    fprintf(f, "      </VideoSignatureRegion>\n");
-    fprintf(f, "    </Descriptor>\n");
-    fprintf(f, "  </DescriptionUnit>\n");
-    fprintf(f, "</Mpeg7>\n");
-
-    fclose(f);
-    return 0;
-}
-
-static int binary_export(AVFilterContext *ctx, StreamContext *sc, const char* filename)
-{
-    FILE* f;
-    FineSignature* fs;
-    CoarseSignature* cs;
-    uint32_t numofsegments = (sc->lastindex + 44)/45;
-    int i, j;
-    PutBitContext buf;
-    /* buffer + header + coarsesignatures + finesignature */
-    int len = (512 + 6 * 32 + 3*16 + 2 +
-        numofsegments * (4*32 + 1 + 5*243) +
-        sc->lastindex * (2 + 32 + 6*8 + 608)) / 8;
-    uint8_t* buffer = av_malloc_array(len, sizeof(uint8_t));
-    if (!buffer)
-        return AVERROR(ENOMEM);
-
-    f = fopen(filename, "wb");
-    if (!f) {
-        int err = AVERROR(EINVAL);
-        char buf[128];
-        av_strerror(err, buf, sizeof(buf));
-        av_log(ctx, AV_LOG_ERROR, "cannot open file %s: %s\n", filename, buf);
-        av_freep(&buffer);
-        return err;
-    }
-    init_put_bits(&buf, buffer, len);
-
-    put_bits32(&buf, 1); /* NumOfSpatial Regions, only 1 supported */
-    put_bits(&buf, 1, 1); /* SpatialLocationFlag, always the whole image */
-    put_bits32(&buf, 0); /* PixelX,1 PixelY,1, 0,0 */
-    put_bits(&buf, 16, sc->w-1 & 0xFFFF); /* PixelX,2 */
-    put_bits(&buf, 16, sc->h-1 & 0xFFFF); /* PixelY,2 */
-    put_bits32(&buf, 0); /* StartFrameOfSpatialRegion */
-    put_bits32(&buf, sc->lastindex); /* NumOfFrames */
-    /* hoping num is 1, other values are vague */
-    /* den/num might be greater than 16 bit, so cutting it */
-    put_bits(&buf, 16, 0xFFFF & (sc->time_base.den / sc->time_base.num)); /* MediaTimeUnit */
-    put_bits(&buf, 1, 1); /* MediaTimeFlagOfSpatialRegion */
-    put_bits32(&buf, 0); /* StartMediaTimeOfSpatialRegion */
-    put_bits32(&buf, 0xFFFFFFFF & sc->coarseend->last->pts); /* EndMediaTimeOfSpatialRegion */
-    put_bits32(&buf, numofsegments); /* NumOfSegments */
-    /* coarsesignatures */
-    for (cs = sc->coarsesiglist; cs; cs = cs->next) {
-        put_bits32(&buf, cs->first->index); /* StartFrameOfSegment */
-        put_bits32(&buf, cs->last->index); /* EndFrameOfSegment */
-        put_bits(&buf, 1, 1); /* MediaTimeFlagOfSegment */
-        put_bits32(&buf, 0xFFFFFFFF & cs->first->pts); /* StartMediaTimeOfSegment */
-        put_bits32(&buf, 0xFFFFFFFF & cs->last->pts); /* EndMediaTimeOfSegment */
-        for (i = 0; i < 5; i++) {
-            /* put 243 bits ( = 7 * 32 + 19 = 8 * 28 + 19) into buffer */
-            for (j = 0; j < 30; j++) {
-                put_bits(&buf, 8, cs->data[i][j]);
-            }
-            put_bits(&buf, 3, cs->data[i][30] >> 5);
-        }
-    }
-    /* finesignatures */
-    put_bits(&buf, 1, 0); /* CompressionFlag, only 0 supported */
-    for (fs = sc->finesiglist; fs; fs = fs->next) {
-        put_bits(&buf, 1, 1); /* MediaTimeFlagOfFrame */
-        put_bits32(&buf, 0xFFFFFFFF & fs->pts); /* MediaTimeOfFrame */
-        put_bits(&buf, 8, fs->confidence); /* FrameConfidence */
-        for (i = 0; i < 5; i++) {
-            put_bits(&buf, 8, fs->words[i]); /* Words */
-        }
-        /* framesignature */
-        for (i = 0; i < SIGELEM_SIZE/5; i++) {
-            put_bits(&buf, 8, fs->framesig[i]);
-        }
-    }
-
-    avpriv_align_put_bits(&buf);
-    flush_put_bits(&buf);
-    fwrite(buffer, 1, put_bits_count(&buf)/8, f);
-    fclose(f);
-    av_freep(&buffer);
-    return 0;
-}
-
-static int export(AVFilterContext *ctx, StreamContext *sc, int input)
-{
-    SignatureContext* sic = ctx->priv;
-    char filename[1024];
-
-    if (sic->nb_inputs > 1) {
-        /* error already handled */
-        av_assert0(av_get_frame_filename(filename, sizeof(filename), sic->filename, input) == 0);
-    } else {
-        if (av_strlcpy(filename, sic->filename, sizeof(filename)) >= sizeof(filename))
-            return AVERROR(EINVAL);
-    }
-    if (sic->format == FORMAT_XML) {
-        return xml_export(ctx, sc, filename);
-    } else {
-        return binary_export(ctx, sc, filename);
-    }
-}
-
-static int request_frame(AVFilterLink *outlink)
-{
-    AVFilterContext *ctx = outlink->src;
-    SignatureContext *sic = ctx->priv;
-    StreamContext *sc, *sc2;
-    MatchingInfo match;
-    int i, j, ret;
-    int lookup = 1; /* indicates wheather EOF of all files is reached */
-
-    /* process all inputs */
-    for (i = 0; i < sic->nb_inputs; i++){
-        sc = &(sic->streamcontexts[i]);
-
-        ret = ff_request_frame(ctx->inputs[i]);
-
-        /* return if unexpected error occurs in input stream */
-        if (ret < 0 && ret != AVERROR_EOF)
-            return ret;
-
-        /* export signature at EOF */
-        if (ret == AVERROR_EOF && !sc->exported) {
-            /* export if wanted */
-            if (strlen(sic->filename) > 0) {
-                if (export(ctx, sc, i) < 0)
-                    return ret;
-            }
-            sc->exported = 1;
-        }
-        lookup &= sc->exported;
-    }
-
-    /* signature lookup */
-    if (lookup && sic->mode != MODE_OFF) {
-        /* iterate over every pair */
-        for (i = 0; i < sic->nb_inputs; i++) {
-            sc = &(sic->streamcontexts[i]);
-            for (j = i+1; j < sic->nb_inputs; j++) {
-                sc2 = &(sic->streamcontexts[j]);
-                match = lookup_signatures(ctx, sic, sc, sc2, sic->mode);
-                if (match.score != 0) {
-                    av_log(ctx, AV_LOG_INFO, "matching of video %d at %f and %d at %f, %d frames matching\n",
-                            i, ((double) match.first->pts * sc->time_base.num) / sc->time_base.den,
-                            j, ((double) match.second->pts * sc2->time_base.num) / sc2->time_base.den,
-                            match.matchframes);
-                    if (match.whole)
-                        av_log(ctx, AV_LOG_INFO, "whole video matching\n");
-                } else {
-                    av_log(ctx, AV_LOG_INFO, "no matching of video %d and %d\n", i, j);
-                }
-            }
-        }
-    }
-
-    return ret;
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-
-    SignatureContext *sic = ctx->priv;
-    StreamContext *sc;
-    int i, ret;
-    char tmp[1024];
-
-    sic->streamcontexts = av_mallocz(sic->nb_inputs * sizeof(StreamContext));
-    if (!sic->streamcontexts)
-        return AVERROR(ENOMEM);
-
-    for (i = 0; i < sic->nb_inputs; i++) {
-        AVFilterPad pad = {
-            .type = AVMEDIA_TYPE_VIDEO,
-            .name = av_asprintf("in%d", i),
-            .config_props = config_input,
-            .filter_frame = filter_frame,
-        };
-
-        if (!pad.name)
-            return AVERROR(ENOMEM);
-
-        sc = &(sic->streamcontexts[i]);
-
-        sc->lastindex = 0;
-        sc->finesiglist = av_mallocz(sizeof(FineSignature));
-        if (!sc->finesiglist)
-            return AVERROR(ENOMEM);
-        sc->curfinesig = NULL;
-
-        sc->coarsesiglist = av_mallocz(sizeof(CoarseSignature));
-        if (!sc->coarsesiglist)
-            return AVERROR(ENOMEM);
-        sc->curcoarsesig1 = sc->coarsesiglist;
-        sc->coarseend = sc->coarsesiglist;
-        sc->coarsecount = 0;
-        sc->midcoarse = 0;
-
-        if ((ret = ff_insert_inpad(ctx, i, &pad)) < 0) {
-            av_freep(&pad.name);
-            return ret;
-        }
-    }
-
-    /* check filename */
-    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 && av_get_frame_filename(tmp, sizeof(tmp), sic->filename, 0) == -1) {
-        av_log(ctx, AV_LOG_ERROR, "The filename must contain %%d or %%0nd, if you have more than one input.\n");
-        return AVERROR(EINVAL);
-    }
-
-    return 0;
-}
-
-
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    SignatureContext *sic = ctx->priv;
-    StreamContext *sc;
-    void* tmp;
-    FineSignature* finsig;
-    CoarseSignature* cousig;
-    int i;
-
-
-    /* free the lists */
-    if (sic->streamcontexts != NULL) {
-        for (i = 0; i < sic->nb_inputs; i++) {
-            sc = &(sic->streamcontexts[i]);
-            finsig = sc->finesiglist;
-            cousig = sc->coarsesiglist;
-
-            while (finsig) {
-                tmp = finsig;
-                finsig = finsig->next;
-                av_freep(&tmp);
-            }
-            sc->finesiglist = NULL;
-
-            while (cousig) {
-                tmp = cousig;
-                cousig = cousig->next;
-                av_freep(&tmp);
-            }
-            sc->coarsesiglist = NULL;
-        }
-        av_freep(&sic->streamcontexts);
-    }
-}
-
-static int config_output(AVFilterLink *outlink)
-{
-    AVFilterContext *ctx = outlink->src;
-    AVFilterLink *inlink = ctx->inputs[0];
-
-    outlink->time_base = inlink->time_base;
-    outlink->frame_rate = inlink->frame_rate;
-    outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
-    outlink->w = inlink->w;
-    outlink->h = inlink->h;
-
-    return 0;
-}
-
-static const AVFilterPad signature_outputs[] = {
-    {
-        .name          = "default",
-        .type          = AVMEDIA_TYPE_VIDEO,
-        .request_frame = request_frame,
-        .config_props  = config_output,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_signature = {
-    .name          = "signature",
-    .description   = NULL_IF_CONFIG_SMALL("Calculate the MPEG-7 video signature"),
-    .priv_size     = sizeof(SignatureContext),
-    .priv_class    = &signature_class,
-    .init          = init,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .outputs       = signature_outputs,
-    .inputs        = NULL,
-    .flags         = AVFILTER_FLAG_DYNAMIC_INPUTS,
-};
diff --git a/libavfilter/vf_smartblur.c b/libavfilter/vf_smartblur.c
deleted file mode 100644
index 1955ac4..0000000
--- a/libavfilter/vf_smartblur.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2012 Jeremy Tran
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Apply a smartblur filter to the input video
- * Ported from MPlayer libmpcodecs/vf_smartblur.c by Michael Niedermayer.
- */
-
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "libswscale/swscale.h"
-
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-
-#define RADIUS_MIN 0.1
-#define RADIUS_MAX 5.0
-
-#define STRENGTH_MIN -1.0
-#define STRENGTH_MAX 1.0
-
-#define THRESHOLD_MIN -30
-#define THRESHOLD_MAX 30
-
-typedef struct FilterParam {
-    float              radius;
-    float              strength;
-    int                threshold;
-    float              quality;
-    struct SwsContext *filter_context;
-} FilterParam;
-
-typedef struct SmartblurContext {
-    const AVClass *class;
-    FilterParam  luma;
-    FilterParam  chroma;
-    int          hsub;
-    int          vsub;
-    unsigned int sws_flags;
-} SmartblurContext;
-
-#define OFFSET(x) offsetof(SmartblurContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-
-static const AVOption smartblur_options[] = {
-    { "luma_radius",    "set luma radius",    OFFSET(luma.radius),    AV_OPT_TYPE_FLOAT, {.dbl=1.0}, RADIUS_MIN, RADIUS_MAX, .flags=FLAGS },
-    { "lr"         ,    "set luma radius",    OFFSET(luma.radius),    AV_OPT_TYPE_FLOAT, {.dbl=1.0}, RADIUS_MIN, RADIUS_MAX, .flags=FLAGS },
-    { "luma_strength",  "set luma strength",  OFFSET(luma.strength),  AV_OPT_TYPE_FLOAT, {.dbl=1.0}, STRENGTH_MIN, STRENGTH_MAX, .flags=FLAGS },
-    { "ls",             "set luma strength",  OFFSET(luma.strength),  AV_OPT_TYPE_FLOAT, {.dbl=1.0}, STRENGTH_MIN, STRENGTH_MAX, .flags=FLAGS },
-    { "luma_threshold", "set luma threshold", OFFSET(luma.threshold), AV_OPT_TYPE_INT,   {.i64=0}, THRESHOLD_MIN, THRESHOLD_MAX, .flags=FLAGS },
-    { "lt",             "set luma threshold", OFFSET(luma.threshold), AV_OPT_TYPE_INT,   {.i64=0}, THRESHOLD_MIN, THRESHOLD_MAX, .flags=FLAGS },
-
-    { "chroma_radius",    "set chroma radius",    OFFSET(chroma.radius),    AV_OPT_TYPE_FLOAT, {.dbl=RADIUS_MIN-1},   RADIUS_MIN-1, RADIUS_MAX, .flags=FLAGS },
-    { "cr",               "set chroma radius",    OFFSET(chroma.radius),    AV_OPT_TYPE_FLOAT, {.dbl=RADIUS_MIN-1},   RADIUS_MIN-1, RADIUS_MAX, .flags=FLAGS },
-    { "chroma_strength",  "set chroma strength",  OFFSET(chroma.strength),  AV_OPT_TYPE_FLOAT, {.dbl=STRENGTH_MIN-1}, STRENGTH_MIN-1, STRENGTH_MAX, .flags=FLAGS },
-    { "cs",               "set chroma strength",  OFFSET(chroma.strength),  AV_OPT_TYPE_FLOAT, {.dbl=STRENGTH_MIN-1}, STRENGTH_MIN-1, STRENGTH_MAX, .flags=FLAGS },
-    { "chroma_threshold", "set chroma threshold", OFFSET(chroma.threshold), AV_OPT_TYPE_INT,   {.i64=THRESHOLD_MIN-1}, THRESHOLD_MIN-1, THRESHOLD_MAX, .flags=FLAGS },
-    { "ct",               "set chroma threshold", OFFSET(chroma.threshold), AV_OPT_TYPE_INT,   {.i64=THRESHOLD_MIN-1}, THRESHOLD_MIN-1, THRESHOLD_MAX, .flags=FLAGS },
-
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(smartblur);
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    SmartblurContext *s = ctx->priv;
-
-    /* make chroma default to luma values, if not explicitly set */
-    if (s->chroma.radius < RADIUS_MIN)
-        s->chroma.radius = s->luma.radius;
-    if (s->chroma.strength < STRENGTH_MIN)
-        s->chroma.strength  = s->luma.strength;
-    if (s->chroma.threshold < THRESHOLD_MIN)
-        s->chroma.threshold = s->luma.threshold;
-
-    s->luma.quality = s->chroma.quality = 3.0;
-    s->sws_flags = SWS_BICUBIC;
-
-    av_log(ctx, AV_LOG_VERBOSE,
-           "luma_radius:%f luma_strength:%f luma_threshold:%d "
-           "chroma_radius:%f chroma_strength:%f chroma_threshold:%d\n",
-           s->luma.radius, s->luma.strength, s->luma.threshold,
-           s->chroma.radius, s->chroma.strength, s->chroma.threshold);
-
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    SmartblurContext *s = ctx->priv;
-
-    sws_freeContext(s->luma.filter_context);
-    sws_freeContext(s->chroma.filter_context);
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,      AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV420P,      AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV410P,      AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int alloc_sws_context(FilterParam *f, int width, int height, unsigned int flags)
-{
-    SwsVector *vec;
-    SwsFilter sws_filter;
-
-    vec = sws_getGaussianVec(f->radius, f->quality);
-
-    if (!vec)
-        return AVERROR(EINVAL);
-
-    sws_scaleVec(vec, f->strength);
-    vec->coeff[vec->length / 2] += 1.0 - f->strength;
-    sws_filter.lumH = sws_filter.lumV = vec;
-    sws_filter.chrH = sws_filter.chrV = NULL;
-    f->filter_context = sws_getCachedContext(NULL,
-                                             width, height, AV_PIX_FMT_GRAY8,
-                                             width, height, AV_PIX_FMT_GRAY8,
-                                             flags, &sws_filter, NULL, NULL);
-
-    sws_freeVec(vec);
-
-    if (!f->filter_context)
-        return AVERROR(EINVAL);
-
-    return 0;
-}
-
-static int config_props(AVFilterLink *inlink)
-{
-    SmartblurContext *s = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-
-    s->hsub = desc->log2_chroma_w;
-    s->vsub = desc->log2_chroma_h;
-
-    alloc_sws_context(&s->luma, inlink->w, inlink->h, s->sws_flags);
-    alloc_sws_context(&s->chroma,
-                      AV_CEIL_RSHIFT(inlink->w, s->hsub),
-                      AV_CEIL_RSHIFT(inlink->h, s->vsub),
-                      s->sws_flags);
-
-    return 0;
-}
-
-static void blur(uint8_t       *dst, const int dst_linesize,
-                 const uint8_t *src, const int src_linesize,
-                 const int w, const int h, const int threshold,
-                 struct SwsContext *filter_context)
-{
-    int x, y;
-    int orig, filtered;
-    int diff;
-    /* Declare arrays of 4 to get aligned data */
-    const uint8_t* const src_array[4] = {src};
-    uint8_t *dst_array[4]             = {dst};
-    int src_linesize_array[4] = {src_linesize};
-    int dst_linesize_array[4] = {dst_linesize};
-
-    sws_scale(filter_context, src_array, src_linesize_array,
-              0, h, dst_array, dst_linesize_array);
-
-    if (threshold > 0) {
-        for (y = 0; y < h; ++y) {
-            for (x = 0; x < w; ++x) {
-                orig     = src[x + y * src_linesize];
-                filtered = dst[x + y * dst_linesize];
-                diff     = orig - filtered;
-
-                if (diff > 0) {
-                    if (diff > 2 * threshold)
-                        dst[x + y * dst_linesize] = orig;
-                    else if (diff > threshold)
-                        /* add 'diff' and subtract 'threshold' from 'filtered' */
-                        dst[x + y * dst_linesize] = orig - threshold;
-                } else {
-                    if (-diff > 2 * threshold)
-                        dst[x + y * dst_linesize] = orig;
-                    else if (-diff > threshold)
-                        /* add 'diff' and 'threshold' to 'filtered' */
-                        dst[x + y * dst_linesize] = orig + threshold;
-                }
-            }
-        }
-    } else if (threshold < 0) {
-        for (y = 0; y < h; ++y) {
-            for (x = 0; x < w; ++x) {
-                orig     = src[x + y * src_linesize];
-                filtered = dst[x + y * dst_linesize];
-                diff     = orig - filtered;
-
-                if (diff > 0) {
-                    if (diff <= -threshold)
-                        dst[x + y * dst_linesize] = orig;
-                    else if (diff <= -2 * threshold)
-                        /* subtract 'diff' and 'threshold' from 'orig' */
-                        dst[x + y * dst_linesize] = filtered - threshold;
-                } else {
-                    if (diff >= threshold)
-                        dst[x + y * dst_linesize] = orig;
-                    else if (diff >= 2 * threshold)
-                        /* add 'threshold' and subtract 'diff' from 'orig' */
-                        dst[x + y * dst_linesize] = filtered + threshold;
-                }
-            }
-        }
-    }
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
-{
-    SmartblurContext  *s  = inlink->dst->priv;
-    AVFilterLink *outlink     = inlink->dst->outputs[0];
-    AVFrame *outpic;
-    int cw = AV_CEIL_RSHIFT(inlink->w, s->hsub);
-    int ch = AV_CEIL_RSHIFT(inlink->h, s->vsub);
-
-    outpic = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!outpic) {
-        av_frame_free(&inpic);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(outpic, inpic);
-
-    blur(outpic->data[0], outpic->linesize[0],
-         inpic->data[0],  inpic->linesize[0],
-         inlink->w, inlink->h, s->luma.threshold,
-         s->luma.filter_context);
-
-    if (inpic->data[2]) {
-        blur(outpic->data[1], outpic->linesize[1],
-             inpic->data[1],  inpic->linesize[1],
-             cw, ch, s->chroma.threshold,
-             s->chroma.filter_context);
-        blur(outpic->data[2], outpic->linesize[2],
-             inpic->data[2],  inpic->linesize[2],
-             cw, ch, s->chroma.threshold,
-             s->chroma.filter_context);
-    }
-
-    av_frame_free(&inpic);
-    return ff_filter_frame(outlink, outpic);
-}
-
-static const AVFilterPad smartblur_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-        .config_props = config_props,
-    },
-    { NULL }
-};
-
-static const AVFilterPad smartblur_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_smartblur = {
-    .name          = "smartblur",
-    .description   = NULL_IF_CONFIG_SMALL("Blur the input video without impacting the outlines."),
-    .priv_size     = sizeof(SmartblurContext),
-    .init          = init,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = smartblur_inputs,
-    .outputs       = smartblur_outputs,
-    .priv_class    = &smartblur_class,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vf_spp.c b/libavfilter/vf_spp.c
deleted file mode 100644
index 7381938..0000000
--- a/libavfilter/vf_spp.c
+++ /dev/null
@@ -1,530 +0,0 @@
-/*
- * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2013 Clément Bœsch <u pkh me>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Simple post processing filter
- *
- * This implementation is based on an algorithm described in
- * "Aria Nosratinia Embedded Post-Processing for
- * Enhancement of Compressed Images (1999)"
- *
- * Originally written by Michael Niedermayer for the MPlayer project, and
- * ported by Clément Bœsch for FFmpeg.
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "internal.h"
-#include "vf_spp.h"
-
-enum mode {
-    MODE_HARD,
-    MODE_SOFT,
-    NB_MODES
-};
-
-static const AVClass *child_class_next(const AVClass *prev)
-{
-    return prev ? NULL : avcodec_dct_get_class();
-}
-
-static void *child_next(void *obj, void *prev)
-{
-    SPPContext *s = obj;
-    return prev ? NULL : s->dct;
-}
-
-#define OFFSET(x) offsetof(SPPContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-#define TFLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
-static const AVOption spp_options[] = {
-    { "quality", "set quality", OFFSET(log2_count), AV_OPT_TYPE_INT, {.i64 = 3}, 0, MAX_LEVEL, TFLAGS },
-    { "qp", "force a constant quantizer parameter", OFFSET(qp), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 63, FLAGS },
-    { "mode", "set thresholding mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = MODE_HARD}, 0, NB_MODES - 1, FLAGS, "mode" },
-        { "hard", "hard thresholding", 0, AV_OPT_TYPE_CONST, {.i64 = MODE_HARD}, INT_MIN, INT_MAX, FLAGS, "mode" },
-        { "soft", "soft thresholding", 0, AV_OPT_TYPE_CONST, {.i64 = MODE_SOFT}, INT_MIN, INT_MAX, FLAGS, "mode" },
-    { "use_bframe_qp", "use B-frames' QP", OFFSET(use_bframe_qp), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, FLAGS },
-    { NULL }
-};
-
-static const AVClass spp_class = {
-    .class_name       = "spp",
-    .item_name        = av_default_item_name,
-    .option           = spp_options,
-    .version          = LIBAVUTIL_VERSION_INT,
-    .category         = AV_CLASS_CATEGORY_FILTER,
-    .child_class_next = child_class_next,
-    .child_next       = child_next,
-};
-
-// XXX: share between filters?
-DECLARE_ALIGNED(8, static const uint8_t, ldither)[8][8] = {
-    {  0,  48,  12,  60,   3,  51,  15,  63 },
-    { 32,  16,  44,  28,  35,  19,  47,  31 },
-    {  8,  56,   4,  52,  11,  59,   7,  55 },
-    { 40,  24,  36,  20,  43,  27,  39,  23 },
-    {  2,  50,  14,  62,   1,  49,  13,  61 },
-    { 34,  18,  46,  30,  33,  17,  45,  29 },
-    { 10,  58,   6,  54,   9,  57,   5,  53 },
-    { 42,  26,  38,  22,  41,  25,  37,  21 },
-};
-
-static const uint8_t offset[127][2] = {
-    {0,0},
-    {0,0}, {4,4},                                           // quality = 1
-    {0,0}, {2,2}, {6,4}, {4,6},                             // quality = 2
-    {0,0}, {5,1}, {2,2}, {7,3}, {4,4}, {1,5}, {6,6}, {3,7}, // quality = 3
-
-    {0,0}, {4,0}, {1,1}, {5,1}, {3,2}, {7,2}, {2,3}, {6,3}, // quality = 4
-    {0,4}, {4,4}, {1,5}, {5,5}, {3,6}, {7,6}, {2,7}, {6,7},
-
-    {0,0}, {0,2}, {0,4}, {0,6}, {1,1}, {1,3}, {1,5}, {1,7}, // quality = 5
-    {2,0}, {2,2}, {2,4}, {2,6}, {3,1}, {3,3}, {3,5}, {3,7},
-    {4,0}, {4,2}, {4,4}, {4,6}, {5,1}, {5,3}, {5,5}, {5,7},
-    {6,0}, {6,2}, {6,4}, {6,6}, {7,1}, {7,3}, {7,5}, {7,7},
-
-    {0,0}, {4,4}, {0,4}, {4,0}, {2,2}, {6,6}, {2,6}, {6,2}, // quality = 6
-    {0,2}, {4,6}, {0,6}, {4,2}, {2,0}, {6,4}, {2,4}, {6,0},
-    {1,1}, {5,5}, {1,5}, {5,1}, {3,3}, {7,7}, {3,7}, {7,3},
-    {1,3}, {5,7}, {1,7}, {5,3}, {3,1}, {7,5}, {3,5}, {7,1},
-    {0,1}, {4,5}, {0,5}, {4,1}, {2,3}, {6,7}, {2,7}, {6,3},
-    {0,3}, {4,7}, {0,7}, {4,3}, {2,1}, {6,5}, {2,5}, {6,1},
-    {1,0}, {5,4}, {1,4}, {5,0}, {3,2}, {7,6}, {3,6}, {7,2},
-    {1,2}, {5,6}, {1,6}, {5,2}, {3,0}, {7,4}, {3,4}, {7,0},
-};
-
-static void hardthresh_c(int16_t dst[64], const int16_t src[64],
-                         int qp, const uint8_t *permutation)
-{
-    int i;
-    int bias = 0; // FIXME
-
-    unsigned threshold1 = qp * ((1<<4) - bias) - 1;
-    unsigned threshold2 = threshold1 << 1;
-
-    memset(dst, 0, 64 * sizeof(dst[0]));
-    dst[0] = (src[0] + 4) >> 3;
-
-    for (i = 1; i < 64; i++) {
-        int level = src[i];
-        if (((unsigned)(level + threshold1)) > threshold2) {
-            const int j = permutation[i];
-            dst[j] = (level + 4) >> 3;
-        }
-    }
-}
-
-static void softthresh_c(int16_t dst[64], const int16_t src[64],
-                         int qp, const uint8_t *permutation)
-{
-    int i;
-    int bias = 0; //FIXME
-
-    unsigned threshold1 = qp * ((1<<4) - bias) - 1;
-    unsigned threshold2 = threshold1 << 1;
-
-    memset(dst, 0, 64 * sizeof(dst[0]));
-    dst[0] = (src[0] + 4) >> 3;
-
-    for (i = 1; i < 64; i++) {
-        int level = src[i];
-        if (((unsigned)(level + threshold1)) > threshold2) {
-            const int j = permutation[i];
-            if (level > 0) dst[j] = (level - threshold1 + 4) >> 3;
-            else           dst[j] = (level + threshold1 + 4) >> 3;
-        }
-    }
-}
-
-static void store_slice_c(uint8_t *dst, const int16_t *src,
-                          int dst_linesize, int src_linesize,
-                          int width, int height, int log2_scale,
-                          const uint8_t dither[8][8])
-{
-    int y, x;
-
-#define STORE(pos) do {                                                     \
-    temp = ((src[x + y*src_linesize + pos] << log2_scale) + d[pos]) >> 6;   \
-    if (temp & 0x100)                                                       \
-        temp = ~(temp >> 31);                                               \
-    dst[x + y*dst_linesize + pos] = temp;                                   \
-} while (0)
-
-    for (y = 0; y < height; y++) {
-        const uint8_t *d = dither[y];
-        for (x = 0; x < width; x += 8) {
-            int temp;
-            STORE(0);
-            STORE(1);
-            STORE(2);
-            STORE(3);
-            STORE(4);
-            STORE(5);
-            STORE(6);
-            STORE(7);
-        }
-    }
-}
-
-static void store_slice16_c(uint16_t *dst, const int16_t *src,
-                            int dst_linesize, int src_linesize,
-                            int width, int height, int log2_scale,
-                            const uint8_t dither[8][8], int depth)
-{
-    int y, x;
-    unsigned int mask = -1<<depth;
-
-#define STORE16(pos) do {                                                   \
-    temp = ((src[x + y*src_linesize + pos] << log2_scale) + (d[pos]>>1)) >> 5;   \
-    if (temp & mask )                                                       \
-        temp = ~(temp >> 31);                                               \
-    dst[x + y*dst_linesize + pos] = temp;                                   \
-} while (0)
-
-    for (y = 0; y < height; y++) {
-        const uint8_t *d = dither[y];
-        for (x = 0; x < width; x += 8) {
-            int temp;
-            STORE16(0);
-            STORE16(1);
-            STORE16(2);
-            STORE16(3);
-            STORE16(4);
-            STORE16(5);
-            STORE16(6);
-            STORE16(7);
-        }
-    }
-}
-
-static inline void add_block(uint16_t *dst, int linesize, const int16_t block[64])
-{
-    int y;
-
-    for (y = 0; y < 8; y++) {
-        *(uint32_t *)&dst[0 + y*linesize] += *(uint32_t *)&block[0 + y*8];
-        *(uint32_t *)&dst[2 + y*linesize] += *(uint32_t *)&block[2 + y*8];
-        *(uint32_t *)&dst[4 + y*linesize] += *(uint32_t *)&block[4 + y*8];
-        *(uint32_t *)&dst[6 + y*linesize] += *(uint32_t *)&block[6 + y*8];
-    }
-}
-
-static void filter(SPPContext *p, uint8_t *dst, uint8_t *src,
-                   int dst_linesize, int src_linesize, int width, int height,
-                   const uint8_t *qp_table, int qp_stride, int is_luma, int depth)
-{
-    int x, y, i;
-    const int count = 1 << p->log2_count;
-    const int linesize = is_luma ? p->temp_linesize : FFALIGN(width+16, 16);
-    DECLARE_ALIGNED(16, uint64_t, block_align)[32];
-    int16_t *block  = (int16_t *)block_align;
-    int16_t *block2 = (int16_t *)(block_align + 16);
-    uint16_t *psrc16 = (uint16_t*)p->src;
-    const int sample_bytes = (depth+7) / 8;
-
-    for (y = 0; y < height; y++) {
-        int index = 8 + 8*linesize + y*linesize;
-        memcpy(p->src + index*sample_bytes, src + y*src_linesize, width*sample_bytes);
-        if (sample_bytes == 1) {
-            for (x = 0; x < 8; x++) {
-                p->src[index         - x - 1] = p->src[index +         x    ];
-                p->src[index + width + x    ] = p->src[index + width - x - 1];
-            }
-        } else {
-            for (x = 0; x < 8; x++) {
-                psrc16[index         - x - 1] = psrc16[index +         x    ];
-                psrc16[index + width + x    ] = psrc16[index + width - x - 1];
-            }
-        }
-    }
-    for (y = 0; y < 8; y++) {
-        memcpy(p->src + (       7-y)*linesize * sample_bytes, p->src + (       y+8)*linesize * sample_bytes, linesize * sample_bytes);
-        memcpy(p->src + (height+8+y)*linesize * sample_bytes, p->src + (height-y+7)*linesize * sample_bytes, linesize * sample_bytes);
-    }
-
-    for (y = 0; y < height + 8; y += 8) {
-        memset(p->temp + (8 + y) * linesize, 0, 8 * linesize * sizeof(*p->temp));
-        for (x = 0; x < width + 8; x += 8) {
-            int qp;
-
-            if (p->qp) {
-                qp = p->qp;
-            } else{
-                const int qps = 3 + is_luma;
-                qp = qp_table[(FFMIN(x, width - 1) >> qps) + (FFMIN(y, height - 1) >> qps) * qp_stride];
-                qp = FFMAX(1, ff_norm_qscale(qp, p->qscale_type));
-            }
-            for (i = 0; i < count; i++) {
-                const int x1 = x + offset[i + count - 1][0];
-                const int y1 = y + offset[i + count - 1][1];
-                const int index = x1 + y1*linesize;
-                p->dct->get_pixels(block, p->src + sample_bytes*index, sample_bytes*linesize);
-                p->dct->fdct(block);
-                p->requantize(block2, block, qp, p->dct->idct_permutation);
-                p->dct->idct(block2);
-                add_block(p->temp + index, linesize, block2);
-            }
-        }
-        if (y) {
-            if (sample_bytes == 1) {
-                p->store_slice(dst + (y - 8) * dst_linesize, p->temp + 8 + y*linesize,
-                               dst_linesize, linesize, width,
-                               FFMIN(8, height + 8 - y), MAX_LEVEL - p->log2_count,
-                               ldither);
-            } else {
-                store_slice16_c((uint16_t*)(dst + (y - 8) * dst_linesize), p->temp + 8 + y*linesize,
-                                dst_linesize/2, linesize, width,
-                                FFMIN(8, height + 8 - y), MAX_LEVEL - p->log2_count,
-                                ldither, depth);
-            }
-        }
-    }
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,  AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV420P,  AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV410P,  AV_PIX_FMT_YUV440P,
-        AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ422P,
-        AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ440P,
-        AV_PIX_FMT_YUV444P10,  AV_PIX_FMT_YUV422P10,
-        AV_PIX_FMT_YUV420P10,
-        AV_PIX_FMT_YUV444P9,  AV_PIX_FMT_YUV422P9,
-        AV_PIX_FMT_YUV420P9,
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_GBRP,
-        AV_PIX_FMT_GBRP9,
-        AV_PIX_FMT_GBRP10,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    SPPContext *s = inlink->dst->priv;
-    const int h = FFALIGN(inlink->h + 16, 16);
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    const int bps = desc->comp[0].depth;
-
-    av_opt_set_int(s->dct, "bits_per_sample", bps, 0);
-    avcodec_dct_init(s->dct);
-
-    if (ARCH_X86)
-        ff_spp_init_x86(s);
-
-    s->hsub = desc->log2_chroma_w;
-    s->vsub = desc->log2_chroma_h;
-    s->temp_linesize = FFALIGN(inlink->w + 16, 16);
-    s->temp = av_malloc_array(s->temp_linesize, h * sizeof(*s->temp));
-    s->src  = av_malloc_array(s->temp_linesize, h * sizeof(*s->src) * 2);
-
-    if (!s->temp || !s->src)
-        return AVERROR(ENOMEM);
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    SPPContext *s = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *out = in;
-    int qp_stride = 0;
-    const int8_t *qp_table = NULL;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    const int depth = desc->comp[0].depth;
-
-    /* if we are not in a constant user quantizer mode and we don't want to use
-     * the quantizers from the B-frames (B-frames often have a higher QP), we
-     * need to save the qp table from the last non B-frame; this is what the
-     * following code block does */
-    if (!s->qp) {
-        qp_table = av_frame_get_qp_table(in, &qp_stride, &s->qscale_type);
-
-        if (qp_table && !s->use_bframe_qp && in->pict_type != AV_PICTURE_TYPE_B) {
-            int w, h;
-
-            /* if the qp stride is not set, it means the QP are only defined on
-             * a line basis */
-            if (!qp_stride) {
-                w = AV_CEIL_RSHIFT(inlink->w, 4);
-                h = 1;
-            } else {
-                w = qp_stride;
-                h = AV_CEIL_RSHIFT(inlink->h, 4);
-            }
-
-            if (w * h > s->non_b_qp_alloc_size) {
-                int ret = av_reallocp_array(&s->non_b_qp_table, w, h);
-                if (ret < 0) {
-                    s->non_b_qp_alloc_size = 0;
-                    return ret;
-                }
-                s->non_b_qp_alloc_size = w * h;
-            }
-
-            av_assert0(w * h <= s->non_b_qp_alloc_size);
-            memcpy(s->non_b_qp_table, qp_table, w * h);
-        }
-    }
-
-    if (s->log2_count && !ctx->is_disabled) {
-        if (!s->use_bframe_qp && s->non_b_qp_table)
-            qp_table = s->non_b_qp_table;
-
-        if (qp_table || s->qp) {
-            const int cw = AV_CEIL_RSHIFT(inlink->w, s->hsub);
-            const int ch = AV_CEIL_RSHIFT(inlink->h, s->vsub);
-
-            /* get a new frame if in-place is not possible or if the dimensions
-             * are not multiple of 8 */
-            if (!av_frame_is_writable(in) || (inlink->w & 7) || (inlink->h & 7)) {
-                const int aligned_w = FFALIGN(inlink->w, 8);
-                const int aligned_h = FFALIGN(inlink->h, 8);
-
-                out = ff_get_video_buffer(outlink, aligned_w, aligned_h);
-                if (!out) {
-                    av_frame_free(&in);
-                    return AVERROR(ENOMEM);
-                }
-                av_frame_copy_props(out, in);
-                out->width  = in->width;
-                out->height = in->height;
-            }
-
-            filter(s, out->data[0], in->data[0], out->linesize[0], in->linesize[0], inlink->w, inlink->h, qp_table, qp_stride, 1, depth);
-
-            if (out->data[2]) {
-                filter(s, out->data[1], in->data[1], out->linesize[1], in->linesize[1], cw,        ch,        qp_table, qp_stride, 0, depth);
-                filter(s, out->data[2], in->data[2], out->linesize[2], in->linesize[2], cw,        ch,        qp_table, qp_stride, 0, depth);
-            }
-            emms_c();
-        }
-    }
-
-    if (in != out) {
-        if (in->data[3])
-            av_image_copy_plane(out->data[3], out->linesize[3],
-                                in ->data[3], in ->linesize[3],
-                                inlink->w, inlink->h);
-        av_frame_free(&in);
-    }
-    return ff_filter_frame(outlink, out);
-}
-
-static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
-                           char *res, int res_len, int flags)
-{
-    SPPContext *s = ctx->priv;
-
-    if (!strcmp(cmd, "level") || !strcmp(cmd, "quality")) {
-        if (!strcmp(args, "max"))
-            s->log2_count = MAX_LEVEL;
-        else
-            s->log2_count = av_clip(strtol(args, NULL, 10), 0, MAX_LEVEL);
-        return 0;
-    }
-    return AVERROR(ENOSYS);
-}
-
-static av_cold int init_dict(AVFilterContext *ctx, AVDictionary **opts)
-{
-    SPPContext *s = ctx->priv;
-    int ret;
-
-    s->avctx = avcodec_alloc_context3(NULL);
-    s->dct = avcodec_dct_alloc();
-    if (!s->avctx || !s->dct)
-        return AVERROR(ENOMEM);
-
-    if (opts) {
-        AVDictionaryEntry *e = NULL;
-
-        while ((e = av_dict_get(*opts, "", e, AV_DICT_IGNORE_SUFFIX))) {
-            if ((ret = av_opt_set(s->dct, e->key, e->value, 0)) < 0)
-                return ret;
-        }
-        av_dict_free(opts);
-    }
-
-    s->store_slice = store_slice_c;
-    switch (s->mode) {
-    case MODE_HARD: s->requantize = hardthresh_c; break;
-    case MODE_SOFT: s->requantize = softthresh_c; break;
-    }
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    SPPContext *s = ctx->priv;
-
-    av_freep(&s->temp);
-    av_freep(&s->src);
-    if (s->avctx) {
-        avcodec_close(s->avctx);
-        av_freep(&s->avctx);
-    }
-    av_freep(&s->dct);
-    av_freep(&s->non_b_qp_table);
-}
-
-static const AVFilterPad spp_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad spp_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_spp = {
-    .name            = "spp",
-    .description     = NULL_IF_CONFIG_SMALL("Apply a simple post processing filter."),
-    .priv_size       = sizeof(SPPContext),
-    .init_dict       = init_dict,
-    .uninit          = uninit,
-    .query_formats   = query_formats,
-    .inputs          = spp_inputs,
-    .outputs         = spp_outputs,
-    .process_command = process_command,
-    .priv_class      = &spp_class,
-    .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
-};
diff --git a/libavfilter/vf_spp.h b/libavfilter/vf_spp.h
deleted file mode 100644
index c03073a..0000000
--- a/libavfilter/vf_spp.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2013 Clément Bœsch
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef AVFILTER_SPP_H
-#define AVFILTER_SPP_H
-
-#include "libavcodec/avcodec.h"
-#include "libavcodec/avdct.h"
-#include "avfilter.h"
-
-#define MAX_LEVEL 6 /* quality levels */
-
-typedef struct SPPContext {
-    const AVClass *av_class;
-
-    int log2_count;
-    int qp;
-    int mode;
-    int qscale_type;
-    int temp_linesize;
-    uint8_t *src;
-    uint16_t *temp;
-    AVCodecContext *avctx;
-    AVDCT *dct;
-    int8_t *non_b_qp_table;
-    int non_b_qp_alloc_size;
-    int use_bframe_qp;
-    int hsub, vsub;
-
-    void (*store_slice)(uint8_t *dst, const int16_t *src,
-                        int dst_stride, int src_stride,
-                        int width, int height, int log2_scale,
-                        const uint8_t dither[8][8]);
-
-    void (*requantize)(int16_t dst[64], const int16_t src[64],
-                       int qp, const uint8_t *permutation);
-} SPPContext;
-
-void ff_spp_init_x86(SPPContext *s);
-
-#endif /* AVFILTER_SPP_H */
diff --git a/libavfilter/vf_stereo3d.c b/libavfilter/vf_stereo3d.c
deleted file mode 100644
index ff17b07..0000000
--- a/libavfilter/vf_stereo3d.c
+++ /dev/null
@@ -1,1125 +0,0 @@
-/*
- * Copyright (c) 2010 Gordon Schmidt <gordon.schmidt <at> s2000.tu-chemnitz.de>
- * Copyright (c) 2013-2015 Paul B Mahol
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/intreadwrite.h"
-#include "libavutil/opt.h"
-#include "libavutil/parseutils.h"
-#include "libavutil/pixdesc.h"
-#include "avfilter.h"
-#include "drawutils.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-#include "stereo3d.h"
-
-enum StereoCode {
-    ANAGLYPH_RC_GRAY,   // anaglyph red/cyan gray
-    ANAGLYPH_RC_HALF,   // anaglyph red/cyan half colored
-    ANAGLYPH_RC_COLOR,  // anaglyph red/cyan colored
-    ANAGLYPH_RC_DUBOIS, // anaglyph red/cyan dubois
-    ANAGLYPH_GM_GRAY,   // anaglyph green/magenta gray
-    ANAGLYPH_GM_HALF,   // anaglyph green/magenta half colored
-    ANAGLYPH_GM_COLOR,  // anaglyph green/magenta colored
-    ANAGLYPH_GM_DUBOIS, // anaglyph green/magenta dubois
-    ANAGLYPH_YB_GRAY,   // anaglyph yellow/blue gray
-    ANAGLYPH_YB_HALF,   // anaglyph yellow/blue half colored
-    ANAGLYPH_YB_COLOR,  // anaglyph yellow/blue colored
-    ANAGLYPH_YB_DUBOIS, // anaglyph yellow/blue dubois
-    ANAGLYPH_RB_GRAY,   // anaglyph red/blue gray
-    ANAGLYPH_RG_GRAY,   // anaglyph red/green gray
-    MONO_L,             // mono output for debugging (left eye only)
-    MONO_R,             // mono output for debugging (right eye only)
-    INTERLEAVE_ROWS_LR, // row-interleave (left eye has top row)
-    INTERLEAVE_ROWS_RL, // row-interleave (right eye has top row)
-    SIDE_BY_SIDE_LR,    // side by side parallel (left eye left, right eye right)
-    SIDE_BY_SIDE_RL,    // side by side crosseye (right eye left, left eye right)
-    SIDE_BY_SIDE_2_LR,  // side by side parallel with half width resolution
-    SIDE_BY_SIDE_2_RL,  // side by side crosseye with half width resolution
-    ABOVE_BELOW_LR,     // above-below (left eye above, right eye below)
-    ABOVE_BELOW_RL,     // above-below (right eye above, left eye below)
-    ABOVE_BELOW_2_LR,   // above-below with half height resolution
-    ABOVE_BELOW_2_RL,   // above-below with half height resolution
-    ALTERNATING_LR,     // alternating frames (left eye first, right eye second)
-    ALTERNATING_RL,     // alternating frames (right eye first, left eye second)
-    CHECKERBOARD_LR,    // checkerboard pattern (left eye first, right eye second)
-    CHECKERBOARD_RL,    // checkerboard pattern (right eye first, left eye second)
-    INTERLEAVE_COLS_LR, // column-interleave (left eye first, right eye second)
-    INTERLEAVE_COLS_RL, // column-interleave (right eye first, left eye second)
-    HDMI,               // HDMI frame pack (left eye first, right eye second)
-    STEREO_CODE_COUNT   // TODO: needs autodetection
-};
-
-typedef struct StereoComponent {
-    int format;                 ///< StereoCode
-    int width, height;
-    int off_left, off_right;
-    int off_lstep, off_rstep;
-    int row_left, row_right;
-    int row_step;
-} StereoComponent;
-
-static const int ana_coeff[][3][6] = {
-  [ANAGLYPH_RB_GRAY]   =
-    {{19595, 38470,  7471,     0,     0,     0},
-     {    0,     0,     0,     0,     0,     0},
-     {    0,     0,     0, 19595, 38470,  7471}},
-  [ANAGLYPH_RG_GRAY]   =
-    {{19595, 38470,  7471,     0,     0,     0},
-     {    0,     0,     0, 19595, 38470,  7471},
-     {    0,     0,     0,     0,     0,     0}},
-  [ANAGLYPH_RC_GRAY]   =
-    {{19595, 38470,  7471,     0,     0,     0},
-     {    0,     0,     0, 19595, 38470,  7471},
-     {    0,     0,     0, 19595, 38470,  7471}},
-  [ANAGLYPH_RC_HALF]   =
-    {{19595, 38470,  7471,     0,     0,     0},
-     {    0,     0,     0,     0, 65536,     0},
-     {    0,     0,     0,     0,     0, 65536}},
-  [ANAGLYPH_RC_COLOR]  =
-    {{65536,     0,     0,     0,     0,     0},
-     {    0,     0,     0,     0, 65536,     0},
-     {    0,     0,     0,     0,     0, 65536}},
-  [ANAGLYPH_RC_DUBOIS] =
-    {{29884, 32768, 11534, -2818, -5767,  -131},
-     {-2621, -2490, -1049, 24773, 48103, -1180},
-     { -983, -1376,  -328, -4719, -7406, 80347}},
-  [ANAGLYPH_GM_GRAY]   =
-    {{    0,     0,     0, 19595, 38470,  7471},
-     {19595, 38470,  7471,     0,     0,     0},
-     {    0,     0,     0, 19595, 38470,  7471}},
-  [ANAGLYPH_GM_HALF]   =
-    {{    0,     0,     0, 65536,     0,     0},
-     {19595, 38470,  7471,     0,     0,     0},
-     {    0,     0,     0,     0,     0, 65536}},
-  [ANAGLYPH_GM_COLOR]  =
-    {{    0,     0,     0, 65536,     0,     0},
-     {    0, 65536,     0,     0,     0,     0},
-     {    0,     0,     0,     0,     0, 65536}},
-  [ANAGLYPH_GM_DUBOIS]  =
-    {{-4063,-10354, -2556, 34669, 46203,  1573},
-     {18612, 43778,  9372, -1049,  -983, -4260},
-     { -983, -1769,  1376,   590,  4915, 61407}},
-  [ANAGLYPH_YB_GRAY]   =
-    {{    0,     0,     0, 19595, 38470,  7471},
-     {    0,     0,     0, 19595, 38470,  7471},
-     {19595, 38470,  7471,     0,     0,     0}},
-  [ANAGLYPH_YB_HALF]   =
-    {{    0,     0,     0, 65536,     0,     0},
-     {    0,     0,     0,     0, 65536,     0},
-     {19595, 38470,  7471,     0,     0,     0}},
-  [ANAGLYPH_YB_COLOR]  =
-    {{    0,     0,     0, 65536,     0,     0},
-     {    0,     0,     0,     0, 65536,     0},
-     {    0,     0, 65536,     0,     0,     0}},
-  [ANAGLYPH_YB_DUBOIS] =
-    {{69599,-13435,19595,  -1048, -8061, -1114},
-     {-1704, 59507, 4456,    393,  4063, -1114},
-     {-2490,-11338, 1442,   6160, 12124, 59703}},
-};
-
-typedef struct Stereo3DContext {
-    const AVClass *class;
-    StereoComponent in, out;
-    int width, height;
-    const int *ana_matrix[3];
-    int nb_planes;
-    int linesize[4];
-    int pheight[4];
-    int hsub, vsub;
-    int pixstep[4];
-    AVFrame *prev;
-    int blanks;
-    int in_off_left[4], in_off_right[4];
-    AVRational aspect;
-    Stereo3DDSPContext dsp;
-} Stereo3DContext;
-
-#define OFFSET(x) offsetof(Stereo3DContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-
-static const AVOption stereo3d_options[] = {
-    { "in",    "set input format",  OFFSET(in.format),   AV_OPT_TYPE_INT,   {.i64=SIDE_BY_SIDE_LR}, INTERLEAVE_ROWS_LR, STEREO_CODE_COUNT-1, FLAGS, "in"},
-    { "ab2l",  "above below half height left first",  0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_2_LR},   0, 0, FLAGS, "in" },
-    { "tb2l",  "above below half height left first",  0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_2_LR},   0, 0, FLAGS, "in" },
-    { "ab2r",  "above below half height right first", 0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_2_RL},   0, 0, FLAGS, "in" },
-    { "tb2r",  "above below half height right first", 0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_2_RL},   0, 0, FLAGS, "in" },
-    { "abl",   "above below left first",              0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_LR},     0, 0, FLAGS, "in" },
-    { "tbl",   "above below left first",              0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_LR},     0, 0, FLAGS, "in" },
-    { "abr",   "above below right first",             0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_RL},     0, 0, FLAGS, "in" },
-    { "tbr",   "above below right first",             0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_RL},     0, 0, FLAGS, "in" },
-    { "al",    "alternating frames left first",       0, AV_OPT_TYPE_CONST, {.i64=ALTERNATING_LR},     0, 0, FLAGS, "in" },
-    { "ar",    "alternating frames right first",      0, AV_OPT_TYPE_CONST, {.i64=ALTERNATING_RL},     0, 0, FLAGS, "in" },
-    { "sbs2l", "side by side half width left first",  0, AV_OPT_TYPE_CONST, {.i64=SIDE_BY_SIDE_2_LR},  0, 0, FLAGS, "in" },
-    { "sbs2r", "side by side half width right first", 0, AV_OPT_TYPE_CONST, {.i64=SIDE_BY_SIDE_2_RL},  0, 0, FLAGS, "in" },
-    { "sbsl",  "side by side left first",             0, AV_OPT_TYPE_CONST, {.i64=SIDE_BY_SIDE_LR},    0, 0, FLAGS, "in" },
-    { "sbsr",  "side by side right first",            0, AV_OPT_TYPE_CONST, {.i64=SIDE_BY_SIDE_RL},    0, 0, FLAGS, "in" },
-    { "irl",   "interleave rows left first",          0, AV_OPT_TYPE_CONST, {.i64=INTERLEAVE_ROWS_LR}, 0, 0, FLAGS, "in" },
-    { "irr",   "interleave rows right first",         0, AV_OPT_TYPE_CONST, {.i64=INTERLEAVE_ROWS_RL}, 0, 0, FLAGS, "in" },
-    { "icl",   "interleave columns left first",       0, AV_OPT_TYPE_CONST, {.i64=INTERLEAVE_COLS_LR}, 0, 0, FLAGS, "in" },
-    { "icr",   "interleave columns right first",      0, AV_OPT_TYPE_CONST, {.i64=INTERLEAVE_COLS_RL}, 0, 0, FLAGS, "in" },
-    { "out",   "set output format", OFFSET(out.format),  AV_OPT_TYPE_INT,   {.i64=ANAGLYPH_RC_DUBOIS}, 0, STEREO_CODE_COUNT-1, FLAGS, "out"},
-    { "ab2l",  "above below half height left first",  0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_2_LR},   0, 0, FLAGS, "out" },
-    { "tb2l",  "above below half height left first",  0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_2_LR},   0, 0, FLAGS, "out" },
-    { "ab2r",  "above below half height right first", 0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_2_RL},   0, 0, FLAGS, "out" },
-    { "tb2r",  "above below half height right first", 0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_2_RL},   0, 0, FLAGS, "out" },
-    { "abl",   "above below left first",              0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_LR},     0, 0, FLAGS, "out" },
-    { "tbl",   "above below left first",              0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_LR},     0, 0, FLAGS, "out" },
-    { "abr",   "above below right first",             0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_RL},     0, 0, FLAGS, "out" },
-    { "tbr",   "above below right first",             0, AV_OPT_TYPE_CONST, {.i64=ABOVE_BELOW_RL},     0, 0, FLAGS, "out" },
-    { "agmc",  "anaglyph green magenta color",        0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_GM_COLOR},  0, 0, FLAGS, "out" },
-    { "agmd",  "anaglyph green magenta dubois",       0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_GM_DUBOIS}, 0, 0, FLAGS, "out" },
-    { "agmg",  "anaglyph green magenta gray",         0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_GM_GRAY},   0, 0, FLAGS, "out" },
-    { "agmh",  "anaglyph green magenta half color",   0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_GM_HALF},   0, 0, FLAGS, "out" },
-    { "al",    "alternating frames left first",       0, AV_OPT_TYPE_CONST, {.i64=ALTERNATING_LR},     0, 0, FLAGS, "out" },
-    { "ar",    "alternating frames right first",      0, AV_OPT_TYPE_CONST, {.i64=ALTERNATING_RL},     0, 0, FLAGS, "out" },
-    { "arbg",  "anaglyph red blue gray",              0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_RB_GRAY},   0, 0, FLAGS, "out" },
-    { "arcc",  "anaglyph red cyan color",             0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_RC_COLOR},  0, 0, FLAGS, "out" },
-    { "arcd",  "anaglyph red cyan dubois",            0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_RC_DUBOIS}, 0, 0, FLAGS, "out" },
-    { "arcg",  "anaglyph red cyan gray",              0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_RC_GRAY},   0, 0, FLAGS, "out" },
-    { "arch",  "anaglyph red cyan half color",        0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_RC_HALF},   0, 0, FLAGS, "out" },
-    { "argg",  "anaglyph red green gray",             0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_RG_GRAY},   0, 0, FLAGS, "out" },
-    { "aybc",  "anaglyph yellow blue color",          0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_YB_COLOR},  0, 0, FLAGS, "out" },
-    { "aybd",  "anaglyph yellow blue dubois",         0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_YB_DUBOIS}, 0, 0, FLAGS, "out" },
-    { "aybg",  "anaglyph yellow blue gray",           0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_YB_GRAY},   0, 0, FLAGS, "out" },
-    { "aybh",  "anaglyph yellow blue half color",     0, AV_OPT_TYPE_CONST, {.i64=ANAGLYPH_YB_HALF},   0, 0, FLAGS, "out" },
-    { "irl",   "interleave rows left first",          0, AV_OPT_TYPE_CONST, {.i64=INTERLEAVE_ROWS_LR}, 0, 0, FLAGS, "out" },
-    { "irr",   "interleave rows right first",         0, AV_OPT_TYPE_CONST, {.i64=INTERLEAVE_ROWS_RL}, 0, 0, FLAGS, "out" },
-    { "ml",    "mono left",                           0, AV_OPT_TYPE_CONST, {.i64=MONO_L},             0, 0, FLAGS, "out" },
-    { "mr",    "mono right",                          0, AV_OPT_TYPE_CONST, {.i64=MONO_R},             0, 0, FLAGS, "out" },
-    { "sbs2l", "side by side half width left first",  0, AV_OPT_TYPE_CONST, {.i64=SIDE_BY_SIDE_2_LR},  0, 0, FLAGS, "out" },
-    { "sbs2r", "side by side half width right first", 0, AV_OPT_TYPE_CONST, {.i64=SIDE_BY_SIDE_2_RL},  0, 0, FLAGS, "out" },
-    { "sbsl",  "side by side left first",             0, AV_OPT_TYPE_CONST, {.i64=SIDE_BY_SIDE_LR},    0, 0, FLAGS, "out" },
-    { "sbsr",  "side by side right first",            0, AV_OPT_TYPE_CONST, {.i64=SIDE_BY_SIDE_RL},    0, 0, FLAGS, "out" },
-    { "chl",   "checkerboard left first",             0, AV_OPT_TYPE_CONST, {.i64=CHECKERBOARD_LR},    0, 0, FLAGS, "out" },
-    { "chr",   "checkerboard right first",            0, AV_OPT_TYPE_CONST, {.i64=CHECKERBOARD_RL},    0, 0, FLAGS, "out" },
-    { "icl",   "interleave columns left first",       0, AV_OPT_TYPE_CONST, {.i64=INTERLEAVE_COLS_LR}, 0, 0, FLAGS, "out" },
-    { "icr",   "interleave columns right first",      0, AV_OPT_TYPE_CONST, {.i64=INTERLEAVE_COLS_RL}, 0, 0, FLAGS, "out" },
-    { "hdmi",  "HDMI frame pack",                     0, AV_OPT_TYPE_CONST, {.i64=HDMI},               0, 0, FLAGS, "out" },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(stereo3d);
-
-static const enum AVPixelFormat anaglyph_pix_fmts[] = {
-    AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
-    AV_PIX_FMT_NONE
-};
-
-static const enum AVPixelFormat other_pix_fmts[] = {
-    AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
-    AV_PIX_FMT_RGB48BE, AV_PIX_FMT_BGR48BE,
-    AV_PIX_FMT_RGB48LE, AV_PIX_FMT_BGR48LE,
-    AV_PIX_FMT_RGBA64BE, AV_PIX_FMT_BGRA64BE,
-    AV_PIX_FMT_RGBA64LE, AV_PIX_FMT_BGRA64LE,
-    AV_PIX_FMT_RGBA,  AV_PIX_FMT_BGRA,
-    AV_PIX_FMT_ARGB,  AV_PIX_FMT_ABGR,
-    AV_PIX_FMT_RGB0,  AV_PIX_FMT_BGR0,
-    AV_PIX_FMT_0RGB,  AV_PIX_FMT_0BGR,
-    AV_PIX_FMT_GBRP,
-    AV_PIX_FMT_GBRP9BE,  AV_PIX_FMT_GBRP9LE,
-    AV_PIX_FMT_GBRP10BE, AV_PIX_FMT_GBRP10LE,
-    AV_PIX_FMT_GBRP12BE, AV_PIX_FMT_GBRP12LE,
-    AV_PIX_FMT_GBRP14BE, AV_PIX_FMT_GBRP14LE,
-    AV_PIX_FMT_GBRP16BE, AV_PIX_FMT_GBRP16LE,
-    AV_PIX_FMT_YUV410P,
-    AV_PIX_FMT_YUV411P,
-    AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVA420P,
-    AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUVA422P,
-    AV_PIX_FMT_YUV440P,
-    AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVA444P,
-    AV_PIX_FMT_YUVJ411P,
-    AV_PIX_FMT_YUVJ420P,
-    AV_PIX_FMT_YUVJ422P,
-    AV_PIX_FMT_YUVJ440P,
-    AV_PIX_FMT_YUVJ444P,
-    AV_PIX_FMT_YUV420P9LE,  AV_PIX_FMT_YUVA420P9LE,
-    AV_PIX_FMT_YUV420P9BE,  AV_PIX_FMT_YUVA420P9BE,
-    AV_PIX_FMT_YUV422P9LE,  AV_PIX_FMT_YUVA422P9LE,
-    AV_PIX_FMT_YUV422P9BE,  AV_PIX_FMT_YUVA422P9BE,
-    AV_PIX_FMT_YUV444P9LE,  AV_PIX_FMT_YUVA444P9LE,
-    AV_PIX_FMT_YUV444P9BE,  AV_PIX_FMT_YUVA444P9BE,
-    AV_PIX_FMT_YUV420P10LE, AV_PIX_FMT_YUVA420P10LE,
-    AV_PIX_FMT_YUV420P10BE, AV_PIX_FMT_YUVA420P10BE,
-    AV_PIX_FMT_YUV422P10LE, AV_PIX_FMT_YUVA422P10LE,
-    AV_PIX_FMT_YUV422P10BE, AV_PIX_FMT_YUVA422P10BE,
-    AV_PIX_FMT_YUV444P10LE, AV_PIX_FMT_YUVA444P10LE,
-    AV_PIX_FMT_YUV444P10BE, AV_PIX_FMT_YUVA444P10BE,
-    AV_PIX_FMT_YUV420P12BE,  AV_PIX_FMT_YUV420P12LE,
-    AV_PIX_FMT_YUV422P12BE,  AV_PIX_FMT_YUV422P12LE,
-    AV_PIX_FMT_YUV444P12BE,  AV_PIX_FMT_YUV444P12LE,
-    AV_PIX_FMT_YUV420P14BE,  AV_PIX_FMT_YUV420P14LE,
-    AV_PIX_FMT_YUV422P14BE,  AV_PIX_FMT_YUV422P14LE,
-    AV_PIX_FMT_YUV444P14BE,  AV_PIX_FMT_YUV444P14LE,
-    AV_PIX_FMT_YUV420P16LE, AV_PIX_FMT_YUVA420P16LE,
-    AV_PIX_FMT_YUV420P16BE, AV_PIX_FMT_YUVA420P16BE,
-    AV_PIX_FMT_YUV422P16LE, AV_PIX_FMT_YUVA422P16LE,
-    AV_PIX_FMT_YUV422P16BE, AV_PIX_FMT_YUVA422P16BE,
-    AV_PIX_FMT_YUV444P16LE, AV_PIX_FMT_YUVA444P16LE,
-    AV_PIX_FMT_YUV444P16BE, AV_PIX_FMT_YUVA444P16BE,
-    AV_PIX_FMT_NONE
-};
-
-static int query_formats(AVFilterContext *ctx)
-{
-    Stereo3DContext *s = ctx->priv;
-    const enum AVPixelFormat *pix_fmts;
-    AVFilterFormats *fmts_list;
-
-    switch (s->out.format) {
-    case ANAGLYPH_GM_COLOR:
-    case ANAGLYPH_GM_DUBOIS:
-    case ANAGLYPH_GM_GRAY:
-    case ANAGLYPH_GM_HALF:
-    case ANAGLYPH_RB_GRAY:
-    case ANAGLYPH_RC_COLOR:
-    case ANAGLYPH_RC_DUBOIS:
-    case ANAGLYPH_RC_GRAY:
-    case ANAGLYPH_RC_HALF:
-    case ANAGLYPH_RG_GRAY:
-    case ANAGLYPH_YB_COLOR:
-    case ANAGLYPH_YB_DUBOIS:
-    case ANAGLYPH_YB_GRAY:
-    case ANAGLYPH_YB_HALF:
-        pix_fmts = anaglyph_pix_fmts;
-        break;
-    default:
-        pix_fmts = other_pix_fmts;
-    }
-
-    fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static inline uint8_t ana_convert(const int *coeff, const uint8_t *left, const uint8_t *right)
-{
-    int sum;
-
-    sum  = coeff[0] * left[0] + coeff[3] * right[0]; //red in
-    sum += coeff[1] * left[1] + coeff[4] * right[1]; //green in
-    sum += coeff[2] * left[2] + coeff[5] * right[2]; //blue in
-
-    return av_clip_uint8(sum >> 16);
-}
-
-static void anaglyph_ic(uint8_t *dst, uint8_t *lsrc, uint8_t *rsrc,
-                        ptrdiff_t dst_linesize, ptrdiff_t l_linesize, ptrdiff_t r_linesize,
-                        int width, int height,
-                        const int *ana_matrix_r, const int *ana_matrix_g, const int *ana_matrix_b)
-{
-    int x, y, o;
-
-    for (y = 0; y < height; y++) {
-        for (o = 0, x = 0; x < width; x++, o+= 3) {
-            dst[o    ] = ana_convert(ana_matrix_r, lsrc + o * 2, rsrc + o * 2);
-            dst[o + 1] = ana_convert(ana_matrix_g, lsrc + o * 2, rsrc + o * 2);
-            dst[o + 2] = ana_convert(ana_matrix_b, lsrc + o * 2, rsrc + o * 2);
-        }
-
-        dst  += dst_linesize;
-        lsrc += l_linesize;
-        rsrc += r_linesize;
-    }
-}
-
-static void anaglyph(uint8_t *dst, uint8_t *lsrc, uint8_t *rsrc,
-                     ptrdiff_t dst_linesize, ptrdiff_t l_linesize, ptrdiff_t r_linesize,
-                     int width, int height,
-                     const int *ana_matrix_r, const int *ana_matrix_g, const int *ana_matrix_b)
-{
-    int x, y, o;
-
-    for (y = 0; y < height; y++) {
-        for (o = 0, x = 0; x < width; x++, o+= 3) {
-            dst[o    ] = ana_convert(ana_matrix_r, lsrc + o, rsrc + o);
-            dst[o + 1] = ana_convert(ana_matrix_g, lsrc + o, rsrc + o);
-            dst[o + 2] = ana_convert(ana_matrix_b, lsrc + o, rsrc + o);
-        }
-
-        dst  += dst_linesize;
-        lsrc += l_linesize;
-        rsrc += r_linesize;
-    }
-}
-
-static int config_output(AVFilterLink *outlink)
-{
-    AVFilterContext *ctx = outlink->src;
-    AVFilterLink *inlink = ctx->inputs[0];
-    Stereo3DContext *s = ctx->priv;
-    AVRational fps = inlink->frame_rate;
-    AVRational tb = inlink->time_base;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(outlink->format);
-    int ret;
-    s->aspect = inlink->sample_aspect_ratio;
-
-    switch (s->in.format) {
-    case INTERLEAVE_COLS_LR:
-    case INTERLEAVE_COLS_RL:
-    case SIDE_BY_SIDE_2_LR:
-    case SIDE_BY_SIDE_LR:
-    case SIDE_BY_SIDE_2_RL:
-    case SIDE_BY_SIDE_RL:
-        if (inlink->w & 1) {
-            av_log(ctx, AV_LOG_ERROR, "width must be even\n");
-            return AVERROR_INVALIDDATA;
-        }
-        break;
-    case INTERLEAVE_ROWS_LR:
-    case INTERLEAVE_ROWS_RL:
-    case ABOVE_BELOW_2_LR:
-    case ABOVE_BELOW_LR:
-    case ABOVE_BELOW_2_RL:
-    case ABOVE_BELOW_RL:
-        if (inlink->h & 1) {
-            av_log(ctx, AV_LOG_ERROR, "height must be even\n");
-            return AVERROR_INVALIDDATA;
-        }
-        break;
-    }
-
-    s->in.width     =
-    s->width        = inlink->w;
-    s->in.height    =
-    s->height       = inlink->h;
-    s->in.off_lstep =
-    s->in.off_rstep =
-    s->in.off_left  =
-    s->in.off_right =
-    s->in.row_left  =
-    s->in.row_right = 0;
-    s->in.row_step  = 1;
-
-    switch (s->in.format) {
-    case SIDE_BY_SIDE_2_LR:
-        s->aspect.num  *= 2;
-    case SIDE_BY_SIDE_LR:
-        s->width        = inlink->w / 2;
-        s->in.off_right = s->width;
-        break;
-    case SIDE_BY_SIDE_2_RL:
-        s->aspect.num  *= 2;
-    case SIDE_BY_SIDE_RL:
-        s->width        = inlink->w / 2;
-        s->in.off_left  = s->width;
-        break;
-    case ABOVE_BELOW_2_LR:
-        s->aspect.den  *= 2;
-    case ABOVE_BELOW_LR:
-        s->in.row_right =
-        s->height       = inlink->h / 2;
-        break;
-    case ABOVE_BELOW_2_RL:
-        s->aspect.den  *= 2;
-    case ABOVE_BELOW_RL:
-        s->in.row_left  =
-        s->height       = inlink->h / 2;
-        break;
-    case ALTERNATING_RL:
-    case ALTERNATING_LR:
-        fps.den        *= 2;
-        tb.num         *= 2;
-        break;
-    case INTERLEAVE_COLS_RL:
-    case INTERLEAVE_COLS_LR:
-        s->width        = inlink->w / 2;
-        break;
-    case INTERLEAVE_ROWS_LR:
-    case INTERLEAVE_ROWS_RL:
-        s->in.row_step  = 2;
-        if (s->in.format == INTERLEAVE_ROWS_RL)
-            s->in.off_lstep = 1;
-        else
-            s->in.off_rstep = 1;
-        if (s->out.format != CHECKERBOARD_LR &&
-            s->out.format != CHECKERBOARD_RL)
-            s->height   = inlink->h / 2;
-        break;
-    default:
-        av_log(ctx, AV_LOG_ERROR, "input format %d is not supported\n", s->in.format);
-        return AVERROR(EINVAL);
-    }
-
-    s->out.width     = s->width;
-    s->out.height    = s->height;
-    s->out.off_lstep =
-    s->out.off_rstep =
-    s->out.off_left  =
-    s->out.off_right =
-    s->out.row_left  =
-    s->out.row_right = 0;
-    s->out.row_step  = 1;
-
-    switch (s->out.format) {
-    case ANAGLYPH_RB_GRAY:
-    case ANAGLYPH_RG_GRAY:
-    case ANAGLYPH_RC_GRAY:
-    case ANAGLYPH_RC_HALF:
-    case ANAGLYPH_RC_COLOR:
-    case ANAGLYPH_RC_DUBOIS:
-    case ANAGLYPH_GM_GRAY:
-    case ANAGLYPH_GM_HALF:
-    case ANAGLYPH_GM_COLOR:
-    case ANAGLYPH_GM_DUBOIS:
-    case ANAGLYPH_YB_GRAY:
-    case ANAGLYPH_YB_HALF:
-    case ANAGLYPH_YB_COLOR:
-    case ANAGLYPH_YB_DUBOIS: {
-        uint8_t rgba_map[4];
-
-        ff_fill_rgba_map(rgba_map, outlink->format);
-        s->ana_matrix[rgba_map[0]] = &ana_coeff[s->out.format][0][0];
-        s->ana_matrix[rgba_map[1]] = &ana_coeff[s->out.format][1][0];
-        s->ana_matrix[rgba_map[2]] = &ana_coeff[s->out.format][2][0];
-        break;
-    }
-    case SIDE_BY_SIDE_2_LR:
-        s->aspect.den   *= 2;
-    case SIDE_BY_SIDE_LR:
-        s->out.width     = s->width * 2;
-        s->out.off_right = s->width;
-        break;
-    case SIDE_BY_SIDE_2_RL:
-        s->aspect.den   *= 2;
-    case SIDE_BY_SIDE_RL:
-        s->out.width     = s->width * 2;
-        s->out.off_left  = s->width;
-        break;
-    case ABOVE_BELOW_2_LR:
-        s->aspect.num   *= 2;
-    case ABOVE_BELOW_LR:
-        s->out.height    = s->height * 2;
-        s->out.row_right = s->height;
-        break;
-    case HDMI:
-        if (s->height != 720 && s->height != 1080) {
-            av_log(ctx, AV_LOG_ERROR, "Only 720 and 1080 height supported\n");
-            return AVERROR(EINVAL);
-        }
-
-        s->blanks = s->height / 24;
-        s->out.height    = s->height * 2 + s->blanks;
-        s->out.row_right = s->height + s->blanks;
-        break;
-    case ABOVE_BELOW_2_RL:
-        s->aspect.num   *= 2;
-    case ABOVE_BELOW_RL:
-        s->out.height    = s->height * 2;
-        s->out.row_left  = s->height;
-        break;
-    case INTERLEAVE_ROWS_LR:
-        s->in.row_step   = 1 + (s->in.format == INTERLEAVE_ROWS_RL);
-        s->out.row_step  = 2;
-        s->out.height    = s->height * 2;
-        s->out.off_rstep = 1;
-        break;
-    case INTERLEAVE_ROWS_RL:
-        s->in.row_step   = 1 + (s->in.format == INTERLEAVE_ROWS_LR);
-        s->out.row_step  = 2;
-        s->out.height    = s->height * 2;
-        s->out.off_lstep = 1;
-        break;
-    case MONO_R:
-        if (s->in.format != INTERLEAVE_COLS_LR) {
-            s->in.off_left = s->in.off_right;
-            s->in.row_left = s->in.row_right;
-        }
-        if (s->in.format == INTERLEAVE_ROWS_LR)
-            FFSWAP(int, s->in.off_lstep, s->in.off_rstep);
-        break;
-    case MONO_L:
-        if (s->in.format == INTERLEAVE_ROWS_RL)
-            FFSWAP(int, s->in.off_lstep, s->in.off_rstep);
-        break;
-    case ALTERNATING_RL:
-    case ALTERNATING_LR:
-        fps.num         *= 2;
-        tb.den          *= 2;
-        break;
-    case CHECKERBOARD_LR:
-    case CHECKERBOARD_RL:
-    case INTERLEAVE_COLS_LR:
-    case INTERLEAVE_COLS_RL:
-        s->out.width     = s->width * 2;
-        break;
-    default:
-        av_log(ctx, AV_LOG_ERROR, "output format %d is not supported\n", s->out.format);
-        return AVERROR(EINVAL);
-    }
-
-    if (s->in.format == INTERLEAVE_COLS_LR || s->in.format == INTERLEAVE_COLS_RL) {
-        if ((s->in.format & 1) != (s->out.format & 1)) {
-            FFSWAP(int, s->in.row_left,   s->in.row_right);
-            FFSWAP(int, s->in.off_lstep,  s->in.off_rstep);
-            FFSWAP(int, s->in.off_left,   s->in.off_right);
-            FFSWAP(int, s->out.row_left,  s->out.row_right);
-            FFSWAP(int, s->out.off_lstep, s->out.off_rstep);
-            FFSWAP(int, s->out.off_left,  s->out.off_right);
-        }
-    }
-
-    outlink->w = s->out.width;
-    outlink->h = s->out.height;
-    outlink->frame_rate = fps;
-    outlink->time_base = tb;
-    outlink->sample_aspect_ratio = s->aspect;
-
-    if ((ret = av_image_fill_linesizes(s->linesize, outlink->format, s->width)) < 0)
-        return ret;
-    s->nb_planes = av_pix_fmt_count_planes(outlink->format);
-    av_image_fill_max_pixsteps(s->pixstep, NULL, desc);
-    s->pheight[1] = s->pheight[2] = AV_CEIL_RSHIFT(s->height, desc->log2_chroma_h);
-    s->pheight[0] = s->pheight[3] = s->height;
-    s->hsub = desc->log2_chroma_w;
-    s->vsub = desc->log2_chroma_h;
-
-    s->dsp.anaglyph = anaglyph;
-    if (ARCH_X86)
-        ff_stereo3d_init_x86(&s->dsp);
-
-    return 0;
-}
-
-typedef struct ThreadData {
-    AVFrame *ileft, *iright;
-    AVFrame *out;
-} ThreadData;
-
-static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
-{
-    Stereo3DContext *s = ctx->priv;
-    ThreadData *td = arg;
-    AVFrame *ileft = td->ileft;
-    AVFrame *iright = td->iright;
-    AVFrame *out = td->out;
-    int height = s->out.height;
-    int start = (height *  jobnr   ) / nb_jobs;
-    int end   = (height * (jobnr+1)) / nb_jobs;
-    const int **ana_matrix = s->ana_matrix;
-
-    s->dsp.anaglyph(out->data[0] + out->linesize[0] * start,
-             ileft ->data[0] + s->in_off_left [0]  + ileft->linesize[0] * start * s->in.row_step,
-             iright->data[0] + s->in_off_right[0] + iright->linesize[0] * start * s->in.row_step,
-             out->linesize[0],
-             ileft->linesize[0] * s->in.row_step,
-             iright->linesize[0] * s->in.row_step,
-             s->out.width, end - start,
-             ana_matrix[0], ana_matrix[1], ana_matrix[2]);
-
-    return 0;
-}
-
-static void interleave_cols_to_any(Stereo3DContext *s, int *out_off, int p, AVFrame *in, AVFrame *out, int d)
-{
-    int y, x;
-
-    for (y = 0; y < s->pheight[p]; y++) {
-        const uint8_t *src = (const uint8_t*)in->data[p] + y * in->linesize[p] + d * s->pixstep[p];
-        uint8_t *dst = out->data[p] + out_off[p] + y * out->linesize[p] * s->out.row_step;
-
-        switch (s->pixstep[p]) {
-        case 1:
-            for (x = 0; x < s->linesize[p]; x++)
-                dst[x] = src[x * 2];
-            break;
-        case 2:
-            for (x = 0; x < s->linesize[p]; x+=2)
-                AV_WN16(&dst[x], AV_RN16(&src[x * 2]));
-            break;
-        case 3:
-            for (x = 0; x < s->linesize[p]; x+=3)
-                AV_WB24(&dst[x], AV_RB24(&src[x * 2]));
-            break;
-        case 4:
-            for (x = 0; x < s->linesize[p]; x+=4)
-                AV_WN32(&dst[x], AV_RN32(&src[x * 2]));
-            break;
-        case 6:
-            for (x = 0; x < s->linesize[p]; x+=6)
-                AV_WB48(&dst[x], AV_RB48(&src[x * 2]));
-            break;
-        case 8:
-            for (x = 0; x < s->linesize[p]; x+=8)
-                AV_WN64(&dst[x], AV_RN64(&src[x * 2]));
-            break;
-        }
-    }
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref)
-{
-    AVFilterContext *ctx  = inlink->dst;
-    Stereo3DContext *s = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *out = NULL, *oleft, *oright, *ileft, *iright;
-    int out_off_left[4], out_off_right[4];
-    int i, ret;
-
-    if (s->in.format == s->out.format)
-        return ff_filter_frame(outlink, inpicref);
-
-    switch (s->out.format) {
-    case ALTERNATING_LR:
-    case ALTERNATING_RL:
-        if (!s->prev) {
-            s->prev = inpicref;
-            return 0;
-        }
-        break;
-    };
-
-    switch (s->in.format) {
-    case ALTERNATING_LR:
-    case ALTERNATING_RL:
-        if (!s->prev) {
-            s->prev = inpicref;
-            return 0;
-        }
-        ileft  = s->prev;
-        iright = inpicref;
-        if (s->in.format == ALTERNATING_RL)
-            FFSWAP(AVFrame *, ileft, iright);
-        break;
-    default:
-        ileft = iright = inpicref;
-    };
-
-    if ((s->out.format == ALTERNATING_LR ||
-         s->out.format == ALTERNATING_RL) &&
-        (s->in.format == SIDE_BY_SIDE_LR ||
-         s->in.format == SIDE_BY_SIDE_RL ||
-         s->in.format == SIDE_BY_SIDE_2_LR ||
-         s->in.format == SIDE_BY_SIDE_2_RL ||
-         s->in.format == ABOVE_BELOW_LR ||
-         s->in.format == ABOVE_BELOW_RL ||
-         s->in.format == ABOVE_BELOW_2_LR ||
-         s->in.format == ABOVE_BELOW_2_RL ||
-         s->in.format == INTERLEAVE_ROWS_LR ||
-         s->in.format == INTERLEAVE_ROWS_RL)) {
-        oright = av_frame_clone(s->prev);
-        oleft  = av_frame_clone(s->prev);
-        if (!oright || !oleft) {
-            av_frame_free(&oright);
-            av_frame_free(&oleft);
-            av_frame_free(&s->prev);
-            av_frame_free(&inpicref);
-            return AVERROR(ENOMEM);
-        }
-    } else if ((s->out.format == MONO_L ||
-                s->out.format == MONO_R) &&
-        (s->in.format == SIDE_BY_SIDE_LR ||
-         s->in.format == SIDE_BY_SIDE_RL ||
-         s->in.format == SIDE_BY_SIDE_2_LR ||
-         s->in.format == SIDE_BY_SIDE_2_RL ||
-         s->in.format == ABOVE_BELOW_LR ||
-         s->in.format == ABOVE_BELOW_RL ||
-         s->in.format == ABOVE_BELOW_2_LR ||
-         s->in.format == ABOVE_BELOW_2_RL ||
-         s->in.format == INTERLEAVE_ROWS_LR ||
-         s->in.format == INTERLEAVE_ROWS_RL)) {
-        out = oleft = oright = av_frame_clone(inpicref);
-        if (!out) {
-            av_frame_free(&s->prev);
-            av_frame_free(&inpicref);
-            return AVERROR(ENOMEM);
-        }
-    } else if ((s->out.format == MONO_L && s->in.format == ALTERNATING_LR) ||
-               (s->out.format == MONO_R && s->in.format == ALTERNATING_RL)) {
-        s->prev->pts /= 2;
-        ret = ff_filter_frame(outlink, s->prev);
-        av_frame_free(&inpicref);
-        s->prev = NULL;
-        return ret;
-    } else if ((s->out.format == MONO_L && s->in.format == ALTERNATING_RL) ||
-               (s->out.format == MONO_R && s->in.format == ALTERNATING_LR)) {
-        av_frame_free(&s->prev);
-        inpicref->pts /= 2;
-        return ff_filter_frame(outlink, inpicref);
-    } else if ((s->out.format == ALTERNATING_LR && s->in.format == ALTERNATING_RL) ||
-               (s->out.format == ALTERNATING_RL && s->in.format == ALTERNATING_LR)) {
-        FFSWAP(int64_t, s->prev->pts, inpicref->pts);
-        ff_filter_frame(outlink, inpicref);
-        ret = ff_filter_frame(outlink, s->prev);
-        s->prev = NULL;
-        return ret;
-    } else {
-        out = oleft = oright = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out) {
-            av_frame_free(&s->prev);
-            av_frame_free(&inpicref);
-            return AVERROR(ENOMEM);
-        }
-        av_frame_copy_props(out, inpicref);
-
-        if (s->out.format == ALTERNATING_LR ||
-            s->out.format == ALTERNATING_RL) {
-            oright = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-            if (!oright) {
-                av_frame_free(&oleft);
-                av_frame_free(&s->prev);
-                av_frame_free(&inpicref);
-                return AVERROR(ENOMEM);
-            }
-            av_frame_copy_props(oright, s->prev);
-        }
-    }
-
-    for (i = 0; i < 4; i++) {
-        int hsub = i == 1 || i == 2 ? s->hsub : 0;
-        int vsub = i == 1 || i == 2 ? s->vsub : 0;
-        s->in_off_left[i]   = (AV_CEIL_RSHIFT(s->in.row_left,   vsub) + s->in.off_lstep)  * ileft->linesize[i]  + AV_CEIL_RSHIFT(s->in.off_left   * s->pixstep[i], hsub);
-        s->in_off_right[i]  = (AV_CEIL_RSHIFT(s->in.row_right,  vsub) + s->in.off_rstep)  * iright->linesize[i] + AV_CEIL_RSHIFT(s->in.off_right  * s->pixstep[i], hsub);
-        out_off_left[i]  = (AV_CEIL_RSHIFT(s->out.row_left,  vsub) + s->out.off_lstep) * oleft->linesize[i]  + AV_CEIL_RSHIFT(s->out.off_left  * s->pixstep[i], hsub);
-        out_off_right[i] = (AV_CEIL_RSHIFT(s->out.row_right, vsub) + s->out.off_rstep) * oright->linesize[i] + AV_CEIL_RSHIFT(s->out.off_right * s->pixstep[i], hsub);
-    }
-
-    switch (s->out.format) {
-    case ALTERNATING_LR:
-    case ALTERNATING_RL:
-        switch (s->in.format) {
-        case INTERLEAVE_ROWS_LR:
-        case INTERLEAVE_ROWS_RL:
-            for (i = 0; i < s->nb_planes; i++) {
-                oleft->linesize[i]  *= 2;
-                oright->linesize[i] *= 2;
-            }
-        case ABOVE_BELOW_LR:
-        case ABOVE_BELOW_RL:
-        case ABOVE_BELOW_2_LR:
-        case ABOVE_BELOW_2_RL:
-        case SIDE_BY_SIDE_LR:
-        case SIDE_BY_SIDE_RL:
-        case SIDE_BY_SIDE_2_LR:
-        case SIDE_BY_SIDE_2_RL:
-            oleft->width   = outlink->w;
-            oright->width  = outlink->w;
-            oleft->height  = outlink->h;
-            oright->height = outlink->h;
-
-            for (i = 0; i < s->nb_planes; i++) {
-                oleft->data[i]  += s->in_off_left[i];
-                oright->data[i] += s->in_off_right[i];
-            }
-            break;
-        default:
-            goto copy;
-            break;
-        }
-        break;
-    case HDMI:
-        for (i = 0; i < s->nb_planes; i++) {
-            int j, h = s->height >> ((i == 1 || i == 2) ? s->vsub : 0);
-            int b = (s->blanks) >> ((i == 1 || i == 2) ? s->vsub : 0);
-
-            for (j = h; j < h + b; j++)
-                memset(oleft->data[i] + j * s->linesize[i], 0, s->linesize[i]);
-        }
-    case SIDE_BY_SIDE_LR:
-    case SIDE_BY_SIDE_RL:
-    case SIDE_BY_SIDE_2_LR:
-    case SIDE_BY_SIDE_2_RL:
-    case ABOVE_BELOW_LR:
-    case ABOVE_BELOW_RL:
-    case ABOVE_BELOW_2_LR:
-    case ABOVE_BELOW_2_RL:
-    case INTERLEAVE_ROWS_LR:
-    case INTERLEAVE_ROWS_RL:
-copy:
-        if (s->in.format == INTERLEAVE_COLS_LR ||
-            s->in.format == INTERLEAVE_COLS_RL) {
-            for (i = 0; i < s->nb_planes; i++) {
-                int d = (s->in.format & 1) != (s->out.format & 1);
-
-                interleave_cols_to_any(s, out_off_left,  i, ileft,  oleft,   d);
-                interleave_cols_to_any(s, out_off_right, i, iright, oright, !d);
-            }
-        } else {
-            for (i = 0; i < s->nb_planes; i++) {
-                av_image_copy_plane(oleft->data[i] + out_off_left[i],
-                                    oleft->linesize[i] * s->out.row_step,
-                                    ileft->data[i] + s->in_off_left[i],
-                                    ileft->linesize[i] * s->in.row_step,
-                                    s->linesize[i], s->pheight[i]);
-                av_image_copy_plane(oright->data[i] + out_off_right[i],
-                                    oright->linesize[i] * s->out.row_step,
-                                    iright->data[i] + s->in_off_right[i],
-                                    iright->linesize[i] * s->in.row_step,
-                                    s->linesize[i], s->pheight[i]);
-            }
-        }
-        break;
-    case MONO_L:
-        iright = ileft;
-    case MONO_R:
-        switch (s->in.format) {
-        case INTERLEAVE_ROWS_LR:
-        case INTERLEAVE_ROWS_RL:
-            for (i = 0; i < s->nb_planes; i++) {
-                out->linesize[i] *= 2;
-            }
-        case ABOVE_BELOW_LR:
-        case ABOVE_BELOW_RL:
-        case ABOVE_BELOW_2_LR:
-        case ABOVE_BELOW_2_RL:
-        case SIDE_BY_SIDE_LR:
-        case SIDE_BY_SIDE_RL:
-        case SIDE_BY_SIDE_2_LR:
-        case SIDE_BY_SIDE_2_RL:
-            out->width  = outlink->w;
-            out->height = outlink->h;
-
-            for (i = 0; i < s->nb_planes; i++) {
-                out->data[i] += s->in_off_left[i];
-            }
-            break;
-        case INTERLEAVE_COLS_LR:
-        case INTERLEAVE_COLS_RL:
-            for (i = 0; i < s->nb_planes; i++) {
-                const int d = (s->in.format & 1) != (s->out.format & 1);
-
-                interleave_cols_to_any(s, out_off_right, i, iright, out, d);
-            }
-            break;
-        default:
-            for (i = 0; i < s->nb_planes; i++) {
-                av_image_copy_plane(out->data[i], out->linesize[i],
-                                    iright->data[i] + s->in_off_left[i],
-                                    iright->linesize[i] * s->in.row_step,
-                                    s->linesize[i], s->pheight[i]);
-            }
-            break;
-        }
-        break;
-    case ANAGLYPH_RB_GRAY:
-    case ANAGLYPH_RG_GRAY:
-    case ANAGLYPH_RC_GRAY:
-    case ANAGLYPH_RC_HALF:
-    case ANAGLYPH_RC_COLOR:
-    case ANAGLYPH_RC_DUBOIS:
-    case ANAGLYPH_GM_GRAY:
-    case ANAGLYPH_GM_HALF:
-    case ANAGLYPH_GM_COLOR:
-    case ANAGLYPH_GM_DUBOIS:
-    case ANAGLYPH_YB_GRAY:
-    case ANAGLYPH_YB_HALF:
-    case ANAGLYPH_YB_COLOR:
-    case ANAGLYPH_YB_DUBOIS: {
-        if (s->in.format == INTERLEAVE_COLS_LR ||
-            s->in.format == INTERLEAVE_COLS_RL) {
-            const int d = (s->in.format & 1);
-
-            anaglyph_ic(out->data[0],
-                ileft ->data[0] + s->in_off_left [0] +   d  * 3,
-                iright->data[0] + s->in_off_right[0] + (!d) * 3,
-                out->linesize[0],
-                ileft->linesize[0] * s->in.row_step,
-                iright->linesize[0] * s->in.row_step,
-                s->out.width, s->out.height,
-                s->ana_matrix[0], s->ana_matrix[1], s->ana_matrix[2]);
-        } else {
-            ThreadData td;
-
-            td.ileft = ileft; td.iright = iright; td.out = out;
-            ctx->internal->execute(ctx, filter_slice, &td, NULL,
-                                   FFMIN(s->out.height, ff_filter_get_nb_threads(ctx)));
-        }
-        break;
-    }
-    case CHECKERBOARD_RL:
-    case CHECKERBOARD_LR:
-        for (i = 0; i < s->nb_planes; i++) {
-            int x, y;
-
-            for (y = 0; y < s->pheight[i]; y++) {
-                uint8_t *dst = out->data[i] + out->linesize[i] * y;
-                const int d1 = (s->in.format == INTERLEAVE_COLS_LR || s->in.format == INTERLEAVE_COLS_RL) && (s->in.format & 1) != (s->out.format & 1);
-                const int d2 = (s->in.format == INTERLEAVE_COLS_LR || s->in.format == INTERLEAVE_COLS_RL) ? !d1 : 0;
-                const int m = 1 + (s->in.format == INTERLEAVE_COLS_LR || s->in.format == INTERLEAVE_COLS_RL);
-                uint8_t *left  = ileft->data[i]  + ileft->linesize[i]  * y + s->in_off_left[i]  + d1 * s->pixstep[i];
-                uint8_t *right = iright->data[i] + iright->linesize[i] * y + s->in_off_right[i] + d2 * s->pixstep[i];
-                int p, b;
-
-                if (s->out.format == CHECKERBOARD_RL && s->in.format != INTERLEAVE_COLS_LR && s->in.format != INTERLEAVE_COLS_RL)
-                    FFSWAP(uint8_t*, left, right);
-                switch (s->pixstep[i]) {
-                case 1:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=2, p++, b+=2) {
-                        dst[x  ] = (b&1) == (y&1) ? left[p*m] : right[p*m];
-                        dst[x+1] = (b&1) != (y&1) ? left[p*m] : right[p*m];
-                    }
-                    break;
-                case 2:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=4, p+=2, b+=2) {
-                        AV_WN16(&dst[x  ], (b&1) == (y&1) ? AV_RN16(&left[p*m]) : AV_RN16(&right[p*m]));
-                        AV_WN16(&dst[x+2], (b&1) != (y&1) ? AV_RN16(&left[p*m]) : AV_RN16(&right[p*m]));
-                    }
-                    break;
-                case 3:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=6, p+=3, b+=2) {
-                        AV_WB24(&dst[x  ], (b&1) == (y&1) ? AV_RB24(&left[p*m]) : AV_RB24(&right[p*m]));
-                        AV_WB24(&dst[x+3], (b&1) != (y&1) ? AV_RB24(&left[p*m]) : AV_RB24(&right[p*m]));
-                    }
-                    break;
-                case 4:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=8, p+=4, b+=2) {
-                        AV_WN32(&dst[x  ], (b&1) == (y&1) ? AV_RN32(&left[p*m]) : AV_RN32(&right[p*m]));
-                        AV_WN32(&dst[x+4], (b&1) != (y&1) ? AV_RN32(&left[p*m]) : AV_RN32(&right[p*m]));
-                    }
-                    break;
-                case 6:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=12, p+=6, b+=2) {
-                        AV_WB48(&dst[x  ], (b&1) == (y&1) ? AV_RB48(&left[p*m]) : AV_RB48(&right[p*m]));
-                        AV_WB48(&dst[x+6], (b&1) != (y&1) ? AV_RB48(&left[p*m]) : AV_RB48(&right[p*m]));
-                    }
-                    break;
-                case 8:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=16, p+=8, b+=2) {
-                        AV_WN64(&dst[x  ], (b&1) == (y&1) ? AV_RN64(&left[p*m]) : AV_RN64(&right[p*m]));
-                        AV_WN64(&dst[x+8], (b&1) != (y&1) ? AV_RN64(&left[p*m]) : AV_RN64(&right[p*m]));
-                    }
-                    break;
-                }
-            }
-        }
-        break;
-    case INTERLEAVE_COLS_LR:
-    case INTERLEAVE_COLS_RL:
-        for (i = 0; i < s->nb_planes; i++) {
-            const int d = (s->in.format == INTERLEAVE_COLS_LR || s->in.format == INTERLEAVE_COLS_RL);
-            const int m = 1 + d;
-            int x, y;
-
-            for (y = 0; y < s->pheight[i]; y++) {
-                uint8_t *dst = out->data[i] + out->linesize[i] * y;
-                uint8_t *left = ileft->data[i] + ileft->linesize[i] * y * s->in.row_step + s->in_off_left[i] + d * s->pixstep[i];
-                uint8_t *right = iright->data[i] + iright->linesize[i] * y * s->in.row_step + s->in_off_right[i];
-                int p, b;
-
-                if (s->out.format == INTERLEAVE_COLS_LR)
-                    FFSWAP(uint8_t*, left, right);
-
-                switch (s->pixstep[i]) {
-                case 1:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=2, p++, b+=2) {
-                        dst[x  ] =   b&1  ? left[p*m] : right[p*m];
-                        dst[x+1] = !(b&1) ? left[p*m] : right[p*m];
-                    }
-                    break;
-                case 2:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=4, p+=2, b+=2) {
-                        AV_WN16(&dst[x  ],   b&1  ? AV_RN16(&left[p*m]) : AV_RN16(&right[p*m]));
-                        AV_WN16(&dst[x+2], !(b&1) ? AV_RN16(&left[p*m]) : AV_RN16(&right[p*m]));
-                    }
-                    break;
-                case 3:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=6, p+=3, b+=2) {
-                        AV_WB24(&dst[x  ],   b&1  ? AV_RB24(&left[p*m]) : AV_RB24(&right[p*m]));
-                        AV_WB24(&dst[x+3], !(b&1) ? AV_RB24(&left[p*m]) : AV_RB24(&right[p*m]));
-                    }
-                    break;
-                case 4:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=8, p+=4, b+=2) {
-                        AV_WN32(&dst[x  ],   b&1  ? AV_RN32(&left[p*m]) : AV_RN32(&right[p*m]));
-                        AV_WN32(&dst[x+4], !(b&1) ? AV_RN32(&left[p*m]) : AV_RN32(&right[p*m]));
-                    }
-                    break;
-                case 6:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=12, p+=6, b+=2) {
-                        AV_WB48(&dst[x  ],   b&1  ? AV_RB48(&left[p*m]) : AV_RB48(&right[p*m]));
-                        AV_WB48(&dst[x+6], !(b&1) ? AV_RB48(&left[p*m]) : AV_RB48(&right[p*m]));
-                    }
-                    break;
-                case 8:
-                    for (x = 0, b = 0, p = 0; x < s->linesize[i] * 2; x+=16, p+=8, b+=2) {
-                        AV_WN64(&dst[x  ],   b&1 ?  AV_RN64(&left[p*m]) : AV_RN64(&right[p*m]));
-                        AV_WN64(&dst[x+8], !(b&1) ? AV_RN64(&left[p*m]) : AV_RN64(&right[p*m]));
-                    }
-                    break;
-                }
-            }
-        }
-        break;
-    default:
-        av_assert0(0);
-    }
-
-    if (oright != oleft) {
-        if (s->out.format == ALTERNATING_LR)
-            FFSWAP(AVFrame *, oleft, oright);
-        oright->pts = s->prev->pts * 2;
-        ff_filter_frame(outlink, oright);
-        out = oleft;
-        oleft->pts = s->prev->pts + inpicref->pts;
-        av_frame_free(&s->prev);
-        s->prev = inpicref;
-    } else if (s->in.format == ALTERNATING_LR ||
-               s->in.format == ALTERNATING_RL) {
-        out->pts = s->prev->pts / 2;
-        av_frame_free(&s->prev);
-        av_frame_free(&inpicref);
-    } else {
-        av_frame_free(&s->prev);
-        av_frame_free(&inpicref);
-    }
-    av_assert0(out);
-    out->sample_aspect_ratio = s->aspect;
-    return ff_filter_frame(outlink, out);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    Stereo3DContext *s = ctx->priv;
-
-    av_frame_free(&s->prev);
-}
-
-static const AVFilterPad stereo3d_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad stereo3d_outputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_output,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_stereo3d = {
-    .name          = "stereo3d",
-    .description   = NULL_IF_CONFIG_SMALL("Convert video stereoscopic 3D view."),
-    .priv_size     = sizeof(Stereo3DContext),
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = stereo3d_inputs,
-    .outputs       = stereo3d_outputs,
-    .priv_class    = &stereo3d_class,
-    .flags         = AVFILTER_FLAG_SLICE_THREADS,
-};
diff --git a/libavfilter/vf_super2xsai.c b/libavfilter/vf_super2xsai.c
deleted file mode 100644
index 87eec04..0000000
--- a/libavfilter/vf_super2xsai.c
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (c) 2010 Niel van der Westhuizen <nielkie@gmail.com>
- * Copyright (c) 2002 A'rpi
- * Copyright (c) 1997-2001 ZSNES Team ( zsknight@zsnes.com / _demo_@zsnes.com )
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Super 2xSaI video filter
- * Ported from MPlayer libmpcodecs/vf_2xsai.c.
- */
-
-#include "libavutil/pixdesc.h"
-#include "libavutil/intreadwrite.h"
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-
-typedef struct Super2xSaIContext {
-    /* masks used for two pixels interpolation */
-    uint32_t hi_pixel_mask;
-    uint32_t lo_pixel_mask;
-
-    /* masks used for four pixels interpolation */
-    uint32_t q_hi_pixel_mask;
-    uint32_t q_lo_pixel_mask;
-
-    int bpp; ///< bytes per pixel, pixel stride for each (packed) pixel
-    int is_be;
-} Super2xSaIContext;
-
-#define GET_RESULT(A, B, C, D) ((A != C || A != D) - (B != C || B != D))
-
-#define INTERPOLATE(A, B) (((A & hi_pixel_mask) >> 1) + ((B & hi_pixel_mask) >> 1) + (A & B & lo_pixel_mask))
-
-#define Q_INTERPOLATE(A, B, C, D) ((A & q_hi_pixel_mask) >> 2) + ((B & q_hi_pixel_mask) >> 2) + ((C & q_hi_pixel_mask) >> 2) + ((D & q_hi_pixel_mask) >> 2) \
-    + ((((A & q_lo_pixel_mask) + (B & q_lo_pixel_mask) + (C & q_lo_pixel_mask) + (D & q_lo_pixel_mask)) >> 2) & q_lo_pixel_mask)
-
-static void super2xsai(AVFilterContext *ctx,
-                       uint8_t *src, int src_linesize,
-                       uint8_t *dst, int dst_linesize,
-                       int width, int height)
-{
-    Super2xSaIContext *s = ctx->priv;
-    unsigned int x, y;
-    uint32_t color[4][4];
-    unsigned char *src_line[4];
-    const int bpp = s->bpp;
-    const uint32_t hi_pixel_mask = s->hi_pixel_mask;
-    const uint32_t lo_pixel_mask = s->lo_pixel_mask;
-    const uint32_t q_hi_pixel_mask = s->q_hi_pixel_mask;
-    const uint32_t q_lo_pixel_mask = s->q_lo_pixel_mask;
-
-    /* Point to the first 4 lines, first line is duplicated */
-    src_line[0] = src;
-    src_line[1] = src;
-    src_line[2] = src + src_linesize*FFMIN(1, height-1);
-    src_line[3] = src + src_linesize*FFMIN(2, height-1);
-
-#define READ_COLOR4(dst, src_line, off) dst = *((const uint32_t *)src_line + off)
-#define READ_COLOR3(dst, src_line, off) dst = AV_RL24 (src_line + 3*off)
-#define READ_COLOR2(dst, src_line, off) dst = s->is_be ? AV_RB16(src_line + 2 * off) : AV_RL16(src_line + 2 * off)
-
-    for (y = 0; y < height; y++) {
-        uint8_t *dst_line[2];
-
-        dst_line[0] = dst + dst_linesize*2*y;
-        dst_line[1] = dst + dst_linesize*(2*y+1);
-
-        switch (bpp) {
-        case 4:
-            READ_COLOR4(color[0][0], src_line[0], 0); color[0][1] = color[0][0]; READ_COLOR4(color[0][2], src_line[0], 1); READ_COLOR4(color[0][3], src_line[0], 2);
-            READ_COLOR4(color[1][0], src_line[1], 0); color[1][1] = color[1][0]; READ_COLOR4(color[1][2], src_line[1], 1); READ_COLOR4(color[1][3], src_line[1], 2);
-            READ_COLOR4(color[2][0], src_line[2], 0); color[2][1] = color[2][0]; READ_COLOR4(color[2][2], src_line[2], 1); READ_COLOR4(color[2][3], src_line[2], 2);
-            READ_COLOR4(color[3][0], src_line[3], 0); color[3][1] = color[3][0]; READ_COLOR4(color[3][2], src_line[3], 1); READ_COLOR4(color[3][3], src_line[3], 2);
-            break;
-        case 3:
-            READ_COLOR3(color[0][0], src_line[0], 0); color[0][1] = color[0][0]; READ_COLOR3(color[0][2], src_line[0], 1); READ_COLOR3(color[0][3], src_line[0], 2);
-            READ_COLOR3(color[1][0], src_line[1], 0); color[1][1] = color[1][0]; READ_COLOR3(color[1][2], src_line[1], 1); READ_COLOR3(color[1][3], src_line[1], 2);
-            READ_COLOR3(color[2][0], src_line[2], 0); color[2][1] = color[2][0]; READ_COLOR3(color[2][2], src_line[2], 1); READ_COLOR3(color[2][3], src_line[2], 2);
-            READ_COLOR3(color[3][0], src_line[3], 0); color[3][1] = color[3][0]; READ_COLOR3(color[3][2], src_line[3], 1); READ_COLOR3(color[3][3], src_line[3], 2);
-            break;
-        default:
-            READ_COLOR2(color[0][0], src_line[0], 0); color[0][1] = color[0][0]; READ_COLOR2(color[0][2], src_line[0], 1); READ_COLOR2(color[0][3], src_line[0], 2);
-            READ_COLOR2(color[1][0], src_line[1], 0); color[1][1] = color[1][0]; READ_COLOR2(color[1][2], src_line[1], 1); READ_COLOR2(color[1][3], src_line[1], 2);
-            READ_COLOR2(color[2][0], src_line[2], 0); color[2][1] = color[2][0]; READ_COLOR2(color[2][2], src_line[2], 1); READ_COLOR2(color[2][3], src_line[2], 2);
-            READ_COLOR2(color[3][0], src_line[3], 0); color[3][1] = color[3][0]; READ_COLOR2(color[3][2], src_line[3], 1); READ_COLOR2(color[3][3], src_line[3], 2);
-        }
-
-        for (x = 0; x < width; x++) {
-            uint32_t product1a, product1b, product2a, product2b;
-
-//---------------------------------------  B0 B1 B2 B3    0  1  2  3
-//                                         4  5* 6  S2 -> 4  5* 6  7
-//                                         1  2  3  S1    8  9 10 11
-//                                         A0 A1 A2 A3   12 13 14 15
-//--------------------------------------
-            if (color[2][1] == color[1][2] && color[1][1] != color[2][2]) {
-                product2b = color[2][1];
-                product1b = product2b;
-            } else if (color[1][1] == color[2][2] && color[2][1] != color[1][2]) {
-                product2b = color[1][1];
-                product1b = product2b;
-            } else if (color[1][1] == color[2][2] && color[2][1] == color[1][2]) {
-                int r = 0;
-
-                r += GET_RESULT(color[1][2], color[1][1], color[1][0], color[3][1]);
-                r += GET_RESULT(color[1][2], color[1][1], color[2][0], color[0][1]);
-                r += GET_RESULT(color[1][2], color[1][1], color[3][2], color[2][3]);
-                r += GET_RESULT(color[1][2], color[1][1], color[0][2], color[1][3]);
-
-                if (r > 0)
-                    product1b = color[1][2];
-                else if (r < 0)
-                    product1b = color[1][1];
-                else
-                    product1b = INTERPOLATE(color[1][1], color[1][2]);
-
-                product2b = product1b;
-            } else {
-                if (color[1][2] == color[2][2] && color[2][2] == color[3][1] && color[2][1] != color[3][2] && color[2][2] != color[3][0])
-                    product2b = Q_INTERPOLATE(color[2][2], color[2][2], color[2][2], color[2][1]);
-                else if (color[1][1] == color[2][1] && color[2][1] == color[3][2] && color[3][1] != color[2][2] && color[2][1] != color[3][3])
-                    product2b = Q_INTERPOLATE(color[2][1], color[2][1], color[2][1], color[2][2]);
-                else
-                    product2b = INTERPOLATE(color[2][1], color[2][2]);
-
-                if (color[1][2] == color[2][2] && color[1][2] == color[0][1] && color[1][1] != color[0][2] && color[1][2] != color[0][0])
-                    product1b = Q_INTERPOLATE(color[1][2], color[1][2], color[1][2], color[1][1]);
-                else if (color[1][1] == color[2][1] && color[1][1] == color[0][2] && color[0][1] != color[1][2] && color[1][1] != color[0][3])
-                    product1b = Q_INTERPOLATE(color[1][2], color[1][1], color[1][1], color[1][1]);
-                else
-                    product1b = INTERPOLATE(color[1][1], color[1][2]);
-            }
-
-            if (color[1][1] == color[2][2] && color[2][1] != color[1][2] && color[1][0] == color[1][1] && color[1][1] != color[3][2])
-                product2a = INTERPOLATE(color[2][1], color[1][1]);
-            else if (color[1][1] == color[2][0] && color[1][2] == color[1][1] && color[1][0] != color[2][1] && color[1][1] != color[3][0])
-                product2a = INTERPOLATE(color[2][1], color[1][1]);
-            else
-                product2a = color[2][1];
-
-            if (color[2][1] == color[1][2] && color[1][1] != color[2][2] && color[2][0] == color[2][1] && color[2][1] != color[0][2])
-                product1a = INTERPOLATE(color[2][1], color[1][1]);
-            else if (color[1][0] == color[2][1] && color[2][2] == color[2][1] && color[2][0] != color[1][1] && color[2][1] != color[0][0])
-                product1a = INTERPOLATE(color[2][1], color[1][1]);
-            else
-                product1a = color[1][1];
-
-            /* Set the calculated pixels */
-            switch (bpp) {
-            case 4:
-                AV_WN32A(dst_line[0] + x * 8,     product1a);
-                AV_WN32A(dst_line[0] + x * 8 + 4, product1b);
-                AV_WN32A(dst_line[1] + x * 8,     product2a);
-                AV_WN32A(dst_line[1] + x * 8 + 4, product2b);
-                break;
-            case 3:
-                AV_WL24(dst_line[0] + x * 6,     product1a);
-                AV_WL24(dst_line[0] + x * 6 + 3, product1b);
-                AV_WL24(dst_line[1] + x * 6,     product2a);
-                AV_WL24(dst_line[1] + x * 6 + 3, product2b);
-                break;
-            default: // bpp = 2
-                if (s->is_be) {
-                    AV_WB32(dst_line[0] + x * 4, product1a | (product1b << 16));
-                    AV_WB32(dst_line[1] + x * 4, product2a | (product2b << 16));
-                } else {
-                    AV_WL32(dst_line[0] + x * 4, product1a | (product1b << 16));
-                    AV_WL32(dst_line[1] + x * 4, product2a | (product2b << 16));
-                }
-            }
-
-            /* Move color matrix forward */
-            color[0][0] = color[0][1]; color[0][1] = color[0][2]; color[0][2] = color[0][3];
-            color[1][0] = color[1][1]; color[1][1] = color[1][2]; color[1][2] = color[1][3];
-            color[2][0] = color[2][1]; color[2][1] = color[2][2]; color[2][2] = color[2][3];
-            color[3][0] = color[3][1]; color[3][1] = color[3][2]; color[3][2] = color[3][3];
-
-            if (x < width - 3) {
-                x += 3;
-                switch (bpp) {
-                case 4:
-                    READ_COLOR4(color[0][3], src_line[0], x);
-                    READ_COLOR4(color[1][3], src_line[1], x);
-                    READ_COLOR4(color[2][3], src_line[2], x);
-                    READ_COLOR4(color[3][3], src_line[3], x);
-                    break;
-                case 3:
-                    READ_COLOR3(color[0][3], src_line[0], x);
-                    READ_COLOR3(color[1][3], src_line[1], x);
-                    READ_COLOR3(color[2][3], src_line[2], x);
-                    READ_COLOR3(color[3][3], src_line[3], x);
-                    break;
-                default:        /* case 2 */
-                    READ_COLOR2(color[0][3], src_line[0], x);
-                    READ_COLOR2(color[1][3], src_line[1], x);
-                    READ_COLOR2(color[2][3], src_line[2], x);
-                    READ_COLOR2(color[3][3], src_line[3], x);
-                }
-                x -= 3;
-            }
-        }
-
-        /* We're done with one line, so we shift the source lines up */
-        src_line[0] = src_line[1];
-        src_line[1] = src_line[2];
-        src_line[2] = src_line[3];
-
-        /* Read next line */
-        src_line[3] = src_line[2];
-        if (y < height - 3)
-            src_line[3] += src_linesize;
-    } // y loop
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA, AV_PIX_FMT_ARGB, AV_PIX_FMT_ABGR,
-        AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
-        AV_PIX_FMT_RGB565BE, AV_PIX_FMT_BGR565BE, AV_PIX_FMT_RGB555BE, AV_PIX_FMT_BGR555BE,
-        AV_PIX_FMT_RGB565LE, AV_PIX_FMT_BGR565LE, AV_PIX_FMT_RGB555LE, AV_PIX_FMT_BGR555LE,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    Super2xSaIContext *s = inlink->dst->priv;
-
-    s->hi_pixel_mask   = 0xFEFEFEFE;
-    s->lo_pixel_mask   = 0x01010101;
-    s->q_hi_pixel_mask = 0xFCFCFCFC;
-    s->q_lo_pixel_mask = 0x03030303;
-    s->bpp  = 4;
-
-    switch (inlink->format) {
-    case AV_PIX_FMT_RGB24:
-    case AV_PIX_FMT_BGR24:
-        s->bpp = 3;
-        break;
-
-    case AV_PIX_FMT_RGB565BE:
-    case AV_PIX_FMT_BGR565BE:
-        s->is_be = 1;
-    case AV_PIX_FMT_RGB565LE:
-    case AV_PIX_FMT_BGR565LE:
-        s->hi_pixel_mask   = 0xF7DEF7DE;
-        s->lo_pixel_mask   = 0x08210821;
-        s->q_hi_pixel_mask = 0xE79CE79C;
-        s->q_lo_pixel_mask = 0x18631863;
-        s->bpp = 2;
-        break;
-
-    case AV_PIX_FMT_BGR555BE:
-    case AV_PIX_FMT_RGB555BE:
-        s->is_be = 1;
-    case AV_PIX_FMT_BGR555LE:
-    case AV_PIX_FMT_RGB555LE:
-        s->hi_pixel_mask   = 0x7BDE7BDE;
-        s->lo_pixel_mask   = 0x04210421;
-        s->q_hi_pixel_mask = 0x739C739C;
-        s->q_lo_pixel_mask = 0x0C630C63;
-        s->bpp = 2;
-        break;
-    }
-
-    return 0;
-}
-
-static int config_output(AVFilterLink *outlink)
-{
-    AVFilterLink *inlink = outlink->src->inputs[0];
-
-    outlink->w = inlink->w*2;
-    outlink->h = inlink->h*2;
-
-    av_log(inlink->dst, AV_LOG_VERBOSE, "fmt:%s size:%dx%d -> size:%dx%d\n",
-           av_get_pix_fmt_name(inlink->format),
-           inlink->w, inlink->h, outlink->w, outlink->h);
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref)
-{
-    AVFilterLink *outlink = inlink->dst->outputs[0];
-    AVFrame *outpicref = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-    if (!outpicref) {
-        av_frame_free(&inpicref);
-        return AVERROR(ENOMEM);
-    }
-    av_frame_copy_props(outpicref, inpicref);
-    outpicref->width  = outlink->w;
-    outpicref->height = outlink->h;
-
-    super2xsai(inlink->dst, inpicref->data[0], inpicref->linesize[0],
-               outpicref->data[0], outpicref->linesize[0],
-               inlink->w, inlink->h);
-
-    av_frame_free(&inpicref);
-    return ff_filter_frame(outlink, outpicref);
-}
-
-static const AVFilterPad super2xsai_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad super2xsai_outputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_output,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_super2xsai = {
-    .name          = "super2xsai",
-    .description   = NULL_IF_CONFIG_SMALL("Scale the input by 2x using the Super2xSaI pixel art algorithm."),
-    .priv_size     = sizeof(Super2xSaIContext),
-    .query_formats = query_formats,
-    .inputs        = super2xsai_inputs,
-    .outputs       = super2xsai_outputs,
-};
diff --git a/libavfilter/vf_tinterlace.c b/libavfilter/vf_tinterlace.c
deleted file mode 100644
index a777537..0000000
--- a/libavfilter/vf_tinterlace.c
+++ /dev/null
@@ -1,581 +0,0 @@
-/*
- * Copyright (c) 2017 Thomas Mundt <tmundt75@gmail.com>
- * Copyright (c) 2011 Stefano Sabatini
- * Copyright (c) 2010 Baptiste Coudurier
- * Copyright (c) 2003 Michael Zucchi <notzed@ximian.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * temporal field interlace filter, ported from MPlayer/libmpcodecs
- */
-
-#include "libavutil/opt.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/avassert.h"
-#include "avfilter.h"
-#include "internal.h"
-#include "tinterlace.h"
-
-#define OFFSET(x) offsetof(TInterlaceContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-
-static const AVOption tinterlace_options[] = {
-    {"mode",              "select interlace mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=MODE_MERGE}, 0, MODE_NB-1, FLAGS, "mode"},
-    {"merge",             "merge fields",                                 0, AV_OPT_TYPE_CONST, {.i64=MODE_MERGE},             INT_MIN, INT_MAX, FLAGS, "mode"},
-    {"drop_even",         "drop even fields",                             0, AV_OPT_TYPE_CONST, {.i64=MODE_DROP_EVEN},         INT_MIN, INT_MAX, FLAGS, "mode"},
-    {"drop_odd",          "drop odd fields",                              0, AV_OPT_TYPE_CONST, {.i64=MODE_DROP_ODD},          INT_MIN, INT_MAX, FLAGS, "mode"},
-    {"pad",               "pad alternate lines with black",               0, AV_OPT_TYPE_CONST, {.i64=MODE_PAD},               INT_MIN, INT_MAX, FLAGS, "mode"},
-    {"interleave_top",    "interleave top and bottom fields",             0, AV_OPT_TYPE_CONST, {.i64=MODE_INTERLEAVE_TOP},    INT_MIN, INT_MAX, FLAGS, "mode"},
-    {"interleave_bottom", "interleave bottom and top fields",             0, AV_OPT_TYPE_CONST, {.i64=MODE_INTERLEAVE_BOTTOM}, INT_MIN, INT_MAX, FLAGS, "mode"},
-    {"interlacex2",       "interlace fields from two consecutive frames", 0, AV_OPT_TYPE_CONST, {.i64=MODE_INTERLACEX2},       INT_MIN, INT_MAX, FLAGS, "mode"},
-    {"mergex2",           "merge fields keeping same frame rate",         0, AV_OPT_TYPE_CONST, {.i64=MODE_MERGEX2},           INT_MIN, INT_MAX, FLAGS, "mode"},
-
-    {"flags",             "set flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, 0, INT_MAX, 0, "flags" },
-    {"low_pass_filter",   "enable vertical low-pass filter",              0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_VLPF}, INT_MIN, INT_MAX, FLAGS, "flags" },
-    {"vlpf",              "enable vertical low-pass filter",              0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_VLPF}, INT_MIN, INT_MAX, FLAGS, "flags" },
-    {"complex_filter",    "enable complex vertical low-pass filter",      0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX, FLAGS, "flags" },
-    {"cvlpf",             "enable complex vertical low-pass filter",      0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_CVLPF},INT_MIN, INT_MAX, FLAGS, "flags" },
-    {"exact_tb",          "force a timebase which can represent timestamps exactly", 0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_EXACT_TB}, INT_MIN, INT_MAX, FLAGS, "flags" },
-    {"bypass_il",         "bypass already interlaced frames",             0, AV_OPT_TYPE_CONST, {.i64 = TINTERLACE_FLAG_BYPASS_IL}, INT_MIN, INT_MAX, FLAGS, "flags" },
-
-    {NULL}
-};
-
-AVFILTER_DEFINE_CLASS(tinterlace);
-
-static const AVOption interlace_options[] = {
-   { "scan",              "scanning mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = MODE_TFF}, 0, 1, FLAGS, "mode"},
-   { "tff",               "top field first",                              0, AV_OPT_TYPE_CONST, {.i64 = MODE_TFF}, INT_MIN, INT_MAX, FLAGS, .unit = "mode"},
-   { "bff",               "bottom field first",                           0, AV_OPT_TYPE_CONST, {.i64 = MODE_BFF}, INT_MIN, INT_MAX, FLAGS, .unit = "mode"},
-   { "lowpass",           "set vertical low-pass filter", OFFSET(lowpass), AV_OPT_TYPE_INT,   {.i64 = VLPF_LIN}, 0, 2, FLAGS, "lowpass" },
-   {     "off",           "disable vertical low-pass filter",             0, AV_OPT_TYPE_CONST, {.i64 = VLPF_OFF}, INT_MIN, INT_MAX, FLAGS, "lowpass" },
-   {     "linear",        "linear vertical low-pass filter",              0, AV_OPT_TYPE_CONST, {.i64 = VLPF_LIN}, INT_MIN, INT_MAX, FLAGS, "lowpass" },
-   {     "complex",       "complex vertical low-pass filter",             0, AV_OPT_TYPE_CONST, {.i64 = VLPF_CMP}, INT_MIN, INT_MAX, FLAGS, "lowpass" },
-
-   { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(interlace);
-
-#define FULL_SCALE_YUVJ_FORMATS \
-    AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ440P
-
-static const enum AVPixelFormat full_scale_yuvj_pix_fmts[] = {
-    FULL_SCALE_YUVJ_FORMATS, AV_PIX_FMT_NONE
-};
-
-static const AVRational standard_tbs[] = {
-    {1, 25},
-    {1, 30},
-    {1001, 30000},
-};
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUV420P10LE, AV_PIX_FMT_YUV422P10LE,
-        AV_PIX_FMT_YUV440P10LE, AV_PIX_FMT_YUV444P10LE,
-        AV_PIX_FMT_YUV420P12LE, AV_PIX_FMT_YUV422P12LE,
-        AV_PIX_FMT_YUV440P12LE, AV_PIX_FMT_YUV444P12LE,
-        AV_PIX_FMT_YUVA420P, AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUVA444P,
-        AV_PIX_FMT_YUVA420P10LE, AV_PIX_FMT_YUVA422P10LE, AV_PIX_FMT_YUVA444P10LE,
-        AV_PIX_FMT_GRAY8, FULL_SCALE_YUVJ_FORMATS,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static void lowpass_line_c(uint8_t *dstp, ptrdiff_t width, const uint8_t *srcp,
-                           ptrdiff_t mref, ptrdiff_t pref, int clip_max)
-{
-    const uint8_t *srcp_above = srcp + mref;
-    const uint8_t *srcp_below = srcp + pref;
-    int i;
-    for (i = 0; i < width; i++) {
-        // this calculation is an integer representation of
-        // '0.5 * current + 0.25 * above + 0.25 * below'
-        // '1 +' is for rounding.
-        dstp[i] = (1 + srcp[i] + srcp[i] + srcp_above[i] + srcp_below[i]) >> 2;
-    }
-}
-
-static void lowpass_line_c_16(uint8_t *dst8, ptrdiff_t width, const uint8_t *src8,
-                              ptrdiff_t mref, ptrdiff_t pref, int clip_max)
-{
-    uint16_t *dstp = (uint16_t *)dst8;
-    const uint16_t *srcp = (const uint16_t *)src8;
-    const uint16_t *srcp_above = srcp + mref / 2;
-    const uint16_t *srcp_below = srcp + pref / 2;
-    int i, src_x;
-    for (i = 0; i < width; i++) {
-        // this calculation is an integer representation of
-        // '0.5 * current + 0.25 * above + 0.25 * below'
-        // '1 +' is for rounding.
-        src_x   = av_le2ne16(srcp[i]) << 1;
-        dstp[i] = av_le2ne16((1 + src_x + av_le2ne16(srcp_above[i])
-                             + av_le2ne16(srcp_below[i])) >> 2);
-    }
-}
-
-static void lowpass_line_complex_c(uint8_t *dstp, ptrdiff_t width, const uint8_t *srcp,
-                                   ptrdiff_t mref, ptrdiff_t pref, int clip_max)
-{
-    const uint8_t *srcp_above = srcp + mref;
-    const uint8_t *srcp_below = srcp + pref;
-    const uint8_t *srcp_above2 = srcp + mref * 2;
-    const uint8_t *srcp_below2 = srcp + pref * 2;
-    int i, src_x, src_ab;
-    for (i = 0; i < width; i++) {
-        // this calculation is an integer representation of
-        // '0.75 * current + 0.25 * above + 0.25 * below - 0.125 * above2 - 0.125 * below2'
-        // '4 +' is for rounding.
-        src_x   = srcp[i] << 1;
-        src_ab  = srcp_above[i] + srcp_below[i];
-        dstp[i] = av_clip_uint8((4 + ((srcp[i] + src_x + src_ab) << 1)
-                                - srcp_above2[i] - srcp_below2[i]) >> 3);
-        // Prevent over-sharpening:
-        // dst must not exceed src when the average of above and below
-        // is less than src. And the other way around.
-        if (src_ab > src_x) {
-            if (dstp[i] < srcp[i])
-                dstp[i] = srcp[i];
-        } else if (dstp[i] > srcp[i])
-            dstp[i] = srcp[i];
-    }
-}
-
-static void lowpass_line_complex_c_16(uint8_t *dst8, ptrdiff_t width, const uint8_t *src8,
-                                      ptrdiff_t mref, ptrdiff_t pref, int clip_max)
-{
-    uint16_t *dstp = (uint16_t *)dst8;
-    const uint16_t *srcp = (const uint16_t *)src8;
-    const uint16_t *srcp_above = srcp + mref / 2;
-    const uint16_t *srcp_below = srcp + pref / 2;
-    const uint16_t *srcp_above2 = srcp + mref;
-    const uint16_t *srcp_below2 = srcp + pref;
-    int i, dst_le, src_le, src_x, src_ab;
-    for (i = 0; i < width; i++) {
-        // this calculation is an integer representation of
-        // '0.75 * current + 0.25 * above + 0.25 * below - 0.125 * above2 - 0.125 * below2'
-        // '4 +' is for rounding.
-        src_le = av_le2ne16(srcp[i]);
-        src_x  = src_le << 1;
-        src_ab = av_le2ne16(srcp_above[i]) + av_le2ne16(srcp_below[i]);
-        dst_le = av_clip((4 + ((src_le + src_x + src_ab) << 1)
-                         - av_le2ne16(srcp_above2[i])
-                         - av_le2ne16(srcp_below2[i])) >> 3, 0, clip_max);
-        // Prevent over-sharpening:
-        // dst must not exceed src when the average of above and below
-        // is less than src. And the other way around.
-        if (src_ab > src_x) {
-            if (dst_le < src_le)
-                dstp[i] = av_le2ne16(src_le);
-            else
-                dstp[i] = av_le2ne16(dst_le);
-        } else if (dst_le > src_le) {
-            dstp[i] = av_le2ne16(src_le);
-        } else
-            dstp[i] = av_le2ne16(dst_le);
-    }
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    TInterlaceContext *tinterlace = ctx->priv;
-
-    av_frame_free(&tinterlace->cur );
-    av_frame_free(&tinterlace->next);
-    av_freep(&tinterlace->black_data[0]);
-}
-
-static int config_out_props(AVFilterLink *outlink)
-{
-    AVFilterContext *ctx = outlink->src;
-    AVFilterLink *inlink = outlink->src->inputs[0];
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(outlink->format);
-    TInterlaceContext *tinterlace = ctx->priv;
-    int i;
-
-    tinterlace->vsub = desc->log2_chroma_h;
-    outlink->w = inlink->w;
-    outlink->h = tinterlace->mode == MODE_MERGE || tinterlace->mode == MODE_PAD || tinterlace->mode == MODE_MERGEX2?
-        inlink->h*2 : inlink->h;
-    if (tinterlace->mode == MODE_MERGE || tinterlace->mode == MODE_PAD || tinterlace->mode == MODE_MERGEX2)
-        outlink->sample_aspect_ratio = av_mul_q(inlink->sample_aspect_ratio,
-                                                av_make_q(2, 1));
-
-    if (tinterlace->mode == MODE_PAD) {
-        uint8_t black[4] = { 0, 0, 0, 16 };
-        int ret;
-        ff_draw_init(&tinterlace->draw, outlink->format, 0);
-        ff_draw_color(&tinterlace->draw, &tinterlace->color, black);
-        if (ff_fmt_is_in(outlink->format, full_scale_yuvj_pix_fmts))
-            tinterlace->color.comp[0].u8[0] = 0;
-        ret = av_image_alloc(tinterlace->black_data, tinterlace->black_linesize,
-                             outlink->w, outlink->h, outlink->format, 16);
-        if (ret < 0)
-            return ret;
-
-        ff_fill_rectangle(&tinterlace->draw, &tinterlace->color, tinterlace->black_data,
-                          tinterlace->black_linesize, 0, 0, outlink->w, outlink->h);
-    }
-    if (tinterlace->flags & (TINTERLACE_FLAG_VLPF | TINTERLACE_FLAG_CVLPF)
-            && !(tinterlace->mode == MODE_INTERLEAVE_TOP
-              || tinterlace->mode == MODE_INTERLEAVE_BOTTOM)) {
-        av_log(ctx, AV_LOG_WARNING, "low_pass_filter flags ignored with mode %d\n",
-                tinterlace->mode);
-        tinterlace->flags &= ~(TINTERLACE_FLAG_VLPF | TINTERLACE_FLAG_CVLPF);
-    }
-    tinterlace->preout_time_base = inlink->time_base;
-    if (tinterlace->mode == MODE_INTERLACEX2) {
-        tinterlace->preout_time_base.den *= 2;
-        outlink->frame_rate = av_mul_q(inlink->frame_rate, (AVRational){2,1});
-        outlink->time_base  = av_mul_q(inlink->time_base , (AVRational){1,2});
-    } else if (tinterlace->mode == MODE_MERGEX2) {
-        outlink->frame_rate = inlink->frame_rate;
-        outlink->time_base  = inlink->time_base;
-    } else if (tinterlace->mode != MODE_PAD) {
-        outlink->frame_rate = av_mul_q(inlink->frame_rate, (AVRational){1,2});
-        outlink->time_base  = av_mul_q(inlink->time_base , (AVRational){2,1});
-    }
-
-    for (i = 0; i<FF_ARRAY_ELEMS(standard_tbs); i++){
-        if (!av_cmp_q(standard_tbs[i], outlink->time_base))
-            break;
-    }
-    if (i == FF_ARRAY_ELEMS(standard_tbs) ||
-        (tinterlace->flags & TINTERLACE_FLAG_EXACT_TB))
-        outlink->time_base = tinterlace->preout_time_base;
-
-    tinterlace->csp = av_pix_fmt_desc_get(outlink->format);
-    if (tinterlace->flags & TINTERLACE_FLAG_CVLPF) {
-        if (tinterlace->csp->comp[0].depth > 8)
-            tinterlace->lowpass_line = lowpass_line_complex_c_16;
-        else
-            tinterlace->lowpass_line = lowpass_line_complex_c;
-        if (ARCH_X86)
-            ff_tinterlace_init_x86(tinterlace);
-    } else if (tinterlace->flags & TINTERLACE_FLAG_VLPF) {
-        if (tinterlace->csp->comp[0].depth > 8)
-            tinterlace->lowpass_line = lowpass_line_c_16;
-        else
-            tinterlace->lowpass_line = lowpass_line_c;
-        if (ARCH_X86)
-            ff_tinterlace_init_x86(tinterlace);
-    }
-
-    av_log(ctx, AV_LOG_VERBOSE, "mode:%d filter:%s h:%d -> h:%d\n", tinterlace->mode,
-           (tinterlace->flags & TINTERLACE_FLAG_CVLPF) ? "complex" :
-           (tinterlace->flags & TINTERLACE_FLAG_VLPF) ? "linear" : "off",
-           inlink->h, outlink->h);
-
-    return 0;
-}
-
-#define FIELD_UPPER           0
-#define FIELD_LOWER           1
-#define FIELD_UPPER_AND_LOWER 2
-
-/**
- * Copy picture field from src to dst.
- *
- * @param src_field copy from upper, lower field or both
- * @param interleave leave a padding line between each copied line
- * @param dst_field copy to upper or lower field,
- *        only meaningful when interleave is selected
- * @param flags context flags
- */
-static inline
-void copy_picture_field(TInterlaceContext *tinterlace,
-                        uint8_t *dst[4], int dst_linesize[4],
-                        const uint8_t *src[4], int src_linesize[4],
-                        enum AVPixelFormat format, int w, int src_h,
-                        int src_field, int interleave, int dst_field,
-                        int flags)
-{
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(format);
-    int hsub = desc->log2_chroma_w;
-    int plane, vsub = desc->log2_chroma_h;
-    int k = src_field == FIELD_UPPER_AND_LOWER ? 1 : 2;
-    int h;
-
-    for (plane = 0; plane < desc->nb_components; plane++) {
-        int lines = plane == 1 || plane == 2 ? AV_CEIL_RSHIFT(src_h, vsub) : src_h;
-        int cols  = plane == 1 || plane == 2 ? AV_CEIL_RSHIFT(    w, hsub) : w;
-        uint8_t *dstp = dst[plane];
-        const uint8_t *srcp = src[plane];
-        int srcp_linesize = src_linesize[plane] * k;
-        int dstp_linesize = dst_linesize[plane] * (interleave ? 2 : 1);
-        int clip_max = (1 << tinterlace->csp->comp[plane].depth) - 1;
-
-        lines = (lines + (src_field == FIELD_UPPER)) / k;
-        if (src_field == FIELD_LOWER)
-            srcp += src_linesize[plane];
-        if (interleave && dst_field == FIELD_LOWER)
-            dstp += dst_linesize[plane];
-        // Low-pass filtering is required when creating an interlaced destination from
-        // a progressive source which contains high-frequency vertical detail.
-        // Filtering will reduce interlace 'twitter' and Moire patterning.
-        if (flags & (TINTERLACE_FLAG_VLPF | TINTERLACE_FLAG_CVLPF)) {
-            int x = !!(flags & TINTERLACE_FLAG_CVLPF);
-            for (h = lines; h > 0; h--) {
-                ptrdiff_t pref = src_linesize[plane];
-                ptrdiff_t mref = -pref;
-                if (h >= (lines - x))  mref = 0; // there is no line above
-                else if (h <= (1 + x)) pref = 0; // there is no line below
-
-                tinterlace->lowpass_line(dstp, cols, srcp, mref, pref, clip_max);
-                dstp += dstp_linesize;
-                srcp += srcp_linesize;
-            }
-        } else {
-            if (tinterlace->csp->comp[plane].depth > 8)
-                cols *= 2;
-            av_image_copy_plane(dstp, dstp_linesize, srcp, srcp_linesize, cols, lines);
-        }
-    }
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
-{
-    AVFilterContext *ctx = inlink->dst;
-    AVFilterLink *outlink = ctx->outputs[0];
-    TInterlaceContext *tinterlace = ctx->priv;
-    AVFrame *cur, *next, *out;
-    int field, tff, ret;
-
-    av_frame_free(&tinterlace->cur);
-    tinterlace->cur  = tinterlace->next;
-    tinterlace->next = picref;
-
-    cur = tinterlace->cur;
-    next = tinterlace->next;
-    /* we need at least two frames */
-    if (!tinterlace->cur)
-        return 0;
-
-    switch (tinterlace->mode) {
-    case MODE_MERGEX2: /* move the odd frame into the upper field of the new image, even into
-                        * the lower field, generating a double-height video at same framerate */
-    case MODE_MERGE: /* move the odd frame into the upper field of the new image, even into
-             * the lower field, generating a double-height video at half framerate */
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out)
-            return AVERROR(ENOMEM);
-        av_frame_copy_props(out, cur);
-        out->height = outlink->h;
-        out->interlaced_frame = 1;
-        out->top_field_first = 1;
-        out->sample_aspect_ratio = av_mul_q(cur->sample_aspect_ratio, av_make_q(2, 1));
-
-        /* write odd frame lines into the upper field of the new frame */
-        copy_picture_field(tinterlace, out->data, out->linesize,
-                           (const uint8_t **)cur->data, cur->linesize,
-                           inlink->format, inlink->w, inlink->h,
-                           FIELD_UPPER_AND_LOWER, 1, tinterlace->mode == MODE_MERGEX2 ? inlink->frame_count_out & 1 ? FIELD_LOWER : FIELD_UPPER : FIELD_UPPER, tinterlace->flags);
-        /* write even frame lines into the lower field of the new frame */
-        copy_picture_field(tinterlace, out->data, out->linesize,
-                           (const uint8_t **)next->data, next->linesize,
-                           inlink->format, inlink->w, inlink->h,
-                           FIELD_UPPER_AND_LOWER, 1, tinterlace->mode == MODE_MERGEX2 ? inlink->frame_count_out & 1 ? FIELD_UPPER : FIELD_LOWER : FIELD_LOWER, tinterlace->flags);
-        if (tinterlace->mode != MODE_MERGEX2)
-            av_frame_free(&tinterlace->next);
-        break;
-
-    case MODE_DROP_ODD:  /* only output even frames, odd  frames are dropped; height unchanged, half framerate */
-    case MODE_DROP_EVEN: /* only output odd  frames, even frames are dropped; height unchanged, half framerate */
-        out = av_frame_clone(tinterlace->mode == MODE_DROP_EVEN ? cur : next);
-        if (!out)
-            return AVERROR(ENOMEM);
-        av_frame_free(&tinterlace->next);
-        break;
-
-    case MODE_PAD: /* expand each frame to double height, but pad alternate
-                    * lines with black; framerate unchanged */
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out)
-            return AVERROR(ENOMEM);
-        av_frame_copy_props(out, cur);
-        out->height = outlink->h;
-        out->sample_aspect_ratio = av_mul_q(cur->sample_aspect_ratio, av_make_q(2, 1));
-
-        field = (1 + tinterlace->frame) & 1 ? FIELD_UPPER : FIELD_LOWER;
-        /* copy upper and lower fields */
-        copy_picture_field(tinterlace, out->data, out->linesize,
-                           (const uint8_t **)cur->data, cur->linesize,
-                           inlink->format, inlink->w, inlink->h,
-                           FIELD_UPPER_AND_LOWER, 1, field, tinterlace->flags);
-        /* pad with black the other field */
-        copy_picture_field(tinterlace, out->data, out->linesize,
-                           (const uint8_t **)tinterlace->black_data, tinterlace->black_linesize,
-                           inlink->format, inlink->w, inlink->h,
-                           FIELD_UPPER_AND_LOWER, 1, !field, tinterlace->flags);
-        break;
-
-        /* interleave upper/lower lines from odd frames with lower/upper lines from even frames,
-         * halving the frame rate and preserving image height */
-    case MODE_INTERLEAVE_TOP:    /* top    field first */
-    case MODE_INTERLEAVE_BOTTOM: /* bottom field first */
-        if ((tinterlace->flags & TINTERLACE_FLAG_BYPASS_IL) && cur->interlaced_frame) {
-            av_log(ctx, AV_LOG_WARNING,
-                   "video is already interlaced, adjusting framerate only\n");
-            out = av_frame_clone(cur);
-            if (!out)
-                return AVERROR(ENOMEM);
-            out->pts /= 2;  // adjust pts to new framerate
-            ret = ff_filter_frame(outlink, out);
-            return ret;
-        }
-        tff = tinterlace->mode == MODE_INTERLEAVE_TOP;
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out)
-            return AVERROR(ENOMEM);
-        av_frame_copy_props(out, cur);
-        out->interlaced_frame = 1;
-        out->top_field_first = tff;
-
-        /* copy upper/lower field from cur */
-        copy_picture_field(tinterlace, out->data, out->linesize,
-                           (const uint8_t **)cur->data, cur->linesize,
-                           inlink->format, inlink->w, inlink->h,
-                           tff ? FIELD_UPPER : FIELD_LOWER, 1, tff ? FIELD_UPPER : FIELD_LOWER,
-                           tinterlace->flags);
-        /* copy lower/upper field from next */
-        copy_picture_field(tinterlace, out->data, out->linesize,
-                           (const uint8_t **)next->data, next->linesize,
-                           inlink->format, inlink->w, inlink->h,
-                           tff ? FIELD_LOWER : FIELD_UPPER, 1, tff ? FIELD_LOWER : FIELD_UPPER,
-                           tinterlace->flags);
-        av_frame_free(&tinterlace->next);
-        break;
-    case MODE_INTERLACEX2: /* re-interlace preserving image height, double frame rate */
-        /* output current frame first */
-        out = av_frame_clone(cur);
-        if (!out)
-            return AVERROR(ENOMEM);
-        out->interlaced_frame = 1;
-        if (cur->pts != AV_NOPTS_VALUE)
-            out->pts = cur->pts*2;
-
-        out->pts = av_rescale_q(out->pts, tinterlace->preout_time_base, outlink->time_base);
-        if ((ret = ff_filter_frame(outlink, out)) < 0)
-            return ret;
-
-        /* output mix of current and next frame */
-        tff = next->top_field_first;
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out)
-            return AVERROR(ENOMEM);
-        av_frame_copy_props(out, next);
-        out->interlaced_frame = 1;
-        out->top_field_first = !tff;
-
-        if (next->pts != AV_NOPTS_VALUE && cur->pts != AV_NOPTS_VALUE)
-            out->pts = cur->pts + next->pts;
-        else
-            out->pts = AV_NOPTS_VALUE;
-        /* write current frame second field lines into the second field of the new frame */
-        copy_picture_field(tinterlace, out->data, out->linesize,
-                           (const uint8_t **)cur->data, cur->linesize,
-                           inlink->format, inlink->w, inlink->h,
-                           tff ? FIELD_LOWER : FIELD_UPPER, 1, tff ? FIELD_LOWER : FIELD_UPPER,
-                           tinterlace->flags);
-        /* write next frame first field lines into the first field of the new frame */
-        copy_picture_field(tinterlace, out->data, out->linesize,
-                           (const uint8_t **)next->data, next->linesize,
-                           inlink->format, inlink->w, inlink->h,
-                           tff ? FIELD_UPPER : FIELD_LOWER, 1, tff ? FIELD_UPPER : FIELD_LOWER,
-                           tinterlace->flags);
-        break;
-    default:
-        av_assert0(0);
-    }
-
-    out->pts = av_rescale_q(out->pts, tinterlace->preout_time_base, outlink->time_base);
-    ret = ff_filter_frame(outlink, out);
-    tinterlace->frame++;
-
-    return ret;
-}
-
-static int init_interlace(AVFilterContext *ctx)
-{
-    TInterlaceContext *tinterlace = ctx->priv;
-
-    if (tinterlace->mode <= MODE_BFF)
-        tinterlace->mode += MODE_INTERLEAVE_TOP;
-
-    tinterlace->flags |= TINTERLACE_FLAG_BYPASS_IL;
-    if (tinterlace->lowpass == VLPF_LIN)
-        tinterlace->flags |= TINTERLACE_FLAG_VLPF;
-    if (tinterlace->lowpass == VLPF_CMP)
-        tinterlace->flags |= TINTERLACE_FLAG_CVLPF;
-
-    return 0;
-}
-
-static const AVFilterPad tinterlace_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad tinterlace_outputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_out_props,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_tinterlace = {
-    .name          = "tinterlace",
-    .description   = NULL_IF_CONFIG_SMALL("Perform temporal field interlacing."),
-    .priv_size     = sizeof(TInterlaceContext),
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = tinterlace_inputs,
-    .outputs       = tinterlace_outputs,
-    .priv_class    = &tinterlace_class,
-};
-
-
-AVFilter ff_vf_interlace = {
-    .name          = "interlace",
-    .description   = NULL_IF_CONFIG_SMALL("Convert progressive video into interlaced."),
-    .priv_size     = sizeof(TInterlaceContext),
-    .init          = init_interlace,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = tinterlace_inputs,
-    .outputs       = tinterlace_outputs,
-    .priv_class    = &interlace_class,
-};
diff --git a/libavfilter/vf_uspp.c b/libavfilter/vf_uspp.c
deleted file mode 100644
index da4029f..0000000
--- a/libavfilter/vf_uspp.c
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (c) 2014 Arwa Arif <arwaarif1994@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * Ultra Slow/Simple Post-processing filter.
- *
- * Originally written by Michael Niedermayer for the MPlayer project, and
- * ported by Arwa Arif for FFmpeg.
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/opt.h"
-#include "libavutil/pixdesc.h"
-#include "internal.h"
-#include "avfilter.h"
-
-#define MAX_LEVEL 8 /* quality levels */
-#define BLOCK 16
-
-typedef struct USPPContext {
-    const AVClass *av_class;
-    int log2_count;
-    int hsub, vsub;
-    int qp;
-    int qscale_type;
-    int temp_stride[3];
-    uint8_t *src[3];
-    uint16_t *temp[3];
-    int outbuf_size;
-    uint8_t *outbuf;
-    AVCodecContext *avctx_enc[BLOCK*BLOCK];
-    AVFrame *frame;
-    AVFrame *frame_dec;
-    uint8_t *non_b_qp_table;
-    int non_b_qp_alloc_size;
-    int use_bframe_qp;
-} USPPContext;
-
-#define OFFSET(x) offsetof(USPPContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-static const AVOption uspp_options[] = {
-    { "quality",       "set quality",                          OFFSET(log2_count),    AV_OPT_TYPE_INT, {.i64 = 3}, 0, MAX_LEVEL, FLAGS },
-    { "qp",            "force a constant quantizer parameter", OFFSET(qp),            AV_OPT_TYPE_INT, {.i64 = 0}, 0, 63,        FLAGS },
-    { "use_bframe_qp", "use B-frames' QP",                     OFFSET(use_bframe_qp), AV_OPT_TYPE_BOOL,{.i64 = 0}, 0, 1,         FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(uspp);
-
-DECLARE_ALIGNED(8, static const uint8_t, dither)[8][8] = {
-    {  0*4,  48*4,  12*4,  60*4,   3*4,  51*4,  15*4,  63*4, },
-    { 32*4,  16*4,  44*4,  28*4,  35*4,  19*4,  47*4,  31*4, },
-    {  8*4,  56*4,   4*4,  52*4,  11*4,  59*4,   7*4,  55*4, },
-    { 40*4,  24*4,  36*4,  20*4,  43*4,  27*4,  39*4,  23*4, },
-    {  2*4,  50*4,  14*4,  62*4,   1*4,  49*4,  13*4,  61*4, },
-    { 34*4,  18*4,  46*4,  30*4,  33*4,  17*4,  45*4,  29*4, },
-    { 10*4,  58*4,   6*4,  54*4,   9*4,  57*4,   5*4,  53*4, },
-    { 42*4,  26*4,  38*4,  22*4,  41*4,  25*4,  37*4,  21*4, },
-};
-
-static const uint8_t offset[511][2] = {
-    { 0, 0},
-    { 0, 0}, { 8, 8},                                                              // quality 1
-    { 0, 0}, { 4, 4}, {12, 8}, { 8,12},                                            // quality 2
-    { 0, 0}, {10, 2}, { 4, 4}, {14, 6}, { 8, 8}, { 2,10}, {12,12}, { 6,14},        // quality 3
-
-    { 0, 0}, {10, 2}, { 4, 4}, {14, 6}, { 8, 8}, { 2,10}, {12,12}, { 6,14},
-    { 5, 1}, {15, 3}, { 9, 5}, { 3, 7}, {13, 9}, { 7,11}, { 1,13}, {11,15},        // quality 4
-
-    { 0, 0}, { 8, 0}, { 0, 8}, { 8, 8}, { 5, 1}, {13, 1}, { 5, 9}, {13, 9},
-    { 2, 2}, {10, 2}, { 2,10}, {10,10}, { 7, 3}, {15, 3}, { 7,11}, {15,11},
-    { 4, 4}, {12, 4}, { 4,12}, {12,12}, { 1, 5}, { 9, 5}, { 1,13}, { 9,13},
-    { 6, 6}, {14, 6}, { 6,14}, {14,14}, { 3, 7}, {11, 7}, { 3,15}, {11,15},        // quality 5
-
-    { 0, 0}, { 8, 0}, { 0, 8}, { 8, 8}, { 4, 0}, {12, 0}, { 4, 8}, {12, 8},
-    { 1, 1}, { 9, 1}, { 1, 9}, { 9, 9}, { 5, 1}, {13, 1}, { 5, 9}, {13, 9},
-    { 3, 2}, {11, 2}, { 3,10}, {11,10}, { 7, 2}, {15, 2}, { 7,10}, {15,10},
-    { 2, 3}, {10, 3}, { 2,11}, {10,11}, { 6, 3}, {14, 3}, { 6,11}, {14,11},
-    { 0, 4}, { 8, 4}, { 0,12}, { 8,12}, { 4, 4}, {12, 4}, { 4,12}, {12,12},
-    { 1, 5}, { 9, 5}, { 1,13}, { 9,13}, { 5, 5}, {13, 5}, { 5,13}, {13,13},
-    { 3, 6}, {11, 6}, { 3,14}, {11,14}, { 7, 6}, {15, 6}, { 7,14}, {15,14},
-    { 2, 7}, {10, 7}, { 2,15}, {10,15}, { 6, 7}, {14, 7}, { 6,15}, {14,15},        // quality 6
-
-    { 0, 0}, { 8, 0}, { 0, 8}, { 8, 8}, { 0, 2}, { 8, 2}, { 0,10}, { 8,10},
-    { 0, 4}, { 8, 4}, { 0,12}, { 8,12}, { 0, 6}, { 8, 6}, { 0,14}, { 8,14},
-    { 1, 1}, { 9, 1}, { 1, 9}, { 9, 9}, { 1, 3}, { 9, 3}, { 1,11}, { 9,11},
-    { 1, 5}, { 9, 5}, { 1,13}, { 9,13}, { 1, 7}, { 9, 7}, { 1,15}, { 9,15},
-    { 2, 0}, {10, 0}, { 2, 8}, {10, 8}, { 2, 2}, {10, 2}, { 2,10}, {10,10},
-    { 2, 4}, {10, 4}, { 2,12}, {10,12}, { 2, 6}, {10, 6}, { 2,14}, {10,14},
-    { 3, 1}, {11, 1}, { 3, 9}, {11, 9}, { 3, 3}, {11, 3}, { 3,11}, {11,11},
-    { 3, 5}, {11, 5}, { 3,13}, {11,13}, { 3, 7}, {11, 7}, { 3,15}, {11,15},
-    { 4, 0}, {12, 0}, { 4, 8}, {12, 8}, { 4, 2}, {12, 2}, { 4,10}, {12,10},
-    { 4, 4}, {12, 4}, { 4,12}, {12,12}, { 4, 6}, {12, 6}, { 4,14}, {12,14},
-    { 5, 1}, {13, 1}, { 5, 9}, {13, 9}, { 5, 3}, {13, 3}, { 5,11}, {13,11},
-    { 5, 5}, {13, 5}, { 5,13}, {13,13}, { 5, 7}, {13, 7}, { 5,15}, {13,15},
-    { 6, 0}, {14, 0}, { 6, 8}, {14, 8}, { 6, 2}, {14, 2}, { 6,10}, {14,10},
-    { 6, 4}, {14, 4}, { 6,12}, {14,12}, { 6, 6}, {14, 6}, { 6,14}, {14,14},
-    { 7, 1}, {15, 1}, { 7, 9}, {15, 9}, { 7, 3}, {15, 3}, { 7,11}, {15,11},
-    { 7, 5}, {15, 5}, { 7,13}, {15,13}, { 7, 7}, {15, 7}, { 7,15}, {15,15},        // quality 7
-
-    { 0, 0}, { 8, 0}, { 0, 8}, { 8, 8}, { 4, 4}, {12, 4}, { 4,12}, {12,12},
-    { 0, 4}, { 8, 4}, { 0,12}, { 8,12}, { 4, 0}, {12, 0}, { 4, 8}, {12, 8},
-    { 2, 2}, {10, 2}, { 2,10}, {10,10}, { 6, 6}, {14, 6}, { 6,14}, {14,14},
-    { 2, 6}, {10, 6}, { 2,14}, {10,14}, { 6, 2}, {14, 2}, { 6,10}, {14,10},
-    { 0, 2}, { 8, 2}, { 0,10}, { 8,10}, { 4, 6}, {12, 6}, { 4,14}, {12,14},
-    { 0, 6}, { 8, 6}, { 0,14}, { 8,14}, { 4, 2}, {12, 2}, { 4,10}, {12,10},
-    { 2, 0}, {10, 0}, { 2, 8}, {10, 8}, { 6, 4}, {14, 4}, { 6,12}, {14,12},
-    { 2, 4}, {10, 4}, { 2,12}, {10,12}, { 6, 0}, {14, 0}, { 6, 8}, {14, 8},
-    { 1, 1}, { 9, 1}, { 1, 9}, { 9, 9}, { 5, 5}, {13, 5}, { 5,13}, {13,13},
-    { 1, 5}, { 9, 5}, { 1,13}, { 9,13}, { 5, 1}, {13, 1}, { 5, 9}, {13, 9},
-    { 3, 3}, {11, 3}, { 3,11}, {11,11}, { 7, 7}, {15, 7}, { 7,15}, {15,15},
-    { 3, 7}, {11, 7}, { 3,15}, {11,15}, { 7, 3}, {15, 3}, { 7,11}, {15,11},
-    { 1, 3}, { 9, 3}, { 1,11}, { 9,11}, { 5, 7}, {13, 7}, { 5,15}, {13,15},
-    { 1, 7}, { 9, 7}, { 1,15}, { 9,15}, { 5, 3}, {13, 3}, { 5,11}, {13,11},        // quality 8
-    { 3, 1}, {11, 1}, { 3, 9}, {11, 9}, { 7, 5}, {15, 5}, { 7,13}, {15,13},
-    { 3, 5}, {11, 5}, { 3,13}, {11,13}, { 7, 1}, {15, 1}, { 7, 9}, {15, 9},
-    { 0, 1}, { 8, 1}, { 0, 9}, { 8, 9}, { 4, 5}, {12, 5}, { 4,13}, {12,13},
-    { 0, 5}, { 8, 5}, { 0,13}, { 8,13}, { 4, 1}, {12, 1}, { 4, 9}, {12, 9},
-    { 2, 3}, {10, 3}, { 2,11}, {10,11}, { 6, 7}, {14, 7}, { 6,15}, {14,15},
-    { 2, 7}, {10, 7}, { 2,15}, {10,15}, { 6, 3}, {14, 3}, { 6,11}, {14,11},
-    { 0, 3}, { 8, 3}, { 0,11}, { 8,11}, { 4, 7}, {12, 7}, { 4,15}, {12,15},
-    { 0, 7}, { 8, 7}, { 0,15}, { 8,15}, { 4, 3}, {12, 3}, { 4,11}, {12,11},
-    { 2, 1}, {10, 1}, { 2, 9}, {10, 9}, { 6, 5}, {14, 5}, { 6,13}, {14,13},
-    { 2, 5}, {10, 5}, { 2,13}, {10,13}, { 6, 1}, {14, 1}, { 6, 9}, {14, 9},
-    { 1, 0}, { 9, 0}, { 1, 8}, { 9, 8}, { 5, 4}, {13, 4}, { 5,12}, {13,12},
-    { 1, 4}, { 9, 4}, { 1,12}, { 9,12}, { 5, 0}, {13, 0}, { 5, 8}, {13, 8},
-    { 3, 2}, {11, 2}, { 3,10}, {11,10}, { 7, 6}, {15, 6}, { 7,14}, {15,14},
-    { 3, 6}, {11, 6}, { 3,14}, {11,14}, { 7, 2}, {15, 2}, { 7,10}, {15,10},
-    { 1, 2}, { 9, 2}, { 1,10}, { 9,10}, { 5, 6}, {13, 6}, { 5,14}, {13,14},
-    { 1, 6}, { 9, 6}, { 1,14}, { 9,14}, { 5, 2}, {13, 2}, { 5,10}, {13,10},
-    { 3, 0}, {11, 0}, { 3, 8}, {11, 8}, { 7, 4}, {15, 4}, { 7,12}, {15,12},
-    { 3, 4}, {11, 4}, { 3,12}, {11,12}, { 7, 0}, {15, 0}, { 7, 8}, {15, 8},
-};
-
-static void store_slice_c(uint8_t *dst, const uint16_t *src,
-                          int dst_stride, int src_stride,
-                          int width, int height, int log2_scale)
-{
-    int y, x;
-
-#define STORE(pos) do {                                                     \
-    temp = ((src[x + y * src_stride + pos] << log2_scale) + d[pos]) >> 8;   \
-    if (temp & 0x100) temp = ~(temp >> 31);                                 \
-    dst[x + y * dst_stride + pos] = temp;                                   \
-} while (0)
-
-    for (y = 0; y < height; y++) {
-        const uint8_t *d = dither[y&7];
-        for (x = 0; x < width; x += 8) {
-            int temp;
-            STORE(0);
-            STORE(1);
-            STORE(2);
-            STORE(3);
-            STORE(4);
-            STORE(5);
-            STORE(6);
-            STORE(7);
-        }
-    }
-}
-
-static void filter(USPPContext *p, uint8_t *dst[3], uint8_t *src[3],
-                   int dst_stride[3], int src_stride[3], int width,
-                   int height, uint8_t *qp_store, int qp_stride)
-{
-    int x, y, i, j;
-    const int count = 1<<p->log2_count;
-    int ret;
-
-    for (i = 0; i < 3; i++) {
-        int is_chroma = !!i;
-        int w = AV_CEIL_RSHIFT(width,  is_chroma ? p->hsub : 0);
-        int h = AV_CEIL_RSHIFT(height, is_chroma ? p->vsub : 0);
-        int stride = p->temp_stride[i];
-        int block = BLOCK >> (is_chroma ? p->hsub : 0);
-
-        if (!src[i] || !dst[i])
-            continue;
-        for (y = 0; y < h; y++) {
-            int index = block + block * stride + y * stride;
-
-            memcpy(p->src[i] + index, src[i] + y * src_stride[i], w );
-            for (x = 0; x < block; x++) {
-                p->src[i][index     - x - 1] = p->src[i][index +     x    ];
-                p->src[i][index + w + x    ] = p->src[i][index + w - x - 1];
-            }
-        }
-        for (y = 0; y < block; y++) {
-            memcpy(p->src[i] + (  block-1-y) * stride, p->src[i] + (  y+block  ) * stride, stride);
-            memcpy(p->src[i] + (h+block  +y) * stride, p->src[i] + (h-y+block-1) * stride, stride);
-        }
-
-        p->frame->linesize[i] = stride;
-        memset(p->temp[i], 0, (h + 2 * block) * stride * sizeof(int16_t));
-    }
-
-    if (p->qp)
-        p->frame->quality = p->qp * FF_QP2LAMBDA;
-    else {
-        int qpsum=0;
-        int qpcount = (height>>4) * (height>>4);
-
-        for (y = 0; y < (height>>4); y++) {
-            for (x = 0; x < (width>>4); x++)
-                qpsum += qp_store[x + y * qp_stride];
-        }
-        p->frame->quality = ff_norm_qscale((qpsum + qpcount/2) / qpcount, p->qscale_type) * FF_QP2LAMBDA;
-    }
-//    init per MB qscale stuff FIXME
-    p->frame->height = height + BLOCK;
-    p->frame->width  = width + BLOCK;
-
-    for (i = 0; i < count; i++) {
-        const int x1 = offset[i+count-1][0];
-        const int y1 = offset[i+count-1][1];
-        const int x1c = x1 >> p->hsub;
-        const int y1c = y1 >> p->vsub;
-        const int BLOCKc = BLOCK >> p->hsub;
-        int offset;
-        AVPacket pkt = {0};
-        int got_pkt_ptr;
-
-        av_init_packet(&pkt);
-        pkt.data = p->outbuf;
-        pkt.size = p->outbuf_size;
-
-        p->frame->data[0] = p->src[0] + x1   + y1   * p->frame->linesize[0];
-        p->frame->data[1] = p->src[1] + x1c  + y1c  * p->frame->linesize[1];
-        p->frame->data[2] = p->src[2] + x1c  + y1c  * p->frame->linesize[2];
-        p->frame->format  = p->avctx_enc[i]->pix_fmt;
-
-        ret = avcodec_encode_video2(p->avctx_enc[i], &pkt, p->frame, &got_pkt_ptr);
-        if (ret < 0) {
-            av_log(p->avctx_enc[i], AV_LOG_ERROR, "Encoding failed\n");
-            continue;
-        }
-
-        p->frame_dec = p->avctx_enc[i]->coded_frame;
-
-        offset = (BLOCK-x1) + (BLOCK-y1) * p->frame_dec->linesize[0];
-
-        for (y = 0; y < height; y++)
-            for (x = 0; x < width; x++)
-                p->temp[0][x + y * p->temp_stride[0]] += p->frame_dec->data[0][x + y * p->frame_dec->linesize[0] + offset];
-
-        if (!src[2] || !dst[2])
-            continue;
-
-        offset = (BLOCKc-x1c) + (BLOCKc-y1c) * p->frame_dec->linesize[1];
-
-        for (y = 0; y < AV_CEIL_RSHIFT(height, p->vsub); y++) {
-            for (x = 0; x < AV_CEIL_RSHIFT(width, p->hsub); x++) {
-                p->temp[1][x + y * p->temp_stride[1]] += p->frame_dec->data[1][x + y * p->frame_dec->linesize[1] + offset];
-                p->temp[2][x + y * p->temp_stride[2]] += p->frame_dec->data[2][x + y * p->frame_dec->linesize[2] + offset];
-            }
-        }
-    }
-
-    for (j = 0; j < 3; j++) {
-        int is_chroma = !!j;
-        if (!dst[j])
-            continue;
-        store_slice_c(dst[j], p->temp[j], dst_stride[j], p->temp_stride[j],
-                      AV_CEIL_RSHIFT(width,  is_chroma ? p->hsub : 0),
-                      AV_CEIL_RSHIFT(height, is_chroma ? p->vsub : 0),
-                      8-p->log2_count);
-    }
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUV420P,
-        AV_PIX_FMT_YUV410P,
-        AV_PIX_FMT_YUVJ444P,
-        AV_PIX_FMT_YUVJ420P,
-        AV_PIX_FMT_GRAY8,
-        AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-
-    AVFilterContext *ctx = inlink->dst;
-    USPPContext *uspp = ctx->priv;
-    const int height = inlink->h;
-    const int width  = inlink->w;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int i;
-
-    AVCodec *enc = avcodec_find_encoder(AV_CODEC_ID_SNOW);
-    if (!enc) {
-        av_log(ctx, AV_LOG_ERROR, "SNOW encoder not found.\n");
-        return AVERROR(EINVAL);
-    }
-
-    uspp->hsub = desc->log2_chroma_w;
-    uspp->vsub = desc->log2_chroma_h;
-
-    for (i = 0; i < 3; i++) {
-        int is_chroma = !!i;
-        int w = (width  + 4 * BLOCK-1) & (~(2 * BLOCK-1));
-        int h = (height + 4 * BLOCK-1) & (~(2 * BLOCK-1));
-
-        if (is_chroma) {
-            w = AV_CEIL_RSHIFT(w, uspp->hsub);
-            h = AV_CEIL_RSHIFT(h, uspp->vsub);
-        }
-
-        uspp->temp_stride[i] = w;
-        if (!(uspp->temp[i] = av_malloc_array(uspp->temp_stride[i], h * sizeof(int16_t))))
-            return AVERROR(ENOMEM);
-        if (!(uspp->src [i] = av_malloc_array(uspp->temp_stride[i], h * sizeof(uint8_t))))
-            return AVERROR(ENOMEM);
-    }
-
-    for (i = 0; i < (1<<uspp->log2_count); i++) {
-        AVCodecContext *avctx_enc;
-        AVDictionary *opts = NULL;
-        int ret;
-
-        if (!(uspp->avctx_enc[i] = avcodec_alloc_context3(NULL)))
-            return AVERROR(ENOMEM);
-
-        avctx_enc = uspp->avctx_enc[i];
-        avctx_enc->width = width + BLOCK;
-        avctx_enc->height = height + BLOCK;
-        avctx_enc->time_base = (AVRational){1,25};  // meaningless
-        avctx_enc->gop_size = INT_MAX;
-        avctx_enc->max_b_frames = 0;
-        avctx_enc->pix_fmt = inlink->format;
-        avctx_enc->flags = AV_CODEC_FLAG_QSCALE | AV_CODEC_FLAG_LOW_DELAY;
-        avctx_enc->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
-        avctx_enc->global_quality = 123;
-        av_dict_set(&opts, "no_bitstream", "1", 0);
-        ret = avcodec_open2(avctx_enc, enc, &opts);
-        if (ret < 0)
-            return ret;
-        av_dict_free(&opts);
-        av_assert0(avctx_enc->codec);
-    }
-
-    uspp->outbuf_size = (width + BLOCK) * (height + BLOCK) * 10;
-    if (!(uspp->frame = av_frame_alloc()))
-        return AVERROR(ENOMEM);
-    if (!(uspp->outbuf = av_malloc(uspp->outbuf_size)))
-        return AVERROR(ENOMEM);
-
-    return 0;
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx = inlink->dst;
-    USPPContext *uspp = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *out = in;
-
-    int qp_stride = 0;
-    uint8_t *qp_table = NULL;
-
-    /* if we are not in a constant user quantizer mode and we don't want to use
-     * the quantizers from the B-frames (B-frames often have a higher QP), we
-     * need to save the qp table from the last non B-frame; this is what the
-     * following code block does */
-    if (!uspp->qp) {
-        qp_table = av_frame_get_qp_table(in, &qp_stride, &uspp->qscale_type);
-
-        if (qp_table && !uspp->use_bframe_qp && in->pict_type != AV_PICTURE_TYPE_B) {
-            int w, h;
-
-            /* if the qp stride is not set, it means the QP are only defined on
-             * a line basis */
-            if (!qp_stride) {
-                w = AV_CEIL_RSHIFT(inlink->w, 4);
-                h = 1;
-            } else {
-                w = qp_stride;
-                h = AV_CEIL_RSHIFT(inlink->h, 4);
-            }
-
-            if (w * h > uspp->non_b_qp_alloc_size) {
-                int ret = av_reallocp_array(&uspp->non_b_qp_table, w, h);
-                if (ret < 0) {
-                    uspp->non_b_qp_alloc_size = 0;
-                    return ret;
-                }
-                uspp->non_b_qp_alloc_size = w * h;
-            }
-
-            av_assert0(w * h <= uspp->non_b_qp_alloc_size);
-            memcpy(uspp->non_b_qp_table, qp_table, w * h);
-        }
-    }
-
-    if (uspp->log2_count && !ctx->is_disabled) {
-        if (!uspp->use_bframe_qp && uspp->non_b_qp_table)
-            qp_table = uspp->non_b_qp_table;
-
-        if (qp_table || uspp->qp) {
-
-            /* get a new frame if in-place is not possible or if the dimensions
-             * are not multiple of 8 */
-            if (!av_frame_is_writable(in) || (inlink->w & 7) || (inlink->h & 7)) {
-                const int aligned_w = FFALIGN(inlink->w, 8);
-                const int aligned_h = FFALIGN(inlink->h, 8);
-
-                out = ff_get_video_buffer(outlink, aligned_w, aligned_h);
-                if (!out) {
-                    av_frame_free(&in);
-                    return AVERROR(ENOMEM);
-                }
-                av_frame_copy_props(out, in);
-                out->width  = in->width;
-                out->height = in->height;
-            }
-
-            filter(uspp, out->data, in->data, out->linesize, in->linesize,
-                   inlink->w, inlink->h, qp_table, qp_stride);
-        }
-    }
-
-    if (in != out) {
-        if (in->data[3])
-            av_image_copy_plane(out->data[3], out->linesize[3],
-                                in ->data[3], in ->linesize[3],
-                                inlink->w, inlink->h);
-        av_frame_free(&in);
-    }
-    return ff_filter_frame(outlink, out);
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    USPPContext *uspp = ctx->priv;
-    int i;
-
-    for (i = 0; i < 3; i++) {
-        av_freep(&uspp->temp[i]);
-        av_freep(&uspp->src[i]);
-    }
-
-    for (i = 0; i < (1 << uspp->log2_count); i++) {
-        avcodec_close(uspp->avctx_enc[i]);
-        av_freep(&uspp->avctx_enc[i]);
-    }
-
-    av_freep(&uspp->non_b_qp_table);
-    av_freep(&uspp->outbuf);
-    av_frame_free(&uspp->frame);
-}
-
-static const AVFilterPad uspp_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-static const AVFilterPad uspp_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO,
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_uspp = {
-    .name            = "uspp",
-    .description     = NULL_IF_CONFIG_SMALL("Apply Ultra Simple / Slow Post-processing filter."),
-    .priv_size       = sizeof(USPPContext),
-    .uninit          = uninit,
-    .query_formats   = query_formats,
-    .inputs          = uspp_inputs,
-    .outputs         = uspp_outputs,
-    .priv_class      = &uspp_class,
-    .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
-};
diff --git a/libavfilter/vf_vaguedenoiser.c b/libavfilter/vf_vaguedenoiser.c
deleted file mode 100644
index 023bd5d..0000000
--- a/libavfilter/vf_vaguedenoiser.c
+++ /dev/null
@@ -1,590 +0,0 @@
-/*
- * Copyright (c) 2003 LeFunGus, lefungus@altern.org
- *
- * This file is part of FFmpeg
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <float.h>
-
-#include "libavutil/imgutils.h"
-#include "libavutil/attributes.h"
-#include "libavutil/common.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/intreadwrite.h"
-#include "libavutil/opt.h"
-
-#include "avfilter.h"
-#include "formats.h"
-#include "internal.h"
-#include "video.h"
-
-typedef struct VagueDenoiserContext {
-    const AVClass *class;
-
-    float threshold;
-    float percent;
-    int method;
-    int nsteps;
-    int planes;
-
-    int depth;
-    int bpc;
-    int peak;
-    int nb_planes;
-    int planeheight[4];
-    int planewidth[4];
-
-    float *block;
-    float *in;
-    float *out;
-    float *tmp;
-
-    int hlowsize[4][32];
-    int hhighsize[4][32];
-    int vlowsize[4][32];
-    int vhighsize[4][32];
-
-    void (*thresholding)(float *block, const int width, const int height,
-                         const int stride, const float threshold,
-                         const float percent, const int nsteps);
-} VagueDenoiserContext;
-
-#define OFFSET(x) offsetof(VagueDenoiserContext, x)
-#define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM
-static const AVOption vaguedenoiser_options[] = {
-    { "threshold", "set filtering strength",   OFFSET(threshold), AV_OPT_TYPE_FLOAT, {.dbl=2.},  0,DBL_MAX, FLAGS },
-    { "method",    "set filtering method",     OFFSET(method),    AV_OPT_TYPE_INT,   {.i64=2 },  0, 2,      FLAGS, "method" },
-        { "hard",   "hard thresholding",       0,                 AV_OPT_TYPE_CONST, {.i64=0},   0, 0,      FLAGS, "method" },
-        { "soft",   "soft thresholding",       0,                 AV_OPT_TYPE_CONST, {.i64=1},   0, 0,      FLAGS, "method" },
-        { "garrote", "garotte thresholding",   0,                 AV_OPT_TYPE_CONST, {.i64=2},   0, 0,      FLAGS, "method" },
-    { "nsteps",    "set number of steps",      OFFSET(nsteps),    AV_OPT_TYPE_INT,   {.i64=6 },  1, 32,     FLAGS },
-    { "percent", "set percent of full denoising", OFFSET(percent),AV_OPT_TYPE_FLOAT, {.dbl=85},  0,100,     FLAGS },
-    { "planes",    "set planes to filter",     OFFSET(planes),    AV_OPT_TYPE_INT,   {.i64=15 }, 0, 15,     FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(vaguedenoiser);
-
-#define NPAD 10
-
-static const float analysis_low[9] = {
-    0.037828455506995f, -0.023849465019380f, -0.110624404418423f, 0.377402855612654f,
-    0.852698679009403f, 0.377402855612654f, -0.110624404418423f, -0.023849465019380f, 0.037828455506995f
-};
-
-static const float analysis_high[7] = {
-    -0.064538882628938f, 0.040689417609558f, 0.418092273222212f, -0.788485616405664f,
-    0.418092273222212f, 0.040689417609558f, -0.064538882628938f
-};
-
-static const float synthesis_low[7] = {
-    -0.064538882628938f, -0.040689417609558f, 0.418092273222212f, 0.788485616405664f,
-    0.418092273222212f, -0.040689417609558f, -0.064538882628938f
-};
-
-static const float synthesis_high[9] = {
-    -0.037828455506995f, -0.023849465019380f, 0.110624404418423f, 0.377402855612654f,
-    -0.852698679009403f, 0.377402855612654f, 0.110624404418423f, -0.023849465019380f, -0.037828455506995f
-};
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_GRAY8, AV_PIX_FMT_GRAY9, AV_PIX_FMT_GRAY10,
-        AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_GRAY16,
-        AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P,
-        AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P,
-        AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P,
-        AV_PIX_FMT_YUVJ440P, AV_PIX_FMT_YUVJ444P,
-        AV_PIX_FMT_YUVJ411P,
-        AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV444P9,
-        AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10,
-        AV_PIX_FMT_YUV440P10,
-        AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV420P12,
-        AV_PIX_FMT_YUV440P12,
-        AV_PIX_FMT_YUV444P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV420P14,
-        AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16,
-        AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP10,
-        AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16,
-        AV_PIX_FMT_YUVA420P,  AV_PIX_FMT_YUVA422P,   AV_PIX_FMT_YUVA444P,
-        AV_PIX_FMT_YUVA444P9, AV_PIX_FMT_YUVA444P10, AV_PIX_FMT_YUVA444P12, AV_PIX_FMT_YUVA444P16,
-        AV_PIX_FMT_YUVA422P9, AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA422P12, AV_PIX_FMT_YUVA422P16,
-        AV_PIX_FMT_YUVA420P9, AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUVA420P16,
-        AV_PIX_FMT_GBRAP,     AV_PIX_FMT_GBRAP10,    AV_PIX_FMT_GBRAP12,    AV_PIX_FMT_GBRAP16,
-        AV_PIX_FMT_NONE
-    };
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int config_input(AVFilterLink *inlink)
-{
-    VagueDenoiserContext *s = inlink->dst->priv;
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
-    int p, i, nsteps_width, nsteps_height, nsteps_max;
-
-    s->depth = desc->comp[0].depth;
-    s->bpc = (s->depth + 7) / 8;
-    s->nb_planes = desc->nb_components;
-
-    s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
-    s->planeheight[0] = s->planeheight[3] = inlink->h;
-    s->planewidth[1]  = s->planewidth[2]  = AV_CEIL_RSHIFT(inlink->w, desc->log2_chroma_w);
-    s->planewidth[0]  = s->planewidth[3]  = inlink->w;
-
-    s->block = av_malloc_array(inlink->w * inlink->h, sizeof(*s->block));
-    s->in    = av_malloc_array(32 + FFMAX(inlink->w, inlink->h), sizeof(*s->in));
-    s->out   = av_malloc_array(32 + FFMAX(inlink->w, inlink->h), sizeof(*s->out));
-    s->tmp   = av_malloc_array(32 + FFMAX(inlink->w, inlink->h), sizeof(*s->tmp));
-
-    if (!s->block || !s->in || !s->out || !s->tmp)
-        return AVERROR(ENOMEM);
-
-    s->threshold *= 1 << (s->depth - 8);
-    s->peak = (1 << s->depth) - 1;
-
-    nsteps_width  = ((s->planes & 2 || s->planes & 4) && s->nb_planes > 1) ? s->planewidth[1] : s->planewidth[0];
-    nsteps_height = ((s->planes & 2 || s->planes & 4) && s->nb_planes > 1) ? s->planeheight[1] : s->planeheight[0];
-
-    for (nsteps_max = 1; nsteps_max < 15; nsteps_max++) {
-        if (pow(2, nsteps_max) >= nsteps_width || pow(2, nsteps_max) >= nsteps_height)
-            break;
-    }
-
-    s->nsteps = FFMIN(s->nsteps, nsteps_max - 2);
-
-    for (p = 0; p < 4; p++) {
-        s->hlowsize[p][0]  = (s->planewidth[p] + 1) >> 1;
-        s->hhighsize[p][0] =  s->planewidth[p] >> 1;
-        s->vlowsize[p][0]  = (s->planeheight[p] + 1) >> 1;
-        s->vhighsize[p][0] =  s->planeheight[p] >> 1;
-
-        for (i = 1; i < s->nsteps; i++) {
-            s->hlowsize[p][i]  = (s->hlowsize[p][i - 1] + 1) >> 1;
-            s->hhighsize[p][i] =  s->hlowsize[p][i - 1] >> 1;
-            s->vlowsize[p][i]  = (s->vlowsize[p][i - 1] + 1) >> 1;
-            s->vhighsize[p][i] =  s->vlowsize[p][i - 1] >> 1;
-        }
-    }
-
-    return 0;
-}
-
-static inline void copy(const float *p1, float *p2, const int length)
-{
-    memcpy(p2, p1, length * sizeof(float));
-}
-
-static inline void copyv(const float *p1, const int stride1, float *p2, const int length)
-{
-    int i;
-
-    for (i = 0; i < length; i++) {
-        p2[i] = *p1;
-        p1 += stride1;
-    }
-}
-
-static inline void copyh(const float *p1, float *p2, const int stride2, const int length)
-{
-    int i;
-
-    for (i = 0; i < length; i++) {
-        *p2 = p1[i];
-        p2 += stride2;
-    }
-}
-
-// Do symmetric extension of data using prescribed symmetries
-// Original values are in output[npad] through output[npad+size-1]
-// New values will be placed in output[0] through output[npad] and in output[npad+size] through output[2*npad+size-1] (note: end values may not be filled in)
-// extension at left bdry is ... 3 2 1 0 | 0 1 2 3 ...
-// same for right boundary
-// if right_ext=1 then ... 3 2 1 0 | 1 2 3
-static void symmetric_extension(float *output, const int size, const int left_ext, const int right_ext)
-{
-    int first = NPAD;
-    int last = NPAD - 1 + size;
-    const int originalLast = last;
-    int i, nextend, idx;
-
-    if (left_ext == 2)
-        output[--first] = output[NPAD];
-    if (right_ext == 2)
-        output[++last] = output[originalLast];
-
-    // extend left end
-    nextend = first;
-    for (i = 0; i < nextend; i++)
-        output[--first] = output[NPAD + 1 + i];
-
-    idx = NPAD + NPAD - 1 + size;
-
-    // extend right end
-    nextend = idx - last;
-    for (i = 0; i < nextend; i++)
-        output[++last] = output[originalLast - 1 - i];
-}
-
-static void transform_step(float *input, float *output, const int size, const int low_size, VagueDenoiserContext *s)
-{
-    int i;
-
-    symmetric_extension(input, size, 1, 1);
-
-    for (i = NPAD; i < NPAD + low_size; i++) {
-        const float a = input[2 * i - 14] * analysis_low[0];
-        const float b = input[2 * i - 13] * analysis_low[1];
-        const float c = input[2 * i - 12] * analysis_low[2];
-        const float d = input[2 * i - 11] * analysis_low[3];
-        const float e = input[2 * i - 10] * analysis_low[4];
-        const float f = input[2 * i -  9] * analysis_low[3];
-        const float g = input[2 * i -  8] * analysis_low[2];
-        const float h = input[2 * i -  7] * analysis_low[1];
-        const float k = input[2 * i -  6] * analysis_low[0];
-
-        output[i] = a + b + c + d + e + f + g + h + k;
-    }
-
-    for (i = NPAD; i < NPAD + low_size; i++) {
-        const float a = input[2 * i - 12] * analysis_high[0];
-        const float b = input[2 * i - 11] * analysis_high[1];
-        const float c = input[2 * i - 10] * analysis_high[2];
-        const float d = input[2 * i -  9] * analysis_high[3];
-        const float e = input[2 * i -  8] * analysis_high[2];
-        const float f = input[2 * i -  7] * analysis_high[1];
-        const float g = input[2 * i -  6] * analysis_high[0];
-
-        output[i + low_size] = a + b + c + d + e + f + g;
-    }
-}
-
-static void invert_step(const float *input, float *output, float *temp, const int size, VagueDenoiserContext *s)
-{
-    const int low_size = (size + 1) >> 1;
-    const int high_size = size >> 1;
-    int left_ext = 1, right_ext, i;
-    int findex;
-
-    memcpy(temp + NPAD, input + NPAD, low_size * sizeof(float));
-
-    right_ext = (size % 2 == 0) ? 2 : 1;
-    symmetric_extension(temp, low_size, left_ext, right_ext);
-
-    memset(output, 0, (NPAD + NPAD + size) * sizeof(float));
-    findex = (size + 2) >> 1;
-
-    for (i = 9; i < findex + 11; i++) {
-        const float a = temp[i] * synthesis_low[0];
-        const float b = temp[i] * synthesis_low[1];
-        const float c = temp[i] * synthesis_low[2];
-        const float d = temp[i] * synthesis_low[3];
-
-        output[2 * i - 13] += a;
-        output[2 * i - 12] += b;
-        output[2 * i - 11] += c;
-        output[2 * i - 10] += d;
-        output[2 * i -  9] += c;
-        output[2 * i -  8] += b;
-        output[2 * i -  7] += a;
-    }
-
-    memcpy(temp + NPAD, input + NPAD + low_size, high_size * sizeof(float));
-
-    left_ext = 2;
-    right_ext = (size % 2 == 0) ? 1 : 2;
-    symmetric_extension(temp, high_size, left_ext, right_ext);
-
-    for (i = 8; i < findex + 11; i++) {
-        const float a = temp[i] * synthesis_high[0];
-        const float b = temp[i] * synthesis_high[1];
-        const float c = temp[i] * synthesis_high[2];
-        const float d = temp[i] * synthesis_high[3];
-        const float e = temp[i] * synthesis_high[4];
-
-        output[2 * i - 13] += a;
-        output[2 * i - 12] += b;
-        output[2 * i - 11] += c;
-        output[2 * i - 10] += d;
-        output[2 * i -  9] += e;
-        output[2 * i -  8] += d;
-        output[2 * i -  7] += c;
-        output[2 * i -  6] += b;
-        output[2 * i -  5] += a;
-    }
-}
-
-static void hard_thresholding(float *block, const int width, const int height,
-                              const int stride, const float threshold,
-                              const float percent, const int unused)
-{
-    const float frac = 1.f - percent * 0.01f;
-    int y, x;
-
-    for (y = 0; y < height; y++) {
-        for (x = 0; x < width; x++) {
-            if (FFABS(block[x]) <= threshold)
-                block[x] *= frac;
-        }
-        block += stride;
-    }
-}
-
-static void soft_thresholding(float *block, const int width, const int height, const int stride,
-                              const float threshold, const float percent, const int nsteps)
-{
-    const float frac = 1.f - percent * 0.01f;
-    const float shift = threshold * 0.01f * percent;
-    int w = width;
-    int h = height;
-    int y, x, l;
-
-    for (l = 0; l < nsteps; l++) {
-        w = (w + 1) >> 1;
-        h = (h + 1) >> 1;
-    }
-
-    for (y = 0; y < height; y++) {
-        const int x0 = (y < h) ? w : 0;
-        for (x = x0; x < width; x++) {
-            const float temp = FFABS(block[x]);
-            if (temp <= threshold)
-                block[x] *= frac;
-            else
-                block[x] = (block[x] < 0.f ? -1.f : (block[x] > 0.f ? 1.f : 0.f)) * (temp - shift);
-        }
-        block += stride;
-    }
-}
-
-static void qian_thresholding(float *block, const int width, const int height,
-                              const int stride, const float threshold,
-                              const float percent, const int unused)
-{
-    const float percent01 = percent * 0.01f;
-    const float tr2 = threshold * threshold * percent01;
-    const float frac = 1.f - percent01;
-    int y, x;
-
-    for (y = 0; y < height; y++) {
-        for (x = 0; x < width; x++) {
-            const float temp = FFABS(block[x]);
-            if (temp <= threshold) {
-                block[x] *= frac;
-            } else {
-                const float tp2 = temp * temp;
-                block[x] *= (tp2 - tr2) / tp2;
-            }
-        }
-        block += stride;
-    }
-}
-
-static void filter(VagueDenoiserContext *s, AVFrame *in, AVFrame *out)
-{
-    int p, y, x, i, j;
-
-    for (p = 0; p < s->nb_planes; p++) {
-        const int height = s->planeheight[p];
-        const int width = s->planewidth[p];
-        const uint8_t *srcp8 = in->data[p];
-        const uint16_t *srcp16 = (const uint16_t *)in->data[p];
-        uint8_t *dstp8 = out->data[p];
-        uint16_t *dstp16 = (uint16_t *)out->data[p];
-        float *output = s->block;
-        int h_low_size0 = width;
-        int v_low_size0 = height;
-        int nsteps_transform = s->nsteps;
-        int nsteps_invert = s->nsteps;
-        const float *input = s->block;
-
-        if (!((1 << p) & s->planes)) {
-            av_image_copy_plane(out->data[p], out->linesize[p], in->data[p], in->linesize[p],
-                                s->planewidth[p] * s->bpc, s->planeheight[p]);
-            continue;
-        }
-
-        if (s->depth <= 8) {
-            for (y = 0; y < height; y++) {
-                for (x = 0; x < width; x++)
-                    output[x] = srcp8[x];
-                srcp8 += in->linesize[p];
-                output += width;
-            }
-        } else {
-            for (y = 0; y < height; y++) {
-                for (x = 0; x < width; x++)
-                    output[x] = srcp16[x];
-                srcp16 += in->linesize[p] / 2;
-                output += width;
-            }
-        }
-
-        while (nsteps_transform--) {
-            int low_size = (h_low_size0 + 1) >> 1;
-            float *input = s->block;
-            for (j = 0; j < v_low_size0; j++) {
-                copy(input, s->in + NPAD, h_low_size0);
-                transform_step(s->in, s->out, h_low_size0, low_size, s);
-                copy(s->out + NPAD, input, h_low_size0);
-                input += width;
-            }
-
-            low_size = (v_low_size0 + 1) >> 1;
-            input = s->block;
-            for (j = 0; j < h_low_size0; j++) {
-                copyv(input, width, s->in + NPAD, v_low_size0);
-                transform_step(s->in, s->out, v_low_size0, low_size, s);
-                copyh(s->out + NPAD, input, width, v_low_size0);
-                input++;
-            }
-
-            h_low_size0 = (h_low_size0 + 1) >> 1;
-            v_low_size0 = (v_low_size0 + 1) >> 1;
-        }
-
-        s->thresholding(s->block, width, height, width, s->threshold, s->percent, s->nsteps);
-
-        while (nsteps_invert--) {
-            const int idx = s->vlowsize[p][nsteps_invert]  + s->vhighsize[p][nsteps_invert];
-            const int idx2 = s->hlowsize[p][nsteps_invert] + s->hhighsize[p][nsteps_invert];
-            float * idx3 = s->block;
-            for (i = 0; i < idx2; i++) {
-                copyv(idx3, width, s->in + NPAD, idx);
-                invert_step(s->in, s->out, s->tmp, idx, s);
-                copyh(s->out + NPAD, idx3, width, idx);
-                idx3++;
-            }
-
-            idx3 = s->block;
-            for (i = 0; i < idx; i++) {
-                copy(idx3, s->in + NPAD, idx2);
-                invert_step(s->in, s->out, s->tmp, idx2, s);
-                copy(s->out + NPAD, idx3, idx2);
-                idx3 += width;
-            }
-        }
-
-        if (s->depth <= 8) {
-            for (y = 0; y < height; y++) {
-                for (x = 0; x < width; x++)
-                    dstp8[x] = av_clip_uint8(input[x] + 0.5f);
-                input += width;
-                dstp8 += out->linesize[p];
-            }
-        } else {
-            for (y = 0; y < height; y++) {
-                for (x = 0; x < width; x++)
-                    dstp16[x] = av_clip(input[x] + 0.5f, 0, s->peak);
-                input += width;
-                dstp16 += out->linesize[p] / 2;
-            }
-        }
-    }
-}
-
-static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-{
-    AVFilterContext *ctx  = inlink->dst;
-    VagueDenoiserContext *s = ctx->priv;
-    AVFilterLink *outlink = ctx->outputs[0];
-    AVFrame *out;
-    int direct = av_frame_is_writable(in);
-
-    if (direct) {
-        out = in;
-    } else {
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out) {
-            av_frame_free(&in);
-            return AVERROR(ENOMEM);
-        }
-
-        av_frame_copy_props(out, in);
-    }
-
-    filter(s, in, out);
-
-    if (!direct)
-        av_frame_free(&in);
-
-    return ff_filter_frame(outlink, out);
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    VagueDenoiserContext *s = ctx->priv;
-
-    switch (s->method) {
-    case 0:
-        s->thresholding = hard_thresholding;
-        break;
-    case 1:
-        s->thresholding = soft_thresholding;
-        break;
-    case 2:
-        s->thresholding = qian_thresholding;
-        break;
-    }
-
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    VagueDenoiserContext *s = ctx->priv;
-
-    av_freep(&s->block);
-    av_freep(&s->in);
-    av_freep(&s->out);
-    av_freep(&s->tmp);
-}
-
-static const AVFilterPad vaguedenoiser_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .config_props = config_input,
-        .filter_frame = filter_frame,
-    },
-    { NULL }
-};
-
-
-static const AVFilterPad vaguedenoiser_outputs[] = {
-    {
-        .name = "default",
-        .type = AVMEDIA_TYPE_VIDEO
-    },
-    { NULL }
-};
-
-AVFilter ff_vf_vaguedenoiser = {
-    .name          = "vaguedenoiser",
-    .description   = NULL_IF_CONFIG_SMALL("Apply a Wavelet based Denoiser."),
-    .priv_size     = sizeof(VagueDenoiserContext),
-    .priv_class    = &vaguedenoiser_class,
-    .init          = init,
-    .uninit        = uninit,
-    .query_formats = query_formats,
-    .inputs        = vaguedenoiser_inputs,
-    .outputs       = vaguedenoiser_outputs,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
-};
diff --git a/libavfilter/vsrc_mptestsrc.c b/libavfilter/vsrc_mptestsrc.c
deleted file mode 100644
index 2ea736b..0000000
--- a/libavfilter/vsrc_mptestsrc.c
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/**
- * @file
- * MP test source, ported from MPlayer libmpcodecs/vf_test.c
- */
-
-#include "libavutil/avstring.h"
-#include "libavutil/opt.h"
-#include "libavutil/parseutils.h"
-#include "libavutil/pixdesc.h"
-#include "avfilter.h"
-#include "internal.h"
-#include "formats.h"
-#include "video.h"
-
-#define WIDTH 512
-#define HEIGHT 512
-
-enum test_type {
-    TEST_DC_LUMA,
-    TEST_DC_CHROMA,
-    TEST_FREQ_LUMA,
-    TEST_FREQ_CHROMA,
-    TEST_AMP_LUMA,
-    TEST_AMP_CHROMA,
-    TEST_CBP,
-    TEST_MV,
-    TEST_RING1,
-    TEST_RING2,
-    TEST_ALL,
-    TEST_NB
-};
-
-typedef struct MPTestContext {
-    const AVClass *class;
-    AVRational frame_rate;
-    int64_t pts, max_pts, duration;
-    int64_t max_frames;
-    int hsub, vsub;
-    int test;           ///< test_type
-} MPTestContext;
-
-#define OFFSET(x) offsetof(MPTestContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-static const AVOption mptestsrc_options[]= {
-    { "rate",     "set video rate",     OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, FLAGS },
-    { "r",        "set video rate",     OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, FLAGS },
-    { "duration", "set video duration", OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64 = -1}, -1, INT64_MAX, FLAGS },
-    { "d",        "set video duration", OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64 = -1}, -1, INT64_MAX, FLAGS },
-
-    { "test", "set test to perform", OFFSET(test),  AV_OPT_TYPE_INT,   {.i64=TEST_ALL}, 0, INT_MAX, FLAGS, "test" },
-    { "t",    "set test to perform", OFFSET(test),  AV_OPT_TYPE_INT,   {.i64=TEST_ALL}, 0, INT_MAX, FLAGS, "test" },
-        { "dc_luma",     "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_DC_LUMA},     INT_MIN, INT_MAX, FLAGS, "test" },
-        { "dc_chroma",   "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_DC_CHROMA},   INT_MIN, INT_MAX, FLAGS, "test" },
-        { "freq_luma",   "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_FREQ_LUMA},   INT_MIN, INT_MAX, FLAGS, "test" },
-        { "freq_chroma", "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_FREQ_CHROMA}, INT_MIN, INT_MAX, FLAGS, "test" },
-        { "amp_luma",    "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_AMP_LUMA},    INT_MIN, INT_MAX, FLAGS, "test" },
-        { "amp_chroma",  "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_AMP_CHROMA},  INT_MIN, INT_MAX, FLAGS, "test" },
-        { "cbp",         "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_CBP},         INT_MIN, INT_MAX, FLAGS, "test" },
-        { "mv",          "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_MV},          INT_MIN, INT_MAX, FLAGS, "test" },
-        { "ring1",       "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_RING1},       INT_MIN, INT_MAX, FLAGS, "test" },
-        { "ring2",       "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_RING2},       INT_MIN, INT_MAX, FLAGS, "test" },
-        { "all",         "", 0, AV_OPT_TYPE_CONST, {.i64=TEST_ALL},         INT_MIN, INT_MAX, FLAGS, "test" },
-    { "max_frames", "Set the maximum number of frames generated for each test", OFFSET(max_frames),
-        AV_OPT_TYPE_INT64, {.i64 = 30}, 1, INT64_MAX, FLAGS },
-    { "m",          "Set the maximum number of frames generated for each test", OFFSET(max_frames),
-        AV_OPT_TYPE_INT64, {.i64 = 30}, 1, INT64_MAX, FLAGS },
-    { NULL }
-};
-
-AVFILTER_DEFINE_CLASS(mptestsrc);
-
-static double c[64];
-
-static void init_idct(void)
-{
-    int i, j;
-
-    for (i = 0; i < 8; i++) {
-        double s = i == 0 ? sqrt(0.125) : 0.5;
-
-        for (j = 0; j < 8; j++)
-            c[i*8+j] = s*cos((M_PI/8.0)*i*(j+0.5));
-    }
-}
-
-static void idct(uint8_t *dst, int dst_linesize, int src[64])
-{
-    int i, j, k;
-    double tmp[64];
-
-    for (i = 0; i < 8; i++) {
-        for (j = 0; j < 8; j++) {
-            double sum = 0.0;
-
-            for (k = 0; k < 8; k++)
-                sum += c[k*8+j] * src[8*i+k];
-
-            tmp[8*i+j] = sum;
-        }
-    }
-
-    for (j = 0; j < 8; j++) {
-        for (i = 0; i < 8; i++) {
-            double sum = 0.0;
-
-            for (k = 0; k < 8; k++)
-                sum += c[k*8+i]*tmp[8*k+j];
-
-            dst[dst_linesize*i + j] = av_clip_uint8(lrint(sum));
-        }
-    }
-}
-
-static void draw_dc(uint8_t *dst, int dst_linesize, int color, int w, int h)
-{
-    int x, y;
-
-    for (y = 0; y < h; y++)
-        for (x = 0; x < w; x++)
-            dst[x + y*dst_linesize] = color;
-}
-
-static void draw_basis(uint8_t *dst, int dst_linesize, int amp, int freq, int dc)
-{
-    int src[64];
-
-    memset(src, 0, 64*sizeof(int));
-    src[0] = dc;
-    if (amp)
-        src[freq] = amp;
-    idct(dst, dst_linesize, src);
-}
-
-static void draw_cbp(uint8_t *dst[3], int dst_linesize[3], int cbp, int amp, int dc)
-{
-    if (cbp&1)  draw_basis(dst[0]                    , dst_linesize[0], amp, 1, dc);
-    if (cbp&2)  draw_basis(dst[0]+8                  , dst_linesize[0], amp, 1, dc);
-    if (cbp&4)  draw_basis(dst[0]+  8*dst_linesize[0], dst_linesize[0], amp, 1, dc);
-    if (cbp&8)  draw_basis(dst[0]+8+8*dst_linesize[0], dst_linesize[0], amp, 1, dc);
-    if (cbp&16) draw_basis(dst[1]                    , dst_linesize[1], amp, 1, dc);
-    if (cbp&32) draw_basis(dst[2]                    , dst_linesize[2], amp, 1, dc);
-}
-
-static void dc_test(uint8_t *dst, int dst_linesize, int w, int h, int off)
-{
-    const int step = FFMAX(256/(w*h/256), 1);
-    int x, y, color = off;
-
-    for (y = 0; y < h; y += 16) {
-        for (x = 0; x < w; x += 16) {
-            draw_dc(dst + x + y*dst_linesize, dst_linesize, color, 8, 8);
-            color += step;
-        }
-    }
-}
-
-static void freq_test(uint8_t *dst, int dst_linesize, int off)
-{
-    int x, y, freq = 0;
-
-    for (y = 0; y < 8*16; y += 16) {
-        for (x = 0; x < 8*16; x += 16) {
-            draw_basis(dst + x + y*dst_linesize, dst_linesize, 4*(96+off), freq, 128*8);
-            freq++;
-        }
-    }
-}
-
-static void amp_test(uint8_t *dst, int dst_linesize, int off)
-{
-    int x, y, amp = off;
-
-    for (y = 0; y < 16*16; y += 16) {
-        for (x = 0; x < 16*16; x += 16) {
-            draw_basis(dst + x + y*dst_linesize, dst_linesize, 4*amp, 1, 128*8);
-            amp++;
-        }
-    }
-}
-
-static void cbp_test(uint8_t *dst[3], int dst_linesize[3], int off)
-{
-    int x, y, cbp = 0;
-
-    for (y = 0; y < 16*8; y += 16) {
-        for (x = 0; x < 16*8; x += 16) {
-            uint8_t *dst1[3];
-            dst1[0] = dst[0] + x*2 + y*2*dst_linesize[0];
-            dst1[1] = dst[1] + x   + y*  dst_linesize[1];
-            dst1[2] = dst[2] + x   + y*  dst_linesize[2];
-
-            draw_cbp(dst1, dst_linesize, cbp, (64+off)*4, 128*8);
-            cbp++;
-        }
-    }
-}
-
-static void mv_test(uint8_t *dst, int dst_linesize, int off)
-{
-    int x, y;
-
-    for (y = 0; y < 16*16; y++) {
-        if (y&16)
-            continue;
-        for (x = 0; x < 16*16; x++)
-            dst[x + y*dst_linesize] = x + off*8/(y/32+1);
-    }
-}
-
-static void ring1_test(uint8_t *dst, int dst_linesize, int off)
-{
-    int x, y, color = 0;
-
-    for (y = off; y < 16*16; y += 16) {
-        for (x = off; x < 16*16; x += 16) {
-            draw_dc(dst + x + y*dst_linesize, dst_linesize, ((x+y)&16) ? color : -color, 16, 16);
-            color++;
-        }
-    }
-}
-
-static void ring2_test(uint8_t *dst, int dst_linesize, int off)
-{
-    int x, y;
-
-    for (y = 0; y < 16*16; y++) {
-        for (x = 0; x < 16*16; x++) {
-            double d = hypot(x-8*16, y-8*16);
-            double r = d/20 - (int)(d/20);
-            if (r < off/30.0) {
-                dst[x + y*dst_linesize]     = 255;
-                dst[x + y*dst_linesize+256] = 0;
-            } else {
-                dst[x + y*dst_linesize]     = x;
-                dst[x + y*dst_linesize+256] = x;
-            }
-        }
-    }
-}
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    MPTestContext *test = ctx->priv;
-
-    test->max_pts = test->duration >= 0 ?
-        av_rescale_q(test->duration, AV_TIME_BASE_Q, av_inv_q(test->frame_rate)) : -1;
-    test->pts = 0;
-
-    av_log(ctx, AV_LOG_VERBOSE, "rate:%d/%d duration:%f\n",
-           test->frame_rate.num, test->frame_rate.den,
-           test->duration < 0 ? -1 : test->max_pts * av_q2d(av_inv_q(test->frame_rate)));
-    init_idct();
-
-    return 0;
-}
-
-static int config_props(AVFilterLink *outlink)
-{
-    AVFilterContext *ctx = outlink->src;
-    MPTestContext *test = ctx->priv;
-    const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(outlink->format);
-
-    test->hsub = pix_desc->log2_chroma_w;
-    test->vsub = pix_desc->log2_chroma_h;
-
-    outlink->w = WIDTH;
-    outlink->h = HEIGHT;
-    outlink->time_base = av_inv_q(test->frame_rate);
-
-    return 0;
-}
-
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVPixelFormat pix_fmts[] = {
-        AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE
-    };
-
-    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
-    if (!fmts_list)
-        return AVERROR(ENOMEM);
-    return ff_set_common_formats(ctx, fmts_list);
-}
-
-static int request_frame(AVFilterLink *outlink)
-{
-    MPTestContext *test = outlink->src->priv;
-    AVFrame *picref;
-    int w = WIDTH, h = HEIGHT,
-        cw = AV_CEIL_RSHIFT(w, test->hsub), ch = AV_CEIL_RSHIFT(h, test->vsub);
-    uint64_t frame = outlink->frame_count_in / test->max_frames;
-    uint64_t mod = outlink->frame_count_in % test->max_frames;
-    enum test_type tt = test->test;
-    int i;
-
-    if (test->max_pts >= 0 && test->pts > test->max_pts)
-        return AVERROR_EOF;
-    picref = ff_get_video_buffer(outlink, w, h);
-    if (!picref)
-        return AVERROR(ENOMEM);
-    picref->pts = test->pts++;
-
-    // clean image
-    for (i = 0; i < h; i++)
-        memset(picref->data[0] + i*picref->linesize[0], 0, w);
-    for (i = 0; i < ch; i++) {
-        memset(picref->data[1] + i*picref->linesize[1], 128, cw);
-        memset(picref->data[2] + i*picref->linesize[2], 128, cw);
-    }
-
-    if (tt == TEST_ALL && mod) /* draw a black frame at the beginning of each test */
-        tt = frame%(TEST_NB-1);
-
-    switch (tt) {
-    case TEST_DC_LUMA:       dc_test(picref->data[0], picref->linesize[0], 256, 256, mod); break;
-    case TEST_DC_CHROMA:     dc_test(picref->data[1], picref->linesize[1], 256, 256, mod); break;
-    case TEST_FREQ_LUMA:   freq_test(picref->data[0], picref->linesize[0], mod); break;
-    case TEST_FREQ_CHROMA: freq_test(picref->data[1], picref->linesize[1], mod); break;
-    case TEST_AMP_LUMA:     amp_test(picref->data[0], picref->linesize[0], mod); break;
-    case TEST_AMP_CHROMA:   amp_test(picref->data[1], picref->linesize[1], mod); break;
-    case TEST_CBP:          cbp_test(picref->data   , picref->linesize   , mod); break;
-    case TEST_MV:            mv_test(picref->data[0], picref->linesize[0], mod); break;
-    case TEST_RING1:      ring1_test(picref->data[0], picref->linesize[0], mod); break;
-    case TEST_RING2:      ring2_test(picref->data[0], picref->linesize[0], mod); break;
-    }
-
-    return ff_filter_frame(outlink, picref);
-}
-
-static const AVFilterPad mptestsrc_outputs[] = {
-    {
-        .name          = "default",
-        .type          = AVMEDIA_TYPE_VIDEO,
-        .request_frame = request_frame,
-        .config_props  = config_props,
-    },
-    { NULL }
-};
-
-AVFilter ff_vsrc_mptestsrc = {
-    .name          = "mptestsrc",
-    .description   = NULL_IF_CONFIG_SMALL("Generate various test pattern."),
-    .priv_size     = sizeof(MPTestContext),
-    .priv_class    = &mptestsrc_class,
-    .init          = init,
-    .query_formats = query_formats,
-    .inputs        = NULL,
-    .outputs       = mptestsrc_outputs,
-};
diff --git a/libavfilter/x86/vf_fspp.asm b/libavfilter/x86/vf_fspp.asm
deleted file mode 100644
index c7f8f64..0000000
--- a/libavfilter/x86/vf_fspp.asm
+++ /dev/null
@@ -1,727 +0,0 @@
-;*****************************************************************************
-;* x86-optimized functions for fspp filter
-;*
-;* Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
-;* Copyright (C) 2005 Nikolaj Poroshin <porosh3@psu.ru>
-;*
-;* This file is part of FFmpeg.
-;*
-;* FFmpeg is free software; you can redistribute it and/or modify
-;* it under the terms of the GNU General Public License as published by
-;* the Free Software Foundation; either version 2 of the License, or
-;* (at your option) any later version.
-;*
-;* 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 General Public License for more details.
-;*
-;* You should have received a copy of the GNU General Public License along
-;* with FFmpeg; if not, write to the Free Software Foundation, Inc.,
-;* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-;******************************************************************************
-
-%include "libavutil/x86/x86util.asm"
-
-SECTION_RODATA
-
-pb_dither: db 0,  48,  12,  60,   3,  51,  15,  63, 32,  16,  44,  28,  35,  19,  47,  31, \
-              8,  56,   4,  52,  11,  59,   7,  55, 40,  24,  36,  20,  43,  27,  39,  23, \
-              2,  50,  14,  62,   1,  49,  13,  61, 34,  18,  46,  30,  33,  17,  45,  29, \
-             10,  58,   6,  54,   9,  57,   5,  53, 42,  26,  38,  22,  41,  25,  37,  21
-pw_187E: times 4 dw 0x187E ; FIX64(0.382683433, 14)
-pw_22A3: times 4 dw 0x22A3 ; FIX64(1.082392200, 13)
-pw_2D41: times 4 dw 0x2D41 ; FIX64(1.414213562, 13)
-pw_539F: times 4 dw 0x539F ; FIX64(1.306562965, 14)
-pw_5A82: times 4 dw 0x5A82 ; FIX64(1.414213562, 14)
-pw_3B21: times 4 dw 0x3B21 ; FIX64(1.847759065, 13)
-pw_AC62: times 4 dw 0xAC62 ; FIX64(-2.613125930, 13)
-pw_3642: times 4 dw 0x3642 ; FIX64(0.847759065, 14)
-pw_2441: times 4 dw 0x2441 ; FIX64(0.566454497, 14)
-pw_0CBB: times 4 dw 0x0CBB ; FIX64(0.198912367, 14)
-pw_4:    times 4 dw 4
-pw_2:    times 4 dw 2
-
-SECTION .text
-
-%define DCTSIZE 8
-
-INIT_MMX mmx
-
-;void ff_store_slice_mmx(uint8_t *dst, int16_t *src,
-;                        ptrdiff_t dst_stride, ptrdiff_t src_stride,
-;                        ptrdiff_t width, ptrdiff_t height, ptrdiff_t log2_scale)
-%if ARCH_X86_64
-cglobal store_slice, 7, 9, 0, dst, src, dst_stride, src_stride, width, dither_height, dither, tmp, tmp2
-%else
-cglobal store_slice, 2, 7, 0, dst, src, width, dither_height, dither, tmp, tmp2
-%define dst_strideq r2m
-%define src_strideq r3m
-    mov       widthq, r4m
-    mov       dither_heightq, r5m
-    mov       ditherq, r6m ; log2_scale
-%endif
-    add       widthq, 7
-    mov       tmpq, src_strideq
-    and       widthq, ~7
-    sub       dst_strideq, widthq
-    movd      m5, ditherd ; log2_scale
-    xor       ditherq, -1 ; log2_scale
-    mov       tmp2q, tmpq
-    add       ditherq, 7 ; log2_scale
-    neg       tmpq
-    sub       tmp2q, widthq
-    movd      m2, ditherd ; log2_scale
-    add       tmp2q, tmp2q
-    lea       ditherq, [pb_dither]
-    mov       src_strideq, tmp2q
-    shl       tmpq, 4
-    lea       dither_heightq, [ditherq+dither_heightq*8]
-    pxor      m7, m7
-
-.loop_height:
-    movq      m3, [ditherq]
-    movq      m4, m3
-    punpcklbw m3, m7
-    punpckhbw m4, m7
-    mov       tmp2q, widthq
-    psraw     m3, m5
-    psraw     m4, m5
-
-.loop_width:
-    movq      [srcq+tmpq], m7
-    movq      m0, [srcq]
-    movq      m1, [srcq+8]
-    movq      [srcq+tmpq+8], m7
-    paddw     m0, m3
-    paddw     m1, m4
-    movq      [srcq], m7
-    psraw     m0, m2
-    psraw     m1, m2
-    movq      [srcq+8], m7
-    packuswb  m0, m1
-    add       srcq, 16
-    movq      [dstq], m0
-    add       dstq, 8
-    sub       tmp2q, 8
-    jg .loop_width
-
-    add       srcq, src_strideq
-    add       ditherq, 8
-    add       dstq, dst_strideq
-    cmp       ditherq, dither_heightq
-    jl .loop_height
-    RET
-
-;void ff_store_slice2_mmx(uint8_t *dst, int16_t *src,
-;                         ptrdiff_t dst_stride, ptrdiff_t src_stride,
-;                         ptrdiff_t width, ptrdiff_t height, ptrdiff_t log2_scale)
-%if ARCH_X86_64
-cglobal store_slice2, 7, 9, 0, dst, src, dst_stride, src_stride, width, dither_height, dither, tmp, tmp2
-%else
-cglobal store_slice2, 0, 7, 0, dst, src, width, dither_height, dither, tmp, tmp2
-%define dst_strideq r2m
-%define src_strideq r3m
-    mov       dstq, dstm
-    mov       srcq, srcm
-    mov       widthq, r4m
-    mov       dither_heightq, r5m
-    mov       ditherq, r6m ; log2_scale
-%endif
-    add       widthq, 7
-    mov       tmpq, src_strideq
-    and       widthq, ~7
-    sub       dst_strideq, widthq
-    movd      m5, ditherd ; log2_scale
-    xor       ditherq, -1 ; log2_scale
-    mov       tmp2q, tmpq
-    add       ditherq, 7 ; log2_scale
-    sub       tmp2q, widthq
-    movd      m2, ditherd ; log2_scale
-    add       tmp2q, tmp2q
-    lea       ditherq, [pb_dither]
-    mov       src_strideq, tmp2q
-    shl       tmpq, 5
-    lea       dither_heightq, [ditherq+dither_heightq*8]
-    pxor      m7, m7
-
-.loop_height:
-    movq      m3, [ditherq]
-    movq      m4, m3
-    punpcklbw m3, m7
-    punpckhbw m4, m7
-    mov       tmp2q,widthq
-    psraw     m3, m5
-    psraw     m4, m5
-
-.loop_width:
-    movq      m0, [srcq]
-    movq      m1, [srcq+8]
-    paddw     m0, m3
-    paddw     m0, [srcq+tmpq]
-    paddw     m1, m4
-    movq      m6, [srcq+tmpq+8]
-    movq      [srcq+tmpq], m7
-    psraw     m0, m2
-    paddw     m1, m6
-    movq      [srcq+tmpq+8], m7
-    psraw     m1, m2
-    packuswb  m0, m1
-    movq      [dstq], m0
-    add       srcq, 16
-    add       dstq, 8
-    sub       tmp2q, 8
-    jg .loop_width
-
-    add       srcq, src_strideq
-    add       ditherq, 8
-    add       dstq, dst_strideq
-    cmp       ditherq, dither_heightq
-    jl .loop_height
-    RET
-
-;void ff_mul_thrmat_mmx(int16_t *thr_adr_noq, int16_t *thr_adr, int q);
-cglobal mul_thrmat, 3, 3, 0, thrn, thr, q
-    movd      m7, qd
-    movq      m0, [thrnq]
-    punpcklwd m7, m7
-    movq      m1, [thrnq+8]
-    punpckldq m7, m7
-    pmullw    m0, m7
-    movq      m2, [thrnq+8*2]
-    pmullw    m1, m7
-    movq      m3, [thrnq+8*3]
-    pmullw    m2, m7
-    movq      [thrq], m0
-    movq      m4, [thrnq+8*4]
-    pmullw    m3, m7
-    movq      [thrq+8], m1
-    movq      m5, [thrnq+8*5]
-    pmullw    m4, m7
-    movq      [thrq+8*2], m2
-    movq      m6, [thrnq+8*6]
-    pmullw    m5, m7
-    movq      [thrq+8*3], m3
-    movq      m0, [thrnq+8*7]
-    pmullw    m6, m7
-    movq      [thrq+8*4], m4
-    movq      m1, [thrnq+8*7+8]
-    pmullw    m0, m7
-    movq      [thrq+8*5], m5
-    movq      m2, [thrnq+8*7+8*2]
-    pmullw    m1, m7
-    movq      [thrq+8*6], m6
-    movq      m3, [thrnq+8*7+8*3]
-    pmullw    m2, m7
-    movq      [thrq+8*7], m0
-    movq      m4, [thrnq+8*7+8*4]
-    pmullw    m3, m7
-    movq      [thrq+8*7+8], m1
-    movq      m5, [thrnq+8*7+8*5]
-    pmullw    m4, m7
-    movq      [thrq+8*7+8*2], m2
-    movq      m6, [thrnq+8*7+8*6]
-    pmullw    m5, m7
-    movq      [thrq+8*7+8*3], m3
-    movq      m0, [thrnq+14*8]
-    pmullw    m6, m7
-    movq      [thrq+8*7+8*4], m4
-    movq      m1, [thrnq+14*8+8]
-    pmullw    m0, m7
-    movq      [thrq+8*7+8*5], m5
-    pmullw    m1, m7
-    movq      [thrq+8*7+8*6], m6
-    movq      [thrq+14*8], m0
-    movq      [thrq+14*8+8], m1
-    RET
-
-%macro COLUMN_FDCT 1-3 0, 0
-    movq      m1, [srcq+DCTSIZE*0*2]
-    movq      m7, [srcq+DCTSIZE*3*2]
-    movq      m0, m1
-    paddw     m1, [srcq+DCTSIZE*7*2]
-    movq      m3, m7
-    paddw     m7, [srcq+DCTSIZE*4*2]
-    movq      m5, m1
-    movq      m6, [srcq+DCTSIZE*1*2]
-    psubw     m1, m7
-    movq      m2, [srcq+DCTSIZE*2*2]
-    movq      m4, m6
-    paddw     m6, [srcq+DCTSIZE*6*2]
-    paddw     m5, m7
-    paddw     m2, [srcq+DCTSIZE*5*2]
-    movq      m7, m6
-    paddw     m6, m2
-    psubw     m7, m2
-    movq      m2, m5
-    paddw     m5, m6
-    psubw     m2, m6
-    paddw     m7, m1
-    movq      m6, [thrq+4*16+%2]
-    psllw     m7, 2
-    psubw     m5, [thrq+%2]
-    psubw     m2, m6
-    paddusw   m5, [thrq+%2]
-    paddusw   m2, m6
-    pmulhw    m7, [pw_2D41]
-    paddw     m5, [thrq+%2]
-    paddw     m2, m6
-    psubusw   m5, [thrq+%2]
-    psubusw   m2, m6
-    paddw     m5, [pw_2]
-    movq      m6, m2
-    paddw     m2, m5
-    psubw     m5, m6
-    movq      m6, m1
-    paddw     m1, m7
-    psubw     m1, [thrq+2*16+%2]
-    psubw     m6, m7
-    movq      m7, [thrq+6*16+%2]
-    psraw     m5, 2
-    paddusw   m1, [thrq+2*16+%2]
-    psubw     m6, m7
-    paddw     m1, [thrq+2*16+%2]
-    paddusw   m6, m7
-    psubusw   m1, [thrq+2*16+%2]
-    paddw     m6, m7
-    psubw     m3, [srcq+DCTSIZE*4*2]
-    psubusw   m6, m7
-    movq      m7, m1
-    psraw     m2, 2
-    psubw     m4, [srcq+DCTSIZE*6*2]
-    psubw     m1, m6
-    psubw     m0, [srcq+DCTSIZE*7*2]
-    paddw     m6, m7
-    psraw     m6, 2
-    movq      m7, m2
-    pmulhw    m1, [pw_5A82]
-    paddw     m2, m6
-    movq      [rsp], m2
-    psubw     m7, m6
-    movq      m2, [srcq+DCTSIZE*2*2]
-    psubw     m1, m6
-    psubw     m2, [srcq+DCTSIZE*5*2]
-    movq      m6, m5
-    movq      [rsp+8*3], m7
-    paddw     m3, m2
-    paddw     m2, m4
-    paddw     m4, m0
-    movq      m7, m3
-    psubw     m3, m4
-    psllw     m3, 2
-    psllw     m7, 2
-    pmulhw    m3, [pw_187E]
-    psllw     m4, 2
-    pmulhw    m7, [pw_22A3]
-    psllw     m2, 2
-    pmulhw    m4, [pw_539F]
-    paddw     m5, m1
-    pmulhw    m2, [pw_2D41]
-    psubw     m6, m1
-    paddw     m7, m3
-    movq      [rsp+8], m5
-    paddw     m4, m3
-    movq      m3, [thrq+3*16+%2]
-    movq      m1, m0
-    movq      [rsp+8*2], m6
-    psubw     m1, m2
-    paddw     m0, m2
-    movq      m5, m1
-    movq      m2, [thrq+5*16+%2]
-    psubw     m1, m7
-    paddw     m5, m7
-    psubw     m1, m3
-    movq      m7, [thrq+16+%2]
-    psubw     m5, m2
-    movq      m6, m0
-    paddw     m0, m4
-    paddusw   m1, m3
-    psubw     m6, m4
-    movq      m4, [thrq+7*16+%2]
-    psubw     m0, m7
-    psubw     m6, m4
-    paddusw   m5, m2
-    paddusw   m6, m4
-    paddw     m1, m3
-    paddw     m5, m2
-    paddw     m6, m4
-    psubusw   m1, m3
-    psubusw   m5, m2
-    psubusw   m6, m4
-    movq      m4, m1
-    por       m4, m5
-    paddusw   m0, m7
-    por       m4, m6
-    paddw     m0, m7
-    packssdw  m4, m4
-    psubusw   m0, m7
-    movd      tmpd, m4
-    or        tmpd, tmpd
-    jnz %1
-    movq      m4, [rsp]
-    movq      m1, m0
-    pmulhw    m0, [pw_3642]
-    movq      m2, m1
-    movq      m5, [outq+DCTSIZE*0*2]
-    movq      m3, m2
-    pmulhw    m1, [pw_2441]
-    paddw     m5, m4
-    movq      m6, [rsp+8]
-    psraw     m3, 2
-    pmulhw    m2, [pw_0CBB]
-    psubw     m4, m3
-    movq      m7, [outq+DCTSIZE*1*2]
-    paddw     m5, m3
-    movq      [outq+DCTSIZE*7*2], m4
-    paddw     m7, m6
-    movq      m3, [rsp+8*2]
-    psubw     m6, m0
-    movq      m4, [outq+DCTSIZE*2*2]
-    paddw     m7, m0
-    movq      [outq], m5
-    paddw     m4, m3
-    movq      [outq+DCTSIZE*6*2], m6
-    psubw     m3, m1
-    movq      m5, [outq+DCTSIZE*5*2]
-    paddw     m4, m1
-    movq      m6, [outq+DCTSIZE*3*2]
-    paddw     m5, m3
-    movq      m0, [rsp+8*3]
-    add       srcq, 8+%3
-    movq      [outq+DCTSIZE*1*2], m7
-    paddw     m6, m0
-    movq      [outq+DCTSIZE*2*2], m4
-    psubw     m0, m2
-    movq      m7, [outq+DCTSIZE*4*2]
-    paddw     m6, m2
-    movq      [outq+DCTSIZE*5*2], m5
-    paddw     m7, m0
-    movq      [outq+DCTSIZE*3*2], m6
-    movq      [outq+DCTSIZE*4*2], m7
-    add       outq, 8+%3
-%endmacro
-
-%macro COLUMN_IDCT 0-1 0
-    movq      m3, m5
-    psubw     m5, m1
-    psllw     m5, 1
-    paddw     m3, m1
-    movq      m2, m0
-    psubw     m0, m6
-    movq      m1, m5
-    psllw     m0, 1
-    pmulhw    m1, [pw_AC62]
-    paddw     m5, m0
-    pmulhw    m5, [pw_3B21]
-    paddw     m2, m6
-    pmulhw    m0, [pw_22A3]
-    movq      m7, m2
-    movq      m4, [rsp]
-    psubw     m2, m3
-    psllw     m2, 1
-    paddw     m7, m3
-    pmulhw    m2, [pw_2D41]
-    movq      m6, m4
-    psraw     m7, 2
-    paddw     m4, [outq]
-    psubw     m6, m7
-    movq      m3, [rsp+8]
-    paddw     m4, m7
-    movq      [outq+DCTSIZE*7*2], m6
-    paddw     m1, m5
-    movq      [outq], m4
-    psubw     m1, m7
-    movq      m7, [rsp+8*2]
-    psubw     m0, m5
-    movq      m6, [rsp+8*3]
-    movq      m5, m3
-    paddw     m3, [outq+DCTSIZE*1*2]
-    psubw     m5, m1
-    psubw     m2, m1
-    paddw     m3, m1
-    movq      [outq+DCTSIZE*6*2], m5
-    movq      m4, m7
-    paddw     m7, [outq+DCTSIZE*2*2]
-    psubw     m4, m2
-    paddw     m4, [outq+DCTSIZE*5*2]
-    paddw     m7, m2
-    movq      [outq+DCTSIZE*1*2], m3
-    paddw     m0, m2
-    movq      [outq+DCTSIZE*2*2], m7
-    movq      m1, m6
-    paddw     m6, [outq+DCTSIZE*4*2]
-    psubw     m1, m0
-    paddw     m1, [outq+DCTSIZE*3*2]
-    paddw     m6, m0
-    movq      [outq+DCTSIZE*5*2], m4
-    add       srcq, 8+%1
-    movq      [outq+DCTSIZE*4*2], m6
-    movq      [outq+DCTSIZE*3*2], m1
-    add       outq, 8+%1
-%endmacro
-
-;void ff_column_fidct_mmx(int16_t *thr_adr, int16_t *data, int16_t *output, int cnt);
-cglobal column_fidct, 4, 5, 0, 32, thr, src, out, cnt, tmp
-.fdct1:
-    COLUMN_FDCT .idct1
-    jmp .fdct2
-
-.idct1:
-    COLUMN_IDCT
-
-.fdct2:
-    COLUMN_FDCT .idct2, 8, 16
-    sub    cntd, 2
-    jg .fdct1
-    RET
-
-.idct2:
-    COLUMN_IDCT 16
-    sub    cntd, 2
-    jg .fdct1
-    RET
-
-;void ff_row_idct_mmx(int16_t *workspace, int16_t *output_adr, ptrdiff_t output_stride, int cnt);
-cglobal row_idct, 4, 5, 0, 16, src, dst, stride, cnt, stride3
-    add       strideq, strideq
-    lea       stride3q, [strideq+strideq*2]
-.loop:
-    movq      m0, [srcq+DCTSIZE*0*2]
-    movq      m1, [srcq+DCTSIZE*1*2]
-    movq      m4, m0
-    movq      m2, [srcq+DCTSIZE*2*2]
-    punpcklwd m0, m1
-    movq      m3, [srcq+DCTSIZE*3*2]
-    punpckhwd m4, m1
-    movq      m7, m2
-    punpcklwd m2, m3
-    movq      m6, m0
-    punpckldq m0, m2
-    punpckhdq m6, m2
-    movq      m5, m0
-    punpckhwd m7, m3
-    psubw     m0, m6
-    pmulhw    m0, [pw_5A82]
-    movq      m2, m4
-    punpckldq m4, m7
-    paddw     m5, m6
-    punpckhdq m2, m7
-    movq      m1, m4
-    psllw     m0, 2
-    paddw     m4, m2
-    movq      m3, [srcq+DCTSIZE*0*2+8]
-    psubw     m1, m2
-    movq      m2, [srcq+DCTSIZE*1*2+8]
-    psubw     m0, m5
-    movq      m6, m4
-    paddw     m4, m5
-    psubw     m6, m5
-    movq      m7, m1
-    movq      m5, [srcq+DCTSIZE*2*2+8]
-    paddw     m1, m0
-    movq      [rsp], m4
-    movq      m4, m3
-    movq      [rsp+8], m6
-    punpcklwd m3, m2
-    movq      m6, [srcq+DCTSIZE*3*2+8]
-    punpckhwd m4, m2
-    movq      m2, m5
-    punpcklwd m5, m6
-    psubw     m7, m0
-    punpckhwd m2, m6
-    movq      m0, m3
-    punpckldq m3, m5
-    punpckhdq m0, m5
-    movq      m5, m4
-    movq      m6, m3
-    punpckldq m4, m2
-    psubw     m3, m0
-    punpckhdq m5, m2
-    paddw     m6, m0
-    movq      m2, m4
-    movq      m0, m3
-    psubw     m4, m5
-    pmulhw    m0, [pw_AC62]
-    paddw     m3, m4
-    pmulhw    m3, [pw_3B21]
-    paddw     m2, m5
-    pmulhw    m4, [pw_22A3]
-    movq      m5, m2
-    psubw     m2, m6
-    paddw     m5, m6
-    pmulhw    m2, [pw_2D41]
-    paddw     m0, m3
-    psllw     m0, 3
-    psubw     m4, m3
-    movq      m6, [rsp]
-    movq      m3, m1
-    psllw     m4, 3
-    psubw     m0, m5
-    psllw     m2, 3
-    paddw     m1, m0
-    psubw     m2, m0
-    psubw     m3, m0
-    paddw     m4, m2
-    movq      m0, m7
-    paddw     m7, m2
-    psubw     m0, m2
-    movq      m2, [pw_4]
-    psubw     m6, m5
-    paddw     m5, [rsp]
-    paddw     m1, m2
-    paddw     m5, m2
-    psraw     m1, 3
-    paddw     m7, m2
-    psraw     m5, 3
-    paddw     m5, [dstq]
-    psraw     m7, 3
-    paddw     m1, [dstq+strideq*1]
-    paddw     m0, m2
-    paddw     m7, [dstq+strideq*2]
-    paddw     m3, m2
-    movq      [dstq], m5
-    paddw     m6, m2
-    movq      [dstq+strideq*1], m1
-    psraw     m0, 3
-    movq      [dstq+strideq*2], m7
-    add       dstq, stride3q
-    movq      m5, [rsp+8]
-    psraw     m3, 3
-    paddw     m0, [dstq+strideq*2]
-    psubw     m5, m4
-    paddw     m3, [dstq+stride3q*1]
-    psraw     m6, 3
-    paddw     m4, [rsp+8]
-    paddw     m5, m2
-    paddw     m6, [dstq+strideq*4]
-    paddw     m4, m2
-    movq      [dstq+strideq*2], m0
-    psraw     m5, 3
-    paddw     m5, [dstq]
-    psraw     m4, 3
-    paddw     m4, [dstq+strideq*1]
-    add       srcq, DCTSIZE*2*4
-    movq      [dstq+stride3q*1], m3
-    movq      [dstq+strideq*4], m6
-    movq      [dstq], m5
-    movq      [dstq+strideq*1], m4
-    sub       dstq, stride3q
-    add       dstq, 8
-    dec       r3d
-    jnz .loop
-    RET
-
-;void ff_row_fdct_mmx(int16_t *data, const uint8_t *pixels, ptrdiff_t line_size, int cnt);
-cglobal row_fdct, 4, 5, 0, 16, src, pix, stride, cnt, stride3
-    lea       stride3q, [strideq+strideq*2]
-.loop:
-    movd      m0, [pixq]
-    pxor      m7, m7
-    movd      m1, [pixq+strideq*1]
-    punpcklbw m0, m7
-    movd      m2, [pixq+strideq*2]
-    punpcklbw m1, m7
-    punpcklbw m2, m7
-    add       pixq,stride3q
-    movq      m5, m0
-    movd      m3, [pixq+strideq*4]
-    movq      m6, m1
-    movd      m4, [pixq+stride3q*1]
-    punpcklbw m3, m7
-    psubw     m5, m3
-    punpcklbw m4, m7
-    paddw     m0, m3
-    psubw     m6, m4
-    movd      m3, [pixq+strideq*2]
-    paddw     m1, m4
-    movq      [rsp], m5
-    punpcklbw m3, m7
-    movq      [rsp+8], m6
-    movq      m4, m2
-    movd      m5, [pixq]
-    paddw     m2, m3
-    movd      m6, [pixq+strideq*1]
-    punpcklbw m5, m7
-    psubw     m4, m3
-    punpcklbw m6, m7
-    movq      m3, m5
-    paddw     m5, m6
-    psubw     m3, m6
-    movq      m6, m0
-    movq      m7, m1
-    psubw     m0, m5
-    psubw     m1, m2
-    paddw     m7, m2
-    paddw     m1, m0
-    movq      m2, m7
-    psllw     m1, 2
-    paddw     m6, m5
-    pmulhw    m1, [pw_2D41]
-    paddw     m7, m6
-    psubw     m6, m2
-    movq      m5, m0
-    movq      m2, m7
-    punpcklwd m7, m6
-    paddw     m0, m1
-    punpckhwd m2, m6
-    psubw     m5, m1
-    movq      m6, m0
-    movq      m1, [rsp+8]
-    punpcklwd m0, m5
-    punpckhwd m6, m5
-    movq      m5, m0
-    punpckldq m0, m7
-    paddw     m3, m4
-    punpckhdq m5, m7
-    movq      m7, m6
-    movq      [srcq+DCTSIZE*0*2], m0
-    punpckldq m6, m2
-    movq      [srcq+DCTSIZE*1*2], m5
-    punpckhdq m7, m2
-    movq      [srcq+DCTSIZE*2*2], m6
-    paddw     m4, m1
-    movq      [srcq+DCTSIZE*3*2], m7
-    psllw     m3, 2
-    movq      m2, [rsp]
-    psllw     m4, 2
-    pmulhw    m4, [pw_2D41]
-    paddw     m1, m2
-    psllw     m1, 2
-    movq      m0, m3
-    pmulhw    m0, [pw_22A3]
-    psubw     m3, m1
-    pmulhw    m3, [pw_187E]
-    movq      m5, m2
-    pmulhw    m1, [pw_539F]
-    psubw     m2, m4
-    paddw     m5, m4
-    movq      m6, m2
-    paddw     m0, m3
-    movq      m7, m5
-    paddw     m2, m0
-    psubw     m6, m0
-    movq      m4, m2
-    paddw     m1, m3
-    punpcklwd m2, m6
-    paddw     m5, m1
-    punpckhwd m4, m6
-    psubw     m7, m1
-    movq      m6, m5
-    punpcklwd m5, m7
-    punpckhwd m6, m7
-    movq      m7, m2
-    punpckldq m2, m5
-    sub       pixq, stride3q
-    punpckhdq m7, m5
-    movq      m5, m4
-    movq      [srcq+DCTSIZE*0*2+8], m2
-    punpckldq m4, m6
-    movq      [srcq+DCTSIZE*1*2+8], m7
-    punpckhdq m5, m6
-    movq      [srcq+DCTSIZE*2*2+8], m4
-    add       pixq, 4
-    movq      [srcq+DCTSIZE*3*2+8], m5
-    add       srcq, DCTSIZE*4*2
-    dec       cntd
-    jnz .loop
-    RET
diff --git a/libavfilter/x86/vf_fspp_init.c b/libavfilter/x86/vf_fspp_init.c
deleted file mode 100644
index 8e00317..0000000
--- a/libavfilter/x86/vf_fspp_init.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
- * Copyright (C) 2005 Nikolaj Poroshin <porosh3@psu.ru>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "libavutil/attributes.h"
-#include "libavutil/x86/cpu.h"
-#include "libavfilter/vf_fspp.h"
-
-void ff_store_slice_mmx(uint8_t *dst, int16_t *src,
-                        ptrdiff_t dst_stride, ptrdiff_t src_stride,
-                        ptrdiff_t width, ptrdiff_t height, ptrdiff_t log2_scale);
-void ff_store_slice2_mmx(uint8_t *dst, int16_t *src,
-                         ptrdiff_t dst_stride, ptrdiff_t src_stride,
-                         ptrdiff_t width, ptrdiff_t height, ptrdiff_t log2_scale);
-void ff_mul_thrmat_mmx(int16_t *thr_adr_noq, int16_t *thr_adr, int q);
-void ff_column_fidct_mmx(int16_t *thr_adr, int16_t *data, int16_t *output, int cnt);
-void ff_row_idct_mmx(int16_t *workspace, int16_t *output_adr, ptrdiff_t output_stride, int cnt);
-void ff_row_fdct_mmx(int16_t *data, const uint8_t *pixels, ptrdiff_t line_size, int cnt);
-
-av_cold void ff_fspp_init_x86(FSPPContext *s)
-{
-    int cpu_flags = av_get_cpu_flags();
-
-    if (EXTERNAL_MMX(cpu_flags)) {
-        s->store_slice  = ff_store_slice_mmx;
-        s->store_slice2 = ff_store_slice2_mmx;
-        s->mul_thrmat   = ff_mul_thrmat_mmx;
-        s->column_fidct = ff_column_fidct_mmx;
-        s->row_idct     = ff_row_idct_mmx;
-        s->row_fdct     = ff_row_fdct_mmx;
-    }
-}
diff --git a/libavfilter/x86/vf_hqdn3d_init.c b/libavfilter/x86/vf_hqdn3d_init.c
deleted file mode 100644
index 43aca90..0000000
--- a/libavfilter/x86/vf_hqdn3d_init.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2012 Loren Merritt
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "libavutil/attributes.h"
-#include "libavfilter/vf_hqdn3d.h"
-#include "config.h"
-
-void ff_hqdn3d_row_8_x86(uint8_t *src, uint8_t *dst, uint16_t *line_ant,
-                         uint16_t *frame_ant, ptrdiff_t w, int16_t *spatial,
-                         int16_t *temporal);
-void ff_hqdn3d_row_9_x86(uint8_t *src, uint8_t *dst, uint16_t *line_ant,
-                         uint16_t *frame_ant, ptrdiff_t w, int16_t *spatial,
-                         int16_t *temporal);
-void ff_hqdn3d_row_10_x86(uint8_t *src, uint8_t *dst, uint16_t *line_ant,
-                          uint16_t *frame_ant, ptrdiff_t w, int16_t *spatial,
-                          int16_t *temporal);
-void ff_hqdn3d_row_16_x86(uint8_t *src, uint8_t *dst, uint16_t *line_ant,
-                          uint16_t *frame_ant, ptrdiff_t w, int16_t *spatial,
-                          int16_t *temporal);
-
-av_cold void ff_hqdn3d_init_x86(HQDN3DContext *hqdn3d)
-{
-#if HAVE_X86ASM
-    hqdn3d->denoise_row[8]  = ff_hqdn3d_row_8_x86;
-    hqdn3d->denoise_row[9]  = ff_hqdn3d_row_9_x86;
-    hqdn3d->denoise_row[10] = ff_hqdn3d_row_10_x86;
-    hqdn3d->denoise_row[16] = ff_hqdn3d_row_16_x86;
-#endif /* HAVE_X86ASM */
-}
diff --git a/libavfilter/x86/vf_interlace.asm b/libavfilter/x86/vf_interlace.asm
deleted file mode 100644
index f4a405c..0000000
--- a/libavfilter/x86/vf_interlace.asm
+++ /dev/null
@@ -1,226 +0,0 @@
-;*****************************************************************************
-;* x86-optimized functions for interlace filter
-;*
-;* Copyright (C) 2014 Kieran Kunhya <kierank@obe.tv>
-;* Copyright (c) 2014 Michael Niedermayer <michaelni@gmx.at>
-;* Copyright (c) 2017 Thomas Mundt <tmundt75@gmail.com>
-;*
-;* This file is part of FFmpeg.
-;*
-;* FFmpeg is free software; you can redistribute it and/or modify
-;* it under the terms of the GNU General Public License as published by
-;* the Free Software Foundation; either version 2 of the License, or
-;* (at your option) any later version.
-;*
-;* 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 General Public License for more details.
-;*
-;* You should have received a copy of the GNU General Public License along
-;* with FFmpeg; if not, write to the Free Software Foundation, Inc.,
-;* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-;******************************************************************************
-
-%include "libavutil/x86/x86util.asm"
-
-SECTION_RODATA
-
-pw_4: times 8 dw 4
-
-SECTION .text
-
-%macro LOWPASS 1
-    add dstq, hq
-    add srcq, hq
-    add mrefq, srcq
-    add prefq, srcq
-    neg hq
-
-    pcmpeq%1 m6, m6
-
-    test hq, mmsize
-    je .loop
-
-    ;process 1 * mmsize
-    movu m0, [mrefq+hq]
-    pavg%1 m0, [prefq+hq]
-    pxor m0, m6
-    pxor m2, m6, [srcq+hq]
-    pavg%1 m0, m2
-    pxor m0, m6
-    movu [dstq+hq], m0
-    add hq, mmsize
-    jge .end
-
-.loop:
-    movu m0, [mrefq+hq]
-    movu m1, [mrefq+hq+mmsize]
-    pavg%1 m0, [prefq+hq]
-    pavg%1 m1, [prefq+hq+mmsize]
-    pxor m0, m6
-    pxor m1, m6
-    pxor m2, m6, [srcq+hq]
-    pxor m3, m6, [srcq+hq+mmsize]
-    pavg%1 m0, m2
-    pavg%1 m1, m3
-    pxor m0, m6
-    pxor m1, m6
-    movu [dstq+hq], m0
-    movu [dstq+hq+mmsize], m1
-
-    add hq, 2*mmsize
-    jl .loop
-
-.end:
-    REP_RET
-%endmacro
-
-%macro LOWPASS_LINE 0
-cglobal lowpass_line, 5, 5, 7, dst, h, src, mref, pref
-    LOWPASS b
-
-cglobal lowpass_line_16, 5, 5, 7, dst, h, src, mref, pref
-    shl hq, 1
-    LOWPASS w
-%endmacro
-
-%macro LOWPASS_LINE_COMPLEX 0
-cglobal lowpass_line_complex, 5, 5, 8, dst, h, src, mref, pref
-    pxor m7, m7
-.loop:
-    movu m0, [srcq+mrefq]
-    movu m2, [srcq+prefq]
-    mova m1, m0
-    mova m3, m2
-    punpcklbw m0, m7
-    punpcklbw m2, m7
-    punpckhbw m1, m7
-    punpckhbw m3, m7
-    paddw m0, m2
-    paddw m1, m3
-    mova m6, m0
-    mova m5, m1
-    movu m2, [srcq]
-    mova m3, m2
-    punpcklbw m2, m7
-    punpckhbw m3, m7
-    paddw m0, m2
-    paddw m1, m3
-    psllw m2, 1
-    psllw m3, 1
-    paddw m0, m2
-    paddw m1, m3
-    psllw m0, 1
-    psllw m1, 1
-    pcmpgtw m6, m2
-    pcmpgtw m5, m3
-    packsswb m6, m5
-    movu m2, [srcq+mrefq*2]
-    movu m4, [srcq+prefq*2]
-    mova m3, m2
-    mova m5, m4
-    punpcklbw m2, m7
-    punpcklbw m4, m7
-    punpckhbw m3, m7
-    punpckhbw m5, m7
-    paddw m2, m4
-    paddw m3, m5
-    paddw m0, [pw_4]
-    paddw m1, [pw_4]
-    psubusw m0, m2
-    psubusw m1, m3
-    psrlw m0, 3
-    psrlw m1, 3
-    packuswb m0, m1
-    mova m1, m0
-    movu m2, [srcq]
-    pmaxub m0, m2
-    pminub m1, m2
-    pand m0, m6
-    pandn m6, m1
-    por m0, m6
-    movu [dstq], m0
-
-    add dstq, mmsize
-    add srcq, mmsize
-    sub hd, mmsize
-    jg .loop
-REP_RET
-
-cglobal lowpass_line_complex_12, 5, 5, 8, 16, dst, h, src, mref, pref, clip_max
-    movd m7, DWORD clip_maxm
-    SPLATW m7, m7, 0
-    movu [rsp], m7
-.loop:
-    movu m0, [srcq+mrefq]
-    movu m1, [srcq+mrefq+mmsize]
-    movu m2, [srcq+prefq]
-    movu m3, [srcq+prefq+mmsize]
-    paddw m0, m2
-    paddw m1, m3
-    mova m6, m0
-    mova m7, m1
-    movu m2, [srcq]
-    movu m3, [srcq+mmsize]
-    paddw m0, m2
-    paddw m1, m3
-    psllw m2, 1
-    psllw m3, 1
-    paddw m0, m2
-    paddw m1, m3
-    psllw m0, 1
-    psllw m1, 1
-    pcmpgtw m6, m2
-    pcmpgtw m7, m3
-    movu m2, [srcq+2*mrefq]
-    movu m3, [srcq+2*mrefq+mmsize]
-    movu m4, [srcq+2*prefq]
-    movu m5, [srcq+2*prefq+mmsize]
-    paddw m2, m4
-    paddw m3, m5
-    paddw m0, [pw_4]
-    paddw m1, [pw_4]
-    psubusw m0, m2
-    psubusw m1, m3
-    psrlw m0, 3
-    psrlw m1, 3
-    pminsw m0, [rsp]
-    pminsw m1, [rsp]
-    mova m2, m0
-    mova m3, m1
-    movu m4, [srcq]
-    pmaxsw m0, m4
-    pminsw m2, m4
-    movu m4, [srcq + mmsize]
-    pmaxsw m1, m4
-    pminsw m3, m4
-    pand m0, m6
-    pand m1, m7
-    pandn m6, m2
-    pandn m7, m3
-    por m0, m6
-    por m1, m7
-    movu [dstq], m0
-    movu [dstq+mmsize], m1
-
-    add dstq, 2*mmsize
-    add srcq, 2*mmsize
-    sub hd, mmsize
-    jg .loop
-REP_RET
-%endmacro
-
-INIT_XMM sse2
-LOWPASS_LINE
-
-INIT_XMM avx
-LOWPASS_LINE
-
-%if HAVE_AVX2_EXTERNAL
-INIT_YMM avx2
-LOWPASS_LINE
-%endif
-
-INIT_XMM sse2
-LOWPASS_LINE_COMPLEX
diff --git a/libavfilter/x86/vf_pp7.asm b/libavfilter/x86/vf_pp7.asm
deleted file mode 100644
index 7b3e5cf..0000000
--- a/libavfilter/x86/vf_pp7.asm
+++ /dev/null
@@ -1,57 +0,0 @@
-;*****************************************************************************
-;* x86-optimized functions for pp7 filter
-;*
-;* Copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
-;*
-;* This file is part of FFmpeg.
-;*
-;* FFmpeg is free software; you can redistribute it and/or modify
-;* it under the terms of the GNU General Public License as published by
-;* the Free Software Foundation; either version 2 of the License, or
-;* (at your option) any later version.
-;*
-;* 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 General Public License for more details.
-;*
-;* You should have received a copy of the GNU General Public License along
-;* with FFmpeg; if not, write to the Free Software Foundation, Inc.,
-;* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-;******************************************************************************
-
-%include "libavutil/x86/x86util.asm"
-
-SECTION .text
-
-INIT_MMX mmx
-
-;void ff_pp7_dctB_mmx(int16_t *dst, int16_t *src)
-cglobal pp7_dctB, 2, 2, 0, dst, src
-    movq   m0, [srcq]
-    movq   m1, [srcq+mmsize*1]
-    paddw  m0, [srcq+mmsize*6]
-    paddw  m1, [srcq+mmsize*5]
-    movq   m2, [srcq+mmsize*2]
-    movq   m3, [srcq+mmsize*3]
-    paddw  m2, [srcq+mmsize*4]
-    paddw  m3, m3
-    movq   m4, m3
-    psubw  m3, m0
-    paddw  m4, m0
-    movq   m0, m2
-    psubw  m2, m1
-    paddw  m0, m1
-    movq   m1, m4
-    psubw  m4, m0
-    paddw  m1, m0
-    movq   m0, m3
-    psubw  m3, m2
-    psubw  m3, m2
-    paddw  m2, m0
-    paddw  m2, m0
-    movq   [dstq], m1
-    movq   [dstq+mmsize*2], m4
-    movq   [dstq+mmsize*1], m2
-    movq   [dstq+mmsize*3], m3
-    RET
diff --git a/libavfilter/x86/vf_pp7_init.c b/libavfilter/x86/vf_pp7_init.c
deleted file mode 100644
index 165b0dd..0000000
--- a/libavfilter/x86/vf_pp7_init.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "libavutil/attributes.h"
-#include "libavutil/cpu.h"
-#include "libavutil/x86/cpu.h"
-#include "libavfilter/vf_pp7.h"
-
-void ff_pp7_dctB_mmx(int16_t *dst, int16_t *src);
-
-av_cold void ff_pp7_init_x86(PP7Context *p)
-{
-    int cpu_flags = av_get_cpu_flags();
-
-    if (EXTERNAL_MMX(cpu_flags))
-        p->dctB = ff_pp7_dctB_mmx;
-}
diff --git a/libavfilter/x86/vf_pullup.asm b/libavfilter/x86/vf_pullup.asm
deleted file mode 100644
index 26c2a27..0000000
--- a/libavfilter/x86/vf_pullup.asm
+++ /dev/null
@@ -1,178 +0,0 @@
-;*****************************************************************************
-;* x86-optimized functions for pullup filter
-;*
-;* This file is part of FFmpeg.
-;*
-;* FFmpeg is free software; you can redistribute it and/or modify
-;* it under the terms of the GNU General Public License as published by
-;* the Free Software Foundation; either version 2 of the License, or
-;* (at your option) any later version.
-;*
-;* 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 General Public License for more details.
-;*
-;* You should have received a copy of the GNU General Public License along
-;* with FFmpeg; if not, write to the Free Software Foundation, Inc.,
-;* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-;******************************************************************************
-
-%include "libavutil/x86/x86util.asm"
-
-SECTION .text
-
-INIT_MMX mmx
-cglobal pullup_filter_diff, 3, 5, 8, first, second, size
-    mov        r3, 4
-    pxor       m4, m4
-    pxor       m7, m7
-
-.loop:
-    movq       m0, [firstq]
-    movq       m2, [firstq]
-    add        firstq, sizeq
-    movq       m1, [secondq]
-    add        secondq, sizeq
-    psubusb    m2, m1
-    psubusb    m1, m0
-    movq       m0, m2
-    movq       m3, m1
-    punpcklbw  m0, m7
-    punpcklbw  m1, m7
-    punpckhbw  m2, m7
-    punpckhbw  m3, m7
-    paddw      m4, m0
-    paddw      m4, m1
-    paddw      m4, m2
-    paddw      m4, m3
-
-    dec        r3
-    jnz .loop
-
-    movq       m3, m4
-    punpcklwd  m4, m7
-    punpckhwd  m3, m7
-    paddd      m3, m4
-    movd      eax, m3
-    psrlq      m3, 32
-    movd      r4d, m3
-    add       eax, r4d
-    RET
-
-INIT_MMX mmx
-cglobal pullup_filter_comb, 3, 5, 8, first, second, size
-    mov        r3, 4
-    pxor       m6, m6
-    pxor       m7, m7
-    sub        secondq, sizeq
-
-.loop:
-    movq       m0, [firstq]
-    movq       m1, [secondq]
-    punpcklbw  m0, m7
-    movq       m2, [secondq+sizeq]
-    punpcklbw  m1, m7
-    punpcklbw  m2, m7
-    paddw      m0, m0
-    paddw      m1, m2
-    movq       m2, m0
-    psubusw    m0, m1
-    psubusw    m1, m2
-    paddw      m6, m0
-    paddw      m6, m1
-
-    movq       m0, [firstq]
-    movq       m1, [secondq]
-    punpckhbw  m0, m7
-    movq       m2, [secondq+sizeq]
-    punpckhbw  m1, m7
-    punpckhbw  m2, m7
-    paddw      m0, m0
-    paddw      m1, m2
-    movq       m2, m0
-    psubusw    m0, m1
-    psubusw    m1, m2
-    paddw      m6, m0
-    paddw      m6, m1
-
-    movq       m0, [secondq+sizeq]
-    movq       m1, [firstq]
-    punpcklbw  m0, m7
-    movq       m2, [firstq+sizeq]
-    punpcklbw  m1, m7
-    punpcklbw  m2, m7
-    paddw      m0, m0
-    paddw      m1, m2
-    movq       m2, m0
-    psubusw    m0, m1
-    psubusw    m1, m2
-    paddw      m6, m0
-    paddw      m6, m1
-
-    movq       m0, [secondq+sizeq]
-    movq       m1, [firstq]
-    punpckhbw  m0, m7
-    movq       m2, [firstq+sizeq]
-    punpckhbw  m1, m7
-    punpckhbw  m2, m7
-    paddw      m0, m0
-    paddw      m1, m2
-    movq       m2, m0
-    psubusw    m0, m1
-    psubusw    m1, m2
-    paddw      m6, m0
-    paddw      m6, m1
-
-    add        firstq, sizeq
-    add        secondq, sizeq
-    dec        r3
-    jnz .loop
-
-    movq       m5, m6
-    punpcklwd  m6, m7
-    punpckhwd  m5, m7
-    paddd      m5, m6
-    movd      eax, m5
-    psrlq      m5, 32
-    movd      r4d, m5
-    add       eax, r4d
-    RET
-
-INIT_MMX mmx
-cglobal pullup_filter_var, 3, 5, 8, first, second, size
-    mov        r3, 3
-    pxor       m4, m4
-    pxor       m7, m7
-
-.loop:
-    movq       m0, [firstq]
-    movq       m2, [firstq]
-    movq       m1, [firstq+sizeq]
-    add        firstq, sizeq
-    psubusb    m2, m1
-    psubusb    m1, m0
-    movq       m0, m2
-    movq       m3, m1
-    punpcklbw  m0, m7
-    punpcklbw  m1, m7
-    punpckhbw  m2, m7
-    punpckhbw  m3, m7
-    paddw      m4, m0
-    paddw      m4, m1
-    paddw      m4, m2
-    paddw      m4, m3
-
-    dec        r3
-    jnz .loop
-
-    movq       m3, m4
-    punpcklwd  m4, m7
-    punpckhwd  m3, m7
-    paddd      m3, m4
-    movd      eax, m3
-    psrlq      m3, 32
-    movd      r4d, m3
-    add       eax, r4d
-    shl       eax, 2
-    RET
diff --git a/libavfilter/x86/vf_pullup_init.c b/libavfilter/x86/vf_pullup_init.c
deleted file mode 100644
index 3dc0798..0000000
--- a/libavfilter/x86/vf_pullup_init.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-#include "libavutil/attributes.h"
-#include "libavutil/cpu.h"
-#include "libavutil/mem.h"
-#include "libavutil/x86/asm.h"
-#include "libavutil/x86/cpu.h"
-#include "libavfilter/vf_pullup.h"
-
-int ff_pullup_filter_diff_mmx(const uint8_t *a, const uint8_t *b, ptrdiff_t s);
-int ff_pullup_filter_comb_mmx(const uint8_t *a, const uint8_t *b, ptrdiff_t s);
-int ff_pullup_filter_var_mmx (const uint8_t *a, const uint8_t *b, ptrdiff_t s);
-
-av_cold void ff_pullup_init_x86(PullupContext *s)
-{
-#if HAVE_X86ASM
-    int cpu_flags = av_get_cpu_flags();
-
-    if (EXTERNAL_MMX(cpu_flags)) {
-        s->diff = ff_pullup_filter_diff_mmx;
-        s->comb = ff_pullup_filter_comb_mmx;
-        s->var  = ff_pullup_filter_var_mmx;
-    }
-#endif
-}
diff --git a/libavfilter/x86/vf_removegrain.asm b/libavfilter/x86/vf_removegrain.asm
deleted file mode 100644
index d049bf2..0000000
--- a/libavfilter/x86/vf_removegrain.asm
+++ /dev/null
@@ -1,1218 +0,0 @@
-;*****************************************************************************
-;* x86-optimized functions for removegrain filter
-;*
-;* Copyright (C) 2015 James Darnley
-;*
-;* This file is part of FFmpeg.
-;*
-;* FFmpeg is free software; you can redistribute it and/or modify
-;* it under the terms of the GNU General Public License as published by
-;* the Free Software Foundation; either version 2 of the License, or
-;* (at your option) any later version.
-;*
-;* 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 General Public License for more details.
-;*
-;* You should have received a copy of the GNU General Public License along
-;* with FFmpeg; if not, write to the Free Software Foundation, Inc.,
-;* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-;*****************************************************************************
-
-; column: -1  0 +1
-; row -1: a1 a2 a3
-; row  0: a4  c a5
-; row +1: a6 a7 a8
-
-%include "libavutil/x86/x86util.asm"
-
-SECTION_RODATA 32
-
-pw_4:    times 16 dw 4
-pw_8:    times 16 dw 8
-pw_div9: times 16 dw ((1<<16)+4)/9
-
-SECTION .text
-
-;*** Preprocessor helpers
-
-%define a1 srcq+stride_n-1
-%define a2 srcq+stride_n
-%define a3 srcq+stride_n+1
-%define a4 srcq-1
-%define c  srcq
-%define a5 srcq+1
-%define a6 srcq+stride_p-1
-%define a7 srcq+stride_p
-%define a8 srcq+stride_p+1
-
-; %1 dest simd register
-; %2 source memory location
-; %3 zero location (simd register/memory)
-%macro LOAD 3
-    movh %1, %2
-    punpcklbw %1, %3
-%endmacro
-
-%macro LOAD_SQUARE 0
-    movu m1, [a1]
-    movu m2, [a2]
-    movu m3, [a3]
-    movu m4, [a4]
-    movu m0, [c]
-    movu m5, [a5]
-    movu m6, [a6]
-    movu m7, [a7]
-    movu m8, [a8]
-%endmacro
-
-; %1 zero location (simd register/memory)
-%macro LOAD_SQUARE_16 1
-    LOAD m1, [a1], %1
-    LOAD m2, [a2], %1
-    LOAD m3, [a3], %1
-    LOAD m4, [a4], %1
-    LOAD m0, [c], %1
-    LOAD m5, [a5], %1
-    LOAD m6, [a6], %1
-    LOAD m7, [a7], %1
-    LOAD m8, [a8], %1
-%endmacro
-
-; %1 data type
-; %2 simd register to hold maximums
-; %3 simd register to hold minimums
-; %4 temp location (simd register/memory)
-%macro SORT_PAIR 4
-    mova   %4, %2
-    pmin%1 %2, %3
-    pmax%1 %3, %4
-%endmacro
-
-%macro SORT_AXIS 0
-    SORT_PAIR ub, m1, m8, m9
-    SORT_PAIR ub, m2, m7, m10
-    SORT_PAIR ub, m3, m6, m11
-    SORT_PAIR ub, m4, m5, m12
-%endmacro
-
-
-%macro SORT_AXIS_16 0
-    SORT_PAIR sw, m1, m8, m9
-    SORT_PAIR sw, m2, m7, m10
-    SORT_PAIR sw, m3, m6, m11
-    SORT_PAIR sw, m4, m5, m12
-%endmacro
-
-; The loop doesn't need to do all the iterations.  It could stop when the right
-; pixels are in the right registers.
-%macro SORT_SQUARE 0
-    %assign k 7
-    %rep 7
-        %assign i 1
-        %assign j 2
-        %rep k
-            SORT_PAIR ub, m %+ i , m %+ j , m9
-            %assign i i+1
-            %assign j j+1
-        %endrep
-        %assign k k-1
-    %endrep
-%endmacro
-
-; %1 dest simd register
-; %2 source (simd register/memory)
-; %3 temp simd register
-%macro ABS_DIFF 3
-    mova %3, %2
-    psubusb %3, %1
-    psubusb %1, %2
-    por %1, %3
-%endmacro
-
-; %1 dest simd register
-; %2 source (simd register/memory)
-; %3 temp simd register
-%macro ABS_DIFF_W 3
-    mova %3, %2
-    psubusw %3, %1
-    psubusw %1, %2
-    por %1, %3
-%endmacro
-
-; %1 simd register that holds the "false" values and will hold the result
-; %2 simd register that holds the "true" values
-; %3 location (simd register/memory) that hold the mask
-%macro BLEND 3
-%if cpuflag(avx2)
-    vpblendvb %1, %1, %2, %3
-%else
-    pand      %2, %3
-    pandn     %3, %1
-    por       %3, %2
-    SWAP      %1, %3
-%endif
-%endmacro
-
-; Functions
-
-INIT_XMM sse2
-cglobal rg_fl_mode_1, 4, 5, 3, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        movu m0, [a1]
-        mova m1, m0
-
-        movu m2, [a2]
-        pmaxub m0, m2
-        pminub m1, m2
-
-        movu m2, [a3]
-        pmaxub m0, m2
-        pminub m1, m2
-
-        movu m2, [a4]
-        pmaxub m0, m2
-        pminub m1, m2
-
-        movu m2, [a5]
-        pmaxub m0, m2
-        pminub m1, m2
-
-        movu m2, [a6]
-        pmaxub m0, m2
-        pminub m1, m2
-
-        movu m2, [a7]
-        pmaxub m0, m2
-        pminub m1, m2
-
-        movu m2, [a8]
-        pmaxub m0, m2
-        pminub m1, m2
-
-        movu m2, [c]
-        pminub m2, m0
-        pmaxub m2, m1
-
-        movu [dstq], m2
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-%if ARCH_X86_64
-cglobal rg_fl_mode_2, 4, 5, 10, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        LOAD_SQUARE
-        SORT_SQUARE
-
-        CLIPUB m0, m2, m7
-
-        movu [dstq], m0
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-cglobal rg_fl_mode_3, 4, 5, 10, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        LOAD_SQUARE
-        SORT_SQUARE
-
-        CLIPUB m0, m3, m6
-
-        movu [dstq], m0
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-cglobal rg_fl_mode_4, 4, 5, 10, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        LOAD_SQUARE
-        SORT_SQUARE
-
-        CLIPUB m0, m4, m5
-
-        movu [dstq], m0
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-cglobal rg_fl_mode_5, 4, 5, 13, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        LOAD_SQUARE
-        SORT_AXIS
-
-        mova m9, m0
-        mova m10, m0
-        mova m11, m0
-        mova m12, m0
-
-        CLIPUB m9, m1, m8
-        CLIPUB m10, m2, m7
-        CLIPUB m11, m3, m6
-        CLIPUB m12, m4, m5
-
-        mova m8, m9  ; clip1
-        mova m7, m10 ; clip2
-        mova m6, m11 ; clip3
-        mova m5, m12 ; clip4
-
-        ABS_DIFF m9, m0, m1  ; c1
-        ABS_DIFF m10, m0, m2 ; c2
-        ABS_DIFF m11, m0, m3 ; c3
-        ABS_DIFF m12, m0, m4 ; c4
-
-        pminub m9, m10
-        pminub m9, m11
-        pminub m9, m12 ; mindiff
-
-        pcmpeqb m10, m9
-        pcmpeqb m11, m9
-        pcmpeqb m12, m9
-
-        ; Notice the order here: c1, c3, c2, c4
-        BLEND m8, m6, m11
-        BLEND m8, m7, m10
-        BLEND m8, m5, m12
-
-        movu [dstq], m8
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-cglobal rg_fl_mode_6, 4, 5, 16, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    ; Some register saving suggestions: the zero can be somewhere other than a
-    ; register, the center pixels could be on the stack.
-
-    pxor m15, m15
-    .loop:
-        LOAD_SQUARE_16 m15
-        SORT_AXIS_16
-
-        mova m9, m0
-        mova m10, m0
-        mova m11, m0
-        mova m12, m0
-        CLIPW m9, m1, m8  ; clip1
-        CLIPW m10, m2, m7 ; clip2
-        CLIPW m11, m3, m6 ; clip3
-        CLIPW m12, m4, m5 ; clip4
-
-        psubw m8, m1 ; d1
-        psubw m7, m2 ; d2
-        psubw m6, m3 ; d3
-        psubw m5, m4 ; d4
-
-        mova m1, m9
-        mova m2, m10
-        mova m3, m11
-        mova m4, m12
-        ABS_DIFF_W m1, m0, m13
-        ABS_DIFF_W m2, m0, m14
-        ABS_DIFF_W m3, m0, m13
-        ABS_DIFF_W m4, m0, m14
-        psllw m1, 1
-        psllw m2, 1
-        psllw m3, 1
-        psllw m4, 1
-        paddw m1, m8 ; c1
-        paddw m2, m7 ; c2
-        paddw m3, m6 ; c3
-        paddw m4, m5 ; c4
-        ; As the differences (d1..d4) can only be positive, there is no need to
-        ; clip to zero.  Also, the maximum positive value is less than 768.
-
-        pminsw m1, m2
-        pminsw m1, m3
-        pminsw m1, m4
-
-        pcmpeqw m2, m1
-        pcmpeqw m3, m1
-        pcmpeqw m4, m1
-
-        BLEND m9, m11, m3
-        BLEND m9, m10, m2
-        BLEND m9, m12, m4
-        packuswb m9, m9
-
-        movh [dstq], m9
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-
-; This is just copy-pasted straight from mode 6 with the left shifts removed.
-cglobal rg_fl_mode_7, 4, 5, 16, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    ; Can this be done without unpacking?
-
-    pxor m15, m15
-    .loop:
-        LOAD_SQUARE_16 m15
-        SORT_AXIS_16
-
-        mova m9, m0
-        mova m10, m0
-        mova m11, m0
-        mova m12, m0
-        CLIPW m9, m1, m8  ; clip1
-        CLIPW m10, m2, m7 ; clip2
-        CLIPW m11, m3, m6 ; clip3
-        CLIPW m12, m4, m5 ; clip4
-
-        psubw m8, m1 ; d1
-        psubw m7, m2 ; d2
-        psubw m6, m3 ; d3
-        psubw m5, m4 ; d4
-
-        mova m1, m9
-        mova m2, m10
-        mova m3, m11
-        mova m4, m12
-        ABS_DIFF_W m1, m0, m13
-        ABS_DIFF_W m2, m0, m14
-        ABS_DIFF_W m3, m0, m13
-        ABS_DIFF_W m4, m0, m14
-        paddw m1, m8 ; c1
-        paddw m2, m7 ; c2
-        paddw m3, m6 ; c3
-        paddw m4, m5 ; c4
-
-        pminsw m1, m2
-        pminsw m1, m3
-        pminsw m1, m4
-
-        pcmpeqw m2, m1
-        pcmpeqw m3, m1
-        pcmpeqw m4, m1
-
-        BLEND m9, m11, m3
-        BLEND m9, m10, m2
-        BLEND m9, m12, m4
-        packuswb m9, m9
-
-        movh [dstq], m9
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-
-; This is just copy-pasted straight from mode 6 with a few changes.
-cglobal rg_fl_mode_8, 4, 5, 16, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    pxor m15, m15
-    .loop:
-        LOAD_SQUARE_16 m15
-        SORT_AXIS_16
-
-        mova m9, m0
-        mova m10, m0
-        mova m11, m0
-        mova m12, m0
-        CLIPW m9, m1, m8  ; clip1
-        CLIPW m10, m2, m7 ; clip2
-        CLIPW m11, m3, m6 ; clip3
-        CLIPW m12, m4, m5 ; clip4
-
-        psubw m8, m1 ; d1
-        psubw m7, m2 ; d2
-        psubw m6, m3 ; d3
-        psubw m5, m4 ; d4
-        psllw m8, 1
-        psllw m7, 1
-        psllw m6, 1
-        psllw m5, 1
-
-        mova m1, m9
-        mova m2, m10
-        mova m3, m11
-        mova m4, m12
-        ABS_DIFF_W m1, m0, m13
-        ABS_DIFF_W m2, m0, m14
-        ABS_DIFF_W m3, m0, m13
-        ABS_DIFF_W m4, m0, m14
-        paddw m1, m8 ; c1
-        paddw m2, m7 ; c1
-        paddw m3, m6 ; c1
-        paddw m4, m5 ; c1
-        ; As the differences (d1..d4) can only be positive, there is no need to
-        ; clip to zero.  Also, the maximum positive value is less than 768.
-
-        pminsw m1, m2
-        pminsw m1, m3
-        pminsw m1, m4
-
-        pcmpeqw m2, m1
-        pcmpeqw m3, m1
-        pcmpeqw m4, m1
-
-        BLEND m9, m11, m3
-        BLEND m9, m10, m2
-        BLEND m9, m12, m4
-        packuswb m9, m9
-
-        movh [dstq], m9
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-
-cglobal rg_fl_mode_9, 4, 5, 13, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        LOAD_SQUARE
-        SORT_AXIS
-
-        mova m9, m0
-        mova m10, m0
-        mova m11, m0
-        mova m12, m0
-        CLIPUB m9, m1, m8  ; clip1
-        CLIPUB m10, m2, m7 ; clip2
-        CLIPUB m11, m3, m6 ; clip3
-        CLIPUB m12, m4, m5 ; clip4
-
-        psubb m8, m1 ; d1
-        psubb m7, m2 ; d2
-        psubb m6, m3 ; d3
-        psubb m5, m4 ; d4
-
-        pminub m8, m7
-        pminub m8, m6
-        pminub m8, m5
-
-        pcmpeqb m7, m8
-        pcmpeqb m6, m8
-        pcmpeqb m5, m8
-
-        BLEND m9, m11, m6
-        BLEND m9, m10, m7
-        BLEND m9, m12, m5
-
-        movu [dstq], m9
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-%endif
-
-cglobal rg_fl_mode_10, 4, 5, 8, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        movu m0, [c]
-
-        movu m1, [a4]
-        mova m2, m1
-        ABS_DIFF m1, m0, m7
-
-        movu m3, [a5]       ; load pixel
-        mova m4, m3
-        ABS_DIFF m4, m0, m7 ; absolute difference from center
-        pminub m1, m4       ; mindiff
-        pcmpeqb m4, m1      ; if (difference == mindiff)
-        BLEND m2, m3, m4    ;     return pixel
-
-        movu m5, [a1]
-        mova m6, m5
-        ABS_DIFF m6, m0, m7
-        pminub m1, m6
-        pcmpeqb m6, m1
-        BLEND m2, m5, m6
-
-        movu m3, [a3]
-        mova m4, m3
-        ABS_DIFF m4, m0, m7
-        pminub m1, m4
-        pcmpeqb m4, m1
-        BLEND m2, m3, m4
-
-        movu m5, [a2]
-        mova m6, m5
-        ABS_DIFF m6, m0, m7
-        pminub m1, m6
-        pcmpeqb m6, m1
-        BLEND m2, m5, m6
-
-        movu m3, [a6]
-        mova m4, m3
-        ABS_DIFF m4, m0, m7
-        pminub m1, m4
-        pcmpeqb m4, m1
-        BLEND m2, m3, m4
-
-        movu m5, [a8]
-        mova m6, m5
-        ABS_DIFF m6, m0, m7
-        pminub m1, m6
-        pcmpeqb m6, m1
-        BLEND m2, m5, m6
-
-        movu m3, [a7]
-        mova m4, m3
-        ABS_DIFF m4, m0, m7
-        pminub m1, m4
-        pcmpeqb m4, m1
-        BLEND m2, m3, m4
-
-        movu [dstq], m2
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-cglobal rg_fl_mode_11_12, 4, 5, 7, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    pxor m0, m0
-    .loop:
-        LOAD m1, [c], m0
-        LOAD m2, [a2], m0
-        LOAD m3, [a4], m0
-        LOAD m4, [a5], m0
-        LOAD m5, [a7], m0
-
-        psllw m1, 2
-        paddw m2, m3
-        paddw m4, m5
-        paddw m2, m4
-        psllw m2, 1
-
-        LOAD m3, [a1], m0
-        LOAD m4, [a3], m0
-        LOAD m5, [a6], m0
-        LOAD m6, [a8], m0
-        paddw m1, m2
-        paddw m3, m4
-        paddw m5, m6
-        paddw m1, m3
-        paddw m1, m5
-
-        paddw m1, [pw_8]
-        psraw m1, 4
-
-        packuswb m1, m1
-
-        movh [dstq], m1
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-
-cglobal rg_fl_mode_13_14, 4, 5, 8, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        movu m1, [a1]
-        movu m2, [a8]
-        mova m0, m1
-        pavgb m1, m2
-        ABS_DIFF m0, m2, m6
-
-        movu m3, [a3]
-        movu m4, [a6]
-        mova m5, m3
-        pavgb m3, m4
-        ABS_DIFF m5, m4, m7
-        pminub m0, m5
-        pcmpeqb m5, m0
-        BLEND m1, m3, m5
-
-        movu m2, [a2]
-        movu m3, [a7]
-        mova m4, m2
-        pavgb m2, m3
-        ABS_DIFF m4, m3, m6
-        pminub m0, m4
-        pcmpeqb m4, m0
-        BLEND m1, m2, m4
-
-        movu [dstq], m1
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-%if ARCH_X86_64
-cglobal rg_fl_mode_15_16, 4, 5, 16, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    pxor m15, m15
-    .loop:
-        LOAD_SQUARE_16 m15
-
-        mova m9, m1
-        mova m10, m2
-        mova m11, m3
-        ABS_DIFF_W m9, m8, m12
-        ABS_DIFF_W m10, m7, m13
-        ABS_DIFF_W m11, m6, m14
-        pminsw m9, m10
-        pminsw m9, m11
-        pcmpeqw m10, m9
-        pcmpeqw m11, m9
-
-        mova m12, m2
-        mova m13, m1
-        mova m14, m6
-        paddw m12, m7
-        psllw m12, 1
-        paddw m13, m3
-        paddw m14, m8
-        paddw m12, [pw_4]
-        paddw m13, m14
-        paddw m12, m13
-        psrlw m12, 3
-
-        SORT_PAIR ub, m1, m8, m0
-        SORT_PAIR ub, m2, m7, m9
-        SORT_PAIR ub, m3, m6, m14
-        mova m4, m12
-        mova m5, m12
-        CLIPW m4, m1, m8
-        CLIPW m5, m2, m7
-        CLIPW m12, m3, m6
-
-        BLEND m4, m12, m11
-        BLEND m4,  m5, m10
-        packuswb m4, m4
-
-        movh [dstq], m4
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-
-cglobal rg_fl_mode_17, 4, 5, 9, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        LOAD_SQUARE
-        SORT_AXIS
-
-        pmaxub m1, m2
-        pmaxub m3, m4
-
-        pminub m8, m7
-        pminub m5, m6
-
-        pmaxub m1, m3
-        pminub m8, m5
-
-        mova m2, m1
-        pminub m1, m8
-        pmaxub m8, m2
-
-        CLIPUB m0, m1, m8
-
-        movu [dstq], m0
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-cglobal rg_fl_mode_18, 4, 5, 16, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        LOAD_SQUARE
-
-        mova m9, m1
-        mova m10, m8
-        ABS_DIFF m9, m0, m11
-        ABS_DIFF m10, m0, m12
-        pmaxub m9, m10 ; m9 = d1
-
-        mova m10, m2
-        mova m11, m7
-        ABS_DIFF m10, m0, m12
-        ABS_DIFF m11, m0, m13
-        pmaxub m10, m11 ; m10 = d2
-
-        mova m11, m3
-        mova m12, m6
-        ABS_DIFF m11, m0, m13
-        ABS_DIFF m12, m0, m14
-        pmaxub m11, m12 ; m11 = d3
-
-        mova m12, m4
-        mova m13, m5
-        ABS_DIFF m12, m0, m14
-        ABS_DIFF m13, m0, m15
-        pmaxub m12, m13 ; m12 = d4
-
-        mova m13, m9
-        pminub m13, m10
-        pminub m13, m11
-        pminub m13, m12 ; m13 = mindiff
-
-        pcmpeqb m10, m13
-        pcmpeqb m11, m13
-        pcmpeqb m12, m13
-
-        mova m14, m1
-        pminub m1, m8
-        pmaxub m8, m14
-
-        mova m13, m0
-        mova m14, m1
-        pminub m1, m8
-        pmaxub m8, m14
-        CLIPUB m13, m1, m8 ; m13 = ret...d1
-
-        mova m14, m0
-        mova m15, m3
-        pminub m3, m6
-        pmaxub m6, m15
-        CLIPUB m14, m3, m6
-        pand m14, m11
-        pandn m11, m13
-        por m14, m11 ; m14 = ret...d3
-
-        mova m15, m0
-        mova m1, m2
-        pminub m2, m7
-        pmaxub m7, m1
-        CLIPUB m15, m2, m7
-        pand m15, m10
-        pandn m10, m14
-        por m15, m10 ; m15 = ret...d2
-
-        mova m1, m0
-        mova m2, m4
-        pminub m4, m5
-        pmaxub m5, m2
-        CLIPUB m1, m4, m5
-        pand m1, m12
-        pandn m12, m15
-        por m1, m12 ; m15 = ret...d4
-
-        movu [dstq], m1
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-%endif
-
-cglobal rg_fl_mode_19, 4, 5, 7, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    pxor m0, m0
-    .loop:
-        LOAD m1, [a1], m0
-        LOAD m2, [a2], m0
-        paddw m1, m2
-
-        LOAD m3, [a3], m0
-        LOAD m4, [a4], m0
-        paddw m3, m4
-
-        LOAD m5, [a5], m0
-        LOAD m6, [a6], m0
-        paddw m5, m6
-
-        LOAD m2, [a7], m0
-        LOAD m4, [a8], m0
-        paddw m2, m4
-
-        paddw m1, m3
-        paddw m2, m5
-        paddw m1, m2
-
-        paddw m1, [pw_4]
-        psraw m1, 3
-
-        packuswb m1, m1
-
-        movh [dstq], m1
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-
-cglobal rg_fl_mode_20, 4, 5, 7, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    pxor m0, m0
-    .loop:
-        LOAD m1, [a1], m0
-        LOAD m2, [a2], m0
-        paddw m1, m2
-
-        LOAD m3, [a3], m0
-        LOAD m4, [a4], m0
-        paddw m3, m4
-
-        LOAD m5, [a5], m0
-        LOAD m6, [a6], m0
-        paddw m5, m6
-
-        LOAD m2, [a7], m0
-        LOAD m4, [a8], m0
-        paddw m2, m4
-
-        LOAD m6, [c], m0
-        paddw m1, m3
-        paddw m2, m5
-        paddw m6, [pw_4]
-
-        paddw m1, m2
-        paddw m1, m6
-
-        pmulhuw m1, [pw_div9]
-
-        packuswb m1, m1
-
-        movh [dstq], m1
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-
-cglobal rg_fl_mode_21, 4, 5, 8, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    pxor m0, m0
-    .loop:
-        movu m1, [a1]
-        movu m2, [a8]
-        pavgb m7, m1, m2
-        punpckhbw m3, m1, m0
-        punpcklbw m1, m0
-        punpckhbw m4, m2, m0
-        punpcklbw m2, m0
-        paddw m3, m4
-        paddw m1, m2
-        psrlw m3, 1
-        psrlw m1, 1
-        packuswb m1, m3
-
-        movu m2, [a2]
-        movu m3, [a7]
-        pavgb m6, m2, m3
-        punpckhbw m4, m2, m0
-        punpcklbw m2, m0
-        punpckhbw m5, m3, m0
-        punpcklbw m3, m0
-        paddw m4, m5
-        paddw m2, m3
-        psrlw m4, 1
-        psrlw m2, 1
-        packuswb m2, m4
-
-        pminub m1, m2
-        pmaxub m7, m6
-
-        movu m2, [a3]
-        movu m3, [a6]
-        pavgb m6, m2, m3
-        punpckhbw m4, m2, m0
-        punpcklbw m2, m0
-        punpckhbw m5, m3, m0
-        punpcklbw m3, m0
-        paddw m4, m5
-        paddw m2, m3
-        psrlw m4, 1
-        psrlw m2, 1
-        packuswb m2, m4
-
-        pminub m1, m2
-        pmaxub m7, m6
-
-        movu m2, [a4]
-        movu m3, [a5]
-        pavgb m6, m2, m3
-        punpckhbw m4, m2, m0
-        punpcklbw m2, m0
-        punpckhbw m5, m3, m0
-        punpcklbw m3, m0
-        paddw m4, m5
-        paddw m2, m3
-        psrlw m4, 1
-        psrlw m2, 1
-        packuswb m2, m4
-
-        pminub m1, m2
-        pmaxub m7, m6
-
-        movu m3, [c]
-        CLIPUB m3, m1, m7
-
-        movu [dstq], m3
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-cglobal rg_fl_mode_22, 4, 5, 8, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    .loop:
-        movu m0, [a1]
-        movu m1, [a8]
-        pavgb m0, m1
-        movu m2, [a2]
-        movu m3, [a7]
-        pavgb m2, m3
-        movu m4, [a3]
-        movu m5, [a6]
-        pavgb m4, m5
-        movu m6, [a4]
-        movu m7, [a5]
-        pavgb m6, m7
-
-        mova m1, m0
-        mova m3, m2
-        mova m5, m4
-        mova m7, m6
-        pminub m0, m2
-        pminub m4, m6
-        pmaxub m1, m3
-        pmaxub m5, m7
-        pminub m0, m4
-        pmaxub m1, m5
-
-        movu m2, [c]
-        CLIPUB m2, m0, m1
-
-        movu [dstq], m2
-        add srcq, mmsize
-        add dstq, mmsize
-        sub pixelsd, mmsize
-    jg .loop
-RET
-
-%if ARCH_X86_64
-cglobal rg_fl_mode_23, 4, 5, 16, 0, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    pxor m15, m15
-    .loop:
-        LOAD_SQUARE_16 m15
-        SORT_AXIS_16
-
-        mova m9, m8
-        mova m10, m7
-        mova m11, m6
-        mova m12, m5
-        psubw m9, m1  ; linediff1
-        psubw m10, m2 ; linediff2
-        psubw m11, m3 ; linediff3
-        psubw m12, m4 ; linediff4
-
-        psubw m1, m0
-        psubw m2, m0
-        psubw m3, m0
-        psubw m4, m0
-        pminsw m1, m9  ; d1
-        pminsw m2, m10 ; d2
-        pminsw m3, m11 ; d3
-        pminsw m4, m12 ; d4
-        pmaxsw m1, m2
-        pmaxsw m3, m4
-        pmaxsw m1, m3
-        pmaxsw m1, m15 ; d
-
-        mova m13, m0
-        mova m14, m0
-        mova m2, m0
-        mova m4, m0
-        psubw m13, m8
-        psubw m14, m7
-        psubw m2, m6
-        psubw m4, m5
-        pminsw m9, m13  ; u1
-        pminsw m10, m14 ; u2
-        pminsw m11, m2  ; u3
-        pminsw m12, m4  ; u4
-        pmaxsw m9, m10
-        pmaxsw m11, m12
-        pmaxsw m9, m11
-        pmaxsw m9, m15  ; u
-
-        paddw m0, m1
-        psubw m0, m9
-        packuswb m0, m0
-
-        movh [dstq], m0
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-
-cglobal rg_fl_mode_24, 4, 5, 16, mmsize, dst, src, stride, pixels
-    mov r4q, strideq
-    neg r4q
-    %define stride_p strideq
-    %define stride_n r4q
-
-    pxor m15, m15
-    .loop:
-        LOAD_SQUARE_16 m15
-        mova [rsp], m0
-        SORT_AXIS_16
-
-        mova m9, m8
-        mova m10, m7
-        mova m11, m6
-        mova m12, m5
-        psubw m9, m1  ; linediff1
-        psubw m10, m2 ; linediff2
-        psubw m11, m3 ; linediff3
-        psubw m12, m4 ; linediff4
-
-        psubw m1, [rsp] ; td1
-        psubw m2, [rsp] ; td2
-        psubw m3, [rsp] ; td3
-        psubw m4, [rsp] ; td4
-        mova m0, m9
-        mova m13, m10
-        mova m14, m11
-        mova m15, m12
-        psubw m0, m1
-        psubw m13, m2
-        psubw m14, m3
-        psubw m15, m4
-        pminsw m1, m0  ; d1
-        pminsw m2, m13 ; d2
-        pminsw m3, m14 ; d3
-        pminsw m4, m15 ; d4
-        pmaxsw m1, m2
-        pmaxsw m3, m4
-
-        mova m0, [rsp]
-        mova m13, [rsp]
-        mova m14, [rsp]
-        mova m15, [rsp]
-        psubw m0, m8  ; tu1
-        psubw m13, m7 ; tu2
-        psubw m14, m6 ; tu3
-        psubw m15, m5 ; tu4
-        psubw m9, m0
-        psubw m10, m13
-        psubw m11, m14
-        psubw m12, m15
-        pminsw m9, m0   ; u1
-        pminsw m10, m13 ; u2
-        pminsw m11, m14 ; u3
-        pminsw m12, m15 ; u4
-        pmaxsw m9, m10
-        pmaxsw m11, m12
-
-        pmaxsw m1, m3  ; d without max(d,0)
-        pmaxsw m9, m11  ; u without max(u,0)
-        pxor m15, m15
-        pmaxsw m1, m15
-        pmaxsw m9, m15
-
-        mova m0, [rsp]
-        paddw m0, m1
-        psubw m0, m9
-        packuswb m0, m0
-
-        movh [dstq], m0
-        add srcq, mmsize/2
-        add dstq, mmsize/2
-        sub pixelsd, mmsize/2
-    jg .loop
-RET
-%endif
diff --git a/libavfilter/x86/vf_spp.c b/libavfilter/x86/vf_spp.c
deleted file mode 100644
index 7d5da61..0000000
--- a/libavfilter/x86/vf_spp.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-
-#include "libavutil/attributes.h"
-#include "libavutil/cpu.h"
-#include "libavutil/crc.h"
-#include "libavutil/mem.h"
-#include "libavutil/x86/asm.h"
-#include "libavfilter/vf_spp.h"
-
-#if HAVE_MMX_INLINE
-static void hardthresh_mmx(int16_t dst[64], const int16_t src[64],
-                           int qp, const uint8_t *permutation)
-{
-    int bias = 0; //FIXME
-    unsigned int threshold1;
-
-    threshold1 = qp * ((1<<4) - bias) - 1;
-
-#define REQUANT_CORE(dst0, dst1, dst2, dst3, src0, src1, src2, src3)    \
-    "movq " #src0 ", %%mm0      \n"                                     \
-    "movq " #src1 ", %%mm1      \n"                                     \
-    "movq " #src2 ", %%mm2      \n"                                     \
-    "movq " #src3 ", %%mm3      \n"                                     \
-    "psubw %%mm4, %%mm0         \n"                                     \
-    "psubw %%mm4, %%mm1         \n"                                     \
-    "psubw %%mm4, %%mm2         \n"                                     \
-    "psubw %%mm4, %%mm3         \n"                                     \
-    "paddusw %%mm5, %%mm0       \n"                                     \
-    "paddusw %%mm5, %%mm1       \n"                                     \
-    "paddusw %%mm5, %%mm2       \n"                                     \
-    "paddusw %%mm5, %%mm3       \n"                                     \
-    "paddw %%mm6, %%mm0         \n"                                     \
-    "paddw %%mm6, %%mm1         \n"                                     \
-    "paddw %%mm6, %%mm2         \n"                                     \
-    "paddw %%mm6, %%mm3         \n"                                     \
-    "psubusw %%mm6, %%mm0       \n"                                     \
-    "psubusw %%mm6, %%mm1       \n"                                     \
-    "psubusw %%mm6, %%mm2       \n"                                     \
-    "psubusw %%mm6, %%mm3       \n"                                     \
-    "psraw $3, %%mm0            \n"                                     \
-    "psraw $3, %%mm1            \n"                                     \
-    "psraw $3, %%mm2            \n"                                     \
-    "psraw $3, %%mm3            \n"                                     \
-                                                                        \
-    "movq %%mm0, %%mm7          \n"                                     \
-    "punpcklwd %%mm2, %%mm0     \n" /*A*/                               \
-    "punpckhwd %%mm2, %%mm7     \n" /*C*/                               \
-    "movq %%mm1, %%mm2          \n"                                     \
-    "punpcklwd %%mm3, %%mm1     \n" /*B*/                               \
-    "punpckhwd %%mm3, %%mm2     \n" /*D*/                               \
-    "movq %%mm0, %%mm3          \n"                                     \
-    "punpcklwd %%mm1, %%mm0     \n" /*A*/                               \
-    "punpckhwd %%mm7, %%mm3     \n" /*C*/                               \
-    "punpcklwd %%mm2, %%mm7     \n" /*B*/                               \
-    "punpckhwd %%mm2, %%mm1     \n" /*D*/                               \
-                                                                        \
-    "movq %%mm0, " #dst0 "      \n"                                     \
-    "movq %%mm7, " #dst1 "      \n"                                     \
-    "movq %%mm3, " #dst2 "      \n"                                     \
-    "movq %%mm1, " #dst3 "      \n"
-
-    __asm__ volatile(
-        "movd %2, %%mm4             \n"
-        "movd %3, %%mm5             \n"
-        "movd %4, %%mm6             \n"
-        "packssdw %%mm4, %%mm4      \n"
-        "packssdw %%mm5, %%mm5      \n"
-        "packssdw %%mm6, %%mm6      \n"
-        "packssdw %%mm4, %%mm4      \n"
-        "packssdw %%mm5, %%mm5      \n"
-        "packssdw %%mm6, %%mm6      \n"
-        REQUANT_CORE(  (%1),  8(%1), 16(%1), 24(%1),  (%0), 8(%0), 64(%0), 72(%0))
-        REQUANT_CORE(32(%1), 40(%1), 48(%1), 56(%1),16(%0),24(%0), 48(%0), 56(%0))
-        REQUANT_CORE(64(%1), 72(%1), 80(%1), 88(%1),32(%0),40(%0), 96(%0),104(%0))
-        REQUANT_CORE(96(%1),104(%1),112(%1),120(%1),80(%0),88(%0),112(%0),120(%0))
-        : : "r" (src), "r" (dst), "g" (threshold1+1), "g" (threshold1+5), "g" (threshold1-4) //FIXME maybe more accurate then needed?
-    );
-    dst[0] = (src[0] + 4) >> 3;
-}
-
-static void softthresh_mmx(int16_t dst[64], const int16_t src[64],
-                           int qp, const uint8_t *permutation)
-{
-    int bias = 0; //FIXME
-    unsigned int threshold1;
-
-    threshold1 = qp*((1<<4) - bias) - 1;
-
-#undef REQUANT_CORE
-#define REQUANT_CORE(dst0, dst1, dst2, dst3, src0, src1, src2, src3)    \
-    "movq " #src0 ", %%mm0      \n"                                     \
-    "movq " #src1 ", %%mm1      \n"                                     \
-    "pxor %%mm6, %%mm6          \n"                                     \
-    "pxor %%mm7, %%mm7          \n"                                     \
-    "pcmpgtw %%mm0, %%mm6       \n"                                     \
-    "pcmpgtw %%mm1, %%mm7       \n"                                     \
-    "pxor %%mm6, %%mm0          \n"                                     \
-    "pxor %%mm7, %%mm1          \n"                                     \
-    "psubusw %%mm4, %%mm0       \n"                                     \
-    "psubusw %%mm4, %%mm1       \n"                                     \
-    "pxor %%mm6, %%mm0          \n"                                     \
-    "pxor %%mm7, %%mm1          \n"                                     \
-    "movq " #src2 ", %%mm2      \n"                                     \
-    "movq " #src3 ", %%mm3      \n"                                     \
-    "pxor %%mm6, %%mm6          \n"                                     \
-    "pxor %%mm7, %%mm7          \n"                                     \
-    "pcmpgtw %%mm2, %%mm6       \n"                                     \
-    "pcmpgtw %%mm3, %%mm7       \n"                                     \
-    "pxor %%mm6, %%mm2          \n"                                     \
-    "pxor %%mm7, %%mm3          \n"                                     \
-    "psubusw %%mm4, %%mm2       \n"                                     \
-    "psubusw %%mm4, %%mm3       \n"                                     \
-    "pxor %%mm6, %%mm2          \n"                                     \
-    "pxor %%mm7, %%mm3          \n"                                     \
-                                                                        \
-    "paddsw %%mm5, %%mm0        \n"                                     \
-    "paddsw %%mm5, %%mm1        \n"                                     \
-    "paddsw %%mm5, %%mm2        \n"                                     \
-    "paddsw %%mm5, %%mm3        \n"                                     \
-    "psraw $3, %%mm0            \n"                                     \
-    "psraw $3, %%mm1            \n"                                     \
-    "psraw $3, %%mm2            \n"                                     \
-    "psraw $3, %%mm3            \n"                                     \
-                                                                        \
-    "movq %%mm0, %%mm7          \n"                                     \
-    "punpcklwd %%mm2, %%mm0     \n" /*A*/                               \
-    "punpckhwd %%mm2, %%mm7     \n" /*C*/                               \
-    "movq %%mm1, %%mm2          \n"                                     \
-    "punpcklwd %%mm3, %%mm1     \n" /*B*/                               \
-    "punpckhwd %%mm3, %%mm2     \n" /*D*/                               \
-    "movq %%mm0, %%mm3          \n"                                     \
-    "punpcklwd %%mm1, %%mm0     \n" /*A*/                               \
-    "punpckhwd %%mm7, %%mm3     \n" /*C*/                               \
-    "punpcklwd %%mm2, %%mm7     \n" /*B*/                               \
-    "punpckhwd %%mm2, %%mm1     \n" /*D*/                               \
-                                                                        \
-    "movq %%mm0, " #dst0 "      \n"                                     \
-    "movq %%mm7, " #dst1 "      \n"                                     \
-    "movq %%mm3, " #dst2 "      \n"                                     \
-    "movq %%mm1, " #dst3 "      \n"
-
-    __asm__ volatile(
-        "movd %2, %%mm4             \n"
-        "movd %3, %%mm5             \n"
-        "packssdw %%mm4, %%mm4      \n"
-        "packssdw %%mm5, %%mm5      \n"
-        "packssdw %%mm4, %%mm4      \n"
-        "packssdw %%mm5, %%mm5      \n"
-        REQUANT_CORE(  (%1),  8(%1), 16(%1), 24(%1),  (%0), 8(%0), 64(%0), 72(%0))
-        REQUANT_CORE(32(%1), 40(%1), 48(%1), 56(%1),16(%0),24(%0), 48(%0), 56(%0))
-        REQUANT_CORE(64(%1), 72(%1), 80(%1), 88(%1),32(%0),40(%0), 96(%0),104(%0))
-        REQUANT_CORE(96(%1),104(%1),112(%1),120(%1),80(%0),88(%0),112(%0),120(%0))
-        : : "r" (src), "r" (dst), "g" (threshold1), "rm" (4) //FIXME maybe more accurate then needed?
-    );
-
-    dst[0] = (src[0] + 4) >> 3;
-}
-
-static void store_slice_mmx(uint8_t *dst, const int16_t *src,
-                            int dst_stride, int src_stride,
-                            int width, int height, int log2_scale,
-                            const uint8_t dither[8][8])
-{
-    int y;
-
-    for (y = 0; y < height; y++) {
-        uint8_t *dst1 = dst;
-        const int16_t *src1 = src;
-        __asm__ volatile(
-            "movq (%3), %%mm3           \n"
-            "movq (%3), %%mm4           \n"
-            "movd %4, %%mm2             \n"
-            "pxor %%mm0, %%mm0          \n"
-            "punpcklbw %%mm0, %%mm3     \n"
-            "punpckhbw %%mm0, %%mm4     \n"
-            "psraw %%mm2, %%mm3         \n"
-            "psraw %%mm2, %%mm4         \n"
-            "movd %5, %%mm2             \n"
-            "1:                         \n"
-            "movq (%0), %%mm0           \n"
-            "movq 8(%0), %%mm1          \n"
-            "paddw %%mm3, %%mm0         \n"
-            "paddw %%mm4, %%mm1         \n"
-            "psraw %%mm2, %%mm0         \n"
-            "psraw %%mm2, %%mm1         \n"
-            "packuswb %%mm1, %%mm0      \n"
-            "movq %%mm0, (%1)           \n"
-            "add $16, %0                \n"
-            "add $8, %1                 \n"
-            "cmp %2, %1                 \n"
-            " jb 1b                     \n"
-            : "+r" (src1), "+r"(dst1)
-            : "r"(dst + width), "r"(dither[y]), "g"(log2_scale), "g"(MAX_LEVEL - log2_scale)
-        );
-        src += src_stride;
-        dst += dst_stride;
-    }
-}
-
-#endif /* HAVE_MMX_INLINE */
-
-av_cold void ff_spp_init_x86(SPPContext *s)
-{
-#if HAVE_MMX_INLINE
-    int cpu_flags = av_get_cpu_flags();
-
-    if (cpu_flags & AV_CPU_FLAG_MMX) {
-        static const uint32_t mmx_idct_perm_crc = 0xe5e8adc4;
-        uint32_t idct_perm_crc =
-            av_crc(av_crc_get_table(AV_CRC_32_IEEE), 0,
-                   s->dct->idct_permutation,
-                   sizeof(s->dct->idct_permutation));
-        int64_t bps;
-        s->store_slice = store_slice_mmx;
-        av_opt_get_int(s->dct, "bits_per_sample", 0, &bps);
-        if (bps <= 8 && idct_perm_crc == mmx_idct_perm_crc) {
-            switch (s->mode) {
-            case 0: s->requantize = hardthresh_mmx; break;
-            case 1: s->requantize = softthresh_mmx; break;
-            }
-        }
-    }
-#endif
-}
diff --git a/libavfilter/x86/vf_tinterlace_init.c b/libavfilter/x86/vf_tinterlace_init.c
deleted file mode 100644
index 2c9b1de..0000000
--- a/libavfilter/x86/vf_tinterlace_init.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2014 Kieran Kunhya <kierank@obe.tv>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "libavutil/attributes.h"
-#include "libavutil/cpu.h"
-#include "libavutil/internal.h"
-#include "libavutil/mem.h"
-#include "libavutil/x86/asm.h"
-#include "libavutil/x86/cpu.h"
-
-#include "libavfilter/tinterlace.h"
-
-void ff_lowpass_line_sse2(uint8_t *dstp, ptrdiff_t linesize,
-                          const uint8_t *srcp, ptrdiff_t mref,
-                          ptrdiff_t pref, int clip_max);
-void ff_lowpass_line_avx (uint8_t *dstp, ptrdiff_t linesize,
-                          const uint8_t *srcp, ptrdiff_t mref,
-                          ptrdiff_t pref, int clip_max);
-void ff_lowpass_line_avx2 (uint8_t *dstp, ptrdiff_t linesize,
-                          const uint8_t *srcp, ptrdiff_t mref,
-                          ptrdiff_t pref, int clip_max);
-
-void ff_lowpass_line_16_sse2(uint8_t *dstp, ptrdiff_t linesize,
-                             const uint8_t *srcp, ptrdiff_t mref,
-                             ptrdiff_t pref, int clip_max);
-void ff_lowpass_line_16_avx (uint8_t *dstp, ptrdiff_t linesize,
-                             const uint8_t *srcp, ptrdiff_t mref,
-                             ptrdiff_t pref, int clip_max);
-void ff_lowpass_line_16_avx2 (uint8_t *dstp, ptrdiff_t linesize,
-                             const uint8_t *srcp, ptrdiff_t mref,
-                             ptrdiff_t pref, int clip_max);
-
-void ff_lowpass_line_complex_sse2(uint8_t *dstp, ptrdiff_t linesize,
-                                  const uint8_t *srcp, ptrdiff_t mref,
-                                  ptrdiff_t pref, int clip_max);
-
-void ff_lowpass_line_complex_12_sse2(uint8_t *dstp, ptrdiff_t linesize,
-                                     const uint8_t *srcp, ptrdiff_t mref,
-                                     ptrdiff_t pref, int clip_max);
-
-av_cold void ff_tinterlace_init_x86(TInterlaceContext *s)
-{
-    int cpu_flags = av_get_cpu_flags();
-
-    if (s->csp->comp[0].depth > 8) {
-        if (EXTERNAL_SSE2(cpu_flags)) {
-            if (!(s->flags & TINTERLACE_FLAG_CVLPF))
-                s->lowpass_line = ff_lowpass_line_16_sse2;
-            else
-                s->lowpass_line = ff_lowpass_line_complex_12_sse2;
-        }
-        if (EXTERNAL_AVX(cpu_flags))
-            if (!(s->flags & TINTERLACE_FLAG_CVLPF))
-                s->lowpass_line = ff_lowpass_line_16_avx;
-        if (EXTERNAL_AVX2_FAST(cpu_flags)) {
-            if (!(s->flags & TINTERLACE_FLAG_CVLPF)) {
-                s->lowpass_line = ff_lowpass_line_16_avx2;
-            }
-        }
-    } else {
-        if (EXTERNAL_SSE2(cpu_flags)) {
-            if (!(s->flags & TINTERLACE_FLAG_CVLPF))
-                s->lowpass_line = ff_lowpass_line_sse2;
-            else
-                s->lowpass_line = ff_lowpass_line_complex_sse2;
-        }
-        if (EXTERNAL_AVX(cpu_flags))
-            if (!(s->flags & TINTERLACE_FLAG_CVLPF))
-                s->lowpass_line = ff_lowpass_line_avx;
-        if (EXTERNAL_AVX2_FAST(cpu_flags)) {
-            if (!(s->flags & TINTERLACE_FLAG_CVLPF)) {
-                s->lowpass_line = ff_lowpass_line_avx2;
-            }
-        }
-    }
-}
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 39b99b4..81a0bd0 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -313,6 +313,11 @@
 #include "libavutil/dict.h"
 #include "libavutil/log.h"
 
+// We have to implement deprecated functions until they are removed, this is the
+// simplest way to prevent warnings
+#undef attribute_deprecated
+#define attribute_deprecated
+
 #include "avio.h"
 #include "libavformat/version.h"
 
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 784973a..76ead7d 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1790,6 +1790,13 @@
         av_dict_get(s->metadata, "alpha_mode", NULL, 0))
         version = 4;
 
+    if (s->nb_streams > MAX_TRACKS) {
+        av_log(s, AV_LOG_ERROR,
+               "At most %d streams are supported for muxing in Matroska\n",
+               MAX_TRACKS);
+        return AVERROR(EINVAL);
+    }
+
     for (i = 0; i < s->nb_streams; i++) {
         if (s->streams[i]->codecpar->codec_id == AV_CODEC_ID_OPUS ||
             av_dict_get(s->streams[i]->metadata, "stereo_mode", NULL, 0) ||
diff --git a/libpostproc/postprocess.c b/libpostproc/postprocess.c
deleted file mode 100644
index 8d44165..0000000
--- a/libpostproc/postprocess.c
+++ /dev/null
@@ -1,1036 +0,0 @@
-/*
- * Copyright (C) 2001-2003 Michael Niedermayer (michaelni@gmx.at)
- *
- * AltiVec optimizations (C) 2004 Romain Dolbeau <romain@dolbeau.org>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/**
- * @file
- * postprocessing.
- */
-
-/*
-                        C       MMX     MMX2    3DNow   AltiVec
-isVertDC                Ec      Ec                      Ec
-isVertMinMaxOk          Ec      Ec                      Ec
-doVertLowPass           E               e       e       Ec
-doVertDefFilter         Ec      Ec      e       e       Ec
-isHorizDC               Ec      Ec                      Ec
-isHorizMinMaxOk         a       E                       Ec
-doHorizLowPass          E               e       e       Ec
-doHorizDefFilter        Ec      Ec      e       e       Ec
-do_a_deblock            Ec      E       Ec      E
-deRing                  E               e       e*      Ecp
-Vertical RKAlgo1        E               a       a
-Horizontal RKAlgo1                      a       a
-Vertical X1#            a               E       E
-Horizontal X1#          a               E       E
-LinIpolDeinterlace      e               E       E*
-CubicIpolDeinterlace    a               e       e*
-LinBlendDeinterlace     e               E       E*
-MedianDeinterlace#      E       Ec      Ec
-TempDeNoiser#           E               e       e       Ec
-
-* I do not have a 3DNow! CPU -> it is untested, but no one said it does not work so it seems to work
-# more or less selfinvented filters so the exactness is not too meaningful
-E = Exact implementation
-e = almost exact implementation (slightly different rounding,...)
-a = alternative / approximate impl
-c = checked against the other implementations (-vo md5)
-p = partially optimized, still some work to do
-*/
-
-/*
-TODO:
-reduce the time wasted on the mem transfer
-unroll stuff if instructions depend too much on the prior one
-move YScale thing to the end instead of fixing QP
-write a faster and higher quality deblocking filter :)
-make the mainloop more flexible (variable number of blocks at once
-        (the if/else stuff per block is slowing things down)
-compare the quality & speed of all filters
-split this huge file
-optimize c versions
-try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks
-...
-*/
-
-//Changelog: use git log
-
-#include "config.h"
-#include "libavutil/avutil.h"
-#include "libavutil/avassert.h"
-#include "libavutil/intreadwrite.h"
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-//#undef HAVE_MMXEXT_INLINE
-//#define HAVE_AMD3DNOW_INLINE
-//#undef HAVE_MMX_INLINE
-//#undef ARCH_X86
-//#define DEBUG_BRIGHTNESS
-#include "postprocess.h"
-#include "postprocess_internal.h"
-#include "libavutil/avstring.h"
-#include "libavutil/ppc/util_altivec.h"
-
-#include "libavutil/ffversion.h"
-const char postproc_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
-
-unsigned postproc_version(void)
-{
-    av_assert0(LIBPOSTPROC_VERSION_MICRO >= 100);
-    return LIBPOSTPROC_VERSION_INT;
-}
-
-const char *postproc_configuration(void)
-{
-    return FFMPEG_CONFIGURATION;
-}
-
-const char *postproc_license(void)
-{
-#define LICENSE_PREFIX "libpostproc license: "
-    return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
-}
-
-#define GET_MODE_BUFFER_SIZE 500
-#define OPTIONS_ARRAY_SIZE 10
-#define BLOCK_SIZE 8
-#define TEMP_STRIDE 8
-//#define NUM_BLOCKS_AT_ONCE 16 //not used yet
-
-#if ARCH_X86 && HAVE_INLINE_ASM
-DECLARE_ASM_CONST(8, uint64_t, w05)= 0x0005000500050005LL;
-DECLARE_ASM_CONST(8, uint64_t, w04)= 0x0004000400040004LL;
-DECLARE_ASM_CONST(8, uint64_t, w20)= 0x0020002000200020LL;
-DECLARE_ASM_CONST(8, uint64_t, b00)= 0x0000000000000000LL;
-DECLARE_ASM_CONST(8, uint64_t, b01)= 0x0101010101010101LL;
-DECLARE_ASM_CONST(8, uint64_t, b02)= 0x0202020202020202LL;
-DECLARE_ASM_CONST(8, uint64_t, b08)= 0x0808080808080808LL;
-DECLARE_ASM_CONST(8, uint64_t, b80)= 0x8080808080808080LL;
-#endif
-
-DECLARE_ASM_CONST(8, int, deringThreshold)= 20;
-
-
-static const struct PPFilter filters[]=
-{
-    {"hb", "hdeblock",              1, 1, 3, H_DEBLOCK},
-    {"vb", "vdeblock",              1, 2, 4, V_DEBLOCK},
-/*  {"hr", "rkhdeblock",            1, 1, 3, H_RK1_FILTER},
-    {"vr", "rkvdeblock",            1, 2, 4, V_RK1_FILTER},*/
-    {"h1", "x1hdeblock",            1, 1, 3, H_X1_FILTER},
-    {"v1", "x1vdeblock",            1, 2, 4, V_X1_FILTER},
-    {"ha", "ahdeblock",             1, 1, 3, H_A_DEBLOCK},
-    {"va", "avdeblock",             1, 2, 4, V_A_DEBLOCK},
-    {"dr", "dering",                1, 5, 6, DERING},
-    {"al", "autolevels",            0, 1, 2, LEVEL_FIX},
-    {"lb", "linblenddeint",         1, 1, 4, LINEAR_BLEND_DEINT_FILTER},
-    {"li", "linipoldeint",          1, 1, 4, LINEAR_IPOL_DEINT_FILTER},
-    {"ci", "cubicipoldeint",        1, 1, 4, CUBIC_IPOL_DEINT_FILTER},
-    {"md", "mediandeint",           1, 1, 4, MEDIAN_DEINT_FILTER},
-    {"fd", "ffmpegdeint",           1, 1, 4, FFMPEG_DEINT_FILTER},
-    {"l5", "lowpass5",              1, 1, 4, LOWPASS5_DEINT_FILTER},
-    {"tn", "tmpnoise",              1, 7, 8, TEMP_NOISE_FILTER},
-    {"fq", "forcequant",            1, 0, 0, FORCE_QUANT},
-    {"be", "bitexact",              1, 0, 0, BITEXACT},
-    {"vi", "visualize",             1, 0, 0, VISUALIZE},
-    {NULL, NULL,0,0,0,0} //End Marker
-};
-
-static const char * const replaceTable[]=
-{
-    "default",      "hb:a,vb:a,dr:a",
-    "de",           "hb:a,vb:a,dr:a",
-    "fast",         "h1:a,v1:a,dr:a",
-    "fa",           "h1:a,v1:a,dr:a",
-    "ac",           "ha:a:128:7,va:a,dr:a",
-    NULL //End Marker
-};
-
-/* The horizontal functions exist only in C because the MMX
- * code is faster with vertical filters and transposing. */
-
-/**
- * Check if the given 8x8 Block is mostly "flat"
- */
-static inline int isHorizDC_C(const uint8_t src[], int stride, const PPContext *c)
-{
-    int numEq= 0;
-    int y;
-    const int dcOffset= ((c->nonBQP*c->ppMode.baseDcDiff)>>8) + 1;
-    const int dcThreshold= dcOffset*2 + 1;
-
-    for(y=0; y<BLOCK_SIZE; y++){
-        numEq += ((unsigned)(src[0] - src[1] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[1] - src[2] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[2] - src[3] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[3] - src[4] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[4] - src[5] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[5] - src[6] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[6] - src[7] + dcOffset)) < dcThreshold;
-        src+= stride;
-    }
-    return numEq > c->ppMode.flatnessThreshold;
-}
-
-/**
- * Check if the middle 8x8 Block in the given 8x16 block is flat
- */
-static inline int isVertDC_C(const uint8_t src[], int stride, const PPContext *c)
-{
-    int numEq= 0;
-    int y;
-    const int dcOffset= ((c->nonBQP*c->ppMode.baseDcDiff)>>8) + 1;
-    const int dcThreshold= dcOffset*2 + 1;
-
-    src+= stride*4; // src points to begin of the 8x8 Block
-    for(y=0; y<BLOCK_SIZE-1; y++){
-        numEq += ((unsigned)(src[0] - src[0+stride] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[1] - src[1+stride] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[2] - src[2+stride] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[3] - src[3+stride] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[4] - src[4+stride] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[5] - src[5+stride] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[6] - src[6+stride] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[7] - src[7+stride] + dcOffset)) < dcThreshold;
-        src+= stride;
-    }
-    return numEq > c->ppMode.flatnessThreshold;
-}
-
-static inline int isHorizMinMaxOk_C(const uint8_t src[], int stride, int QP)
-{
-    int i;
-    for(i=0; i<2; i++){
-        if((unsigned)(src[0] - src[5] + 2*QP) > 4*QP) return 0;
-        src += stride;
-        if((unsigned)(src[2] - src[7] + 2*QP) > 4*QP) return 0;
-        src += stride;
-        if((unsigned)(src[4] - src[1] + 2*QP) > 4*QP) return 0;
-        src += stride;
-        if((unsigned)(src[6] - src[3] + 2*QP) > 4*QP) return 0;
-        src += stride;
-    }
-    return 1;
-}
-
-static inline int isVertMinMaxOk_C(const uint8_t src[], int stride, int QP)
-{
-    int x;
-    src+= stride*4;
-    for(x=0; x<BLOCK_SIZE; x+=4){
-        if((unsigned)(src[  x + 0*stride] - src[  x + 5*stride] + 2*QP) > 4*QP) return 0;
-        if((unsigned)(src[1+x + 2*stride] - src[1+x + 7*stride] + 2*QP) > 4*QP) return 0;
-        if((unsigned)(src[2+x + 4*stride] - src[2+x + 1*stride] + 2*QP) > 4*QP) return 0;
-        if((unsigned)(src[3+x + 6*stride] - src[3+x + 3*stride] + 2*QP) > 4*QP) return 0;
-    }
-    return 1;
-}
-
-static inline int horizClassify_C(const uint8_t src[], int stride, const PPContext *c)
-{
-    if( isHorizDC_C(src, stride, c) ){
-        return isHorizMinMaxOk_C(src, stride, c->QP);
-    }else{
-        return 2;
-    }
-}
-
-static inline int vertClassify_C(const uint8_t src[], int stride, const PPContext *c)
-{
-    if( isVertDC_C(src, stride, c) ){
-        return isVertMinMaxOk_C(src, stride, c->QP);
-    }else{
-        return 2;
-    }
-}
-
-static inline void doHorizDefFilter_C(uint8_t dst[], int stride, const PPContext *c)
-{
-    int y;
-    for(y=0; y<BLOCK_SIZE; y++){
-        const int middleEnergy= 5*(dst[4] - dst[3]) + 2*(dst[2] - dst[5]);
-
-        if(FFABS(middleEnergy) < 8*c->QP){
-            const int q=(dst[3] - dst[4])/2;
-            const int leftEnergy=  5*(dst[2] - dst[1]) + 2*(dst[0] - dst[3]);
-            const int rightEnergy= 5*(dst[6] - dst[5]) + 2*(dst[4] - dst[7]);
-
-            int d= FFABS(middleEnergy) - FFMIN( FFABS(leftEnergy), FFABS(rightEnergy) );
-            d= FFMAX(d, 0);
-
-            d= (5*d + 32) >> 6;
-            d*= FFSIGN(-middleEnergy);
-
-            if(q>0)
-            {
-                d = FFMAX(d, 0);
-                d = FFMIN(d, q);
-            }
-            else
-            {
-                d = FFMIN(d, 0);
-                d = FFMAX(d, q);
-            }
-
-            dst[3]-= d;
-            dst[4]+= d;
-        }
-        dst+= stride;
-    }
-}
-
-/**
- * Do a horizontal low pass filter on the 10x8 block (dst points to middle 8x8 Block)
- * using the 9-Tap Filter (1,1,2,2,4,2,2,1,1)/16 (C version)
- */
-static inline void doHorizLowPass_C(uint8_t dst[], int stride, const PPContext *c)
-{
-    int y;
-    for(y=0; y<BLOCK_SIZE; y++){
-        const int first= FFABS(dst[-1] - dst[0]) < c->QP ? dst[-1] : dst[0];
-        const int last= FFABS(dst[8] - dst[7]) < c->QP ? dst[8] : dst[7];
-
-        int sums[10];
-        sums[0] = 4*first + dst[0] + dst[1] + dst[2] + 4;
-        sums[1] = sums[0] - first  + dst[3];
-        sums[2] = sums[1] - first  + dst[4];
-        sums[3] = sums[2] - first  + dst[5];
-        sums[4] = sums[3] - first  + dst[6];
-        sums[5] = sums[4] - dst[0] + dst[7];
-        sums[6] = sums[5] - dst[1] + last;
-        sums[7] = sums[6] - dst[2] + last;
-        sums[8] = sums[7] - dst[3] + last;
-        sums[9] = sums[8] - dst[4] + last;
-
-        dst[0]= (sums[0] + sums[2] + 2*dst[0])>>4;
-        dst[1]= (sums[1] + sums[3] + 2*dst[1])>>4;
-        dst[2]= (sums[2] + sums[4] + 2*dst[2])>>4;
-        dst[3]= (sums[3] + sums[5] + 2*dst[3])>>4;
-        dst[4]= (sums[4] + sums[6] + 2*dst[4])>>4;
-        dst[5]= (sums[5] + sums[7] + 2*dst[5])>>4;
-        dst[6]= (sums[6] + sums[8] + 2*dst[6])>>4;
-        dst[7]= (sums[7] + sums[9] + 2*dst[7])>>4;
-
-        dst+= stride;
-    }
-}
-
-/**
- * Experimental Filter 1 (Horizontal)
- * will not damage linear gradients
- * Flat blocks should look like they were passed through the (1,1,2,2,4,2,2,1,1) 9-Tap filter
- * can only smooth blocks at the expected locations (it cannot smooth them if they did move)
- * MMX2 version does correct clipping C version does not
- * not identical with the vertical one
- */
-static inline void horizX1Filter(uint8_t *src, int stride, int QP)
-{
-    int y;
-    static uint64_t lut[256];
-    if(!lut[255])
-    {
-        int i;
-        for(i=0; i<256; i++)
-        {
-            int v= i < 128 ? 2*i : 2*(i-256);
-/*
-//Simulate 112242211 9-Tap filter
-            uint64_t a= (v/16)  & 0xFF;
-            uint64_t b= (v/8)   & 0xFF;
-            uint64_t c= (v/4)   & 0xFF;
-            uint64_t d= (3*v/8) & 0xFF;
-*/
-//Simulate piecewise linear interpolation
-            uint64_t a= (v/16)   & 0xFF;
-            uint64_t b= (v*3/16) & 0xFF;
-            uint64_t c= (v*5/16) & 0xFF;
-            uint64_t d= (7*v/16) & 0xFF;
-            uint64_t A= (0x100 - a)&0xFF;
-            uint64_t B= (0x100 - b)&0xFF;
-            uint64_t C= (0x100 - c)&0xFF;
-            uint64_t D= (0x100 - c)&0xFF;
-
-            lut[i]   = (a<<56) | (b<<48) | (c<<40) | (d<<32) |
-                       (D<<24) | (C<<16) | (B<<8)  | (A);
-            //lut[i] = (v<<32) | (v<<24);
-        }
-    }
-
-    for(y=0; y<BLOCK_SIZE; y++){
-        int a= src[1] - src[2];
-        int b= src[3] - src[4];
-        int c= src[5] - src[6];
-
-        int d= FFMAX(FFABS(b) - (FFABS(a) + FFABS(c))/2, 0);
-
-        if(d < QP){
-            int v = d * FFSIGN(-b);
-
-            src[1] +=v/8;
-            src[2] +=v/4;
-            src[3] +=3*v/8;
-            src[4] -=3*v/8;
-            src[5] -=v/4;
-            src[6] -=v/8;
-        }
-        src+=stride;
-    }
-}
-
-/**
- * accurate deblock filter
- */
-static av_always_inline void do_a_deblock_C(uint8_t *src, int step,
-                                            int stride, const PPContext *c, int mode)
-{
-    int y;
-    const int QP= c->QP;
-    const int dcOffset= ((c->nonBQP*c->ppMode.baseDcDiff)>>8) + 1;
-    const int dcThreshold= dcOffset*2 + 1;
-
-    src+= step*4; // src points to begin of the 8x8 Block
-    for(y=0; y<8; y++){
-        int numEq= 0;
-
-        numEq += ((unsigned)(src[-1*step] - src[0*step] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[ 0*step] - src[1*step] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[ 1*step] - src[2*step] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[ 2*step] - src[3*step] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[ 3*step] - src[4*step] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[ 4*step] - src[5*step] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[ 5*step] - src[6*step] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[ 6*step] - src[7*step] + dcOffset)) < dcThreshold;
-        numEq += ((unsigned)(src[ 7*step] - src[8*step] + dcOffset)) < dcThreshold;
-        if(numEq > c->ppMode.flatnessThreshold){
-            int min, max, x;
-
-            if(src[0] > src[step]){
-                max= src[0];
-                min= src[step];
-            }else{
-                max= src[step];
-                min= src[0];
-            }
-            for(x=2; x<8; x+=2){
-                if(src[x*step] > src[(x+1)*step]){
-                        if(src[x    *step] > max) max= src[ x   *step];
-                        if(src[(x+1)*step] < min) min= src[(x+1)*step];
-                }else{
-                        if(src[(x+1)*step] > max) max= src[(x+1)*step];
-                        if(src[ x   *step] < min) min= src[ x   *step];
-                }
-            }
-            if(max-min < 2*QP){
-                const int first= FFABS(src[-1*step] - src[0]) < QP ? src[-1*step] : src[0];
-                const int last= FFABS(src[8*step] - src[7*step]) < QP ? src[8*step] : src[7*step];
-
-                int sums[10];
-                sums[0] = 4*first + src[0*step] + src[1*step] + src[2*step] + 4;
-                sums[1] = sums[0] - first       + src[3*step];
-                sums[2] = sums[1] - first       + src[4*step];
-                sums[3] = sums[2] - first       + src[5*step];
-                sums[4] = sums[3] - first       + src[6*step];
-                sums[5] = sums[4] - src[0*step] + src[7*step];
-                sums[6] = sums[5] - src[1*step] + last;
-                sums[7] = sums[6] - src[2*step] + last;
-                sums[8] = sums[7] - src[3*step] + last;
-                sums[9] = sums[8] - src[4*step] + last;
-
-                if (mode & VISUALIZE) {
-                    src[0*step] =
-                    src[1*step] =
-                    src[2*step] =
-                    src[3*step] =
-                    src[4*step] =
-                    src[5*step] =
-                    src[6*step] =
-                    src[7*step] = 128;
-                }
-                src[0*step]= (sums[0] + sums[2] + 2*src[0*step])>>4;
-                src[1*step]= (sums[1] + sums[3] + 2*src[1*step])>>4;
-                src[2*step]= (sums[2] + sums[4] + 2*src[2*step])>>4;
-                src[3*step]= (sums[3] + sums[5] + 2*src[3*step])>>4;
-                src[4*step]= (sums[4] + sums[6] + 2*src[4*step])>>4;
-                src[5*step]= (sums[5] + sums[7] + 2*src[5*step])>>4;
-                src[6*step]= (sums[6] + sums[8] + 2*src[6*step])>>4;
-                src[7*step]= (sums[7] + sums[9] + 2*src[7*step])>>4;
-            }
-        }else{
-            const int middleEnergy= 5*(src[4*step] - src[3*step]) + 2*(src[2*step] - src[5*step]);
-
-            if(FFABS(middleEnergy) < 8*QP){
-                const int q=(src[3*step] - src[4*step])/2;
-                const int leftEnergy=  5*(src[2*step] - src[1*step]) + 2*(src[0*step] - src[3*step]);
-                const int rightEnergy= 5*(src[6*step] - src[5*step]) + 2*(src[4*step] - src[7*step]);
-
-                int d= FFABS(middleEnergy) - FFMIN( FFABS(leftEnergy), FFABS(rightEnergy) );
-                d= FFMAX(d, 0);
-
-                d= (5*d + 32) >> 6;
-                d*= FFSIGN(-middleEnergy);
-
-                if(q>0){
-                    d = FFMAX(d, 0);
-                    d = FFMIN(d, q);
-                }else{
-                    d = FFMIN(d, 0);
-                    d = FFMAX(d, q);
-                }
-
-                if ((mode & VISUALIZE) && d) {
-                    d= (d < 0) ? 32 : -32;
-                    src[3*step]= av_clip_uint8(src[3*step] - d);
-                    src[4*step]= av_clip_uint8(src[4*step] + d);
-                    d = 0;
-                }
-
-                src[3*step]-= d;
-                src[4*step]+= d;
-            }
-        }
-
-        src += stride;
-    }
-}
-
-//Note: we have C, MMX, MMX2, 3DNOW version there is no 3DNOW+MMX2 one
-//Plain C versions
-//we always compile C for testing which needs bitexactness
-#define TEMPLATE_PP_C 1
-#include "postprocess_template.c"
-
-#if HAVE_ALTIVEC
-#   define TEMPLATE_PP_ALTIVEC 1
-#   include "postprocess_altivec_template.c"
-#   include "postprocess_template.c"
-#endif
-
-#if ARCH_X86 && HAVE_INLINE_ASM
-#    if CONFIG_RUNTIME_CPUDETECT
-#        define TEMPLATE_PP_MMX 1
-#        include "postprocess_template.c"
-#        define TEMPLATE_PP_MMXEXT 1
-#        include "postprocess_template.c"
-#        define TEMPLATE_PP_3DNOW 1
-#        include "postprocess_template.c"
-#        define TEMPLATE_PP_SSE2 1
-#        include "postprocess_template.c"
-#    else
-#        if HAVE_SSE2_INLINE
-#            define TEMPLATE_PP_SSE2 1
-#            include "postprocess_template.c"
-#        elif HAVE_MMXEXT_INLINE
-#            define TEMPLATE_PP_MMXEXT 1
-#            include "postprocess_template.c"
-#        elif HAVE_AMD3DNOW_INLINE
-#            define TEMPLATE_PP_3DNOW 1
-#            include "postprocess_template.c"
-#        elif HAVE_MMX_INLINE
-#            define TEMPLATE_PP_MMX 1
-#            include "postprocess_template.c"
-#        endif
-#    endif
-#endif
-
-typedef void (*pp_fn)(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height,
-                      const int8_t QPs[], int QPStride, int isColor, PPContext *c2);
-
-static inline void postProcess(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height,
-        const int8_t QPs[], int QPStride, int isColor, pp_mode *vm, pp_context *vc)
-{
-    pp_fn pp = postProcess_C;
-    PPContext *c= (PPContext *)vc;
-    PPMode *ppMode= (PPMode *)vm;
-    c->ppMode= *ppMode; //FIXME
-
-    if (!(ppMode->lumMode & BITEXACT)) {
-#if CONFIG_RUNTIME_CPUDETECT
-#if ARCH_X86 && HAVE_INLINE_ASM
-        // ordered per speed fastest first
-        if      (c->cpuCaps & AV_CPU_FLAG_SSE2)     pp = postProcess_SSE2;
-        else if (c->cpuCaps & AV_CPU_FLAG_MMXEXT)   pp = postProcess_MMX2;
-        else if (c->cpuCaps & AV_CPU_FLAG_3DNOW)    pp = postProcess_3DNow;
-        else if (c->cpuCaps & AV_CPU_FLAG_MMX)      pp = postProcess_MMX;
-#elif HAVE_ALTIVEC
-        if      (c->cpuCaps & AV_CPU_FLAG_ALTIVEC)  pp = postProcess_altivec;
-#endif
-#else /* CONFIG_RUNTIME_CPUDETECT */
-#if     HAVE_SSE2_INLINE
-        pp = postProcess_SSE2;
-#elif   HAVE_MMXEXT_INLINE
-        pp = postProcess_MMX2;
-#elif HAVE_AMD3DNOW_INLINE
-        pp = postProcess_3DNow;
-#elif HAVE_MMX_INLINE
-        pp = postProcess_MMX;
-#elif HAVE_ALTIVEC
-        pp = postProcess_altivec;
-#endif
-#endif /* !CONFIG_RUNTIME_CPUDETECT */
-    }
-
-    pp(src, srcStride, dst, dstStride, width, height, QPs, QPStride, isColor, c);
-}
-
-/* -pp Command line Help
-*/
-const char pp_help[] =
-"Available postprocessing filters:\n"
-"Filters                        Options\n"
-"short  long name       short   long option     Description\n"
-"*      *               a       autoq           CPU power dependent enabler\n"
-"                       c       chrom           chrominance filtering enabled\n"
-"                       y       nochrom         chrominance filtering disabled\n"
-"                       n       noluma          luma filtering disabled\n"
-"hb     hdeblock        (2 threshold)           horizontal deblocking filter\n"
-"       1. difference factor: default=32, higher -> more deblocking\n"
-"       2. flatness threshold: default=39, lower -> more deblocking\n"
-"                       the h & v deblocking filters share these\n"
-"                       so you can't set different thresholds for h / v\n"
-"vb     vdeblock        (2 threshold)           vertical deblocking filter\n"
-"ha     hadeblock       (2 threshold)           horizontal deblocking filter\n"
-"va     vadeblock       (2 threshold)           vertical deblocking filter\n"
-"h1     x1hdeblock                              experimental h deblock filter 1\n"
-"v1     x1vdeblock                              experimental v deblock filter 1\n"
-"dr     dering                                  deringing filter\n"
-"al     autolevels                              automatic brightness / contrast\n"
-"                       f        fullyrange     stretch luminance to (0..255)\n"
-"lb     linblenddeint                           linear blend deinterlacer\n"
-"li     linipoldeint                            linear interpolating deinterlace\n"
-"ci     cubicipoldeint                          cubic interpolating deinterlacer\n"
-"md     mediandeint                             median deinterlacer\n"
-"fd     ffmpegdeint                             ffmpeg deinterlacer\n"
-"l5     lowpass5                                FIR lowpass deinterlacer\n"
-"de     default                                 hb:a,vb:a,dr:a\n"
-"fa     fast                                    h1:a,v1:a,dr:a\n"
-"ac                                             ha:a:128:7,va:a,dr:a\n"
-"tn     tmpnoise        (3 threshold)           temporal noise reducer\n"
-"                     1. <= 2. <= 3.            larger -> stronger filtering\n"
-"fq     forceQuant      <quantizer>             force quantizer\n"
-"Usage:\n"
-"<filterName>[:<option>[:<option>...]][[,|/][-]<filterName>[:<option>...]]...\n"
-"long form example:\n"
-"vdeblock:autoq/hdeblock:autoq/linblenddeint    default,-vdeblock\n"
-"short form example:\n"
-"vb:a/hb:a/lb                                   de,-vb\n"
-"more examples:\n"
-"tn:64:128:256\n"
-"\n"
-;
-
-pp_mode *pp_get_mode_by_name_and_quality(const char *name, int quality)
-{
-    char temp[GET_MODE_BUFFER_SIZE];
-    char *p= temp;
-    static const char filterDelimiters[] = ",/";
-    static const char optionDelimiters[] = ":|";
-    struct PPMode *ppMode;
-    char *filterToken;
-
-    if (!name)  {
-        av_log(NULL, AV_LOG_ERROR, "pp: Missing argument\n");
-        return NULL;
-    }
-
-    if (!strcmp(name, "help")) {
-        const char *p;
-        for (p = pp_help; strchr(p, '\n'); p = strchr(p, '\n') + 1) {
-            av_strlcpy(temp, p, FFMIN(sizeof(temp), strchr(p, '\n') - p + 2));
-            av_log(NULL, AV_LOG_INFO, "%s", temp);
-        }
-        return NULL;
-    }
-
-    ppMode= av_malloc(sizeof(PPMode));
-    if (!ppMode)
-        return NULL;
-
-    ppMode->lumMode= 0;
-    ppMode->chromMode= 0;
-    ppMode->maxTmpNoise[0]= 700;
-    ppMode->maxTmpNoise[1]= 1500;
-    ppMode->maxTmpNoise[2]= 3000;
-    ppMode->maxAllowedY= 234;
-    ppMode->minAllowedY= 16;
-    ppMode->baseDcDiff= 256/8;
-    ppMode->flatnessThreshold= 56-16-1;
-    ppMode->maxClippedThreshold= (AVRational){1,100};
-    ppMode->error=0;
-
-    memset(temp, 0, GET_MODE_BUFFER_SIZE);
-    av_strlcpy(temp, name, GET_MODE_BUFFER_SIZE - 1);
-
-    av_log(NULL, AV_LOG_DEBUG, "pp: %s\n", name);
-
-    for(;;){
-        const char *filterName;
-        int q= 1000000; //PP_QUALITY_MAX;
-        int chrom=-1;
-        int luma=-1;
-        const char *option;
-        const char *options[OPTIONS_ARRAY_SIZE];
-        int i;
-        int filterNameOk=0;
-        int numOfUnknownOptions=0;
-        int enable=1; //does the user want us to enabled or disabled the filter
-        char *tokstate;
-
-        filterToken= av_strtok(p, filterDelimiters, &tokstate);
-        if(!filterToken) break;
-        p+= strlen(filterToken) + 1; // p points to next filterToken
-        filterName= av_strtok(filterToken, optionDelimiters, &tokstate);
-        if (!filterName) {
-            ppMode->error++;
-            break;
-        }
-        av_log(NULL, AV_LOG_DEBUG, "pp: %s::%s\n", filterToken, filterName);
-
-        if(*filterName == '-'){
-            enable=0;
-            filterName++;
-        }
-
-        for(;;){ //for all options
-            option= av_strtok(NULL, optionDelimiters, &tokstate);
-            if(!option) break;
-
-            av_log(NULL, AV_LOG_DEBUG, "pp: option: %s\n", option);
-            if(!strcmp("autoq", option) || !strcmp("a", option)) q= quality;
-            else if(!strcmp("nochrom", option) || !strcmp("y", option)) chrom=0;
-            else if(!strcmp("chrom", option) || !strcmp("c", option)) chrom=1;
-            else if(!strcmp("noluma", option) || !strcmp("n", option)) luma=0;
-            else{
-                options[numOfUnknownOptions] = option;
-                numOfUnknownOptions++;
-            }
-            if(numOfUnknownOptions >= OPTIONS_ARRAY_SIZE-1) break;
-        }
-        options[numOfUnknownOptions] = NULL;
-
-        /* replace stuff from the replace Table */
-        for(i=0; replaceTable[2*i]; i++){
-            if(!strcmp(replaceTable[2*i], filterName)){
-                size_t newlen = strlen(replaceTable[2*i + 1]);
-                int plen;
-                int spaceLeft;
-
-                p--, *p=',';
-
-                plen= strlen(p);
-                spaceLeft= p - temp + plen;
-                if(spaceLeft + newlen  >= GET_MODE_BUFFER_SIZE - 1){
-                    ppMode->error++;
-                    break;
-                }
-                memmove(p + newlen, p, plen+1);
-                memcpy(p, replaceTable[2*i + 1], newlen);
-                filterNameOk=1;
-            }
-        }
-
-        for(i=0; filters[i].shortName; i++){
-            if(   !strcmp(filters[i].longName, filterName)
-               || !strcmp(filters[i].shortName, filterName)){
-                ppMode->lumMode &= ~filters[i].mask;
-                ppMode->chromMode &= ~filters[i].mask;
-
-                filterNameOk=1;
-                if(!enable) break; // user wants to disable it
-
-                if(q >= filters[i].minLumQuality && luma)
-                    ppMode->lumMode|= filters[i].mask;
-                if(chrom==1 || (chrom==-1 && filters[i].chromDefault))
-                    if(q >= filters[i].minChromQuality)
-                            ppMode->chromMode|= filters[i].mask;
-
-                if(filters[i].mask == LEVEL_FIX){
-                    int o;
-                    ppMode->minAllowedY= 16;
-                    ppMode->maxAllowedY= 234;
-                    for(o=0; options[o]; o++){
-                        if(  !strcmp(options[o],"fullyrange")
-                           ||!strcmp(options[o],"f")){
-                            ppMode->minAllowedY= 0;
-                            ppMode->maxAllowedY= 255;
-                            numOfUnknownOptions--;
-                        }
-                    }
-                }
-                else if(filters[i].mask == TEMP_NOISE_FILTER)
-                {
-                    int o;
-                    int numOfNoises=0;
-
-                    for(o=0; options[o]; o++){
-                        char *tail;
-                        ppMode->maxTmpNoise[numOfNoises]=
-                            strtol(options[o], &tail, 0);
-                        if(tail!=options[o]){
-                            numOfNoises++;
-                            numOfUnknownOptions--;
-                            if(numOfNoises >= 3) break;
-                        }
-                    }
-                }
-                else if(filters[i].mask == V_DEBLOCK   || filters[i].mask == H_DEBLOCK
-                     || filters[i].mask == V_A_DEBLOCK || filters[i].mask == H_A_DEBLOCK){
-                    int o;
-
-                    for(o=0; options[o] && o<2; o++){
-                        char *tail;
-                        int val= strtol(options[o], &tail, 0);
-                        if(tail==options[o]) break;
-
-                        numOfUnknownOptions--;
-                        if(o==0) ppMode->baseDcDiff= val;
-                        else ppMode->flatnessThreshold= val;
-                    }
-                }
-                else if(filters[i].mask == FORCE_QUANT){
-                    int o;
-                    ppMode->forcedQuant= 15;
-
-                    for(o=0; options[o] && o<1; o++){
-                        char *tail;
-                        int val= strtol(options[o], &tail, 0);
-                        if(tail==options[o]) break;
-
-                        numOfUnknownOptions--;
-                        ppMode->forcedQuant= val;
-                    }
-                }
-            }
-        }
-        if(!filterNameOk) ppMode->error++;
-        ppMode->error += numOfUnknownOptions;
-    }
-
-    av_log(NULL, AV_LOG_DEBUG, "pp: lumMode=%X, chromMode=%X\n", ppMode->lumMode, ppMode->chromMode);
-    if(ppMode->error){
-        av_log(NULL, AV_LOG_ERROR, "%d errors in postprocess string \"%s\"\n", ppMode->error, name);
-        av_free(ppMode);
-        return NULL;
-    }
-    return ppMode;
-}
-
-void pp_free_mode(pp_mode *mode){
-    av_free(mode);
-}
-
-static void reallocAlign(void **p, int size){
-    av_free(*p);
-    *p= av_mallocz(size);
-}
-
-static void reallocBuffers(PPContext *c, int width, int height, int stride, int qpStride){
-    int mbWidth = (width+15)>>4;
-    int mbHeight= (height+15)>>4;
-    int i;
-
-    c->stride= stride;
-    c->qpStride= qpStride;
-
-    reallocAlign((void **)&c->tempDst, stride*24+32);
-    reallocAlign((void **)&c->tempSrc, stride*24);
-    reallocAlign((void **)&c->tempBlocks, 2*16*8);
-    reallocAlign((void **)&c->yHistogram, 256*sizeof(uint64_t));
-    for(i=0; i<256; i++)
-            c->yHistogram[i]= width*height/64*15/256;
-
-    for(i=0; i<3; i++){
-        //Note: The +17*1024 is just there so I do not have to worry about r/w over the end.
-        reallocAlign((void **)&c->tempBlurred[i], stride*mbHeight*16 + 17*1024);
-        reallocAlign((void **)&c->tempBlurredPast[i], 256*((height+7)&(~7))/2 + 17*1024);//FIXME size
-    }
-
-    reallocAlign((void **)&c->deintTemp, 2*width+32);
-    reallocAlign((void **)&c->nonBQPTable, qpStride*mbHeight*sizeof(int8_t));
-    reallocAlign((void **)&c->stdQPTable, qpStride*mbHeight*sizeof(int8_t));
-    reallocAlign((void **)&c->forcedQPTable, mbWidth*sizeof(int8_t));
-}
-
-static const char * context_to_name(void * ptr) {
-    return "postproc";
-}
-
-static const AVClass av_codec_context_class = { "Postproc", context_to_name, NULL };
-
-av_cold pp_context *pp_get_context(int width, int height, int cpuCaps){
-    PPContext *c= av_mallocz(sizeof(PPContext));
-    int stride= FFALIGN(width, 16);  //assumed / will realloc if needed
-    int qpStride= (width+15)/16 + 2; //assumed / will realloc if needed
-
-    if (!c)
-        return NULL;
-
-    c->av_class = &av_codec_context_class;
-    if(cpuCaps&PP_FORMAT){
-        c->hChromaSubSample= cpuCaps&0x3;
-        c->vChromaSubSample= (cpuCaps>>4)&0x3;
-    }else{
-        c->hChromaSubSample= 1;
-        c->vChromaSubSample= 1;
-    }
-    if (cpuCaps & PP_CPU_CAPS_AUTO) {
-        c->cpuCaps = av_get_cpu_flags();
-    } else {
-        c->cpuCaps = 0;
-        if (cpuCaps & PP_CPU_CAPS_MMX)      c->cpuCaps |= AV_CPU_FLAG_MMX;
-        if (cpuCaps & PP_CPU_CAPS_MMX2)     c->cpuCaps |= AV_CPU_FLAG_MMXEXT;
-        if (cpuCaps & PP_CPU_CAPS_3DNOW)    c->cpuCaps |= AV_CPU_FLAG_3DNOW;
-        if (cpuCaps & PP_CPU_CAPS_ALTIVEC)  c->cpuCaps |= AV_CPU_FLAG_ALTIVEC;
-    }
-
-    reallocBuffers(c, width, height, stride, qpStride);
-
-    c->frameNum=-1;
-
-    return c;
-}
-
-av_cold void pp_free_context(void *vc){
-    PPContext *c = (PPContext*)vc;
-    int i;
-
-    for(i=0; i<FF_ARRAY_ELEMS(c->tempBlurred); i++)
-        av_free(c->tempBlurred[i]);
-    for(i=0; i<FF_ARRAY_ELEMS(c->tempBlurredPast); i++)
-        av_free(c->tempBlurredPast[i]);
-
-    av_free(c->tempBlocks);
-    av_free(c->yHistogram);
-    av_free(c->tempDst);
-    av_free(c->tempSrc);
-    av_free(c->deintTemp);
-    av_free(c->stdQPTable);
-    av_free(c->nonBQPTable);
-    av_free(c->forcedQPTable);
-
-    memset(c, 0, sizeof(PPContext));
-
-    av_free(c);
-}
-
-void  pp_postprocess(const uint8_t * src[3], const int srcStride[3],
-                     uint8_t * dst[3], const int dstStride[3],
-                     int width, int height,
-                     const int8_t *QP_store,  int QPStride,
-                     pp_mode *vm,  void *vc, int pict_type)
-{
-    int mbWidth = (width+15)>>4;
-    int mbHeight= (height+15)>>4;
-    PPMode *mode = vm;
-    PPContext *c = vc;
-    int minStride= FFMAX(FFABS(srcStride[0]), FFABS(dstStride[0]));
-    int absQPStride = FFABS(QPStride);
-
-    // c->stride and c->QPStride are always positive
-    if(c->stride < minStride || c->qpStride < absQPStride)
-        reallocBuffers(c, width, height,
-                       FFMAX(minStride, c->stride),
-                       FFMAX(c->qpStride, absQPStride));
-
-    if(!QP_store || (mode->lumMode & FORCE_QUANT)){
-        int i;
-        QP_store= c->forcedQPTable;
-        absQPStride = QPStride = 0;
-        if(mode->lumMode & FORCE_QUANT)
-            for(i=0; i<mbWidth; i++) c->forcedQPTable[i]= mode->forcedQuant;
-        else
-            for(i=0; i<mbWidth; i++) c->forcedQPTable[i]= 1;
-    }
-
-    if(pict_type & PP_PICT_TYPE_QP2){
-        int i;
-        const int count= FFMAX(mbHeight * absQPStride, mbWidth);
-        for(i=0; i<(count>>2); i++){
-            AV_WN32(c->stdQPTable + (i<<2), AV_RN32(QP_store + (i<<2)) >> 1 & 0x7F7F7F7F);
-        }
-        for(i<<=2; i<count; i++){
-            c->stdQPTable[i] = QP_store[i]>>1;
-        }
-        QP_store= c->stdQPTable;
-        QPStride= absQPStride;
-    }
-
-    if(0){
-        int x,y;
-        for(y=0; y<mbHeight; y++){
-            for(x=0; x<mbWidth; x++){
-                av_log(c, AV_LOG_INFO, "%2d ", QP_store[x + y*QPStride]);
-            }
-            av_log(c, AV_LOG_INFO, "\n");
-        }
-        av_log(c, AV_LOG_INFO, "\n");
-    }
-
-    if((pict_type&7)!=3){
-        if (QPStride >= 0){
-            int i;
-            const int count= FFMAX(mbHeight * QPStride, mbWidth);
-            for(i=0; i<(count>>2); i++){
-                AV_WN32(c->nonBQPTable + (i<<2), AV_RN32(QP_store + (i<<2)) & 0x3F3F3F3F);
-            }
-            for(i<<=2; i<count; i++){
-                c->nonBQPTable[i] = QP_store[i] & 0x3F;
-            }
-        } else {
-            int i,j;
-            for(i=0; i<mbHeight; i++) {
-                for(j=0; j<absQPStride; j++) {
-                    c->nonBQPTable[i*absQPStride+j] = QP_store[i*QPStride+j] & 0x3F;
-                }
-            }
-        }
-    }
-
-    av_log(c, AV_LOG_DEBUG, "using npp filters 0x%X/0x%X\n",
-           mode->lumMode, mode->chromMode);
-
-    postProcess(src[0], srcStride[0], dst[0], dstStride[0],
-                width, height, QP_store, QPStride, 0, mode, c);
-
-    if (!(src[1] && src[2] && dst[1] && dst[2]))
-        return;
-
-    width  = (width )>>c->hChromaSubSample;
-    height = (height)>>c->vChromaSubSample;
-
-    if(mode->chromMode){
-        postProcess(src[1], srcStride[1], dst[1], dstStride[1],
-                    width, height, QP_store, QPStride, 1, mode, c);
-        postProcess(src[2], srcStride[2], dst[2], dstStride[2],
-                    width, height, QP_store, QPStride, 2, mode, c);
-    }
-    else if(srcStride[1] == dstStride[1] && srcStride[2] == dstStride[2]){
-        linecpy(dst[1], src[1], height, srcStride[1]);
-        linecpy(dst[2], src[2], height, srcStride[2]);
-    }else{
-        int y;
-        for(y=0; y<height; y++){
-            memcpy(&(dst[1][y*dstStride[1]]), &(src[1][y*srcStride[1]]), width);
-            memcpy(&(dst[2][y*dstStride[2]]), &(src[2][y*srcStride[2]]), width);
-        }
-    }
-}
diff --git a/libpostproc/postprocess.h b/libpostproc/postprocess.h
deleted file mode 100644
index 348ee7c..0000000
--- a/libpostproc/postprocess.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2001-2003 Michael Niedermayer (michaelni@gmx.at)
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef POSTPROC_POSTPROCESS_H
-#define POSTPROC_POSTPROCESS_H
-
-/**
- * @file
- * @ingroup lpp
- * external API header
- */
-
-/**
- * @defgroup lpp libpostproc
- * Video postprocessing library.
- *
- * @{
- */
-
-#include "libpostproc/version.h"
-
-/**
- * Return the LIBPOSTPROC_VERSION_INT constant.
- */
-unsigned postproc_version(void);
-
-/**
- * Return the libpostproc build-time configuration.
- */
-const char *postproc_configuration(void);
-
-/**
- * Return the libpostproc license.
- */
-const char *postproc_license(void);
-
-#define PP_QUALITY_MAX 6
-
-#include <inttypes.h>
-
-typedef void pp_context;
-typedef void pp_mode;
-
-#if LIBPOSTPROC_VERSION_INT < (52<<16)
-typedef pp_context pp_context_t;
-typedef pp_mode pp_mode_t;
-extern const char *const pp_help; ///< a simple help text
-#else
-extern const char pp_help[]; ///< a simple help text
-#endif
-
-void  pp_postprocess(const uint8_t * src[3], const int srcStride[3],
-                     uint8_t * dst[3], const int dstStride[3],
-                     int horizontalSize, int verticalSize,
-                     const int8_t *QP_store,  int QP_stride,
-                     pp_mode *mode, pp_context *ppContext, int pict_type);
-
-
-/**
- * Return a pp_mode or NULL if an error occurred.
- *
- * @param name    the string after "-pp" on the command line
- * @param quality a number from 0 to PP_QUALITY_MAX
- */
-pp_mode *pp_get_mode_by_name_and_quality(const char *name, int quality);
-void pp_free_mode(pp_mode *mode);
-
-pp_context *pp_get_context(int width, int height, int flags);
-void pp_free_context(pp_context *ppContext);
-
-#define PP_CPU_CAPS_MMX   0x80000000
-#define PP_CPU_CAPS_MMX2  0x20000000
-#define PP_CPU_CAPS_3DNOW 0x40000000
-#define PP_CPU_CAPS_ALTIVEC 0x10000000
-#define PP_CPU_CAPS_AUTO  0x00080000
-
-#define PP_FORMAT         0x00000008
-#define PP_FORMAT_420    (0x00000011|PP_FORMAT)
-#define PP_FORMAT_422    (0x00000001|PP_FORMAT)
-#define PP_FORMAT_411    (0x00000002|PP_FORMAT)
-#define PP_FORMAT_444    (0x00000000|PP_FORMAT)
-#define PP_FORMAT_440    (0x00000010|PP_FORMAT)
-
-#define PP_PICT_TYPE_QP2  0x00000010 ///< MPEG2 style QScale
-
-/**
- * @}
- */
-
-#endif /* POSTPROC_POSTPROCESS_H */
diff --git a/libpostproc/postprocess_altivec_template.c b/libpostproc/postprocess_altivec_template.c
deleted file mode 100644
index fa6ebe2..0000000
--- a/libpostproc/postprocess_altivec_template.c
+++ /dev/null
@@ -1,1210 +0,0 @@
-/*
- * AltiVec optimizations (C) 2004 Romain Dolbeau <romain@dolbeau.org>
- *
- * based on code by Copyright (C) 2001-2003 Michael Niedermayer (michaelni@gmx.at)
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavutil/avutil.h"
-
-#define ALTIVEC_TRANSPOSE_8x8_SHORT(src_a,src_b,src_c,src_d,src_e,src_f,src_g,src_h) \
-    do {                                                          \
-        __typeof__(src_a) tempA1, tempB1, tempC1, tempD1;         \
-        __typeof__(src_a) tempE1, tempF1, tempG1, tempH1;         \
-        __typeof__(src_a) tempA2, tempB2, tempC2, tempD2;         \
-        __typeof__(src_a) tempE2, tempF2, tempG2, tempH2;         \
-        tempA1 = vec_mergeh (src_a, src_e);                       \
-        tempB1 = vec_mergel (src_a, src_e);                       \
-        tempC1 = vec_mergeh (src_b, src_f);                       \
-        tempD1 = vec_mergel (src_b, src_f);                       \
-        tempE1 = vec_mergeh (src_c, src_g);                       \
-        tempF1 = vec_mergel (src_c, src_g);                       \
-        tempG1 = vec_mergeh (src_d, src_h);                       \
-        tempH1 = vec_mergel (src_d, src_h);                       \
-        tempA2 = vec_mergeh (tempA1, tempE1);                     \
-        tempB2 = vec_mergel (tempA1, tempE1);                     \
-        tempC2 = vec_mergeh (tempB1, tempF1);                     \
-        tempD2 = vec_mergel (tempB1, tempF1);                     \
-        tempE2 = vec_mergeh (tempC1, tempG1);                     \
-        tempF2 = vec_mergel (tempC1, tempG1);                     \
-        tempG2 = vec_mergeh (tempD1, tempH1);                     \
-        tempH2 = vec_mergel (tempD1, tempH1);                     \
-        src_a = vec_mergeh (tempA2, tempE2);                      \
-        src_b = vec_mergel (tempA2, tempE2);                      \
-        src_c = vec_mergeh (tempB2, tempF2);                      \
-        src_d = vec_mergel (tempB2, tempF2);                      \
-        src_e = vec_mergeh (tempC2, tempG2);                      \
-        src_f = vec_mergel (tempC2, tempG2);                      \
-        src_g = vec_mergeh (tempD2, tempH2);                      \
-        src_h = vec_mergel (tempD2, tempH2);                      \
-    } while (0)
-
-
-static inline int vertClassify_altivec(uint8_t src[], int stride, PPContext *c) {
-    /*
-    this code makes no assumption on src or stride.
-    One could remove the recomputation of the perm
-    vector by assuming (stride % 16) == 0, unfortunately
-    this is not always true.
-    */
-    short data_0 = ((c->nonBQP*c->ppMode.baseDcDiff)>>8) + 1;
-    DECLARE_ALIGNED(16, short, data)[8] =
-                    {
-                        data_0,
-                        data_0 * 2 + 1,
-                        c->QP * 2,
-                        c->QP * 4
-                    };
-    int numEq;
-    uint8_t *src2 = src;
-    vector signed short v_dcOffset;
-    vector signed short v2QP;
-    vector unsigned short v4QP;
-    vector unsigned short v_dcThreshold;
-    const int properStride = (stride % 16);
-    const int srcAlign = ((unsigned long)src2 % 16);
-    const int two_vectors = ((srcAlign > 8) || properStride) ? 1 : 0;
-    const vector signed int zero = vec_splat_s32(0);
-    const vector signed short mask = vec_splat_s16(1);
-    vector signed int v_numEq = vec_splat_s32(0);
-    vector signed short v_data = vec_ld(0, data);
-    vector signed short v_srcAss0, v_srcAss1, v_srcAss2, v_srcAss3,
-                        v_srcAss4, v_srcAss5, v_srcAss6, v_srcAss7;
-//FIXME avoid this mess if possible
-    register int j0 = 0,
-                 j1 = stride,
-                 j2 = 2 * stride,
-                 j3 = 3 * stride,
-                 j4 = 4 * stride,
-                 j5 = 5 * stride,
-                 j6 = 6 * stride,
-                 j7 = 7 * stride;
-    vector unsigned char v_srcA0, v_srcA1, v_srcA2, v_srcA3,
-                         v_srcA4, v_srcA5, v_srcA6, v_srcA7;
-
-    v_dcOffset = vec_splat(v_data, 0);
-    v_dcThreshold = (vector unsigned short)vec_splat(v_data, 1);
-    v2QP = vec_splat(v_data, 2);
-    v4QP = (vector unsigned short)vec_splat(v_data, 3);
-
-    src2 += stride * 4;
-
-#define LOAD_LINE(i)                                                    \
-    {                                                                   \
-    vector unsigned char perm##i = vec_lvsl(j##i, src2);                \
-    vector unsigned char v_srcA2##i;                                    \
-    vector unsigned char v_srcA1##i = vec_ld(j##i, src2);               \
-    if (two_vectors)                                                    \
-        v_srcA2##i = vec_ld(j##i + 16, src2);                           \
-    v_srcA##i =                                                         \
-        vec_perm(v_srcA1##i, v_srcA2##i, perm##i);                      \
-    v_srcAss##i =                                                       \
-        (vector signed short)vec_mergeh((vector signed char)zero,       \
-                                        (vector signed char)v_srcA##i); }
-
-#define LOAD_LINE_ALIGNED(i)                                            \
-    v_srcA##i = vec_ld(j##i, src2);                                     \
-    v_srcAss##i =                                                       \
-        (vector signed short)vec_mergeh((vector signed char)zero,       \
-                                        (vector signed char)v_srcA##i)
-
-    /* Special-casing the aligned case is worthwhile, as all calls from
-     * the (transposed) horizontable deblocks will be aligned, in addition
-     * to the naturally aligned vertical deblocks. */
-    if (properStride && srcAlign) {
-        LOAD_LINE_ALIGNED(0);
-        LOAD_LINE_ALIGNED(1);
-        LOAD_LINE_ALIGNED(2);
-        LOAD_LINE_ALIGNED(3);
-        LOAD_LINE_ALIGNED(4);
-        LOAD_LINE_ALIGNED(5);
-        LOAD_LINE_ALIGNED(6);
-        LOAD_LINE_ALIGNED(7);
-    } else {
-        LOAD_LINE(0);
-        LOAD_LINE(1);
-        LOAD_LINE(2);
-        LOAD_LINE(3);
-        LOAD_LINE(4);
-        LOAD_LINE(5);
-        LOAD_LINE(6);
-        LOAD_LINE(7);
-    }
-#undef LOAD_LINE
-#undef LOAD_LINE_ALIGNED
-
-#define ITER(i, j)                                                      \
-    const vector signed short v_diff##i =                               \
-        vec_sub(v_srcAss##i, v_srcAss##j);                              \
-    const vector signed short v_sum##i =                                \
-        vec_add(v_diff##i, v_dcOffset);                                 \
-    const vector signed short v_comp##i =                               \
-        (vector signed short)vec_cmplt((vector unsigned short)v_sum##i, \
-                                       v_dcThreshold);                  \
-    const vector signed short v_part##i = vec_and(mask, v_comp##i);
-
-    {
-        ITER(0, 1)
-        ITER(1, 2)
-        ITER(2, 3)
-        ITER(3, 4)
-        ITER(4, 5)
-        ITER(5, 6)
-        ITER(6, 7)
-
-        v_numEq = vec_sum4s(v_part0, v_numEq);
-        v_numEq = vec_sum4s(v_part1, v_numEq);
-        v_numEq = vec_sum4s(v_part2, v_numEq);
-        v_numEq = vec_sum4s(v_part3, v_numEq);
-        v_numEq = vec_sum4s(v_part4, v_numEq);
-        v_numEq = vec_sum4s(v_part5, v_numEq);
-        v_numEq = vec_sum4s(v_part6, v_numEq);
-    }
-
-#undef ITER
-
-    v_numEq = vec_sums(v_numEq, zero);
-
-    v_numEq = vec_splat(v_numEq, 3);
-    vec_ste(v_numEq, 0, &numEq);
-
-    if (numEq > c->ppMode.flatnessThreshold){
-        const vector unsigned char mmoP1 = (const vector unsigned char)
-            {0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
-             0x00, 0x01, 0x12, 0x13, 0x08, 0x09, 0x1A, 0x1B};
-        const vector unsigned char mmoP2 = (const vector unsigned char)
-            {0x04, 0x05, 0x16, 0x17, 0x0C, 0x0D, 0x1E, 0x1F,
-             0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f};
-        const vector unsigned char mmoP = (const vector unsigned char)
-            vec_lvsl(8, (unsigned char*)0);
-
-        vector signed short mmoL1 = vec_perm(v_srcAss0, v_srcAss2, mmoP1);
-        vector signed short mmoL2 = vec_perm(v_srcAss4, v_srcAss6, mmoP2);
-        vector signed short mmoL = vec_perm(mmoL1, mmoL2, mmoP);
-        vector signed short mmoR1 = vec_perm(v_srcAss5, v_srcAss7, mmoP1);
-        vector signed short mmoR2 = vec_perm(v_srcAss1, v_srcAss3, mmoP2);
-        vector signed short mmoR = vec_perm(mmoR1, mmoR2, mmoP);
-        vector signed short mmoDiff = vec_sub(mmoL, mmoR);
-        vector unsigned short mmoSum = (vector unsigned short)vec_add(mmoDiff, v2QP);
-
-        if (vec_any_gt(mmoSum, v4QP))
-            return 0;
-        else
-            return 1;
-    }
-    else return 2;
-}
-
-static inline void doVertLowPass_altivec(uint8_t *src, int stride, PPContext *c) {
-    /*
-    this code makes no assumption on src or stride.
-    One could remove the recomputation of the perm
-    vector by assuming (stride % 16) == 0, unfortunately
-    this is not always true. Quite a lot of load/stores
-    can be removed by assuming proper alignment of
-    src & stride :-(
-    */
-    uint8_t *src2 = src;
-    const vector signed int zero = vec_splat_s32(0);
-    const int properStride = (stride % 16);
-    const int srcAlign = ((unsigned long)src2 % 16);
-    DECLARE_ALIGNED(16, short, qp)[8] = {c->QP};
-    vector signed short vqp = vec_ld(0, qp);
-    vector signed short vb0, vb1, vb2, vb3, vb4, vb5, vb6, vb7, vb8, vb9;
-    vector unsigned char vbA0, av_uninit(vbA1), av_uninit(vbA2), av_uninit(vbA3), av_uninit(vbA4), av_uninit(vbA5), av_uninit(vbA6), av_uninit(vbA7), av_uninit(vbA8), vbA9;
-    vector unsigned char vbB0, av_uninit(vbB1), av_uninit(vbB2), av_uninit(vbB3), av_uninit(vbB4), av_uninit(vbB5), av_uninit(vbB6), av_uninit(vbB7), av_uninit(vbB8), vbB9;
-    vector unsigned char vbT0, vbT1, vbT2, vbT3, vbT4, vbT5, vbT6, vbT7, vbT8, vbT9;
-    vector unsigned char perml0, perml1, perml2, perml3, perml4,
-                         perml5, perml6, perml7, perml8, perml9;
-    register int j0 = 0,
-                 j1 = stride,
-                 j2 = 2 * stride,
-                 j3 = 3 * stride,
-                 j4 = 4 * stride,
-                 j5 = 5 * stride,
-                 j6 = 6 * stride,
-                 j7 = 7 * stride,
-                 j8 = 8 * stride,
-                 j9 = 9 * stride;
-
-    vqp = vec_splat(vqp, 0);
-
-    src2 += stride*3;
-
-#define LOAD_LINE(i)                                                    \
-    perml##i = vec_lvsl(i * stride, src2);                              \
-    vbA##i = vec_ld(i * stride, src2);                                  \
-    vbB##i = vec_ld(i * stride + 16, src2);                             \
-    vbT##i = vec_perm(vbA##i, vbB##i, perml##i);                        \
-    vb##i =                                                             \
-        (vector signed short)vec_mergeh((vector unsigned char)zero,     \
-                                        (vector unsigned char)vbT##i)
-
-#define LOAD_LINE_ALIGNED(i)                                            \
-    vbT##i = vec_ld(j##i, src2);                                        \
-    vb##i =                                                             \
-        (vector signed short)vec_mergeh((vector signed char)zero,       \
-                                        (vector signed char)vbT##i)
-
-      /* Special-casing the aligned case is worthwhile, as all calls from
-       * the (transposed) horizontable deblocks will be aligned, in addition
-       * to the naturally aligned vertical deblocks. */
-    if (properStride && srcAlign) {
-          LOAD_LINE_ALIGNED(0);
-          LOAD_LINE_ALIGNED(1);
-          LOAD_LINE_ALIGNED(2);
-          LOAD_LINE_ALIGNED(3);
-          LOAD_LINE_ALIGNED(4);
-          LOAD_LINE_ALIGNED(5);
-          LOAD_LINE_ALIGNED(6);
-          LOAD_LINE_ALIGNED(7);
-          LOAD_LINE_ALIGNED(8);
-          LOAD_LINE_ALIGNED(9);
-    } else {
-          LOAD_LINE(0);
-          LOAD_LINE(1);
-          LOAD_LINE(2);
-          LOAD_LINE(3);
-          LOAD_LINE(4);
-          LOAD_LINE(5);
-          LOAD_LINE(6);
-          LOAD_LINE(7);
-          LOAD_LINE(8);
-          LOAD_LINE(9);
-    }
-#undef LOAD_LINE
-#undef LOAD_LINE_ALIGNED
-    {
-        const vector unsigned short v_2 = vec_splat_u16(2);
-        const vector unsigned short v_4 = vec_splat_u16(4);
-
-        const vector signed short v_diff01 = vec_sub(vb0, vb1);
-        const vector unsigned short v_cmp01 =
-            (const vector unsigned short) vec_cmplt(vec_abs(v_diff01), vqp);
-        const vector signed short v_first = vec_sel(vb1, vb0, v_cmp01);
-        const vector signed short v_diff89 = vec_sub(vb8, vb9);
-        const vector unsigned short v_cmp89 =
-            (const vector unsigned short) vec_cmplt(vec_abs(v_diff89), vqp);
-        const vector signed short v_last = vec_sel(vb8, vb9, v_cmp89);
-
-        const vector signed short temp01 = vec_mladd(v_first, (vector signed short)v_4, vb1);
-        const vector signed short temp02 = vec_add(vb2, vb3);
-        const vector signed short temp03 = vec_add(temp01, (vector signed short)v_4);
-        const vector signed short v_sumsB0 = vec_add(temp02, temp03);
-
-        const vector signed short temp11 = vec_sub(v_sumsB0, v_first);
-        const vector signed short v_sumsB1 = vec_add(temp11, vb4);
-
-        const vector signed short temp21 = vec_sub(v_sumsB1, v_first);
-        const vector signed short v_sumsB2 = vec_add(temp21, vb5);
-
-        const vector signed short temp31 = vec_sub(v_sumsB2, v_first);
-        const vector signed short v_sumsB3 = vec_add(temp31, vb6);
-
-        const vector signed short temp41 = vec_sub(v_sumsB3, v_first);
-        const vector signed short v_sumsB4 = vec_add(temp41, vb7);
-
-        const vector signed short temp51 = vec_sub(v_sumsB4, vb1);
-        const vector signed short v_sumsB5 = vec_add(temp51, vb8);
-
-        const vector signed short temp61 = vec_sub(v_sumsB5, vb2);
-        const vector signed short v_sumsB6 = vec_add(temp61, v_last);
-
-        const vector signed short temp71 = vec_sub(v_sumsB6, vb3);
-        const vector signed short v_sumsB7 = vec_add(temp71, v_last);
-
-        const vector signed short temp81 = vec_sub(v_sumsB7, vb4);
-        const vector signed short v_sumsB8 = vec_add(temp81, v_last);
-
-        const vector signed short temp91 = vec_sub(v_sumsB8, vb5);
-        const vector signed short v_sumsB9 = vec_add(temp91, v_last);
-
-    #define COMPUTE_VR(i, j, k)                                             \
-        const vector signed short temps1##i =                               \
-            vec_add(v_sumsB##i, v_sumsB##k);                                \
-        const vector signed short temps2##i =                               \
-            vec_mladd(vb##j, (vector signed short)v_2, temps1##i);          \
-        const vector signed short  vr##j = vec_sra(temps2##i, v_4)
-
-        COMPUTE_VR(0, 1, 2);
-        COMPUTE_VR(1, 2, 3);
-        COMPUTE_VR(2, 3, 4);
-        COMPUTE_VR(3, 4, 5);
-        COMPUTE_VR(4, 5, 6);
-        COMPUTE_VR(5, 6, 7);
-        COMPUTE_VR(6, 7, 8);
-        COMPUTE_VR(7, 8, 9);
-
-        const vector signed char neg1 = vec_splat_s8(-1);
-        const vector unsigned char permHH = (const vector unsigned char){0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                                                                         0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F};
-
-#define PACK_AND_STORE(i)                                       \
-{   const vector unsigned char perms##i =                       \
-        vec_lvsr(i * stride, src2);                             \
-    const vector unsigned char vf##i =                          \
-        vec_packsu(vr##i, (vector signed short)zero);           \
-    const vector unsigned char vg##i =                          \
-        vec_perm(vf##i, vbT##i, permHH);                        \
-    const vector unsigned char mask##i =                        \
-        vec_perm((vector unsigned char)zero, (vector unsigned char)neg1, perms##i); \
-    const vector unsigned char vg2##i =                         \
-        vec_perm(vg##i, vg##i, perms##i);                       \
-    const vector unsigned char svA##i =                         \
-        vec_sel(vbA##i, vg2##i, mask##i);                       \
-    const vector unsigned char svB##i =                         \
-        vec_sel(vg2##i, vbB##i, mask##i);                       \
-    vec_st(svA##i, i * stride, src2);                           \
-    vec_st(svB##i, i * stride + 16, src2);}
-
-#define PACK_AND_STORE_ALIGNED(i)                               \
-{   const vector unsigned char vf##i =                          \
-        vec_packsu(vr##i, (vector signed short)zero);           \
-    const vector unsigned char vg##i =                          \
-        vec_perm(vf##i, vbT##i, permHH);                        \
-    vec_st(vg##i, i * stride, src2);}
-
-        /* Special-casing the aligned case is worthwhile, as all calls from
-         * the (transposed) horizontable deblocks will be aligned, in addition
-         * to the naturally aligned vertical deblocks. */
-        if (properStride && srcAlign) {
-            PACK_AND_STORE_ALIGNED(1)
-            PACK_AND_STORE_ALIGNED(2)
-            PACK_AND_STORE_ALIGNED(3)
-            PACK_AND_STORE_ALIGNED(4)
-            PACK_AND_STORE_ALIGNED(5)
-            PACK_AND_STORE_ALIGNED(6)
-            PACK_AND_STORE_ALIGNED(7)
-            PACK_AND_STORE_ALIGNED(8)
-        } else {
-            PACK_AND_STORE(1)
-            PACK_AND_STORE(2)
-            PACK_AND_STORE(3)
-            PACK_AND_STORE(4)
-            PACK_AND_STORE(5)
-            PACK_AND_STORE(6)
-            PACK_AND_STORE(7)
-            PACK_AND_STORE(8)
-        }
-    #undef PACK_AND_STORE
-    #undef PACK_AND_STORE_ALIGNED
-    }
-}
-
-
-
-static inline void doVertDefFilter_altivec(uint8_t src[], int stride, PPContext *c) {
-    /*
-    this code makes no assumption on src or stride.
-    One could remove the recomputation of the perm
-    vector by assuming (stride % 16) == 0, unfortunately
-    this is not always true. Quite a lot of load/stores
-    can be removed by assuming proper alignment of
-    src & stride :-(
-    */
-    uint8_t *src2 = src + stride*3;
-    const vector signed int zero = vec_splat_s32(0);
-    DECLARE_ALIGNED(16, short, qp)[8] = {8*c->QP};
-    vector signed short vqp = vec_splat(
-                                (vector signed short)vec_ld(0, qp), 0);
-
-#define LOAD_LINE(i)                                                    \
-    const vector unsigned char perm##i =                                \
-        vec_lvsl(i * stride, src2);                                     \
-    const vector unsigned char vbA##i =                                 \
-        vec_ld(i * stride, src2);                                       \
-    const vector unsigned char vbB##i =                                 \
-        vec_ld(i * stride + 16, src2);                                  \
-    const vector unsigned char vbT##i =                                 \
-        vec_perm(vbA##i, vbB##i, perm##i);                              \
-    const vector signed short vb##i =                                   \
-        (vector signed short)vec_mergeh((vector unsigned char)zero,     \
-                                        (vector unsigned char)vbT##i)
-
-     LOAD_LINE(1);
-     LOAD_LINE(2);
-     LOAD_LINE(3);
-     LOAD_LINE(4);
-     LOAD_LINE(5);
-     LOAD_LINE(6);
-     LOAD_LINE(7);
-     LOAD_LINE(8);
-#undef LOAD_LINE
-
-     const vector signed short v_1 = vec_splat_s16(1);
-     const vector signed short v_2 = vec_splat_s16(2);
-     const vector signed short v_5 = vec_splat_s16(5);
-     const vector signed short v_32 = vec_sl(v_1,
-                                             (vector unsigned short)v_5);
-     /* middle energy */
-     const vector signed short l3minusl6 = vec_sub(vb3, vb6);
-     const vector signed short l5minusl4 = vec_sub(vb5, vb4);
-     const vector signed short twotimes_l3minusl6 = vec_mladd(v_2, l3minusl6, (vector signed short)zero);
-     const vector signed short mE = vec_mladd(v_5, l5minusl4, twotimes_l3minusl6);
-     const vector signed short absmE = vec_abs(mE);
-     /* left & right energy */
-     const vector signed short l1minusl4 = vec_sub(vb1, vb4);
-     const vector signed short l3minusl2 = vec_sub(vb3, vb2);
-     const vector signed short l5minusl8 = vec_sub(vb5, vb8);
-     const vector signed short l7minusl6 = vec_sub(vb7, vb6);
-     const vector signed short twotimes_l1minusl4 = vec_mladd(v_2, l1minusl4, (vector signed short)zero);
-     const vector signed short twotimes_l5minusl8 = vec_mladd(v_2, l5minusl8, (vector signed short)zero);
-     const vector signed short lE = vec_mladd(v_5, l3minusl2, twotimes_l1minusl4);
-     const vector signed short rE = vec_mladd(v_5, l7minusl6, twotimes_l5minusl8);
-     /* d */
-     const vector signed short ddiff = vec_sub(absmE,
-                                               vec_min(vec_abs(lE),
-                                                       vec_abs(rE)));
-     const vector signed short ddiffclamp = vec_max(ddiff, (vector signed short)zero);
-     const vector signed short dtimes64 = vec_mladd(v_5, ddiffclamp, v_32);
-     const vector signed short d = vec_sra(dtimes64, vec_splat_u16(6));
-     const vector signed short minusd = vec_sub((vector signed short)zero, d);
-     const vector signed short finald = vec_sel(minusd,
-                                                d,
-                                                vec_cmpgt(vec_sub((vector signed short)zero, mE),
-                                                          (vector signed short)zero));
-     /* q */
-     const vector signed short qtimes2 = vec_sub(vb4, vb5);
-     /* for a shift right to behave like /2, we need to add one
-        to all negative integer */
-     const vector signed short rounddown = vec_sel((vector signed short)zero,
-                                                   v_1,
-                                                   vec_cmplt(qtimes2, (vector signed short)zero));
-     const vector signed short q = vec_sra(vec_add(qtimes2, rounddown), vec_splat_u16(1));
-     /* clamp */
-     const vector signed short dclamp_P1 = vec_max((vector signed short)zero, finald);
-     const vector signed short dclamp_P = vec_min(dclamp_P1, q);
-     const vector signed short dclamp_N1 = vec_min((vector signed short)zero, finald);
-     const vector signed short dclamp_N = vec_max(dclamp_N1, q);
-
-     const vector signed short dclampedfinal = vec_sel(dclamp_N,
-                                                       dclamp_P,
-                                                       vec_cmpgt(q, (vector signed short)zero));
-     const vector signed short dornotd = vec_sel((vector signed short)zero,
-                                                 dclampedfinal,
-                                                 vec_cmplt(absmE, vqp));
-     /* add/subtract to l4 and l5 */
-     const vector signed short vb4minusd = vec_sub(vb4, dornotd);
-     const vector signed short vb5plusd  = vec_add(vb5, dornotd);
-     /* finally, stores */
-     const vector unsigned char st4 = vec_packsu(vb4minusd, (vector signed short)zero);
-     const vector unsigned char st5 = vec_packsu(vb5plusd,  (vector signed short)zero);
-
-     const vector signed char neg1 = vec_splat_s8(-1);
-     const vector unsigned char permHH = (const vector unsigned char){0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                                                                      0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F};
-
-#define STORE(i)                                                \
-{    const vector unsigned char perms##i =                      \
-         vec_lvsr(i * stride, src2);                            \
-     const vector unsigned char vg##i =                         \
-         vec_perm(st##i, vbT##i, permHH);                       \
-     const vector unsigned char mask##i =                       \
-         vec_perm((vector unsigned char)zero, (vector unsigned char)neg1, perms##i); \
-     const vector unsigned char vg2##i =                        \
-         vec_perm(vg##i, vg##i, perms##i);                      \
-     const vector unsigned char svA##i =                        \
-         vec_sel(vbA##i, vg2##i, mask##i);                      \
-     const vector unsigned char svB##i =                        \
-         vec_sel(vg2##i, vbB##i, mask##i);                      \
-     vec_st(svA##i, i * stride, src2);                          \
-     vec_st(svB##i, i * stride + 16, src2);}
-
-     STORE(4)
-     STORE(5)
-}
-
-static inline void dering_altivec(uint8_t src[], int stride, PPContext *c) {
-    const vector signed int vsint32_8 = vec_splat_s32(8);
-    const vector unsigned int vuint32_4 = vec_splat_u32(4);
-    const vector signed char neg1 = vec_splat_s8(-1);
-
-    const vector unsigned char permA1 = (vector unsigned char)
-        {0x00, 0x01, 0x02, 0x10, 0x11, 0x12, 0x1F, 0x1F,
-         0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F};
-    const vector unsigned char permA2 = (vector unsigned char)
-        {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x10, 0x11,
-         0x12, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F};
-    const vector unsigned char permA1inc = (vector unsigned char)
-        {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-    const vector unsigned char permA2inc = (vector unsigned char)
-        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-    const vector unsigned char magic = (vector unsigned char)
-        {0x01, 0x02, 0x01, 0x02, 0x04, 0x02, 0x01, 0x02,
-         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-    const vector unsigned char extractPerm = (vector unsigned char)
-        {0x10, 0x10, 0x10, 0x01, 0x10, 0x10, 0x10, 0x01,
-         0x10, 0x10, 0x10, 0x01, 0x10, 0x10, 0x10, 0x01};
-    const vector unsigned char extractPermInc = (vector unsigned char)
-        {0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
-         0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01};
-    const vector unsigned char identity = vec_lvsl(0,(unsigned char *)0);
-    const vector unsigned char tenRight = (vector unsigned char)
-        {0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-    const vector unsigned char eightLeft = (vector unsigned char)
-        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08};
-
-    /*
-    this code makes no assumption on src or stride.
-    One could remove the recomputation of the perm
-    vector by assuming (stride % 16) == 0, unfortunately
-    this is not always true. Quite a lot of load/stores
-    can be removed by assuming proper alignment of
-    src & stride :-(
-    */
-    uint8_t *srcCopy = src;
-    DECLARE_ALIGNED(16, uint8_t, dt)[16] = { deringThreshold };
-    const vector signed int zero = vec_splat_s32(0);
-    vector unsigned char v_dt = vec_splat(vec_ld(0, dt), 0);
-
-#define LOAD_LINE(i)                                                  \
-    const vector unsigned char perm##i =                              \
-        vec_lvsl(i * stride, srcCopy);                                \
-    vector unsigned char sA##i = vec_ld(i * stride, srcCopy);         \
-    vector unsigned char sB##i = vec_ld(i * stride + 16, srcCopy);    \
-    vector unsigned char src##i = vec_perm(sA##i, sB##i, perm##i)
-
-    LOAD_LINE(0);
-    LOAD_LINE(1);
-    LOAD_LINE(2);
-    LOAD_LINE(3);
-    LOAD_LINE(4);
-    LOAD_LINE(5);
-    LOAD_LINE(6);
-    LOAD_LINE(7);
-    LOAD_LINE(8);
-    LOAD_LINE(9);
-#undef LOAD_LINE
-
-    vector unsigned char v_avg;
-    DECLARE_ALIGNED(16, signed int, S)[8];
-    DECLARE_ALIGNED(16, int, tQP2)[4] = { c->QP/2 + 1 };
-    vector signed int vQP2 = vec_ld(0, tQP2);
-    vQP2 = vec_splat(vQP2, 0);
-
-    {
-    const vector unsigned char trunc_perm = (vector unsigned char)
-        {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-         0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18};
-    const vector unsigned char trunc_src12 = vec_perm(src1, src2, trunc_perm);
-    const vector unsigned char trunc_src34 = vec_perm(src3, src4, trunc_perm);
-    const vector unsigned char trunc_src56 = vec_perm(src5, src6, trunc_perm);
-    const vector unsigned char trunc_src78 = vec_perm(src7, src8, trunc_perm);
-
-#define EXTRACT(op) do {                                                \
-    const vector unsigned char s_1   = vec_##op(trunc_src12, trunc_src34); \
-    const vector unsigned char s_2   = vec_##op(trunc_src56, trunc_src78); \
-    const vector unsigned char s_6   = vec_##op(s_1, s_2);     \
-    const vector unsigned char s_8h  = vec_mergeh(s_6, s_6);   \
-    const vector unsigned char s_8l  = vec_mergel(s_6, s_6);   \
-    const vector unsigned char s_9   = vec_##op(s_8h, s_8l);   \
-    const vector unsigned char s_9h  = vec_mergeh(s_9, s_9);   \
-    const vector unsigned char s_9l  = vec_mergel(s_9, s_9);   \
-    const vector unsigned char s_10  = vec_##op(s_9h, s_9l);   \
-    const vector unsigned char s_10h = vec_mergeh(s_10, s_10); \
-    const vector unsigned char s_10l = vec_mergel(s_10, s_10); \
-    const vector unsigned char s_11  = vec_##op(s_10h, s_10l); \
-    const vector unsigned char s_11h = vec_mergeh(s_11, s_11); \
-    const vector unsigned char s_11l = vec_mergel(s_11, s_11); \
-    v_##op = vec_##op(s_11h, s_11l);                           \
-} while (0)
-
-    vector unsigned char v_min;
-    vector unsigned char v_max;
-    EXTRACT(min);
-    EXTRACT(max);
-#undef EXTRACT
-
-    if (vec_all_lt(vec_sub(v_max, v_min), v_dt))
-        return;
-
-    v_avg = vec_avg(v_min, v_max);
-    }
-
-    {
-    const vector unsigned short mask1 = (vector unsigned short)
-                                        {0x0001, 0x0002, 0x0004, 0x0008,
-                                         0x0010, 0x0020, 0x0040, 0x0080};
-    const vector unsigned short mask2 = (vector unsigned short)
-                                        {0x0100, 0x0200, 0x0000, 0x0000,
-                                         0x0000, 0x0000, 0x0000, 0x0000};
-
-    const vector unsigned int vuint32_16 = vec_sl(vec_splat_u32(1), vec_splat_u32(4));
-    const vector unsigned int vuint32_1 = vec_splat_u32(1);
-
-    vector signed int sumA2;
-    vector signed int sumB2;
-    vector signed int sum0, sum1, sum2, sum3, sum4;
-    vector signed int sum5, sum6, sum7, sum8, sum9;
-
-#define COMPARE(i)                                                      \
-    do {                                                                \
-        const vector unsigned char cmp =                                \
-            (vector unsigned char)vec_cmpgt(src##i, v_avg);             \
-        const vector unsigned short cmpHi =                             \
-            (vector unsigned short)vec_mergeh(cmp, cmp);                \
-        const vector unsigned short cmpLi =                             \
-            (vector unsigned short)vec_mergel(cmp, cmp);                \
-        const vector signed short cmpHf =                               \
-            (vector signed short)vec_and(cmpHi, mask1);                 \
-        const vector signed short cmpLf =                               \
-            (vector signed short)vec_and(cmpLi, mask2);                 \
-        const vector signed int sump = vec_sum4s(cmpHf, zero);          \
-        const vector signed int sumq = vec_sum4s(cmpLf, sump);          \
-        sum##i  = vec_sums(sumq, zero);                                 \
-    } while (0)
-
-    COMPARE(0);
-    COMPARE(1);
-    COMPARE(2);
-    COMPARE(3);
-    COMPARE(4);
-    COMPARE(5);
-    COMPARE(6);
-    COMPARE(7);
-    COMPARE(8);
-    COMPARE(9);
-#undef COMPARE
-
-    {
-    const vector signed int sump02 = vec_mergel(sum0, sum2);
-    const vector signed int sump13 = vec_mergel(sum1, sum3);
-    const vector signed int sumA = vec_mergel(sump02, sump13);
-
-    const vector signed int sump46 = vec_mergel(sum4, sum6);
-    const vector signed int sump57 = vec_mergel(sum5, sum7);
-    const vector signed int sumB = vec_mergel(sump46, sump57);
-
-    const vector signed int sump8A = vec_mergel(sum8, zero);
-    const vector signed int sump9B = vec_mergel(sum9, zero);
-    const vector signed int sumC = vec_mergel(sump8A, sump9B);
-
-    const vector signed int tA = vec_sl(vec_nor(zero, sumA), vuint32_16);
-    const vector signed int tB = vec_sl(vec_nor(zero, sumB), vuint32_16);
-    const vector signed int tC = vec_sl(vec_nor(zero, sumC), vuint32_16);
-    const vector signed int t2A = vec_or(sumA, tA);
-    const vector signed int t2B = vec_or(sumB, tB);
-    const vector signed int t2C = vec_or(sumC, tC);
-    const vector signed int t3A = vec_and(vec_sra(t2A, vuint32_1),
-                                          vec_sl(t2A, vuint32_1));
-    const vector signed int t3B = vec_and(vec_sra(t2B, vuint32_1),
-                                          vec_sl(t2B, vuint32_1));
-    const vector signed int t3C = vec_and(vec_sra(t2C, vuint32_1),
-                                          vec_sl(t2C, vuint32_1));
-    const vector signed int yA = vec_and(t2A, t3A);
-    const vector signed int yB = vec_and(t2B, t3B);
-    const vector signed int yC = vec_and(t2C, t3C);
-
-    const vector unsigned char strangeperm1 = vec_lvsl(4, (unsigned char*)0);
-    const vector unsigned char strangeperm2 = vec_lvsl(8, (unsigned char*)0);
-    const vector signed int sumAd4 = vec_perm(yA, yB, strangeperm1);
-    const vector signed int sumAd8 = vec_perm(yA, yB, strangeperm2);
-    const vector signed int sumBd4 = vec_perm(yB, yC, strangeperm1);
-    const vector signed int sumBd8 = vec_perm(yB, yC, strangeperm2);
-    const vector signed int sumAp = vec_and(yA,
-                                            vec_and(sumAd4,sumAd8));
-    const vector signed int sumBp = vec_and(yB,
-                                            vec_and(sumBd4,sumBd8));
-    sumA2 = vec_or(sumAp,
-                   vec_sra(sumAp,
-                           vuint32_16));
-    sumB2  = vec_or(sumBp,
-                    vec_sra(sumBp,
-                            vuint32_16));
-    }
-    vec_st(sumA2, 0, S);
-    vec_st(sumB2, 16, S);
-    }
-
-    /* I'm not sure the following is actually faster
-       than straight, unvectorized C code :-( */
-
-#define F_INIT()                                       \
-    vector unsigned char tenRightM = tenRight;         \
-    vector unsigned char permA1M = permA1;             \
-    vector unsigned char permA2M = permA2;             \
-    vector unsigned char extractPermM = extractPerm
-
-#define F2(i, j, k, l)                                                  \
-    if (S[i] & (1 << (l+1))) {                                          \
-        const vector unsigned char a_A = vec_perm(src##i, src##j, permA1M); \
-        const vector unsigned char a_B = vec_perm(a_A, src##k, permA2M); \
-        const vector signed int a_sump =                                \
-            (vector signed int)vec_msum(a_B, magic, (vector unsigned int)zero);\
-        vector signed int F = vec_sr(vec_sums(a_sump, vsint32_8), vuint32_4); \
-        const vector signed int p =                                     \
-            (vector signed int)vec_perm(src##j, (vector unsigned char)zero, \
-                                        extractPermM);                  \
-        const vector signed int sum  = vec_add(p, vQP2);                \
-        const vector signed int diff = vec_sub(p, vQP2);                \
-        vector signed int newpm;                                        \
-        vector unsigned char newpm2, mask;                              \
-        F = vec_splat(F, 3);                                            \
-        if (vec_all_lt(sum, F))                                         \
-            newpm = sum;                                                \
-        else if (vec_all_gt(diff, F))                                   \
-            newpm = diff;                                               \
-        else newpm = F;                                                 \
-        newpm2 = vec_splat((vector unsigned char)newpm, 15);            \
-        mask = vec_add(identity, tenRightM);                            \
-        src##j = vec_perm(src##j, newpm2, mask);                        \
-    }                                                                   \
-    permA1M = vec_add(permA1M, permA1inc);                              \
-    permA2M = vec_add(permA2M, permA2inc);                              \
-    tenRightM = vec_sro(tenRightM, eightLeft);                          \
-    extractPermM = vec_add(extractPermM, extractPermInc)
-
-#define ITER(i, j, k) do {                      \
-    F_INIT();                                   \
-    F2(i, j, k, 0);                             \
-    F2(i, j, k, 1);                             \
-    F2(i, j, k, 2);                             \
-    F2(i, j, k, 3);                             \
-    F2(i, j, k, 4);                             \
-    F2(i, j, k, 5);                             \
-    F2(i, j, k, 6);                             \
-    F2(i, j, k, 7);                             \
-} while (0)
-
-    ITER(0, 1, 2);
-    ITER(1, 2, 3);
-    ITER(2, 3, 4);
-    ITER(3, 4, 5);
-    ITER(4, 5, 6);
-    ITER(5, 6, 7);
-    ITER(6, 7, 8);
-    ITER(7, 8, 9);
-
-#define STORE_LINE(i) do {                              \
-    const vector unsigned char permST =                 \
-        vec_lvsr(i * stride, srcCopy);                  \
-    const vector unsigned char maskST =                 \
-        vec_perm((vector unsigned char)zero,            \
-                 (vector unsigned char)neg1, permST);   \
-    src##i = vec_perm(src##i ,src##i, permST);          \
-    sA##i= vec_sel(sA##i, src##i, maskST);              \
-    sB##i= vec_sel(src##i, sB##i, maskST);              \
-    vec_st(sA##i, i * stride, srcCopy);                 \
-    vec_st(sB##i, i * stride + 16, srcCopy);            \
-} while (0)
-
-    STORE_LINE(1);
-    STORE_LINE(2);
-    STORE_LINE(3);
-    STORE_LINE(4);
-    STORE_LINE(5);
-    STORE_LINE(6);
-    STORE_LINE(7);
-    STORE_LINE(8);
-
-#undef STORE_LINE
-#undef ITER
-#undef F2
-}
-
-#define doHorizLowPass_altivec(a...) doHorizLowPass_C(a)
-#define doHorizDefFilter_altivec(a...) doHorizDefFilter_C(a)
-#define do_a_deblock_altivec(a...) do_a_deblock_C(a)
-
-static inline void tempNoiseReducer_altivec(uint8_t *src, int stride,
-                                            uint8_t *tempBlurred, uint32_t *tempBlurredPast, int *maxNoise)
-{
-    const vector signed char neg1 = vec_splat_s8(-1);
-    const vector unsigned char permHH = (const vector unsigned char){0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                                                                     0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F};
-
-    const vector signed int zero = vec_splat_s32(0);
-    const vector signed short vsint16_1 = vec_splat_s16(1);
-    vector signed int v_dp = zero;
-    vector signed int v_sysdp = zero;
-    int d, sysd, i;
-
-#define LOAD_LINE(src, i)                                               \
-    register int j##src##i = i * stride;                                \
-    vector unsigned char perm##src##i = vec_lvsl(j##src##i, src);       \
-    const vector unsigned char v_##src##A1##i = vec_ld(j##src##i, src); \
-    const vector unsigned char v_##src##A2##i = vec_ld(j##src##i + 16, src); \
-    const vector unsigned char v_##src##A##i =                          \
-        vec_perm(v_##src##A1##i, v_##src##A2##i, perm##src##i);         \
-    vector signed short v_##src##Ass##i =                               \
-        (vector signed short)vec_mergeh((vector signed char)zero,       \
-                                        (vector signed char)v_##src##A##i)
-
-    LOAD_LINE(src, 0);
-    LOAD_LINE(src, 1);
-    LOAD_LINE(src, 2);
-    LOAD_LINE(src, 3);
-    LOAD_LINE(src, 4);
-    LOAD_LINE(src, 5);
-    LOAD_LINE(src, 6);
-    LOAD_LINE(src, 7);
-
-    LOAD_LINE(tempBlurred, 0);
-    LOAD_LINE(tempBlurred, 1);
-    LOAD_LINE(tempBlurred, 2);
-    LOAD_LINE(tempBlurred, 3);
-    LOAD_LINE(tempBlurred, 4);
-    LOAD_LINE(tempBlurred, 5);
-    LOAD_LINE(tempBlurred, 6);
-    LOAD_LINE(tempBlurred, 7);
-#undef LOAD_LINE
-
-#define ACCUMULATE_DIFFS(i) do {                                \
-        vector signed short v_d = vec_sub(v_tempBlurredAss##i,  \
-                                          v_srcAss##i);         \
-        v_dp = vec_msums(v_d, v_d, v_dp);                       \
-        v_sysdp = vec_msums(v_d, vsint16_1, v_sysdp);           \
-    } while (0)
-
-    ACCUMULATE_DIFFS(0);
-    ACCUMULATE_DIFFS(1);
-    ACCUMULATE_DIFFS(2);
-    ACCUMULATE_DIFFS(3);
-    ACCUMULATE_DIFFS(4);
-    ACCUMULATE_DIFFS(5);
-    ACCUMULATE_DIFFS(6);
-    ACCUMULATE_DIFFS(7);
-#undef ACCUMULATE_DIFFS
-
-    tempBlurredPast[127]= maxNoise[0];
-    tempBlurredPast[128]= maxNoise[1];
-    tempBlurredPast[129]= maxNoise[2];
-
-    v_dp = vec_sums(v_dp, zero);
-    v_sysdp = vec_sums(v_sysdp, zero);
-
-    v_dp = vec_splat(v_dp, 3);
-    v_sysdp = vec_splat(v_sysdp, 3);
-
-    vec_ste(v_dp, 0, &d);
-    vec_ste(v_sysdp, 0, &sysd);
-
-    i = d;
-    d = (4*d
-         +(*(tempBlurredPast-256))
-         +(*(tempBlurredPast-1))+ (*(tempBlurredPast+1))
-         +(*(tempBlurredPast+256))
-         +4)>>3;
-
-    *tempBlurredPast=i;
-
-    if (d > maxNoise[1]) {
-        if (d < maxNoise[2]) {
-#define OP(i) v_tempBlurredAss##i = vec_avg(v_tempBlurredAss##i, v_srcAss##i);
-
-            OP(0);
-            OP(1);
-            OP(2);
-            OP(3);
-            OP(4);
-            OP(5);
-            OP(6);
-            OP(7);
-#undef OP
-        } else {
-#define OP(i) v_tempBlurredAss##i = v_srcAss##i;
-
-            OP(0);
-            OP(1);
-            OP(2);
-            OP(3);
-            OP(4);
-            OP(5);
-            OP(6);
-            OP(7);
-#undef OP
-        }
-    } else {
-        if (d < maxNoise[0]) {
-            const vector signed short vsint16_7 = vec_splat_s16(7);
-            const vector signed short vsint16_4 = vec_splat_s16(4);
-            const vector unsigned short vuint16_3 = vec_splat_u16(3);
-
-#define OP(i) do {                                                      \
-            const vector signed short v_temp =                          \
-                vec_mladd(v_tempBlurredAss##i, vsint16_7, v_srcAss##i); \
-            const vector signed short v_temp2 = vec_add(v_temp, vsint16_4); \
-            v_tempBlurredAss##i = vec_sr(v_temp2, vuint16_3);           \
-        } while (0)
-
-            OP(0);
-            OP(1);
-            OP(2);
-            OP(3);
-            OP(4);
-            OP(5);
-            OP(6);
-            OP(7);
-#undef OP
-        } else {
-            const vector signed short vsint16_3 = vec_splat_s16(3);
-            const vector signed short vsint16_2 = vec_splat_s16(2);
-
-#define OP(i) do {                                              \
-            const vector signed short v_temp =                  \
-                vec_mladd(v_tempBlurredAss##i, vsint16_3, v_srcAss##i); \
-            const vector signed short v_temp2 = vec_add(v_temp, vsint16_2); \
-            v_tempBlurredAss##i =                                       \
-                vec_sr(v_temp2, (vector unsigned short)vsint16_2);      \
-        } while (0)
-
-            OP(0);
-            OP(1);
-            OP(2);
-            OP(3);
-            OP(4);
-            OP(5);
-            OP(6);
-            OP(7);
-#undef OP
-        }
-    }
-
-#define PACK_AND_STORE(src, i) do {                                      \
-    const vector unsigned char perms = vec_lvsr(i * stride, src);        \
-    const vector unsigned char vf =                                      \
-        vec_packsu(v_tempBlurredAss##1, (vector signed short)zero);     \
-    const vector unsigned char vg = vec_perm(vf, v_##src##A##i, permHH); \
-    const vector unsigned char mask =                                    \
-        vec_perm((vector unsigned char)zero, (vector unsigned char)neg1, perms); \
-    const vector unsigned char vg2 = vec_perm(vg, vg, perms);            \
-    const vector unsigned char svA = vec_sel(v_##src##A1##i, vg2, mask); \
-    const vector unsigned char svB = vec_sel(vg2, v_##src##A2##i, mask); \
-    vec_st(svA, i * stride, src);                                        \
-    vec_st(svB, i * stride + 16, src);                                   \
-} while (0)
-
-    PACK_AND_STORE(src, 0);
-    PACK_AND_STORE(src, 1);
-    PACK_AND_STORE(src, 2);
-    PACK_AND_STORE(src, 3);
-    PACK_AND_STORE(src, 4);
-    PACK_AND_STORE(src, 5);
-    PACK_AND_STORE(src, 6);
-    PACK_AND_STORE(src, 7);
-    PACK_AND_STORE(tempBlurred, 0);
-    PACK_AND_STORE(tempBlurred, 1);
-    PACK_AND_STORE(tempBlurred, 2);
-    PACK_AND_STORE(tempBlurred, 3);
-    PACK_AND_STORE(tempBlurred, 4);
-    PACK_AND_STORE(tempBlurred, 5);
-    PACK_AND_STORE(tempBlurred, 6);
-    PACK_AND_STORE(tempBlurred, 7);
-#undef PACK_AND_STORE
-}
-
-static inline void transpose_16x8_char_toPackedAlign_altivec(unsigned char* dst, unsigned char* src, int stride) {
-    const vector unsigned char zero = vec_splat_u8(0);
-
-#define LOAD_DOUBLE_LINE(i, j)                                          \
-    vector unsigned char perm1##i = vec_lvsl(i * stride, src);          \
-    vector unsigned char perm2##i = vec_lvsl(j * stride, src);          \
-    vector unsigned char srcA##i = vec_ld(i * stride, src);             \
-    vector unsigned char srcB##i = vec_ld(i * stride + 16, src);        \
-    vector unsigned char srcC##i = vec_ld(j * stride, src);             \
-    vector unsigned char srcD##i = vec_ld(j * stride+ 16, src);         \
-    vector unsigned char src##i = vec_perm(srcA##i, srcB##i, perm1##i); \
-    vector unsigned char src##j = vec_perm(srcC##i, srcD##i, perm2##i)
-
-    LOAD_DOUBLE_LINE(0, 1);
-    LOAD_DOUBLE_LINE(2, 3);
-    LOAD_DOUBLE_LINE(4, 5);
-    LOAD_DOUBLE_LINE(6, 7);
-#undef LOAD_DOUBLE_LINE
-
-    vector unsigned char tempA = vec_mergeh(src0, zero);
-    vector unsigned char tempB = vec_mergel(src0, zero);
-    vector unsigned char tempC = vec_mergeh(src1, zero);
-    vector unsigned char tempD = vec_mergel(src1, zero);
-    vector unsigned char tempE = vec_mergeh(src2, zero);
-    vector unsigned char tempF = vec_mergel(src2, zero);
-    vector unsigned char tempG = vec_mergeh(src3, zero);
-    vector unsigned char tempH = vec_mergel(src3, zero);
-    vector unsigned char tempI = vec_mergeh(src4, zero);
-    vector unsigned char tempJ = vec_mergel(src4, zero);
-    vector unsigned char tempK = vec_mergeh(src5, zero);
-    vector unsigned char tempL = vec_mergel(src5, zero);
-    vector unsigned char tempM = vec_mergeh(src6, zero);
-    vector unsigned char tempN = vec_mergel(src6, zero);
-    vector unsigned char tempO = vec_mergeh(src7, zero);
-    vector unsigned char tempP = vec_mergel(src7, zero);
-
-    vector unsigned char temp0  = vec_mergeh(tempA, tempI);
-    vector unsigned char temp1  = vec_mergel(tempA, tempI);
-    vector unsigned char temp2  = vec_mergeh(tempB, tempJ);
-    vector unsigned char temp3  = vec_mergel(tempB, tempJ);
-    vector unsigned char temp4  = vec_mergeh(tempC, tempK);
-    vector unsigned char temp5  = vec_mergel(tempC, tempK);
-    vector unsigned char temp6  = vec_mergeh(tempD, tempL);
-    vector unsigned char temp7  = vec_mergel(tempD, tempL);
-    vector unsigned char temp8  = vec_mergeh(tempE, tempM);
-    vector unsigned char temp9  = vec_mergel(tempE, tempM);
-    vector unsigned char temp10 = vec_mergeh(tempF, tempN);
-    vector unsigned char temp11 = vec_mergel(tempF, tempN);
-    vector unsigned char temp12 = vec_mergeh(tempG, tempO);
-    vector unsigned char temp13 = vec_mergel(tempG, tempO);
-    vector unsigned char temp14 = vec_mergeh(tempH, tempP);
-    vector unsigned char temp15 = vec_mergel(tempH, tempP);
-
-    tempA = vec_mergeh(temp0, temp8);
-    tempB = vec_mergel(temp0, temp8);
-    tempC = vec_mergeh(temp1, temp9);
-    tempD = vec_mergel(temp1, temp9);
-    tempE = vec_mergeh(temp2, temp10);
-    tempF = vec_mergel(temp2, temp10);
-    tempG = vec_mergeh(temp3, temp11);
-    tempH = vec_mergel(temp3, temp11);
-    tempI = vec_mergeh(temp4, temp12);
-    tempJ = vec_mergel(temp4, temp12);
-    tempK = vec_mergeh(temp5, temp13);
-    tempL = vec_mergel(temp5, temp13);
-    tempM = vec_mergeh(temp6, temp14);
-    tempN = vec_mergel(temp6, temp14);
-    tempO = vec_mergeh(temp7, temp15);
-    tempP = vec_mergel(temp7, temp15);
-
-    temp0  = vec_mergeh(tempA, tempI);
-    temp1  = vec_mergel(tempA, tempI);
-    temp2  = vec_mergeh(tempB, tempJ);
-    temp3  = vec_mergel(tempB, tempJ);
-    temp4  = vec_mergeh(tempC, tempK);
-    temp5  = vec_mergel(tempC, tempK);
-    temp6  = vec_mergeh(tempD, tempL);
-    temp7  = vec_mergel(tempD, tempL);
-    temp8  = vec_mergeh(tempE, tempM);
-    temp9  = vec_mergel(tempE, tempM);
-    temp10 = vec_mergeh(tempF, tempN);
-    temp11 = vec_mergel(tempF, tempN);
-    temp12 = vec_mergeh(tempG, tempO);
-    temp13 = vec_mergel(tempG, tempO);
-    temp14 = vec_mergeh(tempH, tempP);
-    temp15 = vec_mergel(tempH, tempP);
-
-    vec_st(temp0,    0, dst);
-    vec_st(temp1,   16, dst);
-    vec_st(temp2,   32, dst);
-    vec_st(temp3,   48, dst);
-    vec_st(temp4,   64, dst);
-    vec_st(temp5,   80, dst);
-    vec_st(temp6,   96, dst);
-    vec_st(temp7,  112, dst);
-    vec_st(temp8,  128, dst);
-    vec_st(temp9,  144, dst);
-    vec_st(temp10, 160, dst);
-    vec_st(temp11, 176, dst);
-    vec_st(temp12, 192, dst);
-    vec_st(temp13, 208, dst);
-    vec_st(temp14, 224, dst);
-    vec_st(temp15, 240, dst);
-}
-
-static inline void transpose_8x16_char_fromPackedAlign_altivec(unsigned char* dst, unsigned char* src, int stride) {
-    const vector unsigned char zero = vec_splat_u8(0);
-    const vector signed   char neg1 = vec_splat_s8(-1);
-
-#define LOAD_DOUBLE_LINE(i, j)                                  \
-    vector unsigned char src##i = vec_ld(i * 16, src);            \
-    vector unsigned char src##j = vec_ld(j * 16, src)
-
-    LOAD_DOUBLE_LINE(0, 1);
-    LOAD_DOUBLE_LINE(2, 3);
-    LOAD_DOUBLE_LINE(4, 5);
-    LOAD_DOUBLE_LINE(6, 7);
-    LOAD_DOUBLE_LINE(8, 9);
-    LOAD_DOUBLE_LINE(10, 11);
-    LOAD_DOUBLE_LINE(12, 13);
-    LOAD_DOUBLE_LINE(14, 15);
-#undef LOAD_DOUBLE_LINE
-
-    vector unsigned char tempA = vec_mergeh(src0, src8);
-    vector unsigned char tempB;
-    vector unsigned char tempC = vec_mergeh(src1, src9);
-    vector unsigned char tempD;
-    vector unsigned char tempE = vec_mergeh(src2, src10);
-    vector unsigned char tempG = vec_mergeh(src3, src11);
-    vector unsigned char tempI = vec_mergeh(src4, src12);
-    vector unsigned char tempJ;
-    vector unsigned char tempK = vec_mergeh(src5, src13);
-    vector unsigned char tempL;
-    vector unsigned char tempM = vec_mergeh(src6, src14);
-    vector unsigned char tempO = vec_mergeh(src7, src15);
-
-    vector unsigned char temp0 = vec_mergeh(tempA, tempI);
-    vector unsigned char temp1 = vec_mergel(tempA, tempI);
-    vector unsigned char temp2;
-    vector unsigned char temp3;
-    vector unsigned char temp4 = vec_mergeh(tempC, tempK);
-    vector unsigned char temp5 = vec_mergel(tempC, tempK);
-    vector unsigned char temp6;
-    vector unsigned char temp7;
-    vector unsigned char temp8 = vec_mergeh(tempE, tempM);
-    vector unsigned char temp9 = vec_mergel(tempE, tempM);
-    vector unsigned char temp12 = vec_mergeh(tempG, tempO);
-    vector unsigned char temp13 = vec_mergel(tempG, tempO);
-
-    tempA = vec_mergeh(temp0, temp8);
-    tempB = vec_mergel(temp0, temp8);
-    tempC = vec_mergeh(temp1, temp9);
-    tempD = vec_mergel(temp1, temp9);
-    tempI = vec_mergeh(temp4, temp12);
-    tempJ = vec_mergel(temp4, temp12);
-    tempK = vec_mergeh(temp5, temp13);
-    tempL = vec_mergel(temp5, temp13);
-
-    temp0 = vec_mergeh(tempA, tempI);
-    temp1 = vec_mergel(tempA, tempI);
-    temp2 = vec_mergeh(tempB, tempJ);
-    temp3 = vec_mergel(tempB, tempJ);
-    temp4 = vec_mergeh(tempC, tempK);
-    temp5 = vec_mergel(tempC, tempK);
-    temp6 = vec_mergeh(tempD, tempL);
-    temp7 = vec_mergel(tempD, tempL);
-
-
-#define STORE_DOUBLE_LINE(i, j) do {                                    \
-    vector unsigned char dstAi = vec_ld(i * stride, dst);               \
-    vector unsigned char dstBi = vec_ld(i * stride + 16, dst);          \
-    vector unsigned char dstAj = vec_ld(j * stride, dst);               \
-    vector unsigned char dstBj = vec_ld(j * stride+ 16, dst);           \
-    vector unsigned char aligni = vec_lvsr(i * stride, dst);            \
-    vector unsigned char alignj = vec_lvsr(j * stride, dst);            \
-    vector unsigned char maski =                                        \
-        vec_perm(zero, (vector unsigned char)neg1, aligni);             \
-    vector unsigned char maskj =                                        \
-        vec_perm(zero, (vector unsigned char)neg1, alignj);             \
-    vector unsigned char dstRi = vec_perm(temp##i, temp##i, aligni);    \
-    vector unsigned char dstRj = vec_perm(temp##j, temp##j, alignj);    \
-    vector unsigned char dstAFi = vec_sel(dstAi, dstRi, maski);         \
-    vector unsigned char dstBFi = vec_sel(dstRi, dstBi, maski);         \
-    vector unsigned char dstAFj = vec_sel(dstAj, dstRj, maskj);         \
-    vector unsigned char dstBFj = vec_sel(dstRj, dstBj, maskj);         \
-    vec_st(dstAFi, i * stride, dst);                                    \
-    vec_st(dstBFi, i * stride + 16, dst);                               \
-    vec_st(dstAFj, j * stride, dst);                                    \
-    vec_st(dstBFj, j * stride + 16, dst);                               \
-} while (0)
-
-    STORE_DOUBLE_LINE(0,1);
-    STORE_DOUBLE_LINE(2,3);
-    STORE_DOUBLE_LINE(4,5);
-    STORE_DOUBLE_LINE(6,7);
-}
diff --git a/libpostproc/postprocess_internal.h b/libpostproc/postprocess_internal.h
deleted file mode 100644
index 765fdeb..0000000
--- a/libpostproc/postprocess_internal.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (C) 2001-2002 Michael Niedermayer (michaelni@gmx.at)
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/**
- * @file
- * internal API header.
- */
-
-#ifndef POSTPROC_POSTPROCESS_INTERNAL_H
-#define POSTPROC_POSTPROCESS_INTERNAL_H
-
-#include <string.h>
-#include "libavutil/avutil.h"
-#include "libavutil/intmath.h"
-#include "libavutil/log.h"
-#include "postprocess.h"
-
-#define V_DEBLOCK       0x01
-#define H_DEBLOCK       0x02
-#define DERING          0x04
-#define LEVEL_FIX       0x08 ///< Brightness & Contrast
-
-#define LUM_V_DEBLOCK   V_DEBLOCK               //   1
-#define LUM_H_DEBLOCK   H_DEBLOCK               //   2
-#define CHROM_V_DEBLOCK (V_DEBLOCK<<4)          //  16
-#define CHROM_H_DEBLOCK (H_DEBLOCK<<4)          //  32
-#define LUM_DERING      DERING                  //   4
-#define CHROM_DERING    (DERING<<4)             //  64
-#define LUM_LEVEL_FIX   LEVEL_FIX               //   8
-#define CHROM_LEVEL_FIX (LEVEL_FIX<<4)          // 128 (not implemented yet)
-
-// Experimental vertical filters
-#define V_X1_FILTER     0x0200                  // 512
-#define V_A_DEBLOCK     0x0400
-
-// Experimental horizontal filters
-#define H_X1_FILTER     0x2000                  // 8192
-#define H_A_DEBLOCK     0x4000
-
-/// select between full y range (255-0) or standard one (234-16)
-#define FULL_Y_RANGE    0x8000                  // 32768
-
-//Deinterlacing Filters
-#define LINEAR_IPOL_DEINT_FILTER        0x10000 // 65536
-#define LINEAR_BLEND_DEINT_FILTER       0x20000 // 131072
-#define CUBIC_BLEND_DEINT_FILTER        0x8000  // (not implemented yet)
-#define CUBIC_IPOL_DEINT_FILTER         0x40000 // 262144
-#define MEDIAN_DEINT_FILTER             0x80000 // 524288
-#define FFMPEG_DEINT_FILTER             0x400000
-#define LOWPASS5_DEINT_FILTER           0x800000
-
-#define TEMP_NOISE_FILTER               0x100000
-#define FORCE_QUANT                     0x200000
-#define BITEXACT                        0x1000000
-#define VISUALIZE                       0x2000000
-
-//use if you want a faster postprocessing code
-//cannot differentiate between chroma & luma filters (both on or both off)
-//obviously the -pp option on the command line has no effect except turning the here selected
-//filters on
-//#define COMPILE_TIME_MODE 0x77
-
-/**
- * Postprocessing filter.
- */
-struct PPFilter{
-    const char *shortName;
-    const char *longName;
-    int chromDefault;       ///< is chrominance filtering on by default if this filter is manually activated
-    int minLumQuality;      ///< minimum quality to turn luminance filtering on
-    int minChromQuality;    ///< minimum quality to turn chrominance filtering on
-    int mask;               ///< Bitmask to turn this filter on
-};
-
-/**
- * Postprocessing mode.
- */
-typedef struct PPMode{
-    int lumMode;                    ///< activates filters for luminance
-    int chromMode;                  ///< activates filters for chrominance
-    int error;                      ///< non zero on error
-
-    int minAllowedY;                ///< for brightness correction
-    int maxAllowedY;                ///< for brightness correction
-    AVRational maxClippedThreshold; ///< amount of "black" you are willing to lose to get a brightness-corrected picture
-
-    int maxTmpNoise[3];             ///< for Temporal Noise Reducing filter (Maximal sum of abs differences)
-
-    int baseDcDiff;
-    int flatnessThreshold;
-
-    int forcedQuant;                ///< quantizer if FORCE_QUANT is used
-} PPMode;
-
-/**
- * postprocess context.
- */
-typedef struct PPContext{
-    /**
-     * info on struct for av_log
-     */
-    const AVClass *av_class;
-
-    uint8_t *tempBlocks; ///<used for the horizontal code
-
-    /**
-     * luma histogram.
-     * we need 64bit here otherwise we'll going to have a problem
-     * after watching a black picture for 5 hours
-     */
-    uint64_t *yHistogram;
-
-    DECLARE_ALIGNED(8, uint64_t, packedYOffset);
-    DECLARE_ALIGNED(8, uint64_t, packedYScale);
-
-    /** Temporal noise reducing buffers */
-    uint8_t *tempBlurred[3];
-    int32_t *tempBlurredPast[3];
-
-    /** Temporary buffers for handling the last row(s) */
-    uint8_t *tempDst;
-    uint8_t *tempSrc;
-
-    uint8_t *deintTemp;
-
-    DECLARE_ALIGNED(8, uint64_t, pQPb);
-    DECLARE_ALIGNED(8, uint64_t, pQPb2);
-
-    DECLARE_ALIGNED(32, uint64_t, pQPb_block)[4];
-    DECLARE_ALIGNED(32, uint64_t, pQPb2_block)[4];
-
-    DECLARE_ALIGNED(32, uint64_t, mmxDcOffset)[64];
-    DECLARE_ALIGNED(32, uint64_t, mmxDcThreshold)[64];
-
-    int8_t *stdQPTable;       ///< used to fix MPEG2 style qscale
-    int8_t *nonBQPTable;
-    int8_t *forcedQPTable;
-
-    int QP;
-    int nonBQP;
-
-    DECLARE_ALIGNED(32, int, QP_block)[4];
-    DECLARE_ALIGNED(32, int, nonBQP_block)[4];
-
-    int frameNum;
-
-    int cpuCaps;
-
-    int qpStride; ///<size of qp buffers (needed to realloc them if needed)
-    int stride;   ///<size of some buffers (needed to realloc them if needed)
-
-    int hChromaSubSample;
-    int vChromaSubSample;
-
-    PPMode ppMode;
-} PPContext;
-
-
-static inline void linecpy(void *dest, const void *src, int lines, int stride) {
-    if (stride > 0) {
-        memcpy(dest, src, lines*stride);
-    } else {
-        memcpy((uint8_t*)dest+(lines-1)*stride, (const uint8_t*)src+(lines-1)*stride, -lines*stride);
-    }
-}
-
-#endif /* POSTPROC_POSTPROCESS_INTERNAL_H */
diff --git a/libpostproc/postprocess_template.c b/libpostproc/postprocess_template.c
deleted file mode 100644
index df1684d..0000000
--- a/libpostproc/postprocess_template.c
+++ /dev/null
@@ -1,3740 +0,0 @@
-/*
- * Copyright (C) 2001-2002 Michael Niedermayer (michaelni@gmx.at)
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/**
- * @file
- * mmx/mmx2/3dnow postprocess code.
- */
-
-#include "libavutil/x86/asm.h"
-
-/* A single TEMPLATE_PP_* should be defined (to 1) when this template is
- * included. The following macros will define its dependencies to 1 as well
- * (like MMX2 depending on MMX), and will define to 0 all the others. Every
- * TEMPLATE_PP_* need to be undef at the end. */
-
-#ifdef TEMPLATE_PP_C
-#   define RENAME(a) a ## _C
-#else
-#   define TEMPLATE_PP_C 0
-#endif
-
-#ifdef TEMPLATE_PP_ALTIVEC
-#   define RENAME(a) a ## _altivec
-#else
-#   define TEMPLATE_PP_ALTIVEC 0
-#endif
-
-#ifdef TEMPLATE_PP_MMX
-#   define RENAME(a) a ## _MMX
-#else
-#   define TEMPLATE_PP_MMX 0
-#endif
-
-#ifdef TEMPLATE_PP_MMXEXT
-#   undef  TEMPLATE_PP_MMX
-#   define TEMPLATE_PP_MMX 1
-#   define RENAME(a) a ## _MMX2
-#else
-#   define TEMPLATE_PP_MMXEXT 0
-#endif
-
-#ifdef TEMPLATE_PP_3DNOW
-#   undef  TEMPLATE_PP_MMX
-#   define TEMPLATE_PP_MMX 1
-#   define RENAME(a) a ## _3DNow
-#else
-#   define TEMPLATE_PP_3DNOW 0
-#endif
-
-#ifdef TEMPLATE_PP_SSE2
-#   undef  TEMPLATE_PP_MMX
-#   define TEMPLATE_PP_MMX 1
-#   undef  TEMPLATE_PP_MMXEXT
-#   define TEMPLATE_PP_MMXEXT 1
-#   define RENAME(a) a ## _SSE2
-#else
-#   define TEMPLATE_PP_SSE2 0
-#endif
-
-#undef REAL_PAVGB
-#undef PAVGB
-#undef PMINUB
-#undef PMAXUB
-
-#if   TEMPLATE_PP_MMXEXT
-#define REAL_PAVGB(a,b) "pavgb " #a ", " #b " \n\t"
-#elif TEMPLATE_PP_3DNOW
-#define REAL_PAVGB(a,b) "pavgusb " #a ", " #b " \n\t"
-#endif
-#define PAVGB(a,b)  REAL_PAVGB(a,b)
-
-#if   TEMPLATE_PP_MMXEXT
-#define PMINUB(a,b,t) "pminub " #a ", " #b " \n\t"
-#elif TEMPLATE_PP_MMX
-#define PMINUB(b,a,t) \
-    "movq " #a ", " #t " \n\t"\
-    "psubusb " #b ", " #t " \n\t"\
-    "psubb " #t ", " #a " \n\t"
-#endif
-
-#if   TEMPLATE_PP_MMXEXT
-#define PMAXUB(a,b) "pmaxub " #a ", " #b " \n\t"
-#elif TEMPLATE_PP_MMX
-#define PMAXUB(a,b) \
-    "psubusb " #a ", " #b " \n\t"\
-    "paddb " #a ", " #b " \n\t"
-#endif
-
-//FIXME? |255-0| = 1 (should not be a problem ...)
-#if TEMPLATE_PP_MMX
-/**
- * Check if the middle 8x8 Block in the given 8x16 block is flat
- */
-static inline int RENAME(vertClassify)(const uint8_t src[], int stride, PPContext *c){
-    int numEq= 0, dcOk;
-    src+= stride*4; // src points to begin of the 8x8 Block
-    __asm__ volatile(
-        "movq %0, %%mm7                         \n\t"
-        "movq %1, %%mm6                         \n\t"
-        : : "m" (c->mmxDcOffset[c->nonBQP]),  "m" (c->mmxDcThreshold[c->nonBQP])
-        );
-
-    __asm__ volatile(
-        "lea (%2, %3), %%"FF_REG_a"             \n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %1      eax     eax+%2  eax+2%2 %1+4%2  ecx     ecx+%2  ecx+2%2 %1+8%2  ecx+4%2
-
-        "movq (%2), %%mm0                       \n\t"
-        "movq (%%"FF_REG_a"), %%mm1             \n\t"
-        "movq %%mm0, %%mm3                      \n\t"
-        "movq %%mm0, %%mm4                      \n\t"
-        PMAXUB(%%mm1, %%mm4)
-        PMINUB(%%mm1, %%mm3, %%mm5)
-        "psubb %%mm1, %%mm0                     \n\t" // mm0 = difference
-        "paddb %%mm7, %%mm0                     \n\t"
-        "pcmpgtb %%mm6, %%mm0                   \n\t"
-
-        "movq (%%"FF_REG_a",%3), %%mm2          \n\t"
-        PMAXUB(%%mm2, %%mm4)
-        PMINUB(%%mm2, %%mm3, %%mm5)
-        "psubb %%mm2, %%mm1                     \n\t"
-        "paddb %%mm7, %%mm1                     \n\t"
-        "pcmpgtb %%mm6, %%mm1                   \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a", %3, 2), %%mm1      \n\t"
-        PMAXUB(%%mm1, %%mm4)
-        PMINUB(%%mm1, %%mm3, %%mm5)
-        "psubb %%mm1, %%mm2                     \n\t"
-        "paddb %%mm7, %%mm2                     \n\t"
-        "pcmpgtb %%mm6, %%mm2                   \n\t"
-        "paddb %%mm2, %%mm0                     \n\t"
-
-        "lea (%%"FF_REG_a", %3, 4), %%"FF_REG_a"\n\t"
-
-        "movq (%2, %3, 4), %%mm2                \n\t"
-        PMAXUB(%%mm2, %%mm4)
-        PMINUB(%%mm2, %%mm3, %%mm5)
-        "psubb %%mm2, %%mm1                     \n\t"
-        "paddb %%mm7, %%mm1                     \n\t"
-        "pcmpgtb %%mm6, %%mm1                   \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a"), %%mm1             \n\t"
-        PMAXUB(%%mm1, %%mm4)
-        PMINUB(%%mm1, %%mm3, %%mm5)
-        "psubb %%mm1, %%mm2                     \n\t"
-        "paddb %%mm7, %%mm2                     \n\t"
-        "pcmpgtb %%mm6, %%mm2                   \n\t"
-        "paddb %%mm2, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a", %3), %%mm2         \n\t"
-        PMAXUB(%%mm2, %%mm4)
-        PMINUB(%%mm2, %%mm3, %%mm5)
-        "psubb %%mm2, %%mm1                     \n\t"
-        "paddb %%mm7, %%mm1                     \n\t"
-        "pcmpgtb %%mm6, %%mm1                   \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a", %3, 2), %%mm1      \n\t"
-        PMAXUB(%%mm1, %%mm4)
-        PMINUB(%%mm1, %%mm3, %%mm5)
-        "psubb %%mm1, %%mm2                     \n\t"
-        "paddb %%mm7, %%mm2                     \n\t"
-        "pcmpgtb %%mm6, %%mm2                   \n\t"
-        "paddb %%mm2, %%mm0                     \n\t"
-        "psubusb %%mm3, %%mm4                   \n\t"
-
-        "                                       \n\t"
-#if TEMPLATE_PP_MMXEXT
-        "pxor %%mm7, %%mm7                      \n\t"
-        "psadbw %%mm7, %%mm0                    \n\t"
-#else
-        "movq %%mm0, %%mm1                      \n\t"
-        "psrlw $8, %%mm0                        \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-        "movq %%mm0, %%mm1                      \n\t"
-        "psrlq $16, %%mm0                       \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-        "movq %%mm0, %%mm1                      \n\t"
-        "psrlq $32, %%mm0                       \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-#endif
-        "movq %4, %%mm7                         \n\t" // QP,..., QP
-        "paddusb %%mm7, %%mm7                   \n\t" // 2QP ... 2QP
-        "psubusb %%mm7, %%mm4                   \n\t" // Diff <= 2QP -> 0
-        "packssdw %%mm4, %%mm4                  \n\t"
-        "movd %%mm0, %0                         \n\t"
-        "movd %%mm4, %1                         \n\t"
-
-        : "=r" (numEq), "=r" (dcOk)
-        : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb)
-        : "%"FF_REG_a
-        );
-
-    numEq= (-numEq) &0xFF;
-    if(numEq > c->ppMode.flatnessThreshold){
-        if(dcOk) return 0;
-        else     return 1;
-    }else{
-        return 2;
-    }
-}
-#endif //TEMPLATE_PP_MMX
-
-/**
- * Do a vertical low pass filter on the 8x16 block (only write to the 8x8 block in the middle)
- * using the 9-Tap Filter (1,1,2,2,4,2,2,1,1)/16
- */
-#if !TEMPLATE_PP_ALTIVEC
-static inline void RENAME(doVertLowPass)(uint8_t *src, int stride, PPContext *c)
-{
-#if TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    src+= stride*3;
-    __asm__ volatile(        //"movv %0 %1 %2\n\t"
-        "movq %2, %%mm0                         \n\t"  // QP,..., QP
-        "pxor %%mm4, %%mm4                      \n\t"
-
-        "movq (%0), %%mm6                       \n\t"
-        "movq (%0, %1), %%mm5                   \n\t"
-        "movq %%mm5, %%mm1                      \n\t"
-        "movq %%mm6, %%mm2                      \n\t"
-        "psubusb %%mm6, %%mm5                   \n\t"
-        "psubusb %%mm1, %%mm2                   \n\t"
-        "por %%mm5, %%mm2                       \n\t" // ABS Diff of lines
-        "psubusb %%mm0, %%mm2                   \n\t" // diff <= QP -> 0
-        "pcmpeqb %%mm4, %%mm2                   \n\t" // diff <= QP -> FF
-
-        "pand %%mm2, %%mm6                      \n\t"
-        "pandn %%mm1, %%mm2                     \n\t"
-        "por %%mm2, %%mm6                       \n\t"// First Line to Filter
-
-        "movq (%0, %1, 8), %%mm5                \n\t"
-        "lea (%0, %1, 4), %%"FF_REG_a"          \n\t"
-        "lea (%0, %1, 8), %%"FF_REG_c"          \n\t"
-        "sub %1, %%"FF_REG_c"                   \n\t"
-        "add %1, %0                             \n\t" // %0 points to line 1 not 0
-        "movq (%0, %1, 8), %%mm7                \n\t"
-        "movq %%mm5, %%mm1                      \n\t"
-        "movq %%mm7, %%mm2                      \n\t"
-        "psubusb %%mm7, %%mm5                   \n\t"
-        "psubusb %%mm1, %%mm2                   \n\t"
-        "por %%mm5, %%mm2                       \n\t" // ABS Diff of lines
-        "psubusb %%mm0, %%mm2                   \n\t" // diff <= QP -> 0
-        "pcmpeqb %%mm4, %%mm2                   \n\t" // diff <= QP -> FF
-
-        "pand %%mm2, %%mm7                      \n\t"
-        "pandn %%mm1, %%mm2                     \n\t"
-        "por %%mm2, %%mm7                       \n\t" // First Line to Filter
-
-
-        //      1       2       3       4       5       6       7       8
-        //      %0      %0+%1   %0+2%1  eax     %0+4%1  eax+2%1 ecx     eax+4%1
-        // 6 4 2 2 1 1
-        // 6 4 4 2
-        // 6 8 2
-
-        "movq (%0, %1), %%mm0                   \n\t" //  1
-        "movq %%mm0, %%mm1                      \n\t" //  1
-        PAVGB(%%mm6, %%mm0)                           //1 1        /2
-        PAVGB(%%mm6, %%mm0)                           //3 1        /4
-
-        "movq (%0, %1, 4), %%mm2                \n\t" //     1
-        "movq %%mm2, %%mm5                      \n\t" //     1
-        PAVGB((%%FF_REGa), %%mm2)                     //    11        /2
-        PAVGB((%0, %1, 2), %%mm2)                     //   211        /4
-        "movq %%mm2, %%mm3                      \n\t" //   211        /4
-        "movq (%0), %%mm4                       \n\t" // 1
-        PAVGB(%%mm4, %%mm3)                           // 4 211        /8
-        PAVGB(%%mm0, %%mm3)                           //642211        /16
-        "movq %%mm3, (%0)                       \n\t" // X
-        // mm1=2 mm2=3(211) mm4=1 mm5=5 mm6=0 mm7=9
-        "movq %%mm1, %%mm0                      \n\t" //  1
-        PAVGB(%%mm6, %%mm0)                           //1 1        /2
-        "movq %%mm4, %%mm3                      \n\t" // 1
-        PAVGB((%0,%1,2), %%mm3)                       // 1 1        /2
-        PAVGB((%%FF_REGa,%1,2), %%mm5)                //     11        /2
-        PAVGB((%%FF_REGa), %%mm5)                     //    211 /4
-        PAVGB(%%mm5, %%mm3)                           // 2 2211 /8
-        PAVGB(%%mm0, %%mm3)                           //4242211 /16
-        "movq %%mm3, (%0,%1)                    \n\t" //  X
-        // mm1=2 mm2=3(211) mm4=1 mm5=4(211) mm6=0 mm7=9
-        PAVGB(%%mm4, %%mm6)                                   //11        /2
-        "movq (%%"FF_REG_c"), %%mm0             \n\t" //       1
-        PAVGB((%%FF_REGa, %1, 2), %%mm0)              //      11/2
-        "movq %%mm0, %%mm3                      \n\t" //      11/2
-        PAVGB(%%mm1, %%mm0)                           //  2   11/4
-        PAVGB(%%mm6, %%mm0)                           //222   11/8
-        PAVGB(%%mm2, %%mm0)                           //22242211/16
-        "movq (%0, %1, 2), %%mm2                \n\t" //   1
-        "movq %%mm0, (%0, %1, 2)                \n\t" //   X
-        // mm1=2 mm2=3 mm3=6(11) mm4=1 mm5=4(211) mm6=0(11) mm7=9
-        "movq (%%"FF_REG_a", %1, 4), %%mm0      \n\t" //        1
-        PAVGB((%%FF_REGc), %%mm0)                     //       11        /2
-        PAVGB(%%mm0, %%mm6)                           //11     11        /4
-        PAVGB(%%mm1, %%mm4)                           // 11                /2
-        PAVGB(%%mm2, %%mm1)                           //  11                /2
-        PAVGB(%%mm1, %%mm6)                           //1122   11        /8
-        PAVGB(%%mm5, %%mm6)                           //112242211        /16
-        "movq (%%"FF_REG_a"), %%mm5             \n\t" //    1
-        "movq %%mm6, (%%"FF_REG_a")             \n\t" //    X
-        // mm0=7(11) mm1=2(11) mm2=3 mm3=6(11) mm4=1(11) mm5=4 mm7=9
-        "movq (%%"FF_REG_a", %1, 4), %%mm6      \n\t" //        1
-        PAVGB(%%mm7, %%mm6)                           //        11        /2
-        PAVGB(%%mm4, %%mm6)                           // 11     11        /4
-        PAVGB(%%mm3, %%mm6)                           // 11   2211        /8
-        PAVGB(%%mm5, %%mm2)                           //   11                /2
-        "movq (%0, %1, 4), %%mm4                \n\t" //     1
-        PAVGB(%%mm4, %%mm2)                           //   112                /4
-        PAVGB(%%mm2, %%mm6)                           // 112242211        /16
-        "movq %%mm6, (%0, %1, 4)                \n\t" //     X
-        // mm0=7(11) mm1=2(11) mm2=3(112) mm3=6(11) mm4=5 mm5=4 mm7=9
-        PAVGB(%%mm7, %%mm1)                           //  11     2        /4
-        PAVGB(%%mm4, %%mm5)                           //    11                /2
-        PAVGB(%%mm5, %%mm0)                           //    11 11        /4
-        "movq (%%"FF_REG_a", %1, 2), %%mm6      \n\t" //      1
-        PAVGB(%%mm6, %%mm1)                           //  11  4  2        /8
-        PAVGB(%%mm0, %%mm1)                           //  11224222        /16
-        "movq %%mm1, (%%"FF_REG_a", %1, 2)      \n\t" //      X
-        // mm2=3(112) mm3=6(11) mm4=5 mm5=4(11) mm6=6 mm7=9
-        PAVGB((%%FF_REGc), %%mm2)                     //   112 4        /8
-        "movq (%%"FF_REG_a", %1, 4), %%mm0      \n\t" //        1
-        PAVGB(%%mm0, %%mm6)                           //      1 1        /2
-        PAVGB(%%mm7, %%mm6)                           //      1 12        /4
-        PAVGB(%%mm2, %%mm6)                           //   1122424        /4
-        "movq %%mm6, (%%"FF_REG_c")             \n\t" //       X
-        // mm0=8 mm3=6(11) mm4=5 mm5=4(11) mm7=9
-        PAVGB(%%mm7, %%mm5)                           //    11   2        /4
-        PAVGB(%%mm7, %%mm5)                           //    11   6        /8
-
-        PAVGB(%%mm3, %%mm0)                           //      112        /4
-        PAVGB(%%mm0, %%mm5)                           //    112246        /16
-        "movq %%mm5, (%%"FF_REG_a", %1, 4)      \n\t" //        X
-        "sub %1, %0                             \n\t"
-
-        :
-        : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb)
-        : "%"FF_REG_a, "%"FF_REG_c
-    );
-#else //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    const int l1= stride;
-    const int l2= stride + l1;
-    const int l3= stride + l2;
-    const int l4= stride + l3;
-    const int l5= stride + l4;
-    const int l6= stride + l5;
-    const int l7= stride + l6;
-    const int l8= stride + l7;
-    const int l9= stride + l8;
-    int x;
-    src+= stride*3;
-    for(x=0; x<BLOCK_SIZE; x++){
-        const int first= FFABS(src[0] - src[l1]) < c->QP ? src[0] : src[l1];
-        const int last= FFABS(src[l8] - src[l9]) < c->QP ? src[l9] : src[l8];
-
-        int sums[10];
-        sums[0] = 4*first + src[l1] + src[l2] + src[l3] + 4;
-        sums[1] = sums[0] - first  + src[l4];
-        sums[2] = sums[1] - first  + src[l5];
-        sums[3] = sums[2] - first  + src[l6];
-        sums[4] = sums[3] - first  + src[l7];
-        sums[5] = sums[4] - src[l1] + src[l8];
-        sums[6] = sums[5] - src[l2] + last;
-        sums[7] = sums[6] - src[l3] + last;
-        sums[8] = sums[7] - src[l4] + last;
-        sums[9] = sums[8] - src[l5] + last;
-
-        src[l1]= (sums[0] + sums[2] + 2*src[l1])>>4;
-        src[l2]= (sums[1] + sums[3] + 2*src[l2])>>4;
-        src[l3]= (sums[2] + sums[4] + 2*src[l3])>>4;
-        src[l4]= (sums[3] + sums[5] + 2*src[l4])>>4;
-        src[l5]= (sums[4] + sums[6] + 2*src[l5])>>4;
-        src[l6]= (sums[5] + sums[7] + 2*src[l6])>>4;
-        src[l7]= (sums[6] + sums[8] + 2*src[l7])>>4;
-        src[l8]= (sums[7] + sums[9] + 2*src[l8])>>4;
-
-        src++;
-    }
-#endif //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-}
-#endif //TEMPLATE_PP_ALTIVEC
-
-/**
- * Experimental Filter 1
- * will not damage linear gradients
- * Flat blocks should look like they were passed through the (1,1,2,2,4,2,2,1,1) 9-Tap filter
- * can only smooth blocks at the expected locations (it cannot smooth them if they did move)
- * MMX2 version does correct clipping C version does not
- */
-static inline void RENAME(vertX1Filter)(uint8_t *src, int stride, PPContext *co)
-{
-#if TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    src+= stride*3;
-
-    __asm__ volatile(
-        "pxor %%mm7, %%mm7                      \n\t" // 0
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_c"\n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  ecx     ecx+%1  ecx+2%1 %0+8%1  ecx+4%1
-        "movq (%%"FF_REG_a", %1, 2), %%mm0      \n\t" // line 3
-        "movq (%0, %1, 4), %%mm1                \n\t" // line 4
-        "movq %%mm1, %%mm2                      \n\t" // line 4
-        "psubusb %%mm0, %%mm1                   \n\t"
-        "psubusb %%mm2, %%mm0                   \n\t"
-        "por %%mm1, %%mm0                       \n\t" // |l2 - l3|
-        "movq (%%"FF_REG_c"), %%mm3             \n\t" // line 5
-        "movq (%%"FF_REG_c", %1), %%mm4         \n\t" // line 6
-        "movq %%mm3, %%mm5                      \n\t" // line 5
-        "psubusb %%mm4, %%mm3                   \n\t"
-        "psubusb %%mm5, %%mm4                   \n\t"
-        "por %%mm4, %%mm3                       \n\t" // |l5 - l6|
-        PAVGB(%%mm3, %%mm0)                           // (|l2 - l3| + |l5 - l6|)/2
-        "movq %%mm2, %%mm1                      \n\t" // line 4
-        "psubusb %%mm5, %%mm2                   \n\t"
-        "movq %%mm2, %%mm4                      \n\t"
-        "pcmpeqb %%mm7, %%mm2                   \n\t" // (l4 - l5) <= 0 ? -1 : 0
-        "psubusb %%mm1, %%mm5                   \n\t"
-        "por %%mm5, %%mm4                       \n\t" // |l4 - l5|
-        "psubusb %%mm0, %%mm4                   \n\t" //d = MAX(0, |l4-l5| - (|l2-l3| + |l5-l6|)/2)
-        "movq %%mm4, %%mm3                      \n\t" // d
-        "movq %2, %%mm0                         \n\t"
-        "paddusb %%mm0, %%mm0                   \n\t"
-        "psubusb %%mm0, %%mm4                   \n\t"
-        "pcmpeqb %%mm7, %%mm4                   \n\t" // d <= QP ? -1 : 0
-        "psubusb "MANGLE(b01)", %%mm3           \n\t"
-        "pand %%mm4, %%mm3                      \n\t" // d <= QP ? d : 0
-
-        PAVGB(%%mm7, %%mm3)                           // d/2
-        "movq %%mm3, %%mm1                      \n\t" // d/2
-        PAVGB(%%mm7, %%mm3)                           // d/4
-        PAVGB(%%mm1, %%mm3)                           // 3*d/8
-
-        "movq (%0, %1, 4), %%mm0                \n\t" // line 4
-        "pxor %%mm2, %%mm0                      \n\t" //(l4 - l5) <= 0 ? -l4-1 : l4
-        "psubusb %%mm3, %%mm0                   \n\t"
-        "pxor %%mm2, %%mm0                      \n\t"
-        "movq %%mm0, (%0, %1, 4)                \n\t" // line 4
-
-        "movq (%%"FF_REG_c"), %%mm0             \n\t" // line 5
-        "pxor %%mm2, %%mm0                      \n\t" //(l4 - l5) <= 0 ? -l5-1 : l5
-        "paddusb %%mm3, %%mm0                   \n\t"
-        "pxor %%mm2, %%mm0                      \n\t"
-        "movq %%mm0, (%%"FF_REG_c")             \n\t" // line 5
-
-        PAVGB(%%mm7, %%mm1)                           // d/4
-
-        "movq (%%"FF_REG_a", %1, 2), %%mm0      \n\t" // line 3
-        "pxor %%mm2, %%mm0                      \n\t" //(l4 - l5) <= 0 ? -l4-1 : l4
-        "psubusb %%mm1, %%mm0                   \n\t"
-        "pxor %%mm2, %%mm0                      \n\t"
-        "movq %%mm0, (%%"FF_REG_a", %1, 2)      \n\t" // line 3
-
-        "movq (%%"FF_REG_c", %1), %%mm0         \n\t" // line 6
-        "pxor %%mm2, %%mm0                      \n\t" //(l4 - l5) <= 0 ? -l5-1 : l5
-        "paddusb %%mm1, %%mm0                   \n\t"
-        "pxor %%mm2, %%mm0                      \n\t"
-        "movq %%mm0, (%%"FF_REG_c", %1)         \n\t" // line 6
-
-        PAVGB(%%mm7, %%mm1)                           // d/8
-
-        "movq (%%"FF_REG_a", %1), %%mm0         \n\t" // line 2
-        "pxor %%mm2, %%mm0                      \n\t" //(l4 - l5) <= 0 ? -l2-1 : l2
-        "psubusb %%mm1, %%mm0                   \n\t"
-        "pxor %%mm2, %%mm0                      \n\t"
-        "movq %%mm0, (%%"FF_REG_a", %1)         \n\t" // line 2
-
-        "movq (%%"FF_REG_c", %1, 2), %%mm0      \n\t" // line 7
-        "pxor %%mm2, %%mm0                      \n\t" //(l4 - l5) <= 0 ? -l7-1 : l7
-        "paddusb %%mm1, %%mm0                   \n\t"
-        "pxor %%mm2, %%mm0                      \n\t"
-        "movq %%mm0, (%%"FF_REG_c", %1, 2)      \n\t" // line 7
-
-        :
-        : "r" (src), "r" ((x86_reg)stride), "m" (co->pQPb)
-          NAMED_CONSTRAINTS_ADD(b01)
-        : "%"FF_REG_a, "%"FF_REG_c
-    );
-#else //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-
-    const int l1= stride;
-    const int l2= stride + l1;
-    const int l3= stride + l2;
-    const int l4= stride + l3;
-    const int l5= stride + l4;
-    const int l6= stride + l5;
-    const int l7= stride + l6;
-//    const int l8= stride + l7;
-//    const int l9= stride + l8;
-    int x;
-
-    src+= stride*3;
-    for(x=0; x<BLOCK_SIZE; x++){
-        int a= src[l3] - src[l4];
-        int b= src[l4] - src[l5];
-        int c= src[l5] - src[l6];
-
-        int d= FFABS(b) - ((FFABS(a) + FFABS(c))>>1);
-        d= FFMAX(d, 0);
-
-        if(d < co->QP*2){
-            int v = d * FFSIGN(-b);
-
-            src[l2] +=v>>3;
-            src[l3] +=v>>2;
-            src[l4] +=(3*v)>>3;
-            src[l5] -=(3*v)>>3;
-            src[l6] -=v>>2;
-            src[l7] -=v>>3;
-        }
-        src++;
-    }
-#endif //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-}
-
-#if !TEMPLATE_PP_ALTIVEC
-static inline void RENAME(doVertDefFilter)(uint8_t src[], int stride, PPContext *c)
-{
-#if TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-/*
-    uint8_t tmp[16];
-    const int l1= stride;
-    const int l2= stride + l1;
-    const int l3= stride + l2;
-    const int l4= (int)tmp - (int)src - stride*3;
-    const int l5= (int)tmp - (int)src - stride*3 + 8;
-    const int l6= stride*3 + l3;
-    const int l7= stride + l6;
-    const int l8= stride + l7;
-
-    memcpy(tmp, src+stride*7, 8);
-    memcpy(tmp+8, src+stride*8, 8);
-*/
-    src+= stride*4;
-    __asm__ volatile(
-
-#if 0 //slightly more accurate and slightly slower
-        "pxor %%mm7, %%mm7                      \n\t" // 0
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_c"\n\t"
-//      0       1       2       3       4       5       6       7
-//      %0      %0+%1   %0+2%1  eax+2%1 %0+4%1  eax+4%1 ecx+%1  ecx+2%1
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  ecx     ecx+%1  ecx+2%1
-
-
-        "movq (%0, %1, 2), %%mm0                \n\t" // l2
-        "movq (%0), %%mm1                       \n\t" // l0
-        "movq %%mm0, %%mm2                      \n\t" // l2
-        PAVGB(%%mm7, %%mm0)                           // ~l2/2
-        PAVGB(%%mm1, %%mm0)                           // ~(l2 + 2l0)/4
-        PAVGB(%%mm2, %%mm0)                           // ~(5l2 + 2l0)/8
-
-        "movq (%%"FF_REG_a"), %%mm1             \n\t" // l1
-        "movq (%%"FF_REG_a", %1, 2), %%mm3      \n\t" // l3
-        "movq %%mm1, %%mm4                      \n\t" // l1
-        PAVGB(%%mm7, %%mm1)                           // ~l1/2
-        PAVGB(%%mm3, %%mm1)                           // ~(l1 + 2l3)/4
-        PAVGB(%%mm4, %%mm1)                           // ~(5l1 + 2l3)/8
-
-        "movq %%mm0, %%mm4                      \n\t" // ~(5l2 + 2l0)/8
-        "psubusb %%mm1, %%mm0                   \n\t"
-        "psubusb %%mm4, %%mm1                   \n\t"
-        "por %%mm0, %%mm1                       \n\t" // ~|2l0 - 5l1 + 5l2 - 2l3|/8
-// mm1= |lenergy|, mm2= l2, mm3= l3, mm7=0
-
-        "movq (%0, %1, 4), %%mm0                \n\t" // l4
-        "movq %%mm0, %%mm4                      \n\t" // l4
-        PAVGB(%%mm7, %%mm0)                           // ~l4/2
-        PAVGB(%%mm2, %%mm0)                           // ~(l4 + 2l2)/4
-        PAVGB(%%mm4, %%mm0)                           // ~(5l4 + 2l2)/8
-
-        "movq (%%"FF_REG_c"), %%mm2             \n\t" // l5
-        "movq %%mm3, %%mm5                      \n\t" // l3
-        PAVGB(%%mm7, %%mm3)                           // ~l3/2
-        PAVGB(%%mm2, %%mm3)                           // ~(l3 + 2l5)/4
-        PAVGB(%%mm5, %%mm3)                           // ~(5l3 + 2l5)/8
-
-        "movq %%mm0, %%mm6                      \n\t" // ~(5l4 + 2l2)/8
-        "psubusb %%mm3, %%mm0                   \n\t"
-        "psubusb %%mm6, %%mm3                   \n\t"
-        "por %%mm0, %%mm3                       \n\t" // ~|2l2 - 5l3 + 5l4 - 2l5|/8
-        "pcmpeqb %%mm7, %%mm0                   \n\t" // SIGN(2l2 - 5l3 + 5l4 - 2l5)
-// mm0= SIGN(menergy), mm1= |lenergy|, mm2= l5, mm3= |menergy|, mm4=l4, mm5= l3, mm7=0
-
-        "movq (%%"FF_REG_c", %1), %%mm6         \n\t" // l6
-        "movq %%mm6, %%mm5                      \n\t" // l6
-        PAVGB(%%mm7, %%mm6)                           // ~l6/2
-        PAVGB(%%mm4, %%mm6)                           // ~(l6 + 2l4)/4
-        PAVGB(%%mm5, %%mm6)                           // ~(5l6 + 2l4)/8
-
-        "movq (%%"FF_REG_c", %1, 2), %%mm5      \n\t" // l7
-        "movq %%mm2, %%mm4                      \n\t" // l5
-        PAVGB(%%mm7, %%mm2)                           // ~l5/2
-        PAVGB(%%mm5, %%mm2)                           // ~(l5 + 2l7)/4
-        PAVGB(%%mm4, %%mm2)                           // ~(5l5 + 2l7)/8
-
-        "movq %%mm6, %%mm4                      \n\t" // ~(5l6 + 2l4)/8
-        "psubusb %%mm2, %%mm6                   \n\t"
-        "psubusb %%mm4, %%mm2                   \n\t"
-        "por %%mm6, %%mm2                       \n\t" // ~|2l4 - 5l5 + 5l6 - 2l7|/8
-// mm0= SIGN(menergy), mm1= |lenergy|/8, mm2= |renergy|/8, mm3= |menergy|/8, mm7=0
-
-
-        PMINUB(%%mm2, %%mm1, %%mm4)                   // MIN(|lenergy|,|renergy|)/8
-        "movq %2, %%mm4                         \n\t" // QP //FIXME QP+1 ?
-        "paddusb "MANGLE(b01)", %%mm4           \n\t"
-        "pcmpgtb %%mm3, %%mm4                   \n\t" // |menergy|/8 < QP
-        "psubusb %%mm1, %%mm3                   \n\t" // d=|menergy|/8-MIN(|lenergy|,|renergy|)/8
-        "pand %%mm4, %%mm3                      \n\t"
-
-        "movq %%mm3, %%mm1                      \n\t"
-//        "psubusb "MANGLE(b01)", %%mm3           \n\t"
-        PAVGB(%%mm7, %%mm3)
-        PAVGB(%%mm7, %%mm3)
-        "paddusb %%mm1, %%mm3                   \n\t"
-//        "paddusb "MANGLE(b01)", %%mm3           \n\t"
-
-        "movq (%%"FF_REG_a", %1, 2), %%mm6      \n\t" //l3
-        "movq (%0, %1, 4), %%mm5                \n\t" //l4
-        "movq (%0, %1, 4), %%mm4                \n\t" //l4
-        "psubusb %%mm6, %%mm5                   \n\t"
-        "psubusb %%mm4, %%mm6                   \n\t"
-        "por %%mm6, %%mm5                       \n\t" // |l3-l4|
-        "pcmpeqb %%mm7, %%mm6                   \n\t" // SIGN(l3-l4)
-        "pxor %%mm6, %%mm0                      \n\t"
-        "pand %%mm0, %%mm3                      \n\t"
-        PMINUB(%%mm5, %%mm3, %%mm0)
-
-        "psubusb "MANGLE(b01)", %%mm3           \n\t"
-        PAVGB(%%mm7, %%mm3)
-
-        "movq (%%"FF_REG_a", %1, 2), %%mm0      \n\t"
-        "movq (%0, %1, 4), %%mm2                \n\t"
-        "pxor %%mm6, %%mm0                      \n\t"
-        "pxor %%mm6, %%mm2                      \n\t"
-        "psubb %%mm3, %%mm0                     \n\t"
-        "paddb %%mm3, %%mm2                     \n\t"
-        "pxor %%mm6, %%mm0                      \n\t"
-        "pxor %%mm6, %%mm2                      \n\t"
-        "movq %%mm0, (%%"FF_REG_a", %1, 2)      \n\t"
-        "movq %%mm2, (%0, %1, 4)                \n\t"
-#endif //0
-
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "pcmpeqb %%mm6, %%mm6                   \n\t" // -1
-//      0       1       2       3       4       5       6       7
-//      %0      %0+%1   %0+2%1  eax+2%1 %0+4%1  eax+4%1 ecx+%1  ecx+2%1
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  ecx     ecx+%1  ecx+2%1
-
-
-        "movq (%%"FF_REG_a", %1, 2), %%mm1      \n\t" // l3
-        "movq (%0, %1, 4), %%mm0                \n\t" // l4
-        "pxor %%mm6, %%mm1                      \n\t" // -l3-1
-        PAVGB(%%mm1, %%mm0)                           // -q+128 = (l4-l3+256)/2
-// mm1=-l3-1, mm0=128-q
-
-        "movq (%%"FF_REG_a", %1, 4), %%mm2      \n\t" // l5
-        "movq (%%"FF_REG_a", %1), %%mm3         \n\t" // l2
-        "pxor %%mm6, %%mm2                      \n\t" // -l5-1
-        "movq %%mm2, %%mm5                      \n\t" // -l5-1
-        "movq "MANGLE(b80)", %%mm4              \n\t" // 128
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_c"\n\t"
-        PAVGB(%%mm3, %%mm2)                           // (l2-l5+256)/2
-        PAVGB(%%mm0, %%mm4)                           // ~(l4-l3)/4 + 128
-        PAVGB(%%mm2, %%mm4)                           // ~(l2-l5)/4 +(l4-l3)/8 + 128
-        PAVGB(%%mm0, %%mm4)                           // ~(l2-l5)/8 +5(l4-l3)/16 + 128
-// mm1=-l3-1, mm0=128-q, mm3=l2, mm4=menergy/16 + 128, mm5= -l5-1
-
-        "movq (%%"FF_REG_a"), %%mm2             \n\t" // l1
-        "pxor %%mm6, %%mm2                      \n\t" // -l1-1
-        PAVGB(%%mm3, %%mm2)                           // (l2-l1+256)/2
-        PAVGB((%0), %%mm1)                            // (l0-l3+256)/2
-        "movq "MANGLE(b80)", %%mm3              \n\t" // 128
-        PAVGB(%%mm2, %%mm3)                           // ~(l2-l1)/4 + 128
-        PAVGB(%%mm1, %%mm3)                           // ~(l0-l3)/4 +(l2-l1)/8 + 128
-        PAVGB(%%mm2, %%mm3)                           // ~(l0-l3)/8 +5(l2-l1)/16 + 128
-// mm0=128-q, mm3=lenergy/16 + 128, mm4= menergy/16 + 128, mm5= -l5-1
-
-        PAVGB((%%FF_REGc, %1), %%mm5)                 // (l6-l5+256)/2
-        "movq (%%"FF_REG_c", %1, 2), %%mm1      \n\t" // l7
-        "pxor %%mm6, %%mm1                      \n\t" // -l7-1
-        PAVGB((%0, %1, 4), %%mm1)                     // (l4-l7+256)/2
-        "movq "MANGLE(b80)", %%mm2              \n\t" // 128
-        PAVGB(%%mm5, %%mm2)                           // ~(l6-l5)/4 + 128
-        PAVGB(%%mm1, %%mm2)                           // ~(l4-l7)/4 +(l6-l5)/8 + 128
-        PAVGB(%%mm5, %%mm2)                           // ~(l4-l7)/8 +5(l6-l5)/16 + 128
-// mm0=128-q, mm2=renergy/16 + 128, mm3=lenergy/16 + 128, mm4= menergy/16 + 128
-
-        "movq "MANGLE(b00)", %%mm1              \n\t" // 0
-        "movq "MANGLE(b00)", %%mm5              \n\t" // 0
-        "psubb %%mm2, %%mm1                     \n\t" // 128 - renergy/16
-        "psubb %%mm3, %%mm5                     \n\t" // 128 - lenergy/16
-        PMAXUB(%%mm1, %%mm2)                          // 128 + |renergy/16|
-        PMAXUB(%%mm5, %%mm3)                          // 128 + |lenergy/16|
-        PMINUB(%%mm2, %%mm3, %%mm1)                   // 128 + MIN(|lenergy|,|renergy|)/16
-
-// mm0=128-q, mm3=128 + MIN(|lenergy|,|renergy|)/16, mm4= menergy/16 + 128
-
-        "movq "MANGLE(b00)", %%mm7              \n\t" // 0
-        "movq %2, %%mm2                         \n\t" // QP
-        PAVGB(%%mm6, %%mm2)                           // 128 + QP/2
-        "psubb %%mm6, %%mm2                     \n\t"
-
-        "movq %%mm4, %%mm1                      \n\t"
-        "pcmpgtb %%mm7, %%mm1                   \n\t" // SIGN(menergy)
-        "pxor %%mm1, %%mm4                      \n\t"
-        "psubb %%mm1, %%mm4                     \n\t" // 128 + |menergy|/16
-        "pcmpgtb %%mm4, %%mm2                   \n\t" // |menergy|/16 < QP/2
-        "psubusb %%mm3, %%mm4                   \n\t" //d=|menergy|/16 - MIN(|lenergy|,|renergy|)/16
-// mm0=128-q, mm1= SIGN(menergy), mm2= |menergy|/16 < QP/2, mm4= d/16
-
-        "movq %%mm4, %%mm3                      \n\t" // d
-        "psubusb "MANGLE(b01)", %%mm4           \n\t"
-        PAVGB(%%mm7, %%mm4)                           // d/32
-        PAVGB(%%mm7, %%mm4)                           // (d + 32)/64
-        "paddb %%mm3, %%mm4                     \n\t" // 5d/64
-        "pand %%mm2, %%mm4                      \n\t"
-
-        "movq "MANGLE(b80)", %%mm5              \n\t" // 128
-        "psubb %%mm0, %%mm5                     \n\t" // q
-        "paddsb %%mm6, %%mm5                    \n\t" // fix bad rounding
-        "pcmpgtb %%mm5, %%mm7                   \n\t" // SIGN(q)
-        "pxor %%mm7, %%mm5                      \n\t"
-
-        PMINUB(%%mm5, %%mm4, %%mm3)                   // MIN(|q|, 5d/64)
-        "pxor %%mm1, %%mm7                      \n\t" // SIGN(d*q)
-
-        "pand %%mm7, %%mm4                      \n\t"
-        "movq (%%"FF_REG_a", %1, 2), %%mm0      \n\t"
-        "movq (%0, %1, 4), %%mm2                \n\t"
-        "pxor %%mm1, %%mm0                      \n\t"
-        "pxor %%mm1, %%mm2                      \n\t"
-        "paddb %%mm4, %%mm0                     \n\t"
-        "psubb %%mm4, %%mm2                     \n\t"
-        "pxor %%mm1, %%mm0                      \n\t"
-        "pxor %%mm1, %%mm2                      \n\t"
-        "movq %%mm0, (%%"FF_REG_a", %1, 2)      \n\t"
-        "movq %%mm2, (%0, %1, 4)                \n\t"
-
-        :
-        : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb)
-          NAMED_CONSTRAINTS_ADD(b80,b00,b01)
-        : "%"FF_REG_a, "%"FF_REG_c
-    );
-
-/*
-    {
-    int x;
-    src-= stride;
-    for(x=0; x<BLOCK_SIZE; x++){
-        const int middleEnergy= 5*(src[l5] - src[l4]) + 2*(src[l3] - src[l6]);
-        if(FFABS(middleEnergy)< 8*QP){
-            const int q=(src[l4] - src[l5])/2;
-            const int leftEnergy=  5*(src[l3] - src[l2]) + 2*(src[l1] - src[l4]);
-            const int rightEnergy= 5*(src[l7] - src[l6]) + 2*(src[l5] - src[l8]);
-
-            int d= FFABS(middleEnergy) - FFMIN( FFABS(leftEnergy), FFABS(rightEnergy) );
-            d= FFMAX(d, 0);
-
-            d= (5*d + 32) >> 6;
-            d*= FFSIGN(-middleEnergy);
-
-            if(q>0){
-                d= d<0 ? 0 : d;
-                d= d>q ? q : d;
-            }else{
-                d= d>0 ? 0 : d;
-                d= d<q ? q : d;
-            }
-
-            src[l4]-= d;
-            src[l5]+= d;
-        }
-        src++;
-    }
-    src-=8;
-    for(x=0; x<8; x++){
-        int y;
-        for(y=4; y<6; y++){
-            int d= src[x+y*stride] - tmp[x+(y-4)*8];
-            int ad= FFABS(d);
-            static int max=0;
-            static int sum=0;
-            static int num=0;
-            static int bias=0;
-
-            if(max<ad) max=ad;
-            sum+= ad>3 ? 1 : 0;
-            if(ad>3){
-                src[0] = src[7] = src[stride*7] = src[(stride+1)*7]=255;
-            }
-            if(y==4) bias+=d;
-            num++;
-            if(num%1000000 == 0){
-                av_log(c, AV_LOG_INFO, " %d %d %d %d\n", num, sum, max, bias);
-            }
-        }
-    }
-}
-*/
-#elif TEMPLATE_PP_MMX
-    DECLARE_ALIGNED(8, uint64_t, tmp)[4]; // make space for 4 8-byte vars
-    src+= stride*4;
-    __asm__ volatile(
-        "pxor %%mm7, %%mm7                      \n\t"
-//      0       1       2       3       4       5       6       7
-//      %0      %0+%1   %0+2%1  eax+2%1 %0+4%1  eax+4%1 edx+%1  edx+2%1
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1
-
-        "movq (%0), %%mm0                       \n\t"
-        "movq %%mm0, %%mm1                      \n\t"
-        "punpcklbw %%mm7, %%mm0                 \n\t" // low part of line 0
-        "punpckhbw %%mm7, %%mm1                 \n\t" // high part of line 0
-
-        "movq (%0, %1), %%mm2                   \n\t"
-        "lea (%0, %1, 2), %%"FF_REG_a"          \n\t"
-        "movq %%mm2, %%mm3                      \n\t"
-        "punpcklbw %%mm7, %%mm2                 \n\t" // low part of line 1
-        "punpckhbw %%mm7, %%mm3                 \n\t" // high part of line 1
-
-        "movq (%%"FF_REG_a"), %%mm4             \n\t"
-        "movq %%mm4, %%mm5                      \n\t"
-        "punpcklbw %%mm7, %%mm4                 \n\t" // low part of line 2
-        "punpckhbw %%mm7, %%mm5                 \n\t" // high part of line 2
-
-        "paddw %%mm0, %%mm0                     \n\t" // 2L0
-        "paddw %%mm1, %%mm1                     \n\t" // 2H0
-        "psubw %%mm4, %%mm2                     \n\t" // L1 - L2
-        "psubw %%mm5, %%mm3                     \n\t" // H1 - H2
-        "psubw %%mm2, %%mm0                     \n\t" // 2L0 - L1 + L2
-        "psubw %%mm3, %%mm1                     \n\t" // 2H0 - H1 + H2
-
-        "psllw $2, %%mm2                        \n\t" // 4L1 - 4L2
-        "psllw $2, %%mm3                        \n\t" // 4H1 - 4H2
-        "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2
-        "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2
-
-        "movq (%%"FF_REG_a", %1), %%mm2         \n\t"
-        "movq %%mm2, %%mm3                      \n\t"
-        "punpcklbw %%mm7, %%mm2                 \n\t" // L3
-        "punpckhbw %%mm7, %%mm3                 \n\t" // H3
-
-        "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2 - L3
-        "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2 - H3
-        "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2 - 2L3
-        "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2 - 2H3
-        "movq %%mm0, (%3)                       \n\t" // 2L0 - 5L1 + 5L2 - 2L3
-        "movq %%mm1, 8(%3)                      \n\t" // 2H0 - 5H1 + 5H2 - 2H3
-
-        "movq (%%"FF_REG_a", %1, 2), %%mm0      \n\t"
-        "movq %%mm0, %%mm1                      \n\t"
-        "punpcklbw %%mm7, %%mm0                 \n\t" // L4
-        "punpckhbw %%mm7, %%mm1                 \n\t" // H4
-
-        "psubw %%mm0, %%mm2                     \n\t" // L3 - L4
-        "psubw %%mm1, %%mm3                     \n\t" // H3 - H4
-        "movq %%mm2, 16(%3)                     \n\t" // L3 - L4
-        "movq %%mm3, 24(%3)                     \n\t" // H3 - H4
-        "paddw %%mm4, %%mm4                     \n\t" // 2L2
-        "paddw %%mm5, %%mm5                     \n\t" // 2H2
-        "psubw %%mm2, %%mm4                     \n\t" // 2L2 - L3 + L4
-        "psubw %%mm3, %%mm5                     \n\t" // 2H2 - H3 + H4
-
-        "lea (%%"FF_REG_a", %1), %0             \n\t"
-        "psllw $2, %%mm2                        \n\t" // 4L3 - 4L4
-        "psllw $2, %%mm3                        \n\t" // 4H3 - 4H4
-        "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4
-        "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4
-//50 opcodes so far
-        "movq (%0, %1, 2), %%mm2                \n\t"
-        "movq %%mm2, %%mm3                      \n\t"
-        "punpcklbw %%mm7, %%mm2                 \n\t" // L5
-        "punpckhbw %%mm7, %%mm3                 \n\t" // H5
-        "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4 - L5
-        "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4 - H5
-        "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4 - 2L5
-        "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4 - 2H5
-
-        "movq (%%"FF_REG_a", %1, 4), %%mm6      \n\t"
-        "punpcklbw %%mm7, %%mm6                 \n\t" // L6
-        "psubw %%mm6, %%mm2                     \n\t" // L5 - L6
-        "movq (%%"FF_REG_a", %1, 4), %%mm6      \n\t"
-        "punpckhbw %%mm7, %%mm6                 \n\t" // H6
-        "psubw %%mm6, %%mm3                     \n\t" // H5 - H6
-
-        "paddw %%mm0, %%mm0                     \n\t" // 2L4
-        "paddw %%mm1, %%mm1                     \n\t" // 2H4
-        "psubw %%mm2, %%mm0                     \n\t" // 2L4 - L5 + L6
-        "psubw %%mm3, %%mm1                     \n\t" // 2H4 - H5 + H6
-
-        "psllw $2, %%mm2                        \n\t" // 4L5 - 4L6
-        "psllw $2, %%mm3                        \n\t" // 4H5 - 4H6
-        "psubw %%mm2, %%mm0                     \n\t" // 2L4 - 5L5 + 5L6
-        "psubw %%mm3, %%mm1                     \n\t" // 2H4 - 5H5 + 5H6
-
-        "movq (%0, %1, 4), %%mm2                \n\t"
-        "movq %%mm2, %%mm3                      \n\t"
-        "punpcklbw %%mm7, %%mm2                 \n\t" // L7
-        "punpckhbw %%mm7, %%mm3                 \n\t" // H7
-
-        "paddw %%mm2, %%mm2                     \n\t" // 2L7
-        "paddw %%mm3, %%mm3                     \n\t" // 2H7
-        "psubw %%mm2, %%mm0                     \n\t" // 2L4 - 5L5 + 5L6 - 2L7
-        "psubw %%mm3, %%mm1                     \n\t" // 2H4 - 5H5 + 5H6 - 2H7
-
-        "movq (%3), %%mm2                       \n\t" // 2L0 - 5L1 + 5L2 - 2L3
-        "movq 8(%3), %%mm3                      \n\t" // 2H0 - 5H1 + 5H2 - 2H3
-
-#if TEMPLATE_PP_MMXEXT
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "psubw %%mm0, %%mm6                     \n\t"
-        "pmaxsw %%mm6, %%mm0                    \n\t" // |2L4 - 5L5 + 5L6 - 2L7|
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "psubw %%mm1, %%mm6                     \n\t"
-        "pmaxsw %%mm6, %%mm1                    \n\t" // |2H4 - 5H5 + 5H6 - 2H7|
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "psubw %%mm2, %%mm6                     \n\t"
-        "pmaxsw %%mm6, %%mm2                    \n\t" // |2L0 - 5L1 + 5L2 - 2L3|
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "psubw %%mm3, %%mm6                     \n\t"
-        "pmaxsw %%mm6, %%mm3                    \n\t" // |2H0 - 5H1 + 5H2 - 2H3|
-#else
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "pcmpgtw %%mm0, %%mm6                   \n\t"
-        "pxor %%mm6, %%mm0                      \n\t"
-        "psubw %%mm6, %%mm0                     \n\t" // |2L4 - 5L5 + 5L6 - 2L7|
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "pcmpgtw %%mm1, %%mm6                   \n\t"
-        "pxor %%mm6, %%mm1                      \n\t"
-        "psubw %%mm6, %%mm1                     \n\t" // |2H4 - 5H5 + 5H6 - 2H7|
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "pcmpgtw %%mm2, %%mm6                   \n\t"
-        "pxor %%mm6, %%mm2                      \n\t"
-        "psubw %%mm6, %%mm2                     \n\t" // |2L0 - 5L1 + 5L2 - 2L3|
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "pcmpgtw %%mm3, %%mm6                   \n\t"
-        "pxor %%mm6, %%mm3                      \n\t"
-        "psubw %%mm6, %%mm3                     \n\t" // |2H0 - 5H1 + 5H2 - 2H3|
-#endif
-
-#if TEMPLATE_PP_MMXEXT
-        "pminsw %%mm2, %%mm0                    \n\t"
-        "pminsw %%mm3, %%mm1                    \n\t"
-#else
-        "movq %%mm0, %%mm6                      \n\t"
-        "psubusw %%mm2, %%mm6                   \n\t"
-        "psubw %%mm6, %%mm0                     \n\t"
-        "movq %%mm1, %%mm6                      \n\t"
-        "psubusw %%mm3, %%mm6                   \n\t"
-        "psubw %%mm6, %%mm1                     \n\t"
-#endif
-
-        "movd %2, %%mm2                         \n\t" // QP
-        "punpcklbw %%mm7, %%mm2                 \n\t"
-
-        "movq %%mm7, %%mm6                      \n\t" // 0
-        "pcmpgtw %%mm4, %%mm6                   \n\t" // sign(2L2 - 5L3 + 5L4 - 2L5)
-        "pxor %%mm6, %%mm4                      \n\t"
-        "psubw %%mm6, %%mm4                     \n\t" // |2L2 - 5L3 + 5L4 - 2L5|
-        "pcmpgtw %%mm5, %%mm7                   \n\t" // sign(2H2 - 5H3 + 5H4 - 2H5)
-        "pxor %%mm7, %%mm5                      \n\t"
-        "psubw %%mm7, %%mm5                     \n\t" // |2H2 - 5H3 + 5H4 - 2H5|
-// 100 opcodes
-        "psllw $3, %%mm2                        \n\t" // 8QP
-        "movq %%mm2, %%mm3                      \n\t" // 8QP
-        "pcmpgtw %%mm4, %%mm2                   \n\t"
-        "pcmpgtw %%mm5, %%mm3                   \n\t"
-        "pand %%mm2, %%mm4                      \n\t"
-        "pand %%mm3, %%mm5                      \n\t"
-
-
-        "psubusw %%mm0, %%mm4                   \n\t" // hd
-        "psubusw %%mm1, %%mm5                   \n\t" // ld
-
-
-        "movq "MANGLE(w05)", %%mm2              \n\t" // 5
-        "pmullw %%mm2, %%mm4                    \n\t"
-        "pmullw %%mm2, %%mm5                    \n\t"
-        "movq "MANGLE(w20)", %%mm2              \n\t" // 32
-        "paddw %%mm2, %%mm4                     \n\t"
-        "paddw %%mm2, %%mm5                     \n\t"
-        "psrlw $6, %%mm4                        \n\t"
-        "psrlw $6, %%mm5                        \n\t"
-
-        "movq 16(%3), %%mm0                     \n\t" // L3 - L4
-        "movq 24(%3), %%mm1                     \n\t" // H3 - H4
-
-        "pxor %%mm2, %%mm2                      \n\t"
-        "pxor %%mm3, %%mm3                      \n\t"
-
-        "pcmpgtw %%mm0, %%mm2                   \n\t" // sign (L3-L4)
-        "pcmpgtw %%mm1, %%mm3                   \n\t" // sign (H3-H4)
-        "pxor %%mm2, %%mm0                      \n\t"
-        "pxor %%mm3, %%mm1                      \n\t"
-        "psubw %%mm2, %%mm0                     \n\t" // |L3-L4|
-        "psubw %%mm3, %%mm1                     \n\t" // |H3-H4|
-        "psrlw $1, %%mm0                        \n\t" // |L3 - L4|/2
-        "psrlw $1, %%mm1                        \n\t" // |H3 - H4|/2
-
-        "pxor %%mm6, %%mm2                      \n\t"
-        "pxor %%mm7, %%mm3                      \n\t"
-        "pand %%mm2, %%mm4                      \n\t"
-        "pand %%mm3, %%mm5                      \n\t"
-
-#if TEMPLATE_PP_MMXEXT
-        "pminsw %%mm0, %%mm4                    \n\t"
-        "pminsw %%mm1, %%mm5                    \n\t"
-#else
-        "movq %%mm4, %%mm2                      \n\t"
-        "psubusw %%mm0, %%mm2                   \n\t"
-        "psubw %%mm2, %%mm4                     \n\t"
-        "movq %%mm5, %%mm2                      \n\t"
-        "psubusw %%mm1, %%mm2                   \n\t"
-        "psubw %%mm2, %%mm5                     \n\t"
-#endif
-        "pxor %%mm6, %%mm4                      \n\t"
-        "pxor %%mm7, %%mm5                      \n\t"
-        "psubw %%mm6, %%mm4                     \n\t"
-        "psubw %%mm7, %%mm5                     \n\t"
-        "packsswb %%mm5, %%mm4                  \n\t"
-        "movq (%0), %%mm0                       \n\t"
-        "paddb   %%mm4, %%mm0                   \n\t"
-        "movq %%mm0, (%0)                       \n\t"
-        "movq (%0, %1), %%mm0                   \n\t"
-        "psubb %%mm4, %%mm0                     \n\t"
-        "movq %%mm0, (%0, %1)                   \n\t"
-
-        : "+r" (src)
-        : "r" ((x86_reg)stride), "m" (c->pQPb), "r"(tmp)
-          NAMED_CONSTRAINTS_ADD(w05,w20)
-        : "%"FF_REG_a
-    );
-#else //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    const int l1= stride;
-    const int l2= stride + l1;
-    const int l3= stride + l2;
-    const int l4= stride + l3;
-    const int l5= stride + l4;
-    const int l6= stride + l5;
-    const int l7= stride + l6;
-    const int l8= stride + l7;
-//    const int l9= stride + l8;
-    int x;
-    src+= stride*3;
-    for(x=0; x<BLOCK_SIZE; x++){
-        const int middleEnergy= 5*(src[l5] - src[l4]) + 2*(src[l3] - src[l6]);
-        if(FFABS(middleEnergy) < 8*c->QP){
-            const int q=(src[l4] - src[l5])/2;
-            const int leftEnergy=  5*(src[l3] - src[l2]) + 2*(src[l1] - src[l4]);
-            const int rightEnergy= 5*(src[l7] - src[l6]) + 2*(src[l5] - src[l8]);
-
-            int d= FFABS(middleEnergy) - FFMIN( FFABS(leftEnergy), FFABS(rightEnergy) );
-            d= FFMAX(d, 0);
-
-            d= (5*d + 32) >> 6;
-            d*= FFSIGN(-middleEnergy);
-
-            if(q>0){
-                d = FFMAX(d, 0);
-                d = FFMIN(d, q);
-            }else{
-                d = FFMIN(d, 0);
-                d = FFMAX(d, q);
-            }
-
-            src[l4]-= d;
-            src[l5]+= d;
-        }
-        src++;
-    }
-#endif //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-}
-#endif //TEMPLATE_PP_ALTIVEC
-
-#if !TEMPLATE_PP_ALTIVEC
-static inline void RENAME(dering)(uint8_t src[], int stride, PPContext *c)
-{
-#if HAVE_7REGS && (TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW)
-    DECLARE_ALIGNED(8, uint64_t, tmp)[3];
-    __asm__ volatile(
-        "pxor %%mm6, %%mm6                      \n\t"
-        "pcmpeqb %%mm7, %%mm7                   \n\t"
-        "movq %2, %%mm0                         \n\t"
-        "punpcklbw %%mm6, %%mm0                 \n\t"
-        "psrlw $1, %%mm0                        \n\t"
-        "psubw %%mm7, %%mm0                     \n\t"
-        "packuswb %%mm0, %%mm0                  \n\t"
-        "movq %%mm0, %3                         \n\t"
-
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_d"\n\t"
-
-//        0        1        2        3        4        5        6        7        8        9
-//        %0        eax        eax+%1        eax+2%1        %0+4%1        edx        edx+%1        edx+2%1        %0+8%1        edx+4%1
-
-#undef REAL_FIND_MIN_MAX
-#undef FIND_MIN_MAX
-#if TEMPLATE_PP_MMXEXT
-#define REAL_FIND_MIN_MAX(addr)\
-        "movq " #addr ", %%mm0                  \n\t"\
-        "pminub %%mm0, %%mm7                    \n\t"\
-        "pmaxub %%mm0, %%mm6                    \n\t"
-#else
-#define REAL_FIND_MIN_MAX(addr)\
-        "movq " #addr ", %%mm0                  \n\t"\
-        "movq %%mm7, %%mm1                      \n\t"\
-        "psubusb %%mm0, %%mm6                   \n\t"\
-        "paddb %%mm0, %%mm6                     \n\t"\
-        "psubusb %%mm0, %%mm1                   \n\t"\
-        "psubb %%mm1, %%mm7                     \n\t"
-#endif
-#define FIND_MIN_MAX(addr)  REAL_FIND_MIN_MAX(addr)
-
-FIND_MIN_MAX((%%FF_REGa))
-FIND_MIN_MAX((%%FF_REGa, %1))
-FIND_MIN_MAX((%%FF_REGa, %1, 2))
-FIND_MIN_MAX((%0, %1, 4))
-FIND_MIN_MAX((%%FF_REGd))
-FIND_MIN_MAX((%%FF_REGd, %1))
-FIND_MIN_MAX((%%FF_REGd, %1, 2))
-FIND_MIN_MAX((%0, %1, 8))
-
-        "movq %%mm7, %%mm4                      \n\t"
-        "psrlq $8, %%mm7                        \n\t"
-#if TEMPLATE_PP_MMXEXT
-        "pminub %%mm4, %%mm7                    \n\t" // min of pixels
-        "pshufw $0xF9, %%mm7, %%mm4             \n\t"
-        "pminub %%mm4, %%mm7                    \n\t" // min of pixels
-        "pshufw $0xFE, %%mm7, %%mm4             \n\t"
-        "pminub %%mm4, %%mm7                    \n\t"
-#else
-        "movq %%mm7, %%mm1                      \n\t"
-        "psubusb %%mm4, %%mm1                   \n\t"
-        "psubb %%mm1, %%mm7                     \n\t"
-        "movq %%mm7, %%mm4                      \n\t"
-        "psrlq $16, %%mm7                       \n\t"
-        "movq %%mm7, %%mm1                      \n\t"
-        "psubusb %%mm4, %%mm1                   \n\t"
-        "psubb %%mm1, %%mm7                     \n\t"
-        "movq %%mm7, %%mm4                      \n\t"
-        "psrlq $32, %%mm7                       \n\t"
-        "movq %%mm7, %%mm1                      \n\t"
-        "psubusb %%mm4, %%mm1                   \n\t"
-        "psubb %%mm1, %%mm7                     \n\t"
-#endif
-
-
-        "movq %%mm6, %%mm4                      \n\t"
-        "psrlq $8, %%mm6                        \n\t"
-#if TEMPLATE_PP_MMXEXT
-        "pmaxub %%mm4, %%mm6                    \n\t" // max of pixels
-        "pshufw $0xF9, %%mm6, %%mm4             \n\t"
-        "pmaxub %%mm4, %%mm6                    \n\t"
-        "pshufw $0xFE, %%mm6, %%mm4             \n\t"
-        "pmaxub %%mm4, %%mm6                    \n\t"
-#else
-        "psubusb %%mm4, %%mm6                   \n\t"
-        "paddb %%mm4, %%mm6                     \n\t"
-        "movq %%mm6, %%mm4                      \n\t"
-        "psrlq $16, %%mm6                       \n\t"
-        "psubusb %%mm4, %%mm6                   \n\t"
-        "paddb %%mm4, %%mm6                     \n\t"
-        "movq %%mm6, %%mm4                      \n\t"
-        "psrlq $32, %%mm6                       \n\t"
-        "psubusb %%mm4, %%mm6                   \n\t"
-        "paddb %%mm4, %%mm6                     \n\t"
-#endif
-        "movq %%mm6, %%mm0                      \n\t" // max
-        "psubb %%mm7, %%mm6                     \n\t" // max - min
-        "push %%"FF_REG_a"                      \n\t"
-        "movd %%mm6, %%eax                      \n\t"
-        "cmpb "MANGLE(deringThreshold)", %%al   \n\t"
-        "pop %%"FF_REG_a"                       \n\t"
-        " jb 1f                                 \n\t"
-        PAVGB(%%mm0, %%mm7)                           // a=(max + min)/2
-        "punpcklbw %%mm7, %%mm7                 \n\t"
-        "punpcklbw %%mm7, %%mm7                 \n\t"
-        "punpcklbw %%mm7, %%mm7                 \n\t"
-        "movq %%mm7, (%4)                       \n\t"
-
-        "movq (%0), %%mm0                       \n\t" // L10
-        "movq %%mm0, %%mm1                      \n\t" // L10
-        "movq %%mm0, %%mm2                      \n\t" // L10
-        "psllq $8, %%mm1                        \n\t"
-        "psrlq $8, %%mm2                        \n\t"
-        "movd -4(%0), %%mm3                     \n\t"
-        "movd 8(%0), %%mm4                      \n\t"
-        "psrlq $24, %%mm3                       \n\t"
-        "psllq $56, %%mm4                       \n\t"
-        "por %%mm3, %%mm1                       \n\t" // L00
-        "por %%mm4, %%mm2                       \n\t" // L20
-        "movq %%mm1, %%mm3                      \n\t" // L00
-        PAVGB(%%mm2, %%mm1)                           // (L20 + L00)/2
-        PAVGB(%%mm0, %%mm1)                           // (L20 + L00 + 2L10)/4
-        "psubusb %%mm7, %%mm0                   \n\t"
-        "psubusb %%mm7, %%mm2                   \n\t"
-        "psubusb %%mm7, %%mm3                   \n\t"
-        "pcmpeqb "MANGLE(b00)", %%mm0           \n\t" // L10 > a ? 0 : -1
-        "pcmpeqb "MANGLE(b00)", %%mm2           \n\t" // L20 > a ? 0 : -1
-        "pcmpeqb "MANGLE(b00)", %%mm3           \n\t" // L00 > a ? 0 : -1
-        "paddb %%mm2, %%mm0                     \n\t"
-        "paddb %%mm3, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a"), %%mm2             \n\t" // L11
-        "movq %%mm2, %%mm3                      \n\t" // L11
-        "movq %%mm2, %%mm4                      \n\t" // L11
-        "psllq $8, %%mm3                        \n\t"
-        "psrlq $8, %%mm4                        \n\t"
-        "movd -4(%%"FF_REG_a"), %%mm5           \n\t"
-        "movd 8(%%"FF_REG_a"), %%mm6            \n\t"
-        "psrlq $24, %%mm5                       \n\t"
-        "psllq $56, %%mm6                       \n\t"
-        "por %%mm5, %%mm3                       \n\t" // L01
-        "por %%mm6, %%mm4                       \n\t" // L21
-        "movq %%mm3, %%mm5                      \n\t" // L01
-        PAVGB(%%mm4, %%mm3)                           // (L21 + L01)/2
-        PAVGB(%%mm2, %%mm3)                           // (L21 + L01 + 2L11)/4
-        "psubusb %%mm7, %%mm2                   \n\t"
-        "psubusb %%mm7, %%mm4                   \n\t"
-        "psubusb %%mm7, %%mm5                   \n\t"
-        "pcmpeqb "MANGLE(b00)", %%mm2           \n\t" // L11 > a ? 0 : -1
-        "pcmpeqb "MANGLE(b00)", %%mm4           \n\t" // L21 > a ? 0 : -1
-        "pcmpeqb "MANGLE(b00)", %%mm5           \n\t" // L01 > a ? 0 : -1
-        "paddb %%mm4, %%mm2                     \n\t"
-        "paddb %%mm5, %%mm2                     \n\t"
-// 0, 2, 3, 1
-#define REAL_DERING_CORE(dst,src,ppsx,psx,sx,pplx,plx,lx,t0,t1) \
-        "movq " #src ", " #sx "                 \n\t" /* src[0] */\
-        "movq " #sx ", " #lx "                  \n\t" /* src[0] */\
-        "movq " #sx ", " #t0 "                  \n\t" /* src[0] */\
-        "psllq $8, " #lx "                      \n\t"\
-        "psrlq $8, " #t0 "                      \n\t"\
-        "movd -4" #src ", " #t1 "               \n\t"\
-        "psrlq $24, " #t1 "                     \n\t"\
-        "por " #t1 ", " #lx "                   \n\t" /* src[-1] */\
-        "movd 8" #src ", " #t1 "                \n\t"\
-        "psllq $56, " #t1 "                     \n\t"\
-        "por " #t1 ", " #t0 "                   \n\t" /* src[+1] */\
-        "movq " #lx ", " #t1 "                  \n\t" /* src[-1] */\
-        PAVGB(t0, lx)                                 /* (src[-1] + src[+1])/2 */\
-        PAVGB(sx, lx)                                 /* (src[-1] + 2src[0] + src[+1])/4 */\
-        PAVGB(lx, pplx)                                     \
-        "movq " #lx ", 8(%4)                    \n\t"\
-        "movq (%4), " #lx "                     \n\t"\
-        "psubusb " #lx ", " #t1 "               \n\t"\
-        "psubusb " #lx ", " #t0 "               \n\t"\
-        "psubusb " #lx ", " #sx "               \n\t"\
-        "movq "MANGLE(b00)", " #lx "            \n\t"\
-        "pcmpeqb " #lx ", " #t1 "               \n\t" /* src[-1] > a ? 0 : -1*/\
-        "pcmpeqb " #lx ", " #t0 "               \n\t" /* src[+1] > a ? 0 : -1*/\
-        "pcmpeqb " #lx ", " #sx "               \n\t" /* src[0]  > a ? 0 : -1*/\
-        "paddb " #t1 ", " #t0 "                 \n\t"\
-        "paddb " #t0 ", " #sx "                 \n\t"\
-\
-        PAVGB(plx, pplx)                              /* filtered */\
-        "movq " #dst ", " #t0 "                 \n\t" /* dst */\
-        "movq " #t0 ", " #t1 "                  \n\t" /* dst */\
-        "psubusb %3, " #t0 "                    \n\t"\
-        "paddusb %3, " #t1 "                    \n\t"\
-        PMAXUB(t0, pplx)\
-        PMINUB(t1, pplx, t0)\
-        "paddb " #sx ", " #ppsx "               \n\t"\
-        "paddb " #psx ", " #ppsx "              \n\t"\
-        "#paddb "MANGLE(b02)", " #ppsx "        \n\t"\
-        "pand "MANGLE(b08)", " #ppsx "          \n\t"\
-        "pcmpeqb " #lx ", " #ppsx "             \n\t"\
-        "pand " #ppsx ", " #pplx "              \n\t"\
-        "pandn " #dst ", " #ppsx "              \n\t"\
-        "por " #pplx ", " #ppsx "               \n\t"\
-        "movq " #ppsx ", " #dst "               \n\t"\
-        "movq 8(%4), " #lx "                    \n\t"
-
-#define DERING_CORE(dst,src,ppsx,psx,sx,pplx,plx,lx,t0,t1) \
-   REAL_DERING_CORE(dst,src,ppsx,psx,sx,pplx,plx,lx,t0,t1)
-/*
-0000000
-1111111
-
-1111110
-1111101
-1111100
-1111011
-1111010
-1111001
-
-1111000
-1110111
-
-*/
-//DERING_CORE(dst             ,src               ,ppsx ,psx  ,sx   ,pplx ,plx  ,lx   ,t0   ,t1)
-DERING_CORE((%%FF_REGa)       ,(%%FF_REGa, %1)   ,%%mm0,%%mm2,%%mm4,%%mm1,%%mm3,%%mm5,%%mm6,%%mm7)
-DERING_CORE((%%FF_REGa, %1)   ,(%%FF_REGa, %1, 2),%%mm2,%%mm4,%%mm0,%%mm3,%%mm5,%%mm1,%%mm6,%%mm7)
-DERING_CORE((%%FF_REGa, %1, 2),(%0, %1, 4)       ,%%mm4,%%mm0,%%mm2,%%mm5,%%mm1,%%mm3,%%mm6,%%mm7)
-DERING_CORE((%0, %1, 4)       ,(%%FF_REGd)       ,%%mm0,%%mm2,%%mm4,%%mm1,%%mm3,%%mm5,%%mm6,%%mm7)
-DERING_CORE((%%FF_REGd)       ,(%%FF_REGd, %1)   ,%%mm2,%%mm4,%%mm0,%%mm3,%%mm5,%%mm1,%%mm6,%%mm7)
-DERING_CORE((%%FF_REGd, %1)   ,(%%FF_REGd, %1, 2),%%mm4,%%mm0,%%mm2,%%mm5,%%mm1,%%mm3,%%mm6,%%mm7)
-DERING_CORE((%%FF_REGd, %1, 2),(%0, %1, 8)       ,%%mm0,%%mm2,%%mm4,%%mm1,%%mm3,%%mm5,%%mm6,%%mm7)
-DERING_CORE((%0, %1, 8)       ,(%%FF_REGd, %1, 4),%%mm2,%%mm4,%%mm0,%%mm3,%%mm5,%%mm1,%%mm6,%%mm7)
-
-        "1:                        \n\t"
-        : : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb), "m"(c->pQPb2), "q"(tmp)
-          NAMED_CONSTRAINTS_ADD(deringThreshold,b00,b02,b08)
-        : "%"FF_REG_a, "%"FF_REG_d
-    );
-#else // HAVE_7REGS && (TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW)
-    int y;
-    int min=255;
-    int max=0;
-    int avg;
-    uint8_t *p;
-    int s[10];
-    const int QP2= c->QP/2 + 1;
-
-    src --;
-    for(y=1; y<9; y++){
-        int x;
-        p= src + stride*y;
-        for(x=1; x<9; x++){
-            p++;
-            if(*p > max) max= *p;
-            if(*p < min) min= *p;
-        }
-    }
-    avg= (min + max + 1)>>1;
-
-    if(max - min <deringThreshold) return;
-
-    for(y=0; y<10; y++){
-        int t = 0;
-
-        if(src[stride*y + 0] > avg) t+= 1;
-        if(src[stride*y + 1] > avg) t+= 2;
-        if(src[stride*y + 2] > avg) t+= 4;
-        if(src[stride*y + 3] > avg) t+= 8;
-        if(src[stride*y + 4] > avg) t+= 16;
-        if(src[stride*y + 5] > avg) t+= 32;
-        if(src[stride*y + 6] > avg) t+= 64;
-        if(src[stride*y + 7] > avg) t+= 128;
-        if(src[stride*y + 8] > avg) t+= 256;
-        if(src[stride*y + 9] > avg) t+= 512;
-
-        t |= (~t)<<16;
-        t &= (t<<1) & (t>>1);
-        s[y] = t;
-    }
-
-    for(y=1; y<9; y++){
-        int t = s[y-1] & s[y] & s[y+1];
-        t|= t>>16;
-        s[y-1]= t;
-    }
-
-    for(y=1; y<9; y++){
-        int x;
-        int t = s[y-1];
-
-        p= src + stride*y;
-        for(x=1; x<9; x++){
-            p++;
-            if(t & (1<<x)){
-                int f= (*(p-stride-1)) + 2*(*(p-stride)) + (*(p-stride+1))
-                      +2*(*(p     -1)) + 4*(*p         ) + 2*(*(p     +1))
-                      +(*(p+stride-1)) + 2*(*(p+stride)) + (*(p+stride+1));
-                f= (f + 8)>>4;
-
-#ifdef DEBUG_DERING_THRESHOLD
-                    __asm__ volatile("emms\n\t":);
-                    {
-                    static uint64_t numPixels=0;
-                    if(x!=1 && x!=8 && y!=1 && y!=8) numPixels++;
-//                    if((max-min)<20 || (max-min)*QP<200)
-//                    if((max-min)*QP < 500)
-//                    if(max-min<QP/2)
-                    if(max-min < 20){
-                        static int numSkipped=0;
-                        static int errorSum=0;
-                        static int worstQP=0;
-                        static int worstRange=0;
-                        static int worstDiff=0;
-                        int diff= (f - *p);
-                        int absDiff= FFABS(diff);
-                        int error= diff*diff;
-
-                        if(x==1 || x==8 || y==1 || y==8) continue;
-
-                        numSkipped++;
-                        if(absDiff > worstDiff){
-                            worstDiff= absDiff;
-                            worstQP= QP;
-                            worstRange= max-min;
-                        }
-                        errorSum+= error;
-
-                        if(1024LL*1024LL*1024LL % numSkipped == 0){
-                            av_log(c, AV_LOG_INFO, "sum:%1.3f, skip:%d, wQP:%d, "
-                                   "wRange:%d, wDiff:%d, relSkip:%1.3f\n",
-                                   (float)errorSum/numSkipped, numSkipped, worstQP, worstRange,
-                                   worstDiff, (float)numSkipped/numPixels);
-                        }
-                    }
-                    }
-#endif
-                    if     (*p + QP2 < f) *p= *p + QP2;
-                    else if(*p - QP2 > f) *p= *p - QP2;
-                    else *p=f;
-            }
-        }
-    }
-#ifdef DEBUG_DERING_THRESHOLD
-    if(max-min < 20){
-        for(y=1; y<9; y++){
-            int x;
-            int t = 0;
-            p= src + stride*y;
-            for(x=1; x<9; x++){
-                p++;
-                *p = FFMIN(*p + 20, 255);
-            }
-        }
-//        src[0] = src[7]=src[stride*7]=src[stride*7 + 7]=255;
-    }
-#endif
-#endif //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-}
-#endif //TEMPLATE_PP_ALTIVEC
-
-/**
- * Deinterlace the given block by linearly interpolating every second line.
- * will be called for every 8x8 block and can read & write from line 4-15
- * lines 0-3 have been passed through the deblock / dering filters already, but can be read, too.
- * lines 4-12 will be read into the deblocking filter and should be deinterlaced
- */
-static inline void RENAME(deInterlaceInterpolateLinear)(uint8_t src[], int stride)
-{
-#if TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    src+= 4*stride;
-    __asm__ volatile(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_c"\n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  ecx     ecx+%1  ecx+2%1 %0+8%1  ecx+4%1
-
-        "movq (%0), %%mm0                       \n\t"
-        "movq (%%"FF_REG_a", %1), %%mm1         \n\t"
-        PAVGB(%%mm1, %%mm0)
-        "movq %%mm0, (%%"FF_REG_a")             \n\t"
-        "movq (%0, %1, 4), %%mm0                \n\t"
-        PAVGB(%%mm0, %%mm1)
-        "movq %%mm1, (%%"FF_REG_a", %1, 2)      \n\t"
-        "movq (%%"FF_REG_c", %1), %%mm1         \n\t"
-        PAVGB(%%mm1, %%mm0)
-        "movq %%mm0, (%%"FF_REG_c")             \n\t"
-        "movq (%0, %1, 8), %%mm0                \n\t"
-        PAVGB(%%mm0, %%mm1)
-        "movq %%mm1, (%%"FF_REG_c", %1, 2)      \n\t"
-
-        : : "r" (src), "r" ((x86_reg)stride)
-        : "%"FF_REG_a, "%"FF_REG_c
-    );
-#else
-    int a, b, x;
-    src+= 4*stride;
-
-    for(x=0; x<2; x++){
-        a= *(uint32_t*)&src[stride*0];
-        b= *(uint32_t*)&src[stride*2];
-        *(uint32_t*)&src[stride*1]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);
-        a= *(uint32_t*)&src[stride*4];
-        *(uint32_t*)&src[stride*3]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);
-        b= *(uint32_t*)&src[stride*6];
-        *(uint32_t*)&src[stride*5]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);
-        a= *(uint32_t*)&src[stride*8];
-        *(uint32_t*)&src[stride*7]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);
-        src += 4;
-    }
-#endif
-}
-
-/**
- * Deinterlace the given block by cubic interpolating every second line.
- * will be called for every 8x8 block and can read & write from line 4-15
- * lines 0-3 have been passed through the deblock / dering filters already, but can be read, too.
- * lines 4-12 will be read into the deblocking filter and should be deinterlaced
- * this filter will read lines 3-15 and write 7-13
- */
-static inline void RENAME(deInterlaceInterpolateCubic)(uint8_t src[], int stride)
-{
-#if TEMPLATE_PP_SSE2 || TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    src+= stride*3;
-    __asm__ volatile(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_d"\n\t"
-        "lea (%%"FF_REG_d", %1, 4), %%"FF_REG_c"\n\t"
-        "add %1, %%"FF_REG_c"                   \n\t"
-#if TEMPLATE_PP_SSE2
-        "pxor %%xmm7, %%xmm7                    \n\t"
-#define REAL_DEINT_CUBIC(a,b,c,d,e)\
-        "movq " #a ", %%xmm0                    \n\t"\
-        "movq " #b ", %%xmm1                    \n\t"\
-        "movq " #d ", %%xmm2                    \n\t"\
-        "movq " #e ", %%xmm3                    \n\t"\
-        "pavgb %%xmm2, %%xmm1                   \n\t"\
-        "pavgb %%xmm3, %%xmm0                   \n\t"\
-        "punpcklbw %%xmm7, %%xmm0               \n\t"\
-        "punpcklbw %%xmm7, %%xmm1               \n\t"\
-        "psubw %%xmm1, %%xmm0                   \n\t"\
-        "psraw $3, %%xmm0                       \n\t"\
-        "psubw %%xmm0, %%xmm1                   \n\t"\
-        "packuswb %%xmm1, %%xmm1                \n\t"\
-        "movlps %%xmm1, " #c "                  \n\t"
-#else //TEMPLATE_PP_SSE2
-        "pxor %%mm7, %%mm7                      \n\t"
-//      0       1       2       3       4       5       6       7       8       9       10
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1 %0+8%1  edx+4%1 ecx
-
-#define REAL_DEINT_CUBIC(a,b,c,d,e)\
-        "movq " #a ", %%mm0                     \n\t"\
-        "movq " #b ", %%mm1                     \n\t"\
-        "movq " #d ", %%mm2                     \n\t"\
-        "movq " #e ", %%mm3                     \n\t"\
-        PAVGB(%%mm2, %%mm1)                             /* (b+d) /2 */\
-        PAVGB(%%mm3, %%mm0)                             /* (a+e) /2 */\
-        "movq %%mm0, %%mm2                      \n\t"\
-        "punpcklbw %%mm7, %%mm0                 \n\t"\
-        "punpckhbw %%mm7, %%mm2                 \n\t"\
-        "movq %%mm1, %%mm3                      \n\t"\
-        "punpcklbw %%mm7, %%mm1                 \n\t"\
-        "punpckhbw %%mm7, %%mm3                 \n\t"\
-        "psubw %%mm1, %%mm0                     \n\t"   /* L(a+e - (b+d))/2 */\
-        "psubw %%mm3, %%mm2                     \n\t"   /* H(a+e - (b+d))/2 */\
-        "psraw $3, %%mm0                        \n\t"   /* L(a+e - (b+d))/16 */\
-        "psraw $3, %%mm2                        \n\t"   /* H(a+e - (b+d))/16 */\
-        "psubw %%mm0, %%mm1                     \n\t"   /* L(9b + 9d - a - e)/16 */\
-        "psubw %%mm2, %%mm3                     \n\t"   /* H(9b + 9d - a - e)/16 */\
-        "packuswb %%mm3, %%mm1                  \n\t"\
-        "movq %%mm1, " #c "                     \n\t"
-#endif //TEMPLATE_PP_SSE2
-#define DEINT_CUBIC(a,b,c,d,e)  REAL_DEINT_CUBIC(a,b,c,d,e)
-
-DEINT_CUBIC((%0)           , (%%FF_REGa, %1), (%%FF_REGa, %1, 2), (%0, %1, 4)    , (%%FF_REGd, %1))
-DEINT_CUBIC((%%FF_REGa, %1), (%0, %1, 4)    , (%%FF_REGd)       , (%%FF_REGd, %1), (%0, %1, 8))
-DEINT_CUBIC((%0, %1, 4)    , (%%FF_REGd, %1), (%%FF_REGd, %1, 2), (%0, %1, 8)    , (%%FF_REGc))
-DEINT_CUBIC((%%FF_REGd, %1), (%0, %1, 8)    , (%%FF_REGd, %1, 4), (%%FF_REGc)    , (%%FF_REGc, %1, 2))
-
-        : : "r" (src), "r" ((x86_reg)stride)
-        :
-#if TEMPLATE_PP_SSE2
-        XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm7",)
-#endif
-        "%"FF_REG_a, "%"FF_REG_d, "%"FF_REG_c
-    );
-#undef REAL_DEINT_CUBIC
-#else //TEMPLATE_PP_SSE2 || TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    int x;
-    src+= stride*3;
-    for(x=0; x<8; x++){
-        src[stride*3] = av_clip_uint8((-src[0]        + 9*src[stride*2] + 9*src[stride*4] - src[stride*6])>>4);
-        src[stride*5] = av_clip_uint8((-src[stride*2] + 9*src[stride*4] + 9*src[stride*6] - src[stride*8])>>4);
-        src[stride*7] = av_clip_uint8((-src[stride*4] + 9*src[stride*6] + 9*src[stride*8] - src[stride*10])>>4);
-        src[stride*9] = av_clip_uint8((-src[stride*6] + 9*src[stride*8] + 9*src[stride*10] - src[stride*12])>>4);
-        src++;
-    }
-#endif //TEMPLATE_PP_SSE2 || TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-}
-
-/**
- * Deinterlace the given block by filtering every second line with a (-1 4 2 4 -1) filter.
- * will be called for every 8x8 block and can read & write from line 4-15
- * lines 0-3 have been passed through the deblock / dering filters already, but can be read, too.
- * lines 4-12 will be read into the deblocking filter and should be deinterlaced
- * this filter will read lines 4-13 and write 5-11
- */
-static inline void RENAME(deInterlaceFF)(uint8_t src[], int stride, uint8_t *tmp)
-{
-#if TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    src+= stride*4;
-    __asm__ volatile(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_d"\n\t"
-        "pxor %%mm7, %%mm7                      \n\t"
-        "movq (%2), %%mm0                       \n\t"
-//      0       1       2       3       4       5       6       7       8       9       10
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1 %0+8%1  edx+4%1 ecx
-
-#define REAL_DEINT_FF(a,b,c,d)\
-        "movq " #a ", %%mm1                     \n\t"\
-        "movq " #b ", %%mm2                     \n\t"\
-        "movq " #c ", %%mm3                     \n\t"\
-        "movq " #d ", %%mm4                     \n\t"\
-        PAVGB(%%mm3, %%mm1)                          \
-        PAVGB(%%mm4, %%mm0)                          \
-        "movq %%mm0, %%mm3                      \n\t"\
-        "punpcklbw %%mm7, %%mm0                 \n\t"\
-        "punpckhbw %%mm7, %%mm3                 \n\t"\
-        "movq %%mm1, %%mm4                      \n\t"\
-        "punpcklbw %%mm7, %%mm1                 \n\t"\
-        "punpckhbw %%mm7, %%mm4                 \n\t"\
-        "psllw $2, %%mm1                        \n\t"\
-        "psllw $2, %%mm4                        \n\t"\
-        "psubw %%mm0, %%mm1                     \n\t"\
-        "psubw %%mm3, %%mm4                     \n\t"\
-        "movq %%mm2, %%mm5                      \n\t"\
-        "movq %%mm2, %%mm0                      \n\t"\
-        "punpcklbw %%mm7, %%mm2                 \n\t"\
-        "punpckhbw %%mm7, %%mm5                 \n\t"\
-        "paddw %%mm2, %%mm1                     \n\t"\
-        "paddw %%mm5, %%mm4                     \n\t"\
-        "psraw $2, %%mm1                        \n\t"\
-        "psraw $2, %%mm4                        \n\t"\
-        "packuswb %%mm4, %%mm1                  \n\t"\
-        "movq %%mm1, " #b "                     \n\t"\
-
-#define DEINT_FF(a,b,c,d)  REAL_DEINT_FF(a,b,c,d)
-
-DEINT_FF((%0)           , (%%FF_REGa)       , (%%FF_REGa, %1), (%%FF_REGa, %1, 2))
-DEINT_FF((%%FF_REGa, %1), (%%FF_REGa, %1, 2), (%0, %1, 4)    , (%%FF_REGd)       )
-DEINT_FF((%0, %1, 4)    , (%%FF_REGd)       , (%%FF_REGd, %1), (%%FF_REGd, %1, 2))
-DEINT_FF((%%FF_REGd, %1), (%%FF_REGd, %1, 2), (%0, %1, 8)    , (%%FF_REGd, %1, 4))
-
-        "movq %%mm0, (%2)                       \n\t"
-        : : "r" (src), "r" ((x86_reg)stride), "r"(tmp)
-        : "%"FF_REG_a, "%"FF_REG_d
-    );
-#else //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    int x;
-    src+= stride*4;
-    for(x=0; x<8; x++){
-        int t1= tmp[x];
-        int t2= src[stride*1];
-
-        src[stride*1]= av_clip_uint8((-t1 + 4*src[stride*0] + 2*t2 + 4*src[stride*2] - src[stride*3] + 4)>>3);
-        t1= src[stride*4];
-        src[stride*3]= av_clip_uint8((-t2 + 4*src[stride*2] + 2*t1 + 4*src[stride*4] - src[stride*5] + 4)>>3);
-        t2= src[stride*6];
-        src[stride*5]= av_clip_uint8((-t1 + 4*src[stride*4] + 2*t2 + 4*src[stride*6] - src[stride*7] + 4)>>3);
-        t1= src[stride*8];
-        src[stride*7]= av_clip_uint8((-t2 + 4*src[stride*6] + 2*t1 + 4*src[stride*8] - src[stride*9] + 4)>>3);
-        tmp[x]= t1;
-
-        src++;
-    }
-#endif //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-}
-
-/**
- * Deinterlace the given block by filtering every line with a (-1 2 6 2 -1) filter.
- * will be called for every 8x8 block and can read & write from line 4-15
- * lines 0-3 have been passed through the deblock / dering filters already, but can be read, too.
- * lines 4-12 will be read into the deblocking filter and should be deinterlaced
- * this filter will read lines 4-13 and write 4-11
- */
-static inline void RENAME(deInterlaceL5)(uint8_t src[], int stride, uint8_t *tmp, uint8_t *tmp2)
-{
-#if (TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW) && HAVE_6REGS
-    src+= stride*4;
-    __asm__ volatile(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_d"\n\t"
-        "pxor %%mm7, %%mm7                      \n\t"
-        "movq (%2), %%mm0                       \n\t"
-        "movq (%3), %%mm1                       \n\t"
-//      0       1       2       3       4       5       6       7       8       9       10
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1 %0+8%1  edx+4%1 ecx
-
-#define REAL_DEINT_L5(t1,t2,a,b,c)\
-        "movq " #a ", %%mm2                     \n\t"\
-        "movq " #b ", %%mm3                     \n\t"\
-        "movq " #c ", %%mm4                     \n\t"\
-        PAVGB(t2, %%mm3)                             \
-        PAVGB(t1, %%mm4)                             \
-        "movq %%mm2, %%mm5                      \n\t"\
-        "movq %%mm2, " #t1 "                    \n\t"\
-        "punpcklbw %%mm7, %%mm2                 \n\t"\
-        "punpckhbw %%mm7, %%mm5                 \n\t"\
-        "movq %%mm2, %%mm6                      \n\t"\
-        "paddw %%mm2, %%mm2                     \n\t"\
-        "paddw %%mm6, %%mm2                     \n\t"\
-        "movq %%mm5, %%mm6                      \n\t"\
-        "paddw %%mm5, %%mm5                     \n\t"\
-        "paddw %%mm6, %%mm5                     \n\t"\
-        "movq %%mm3, %%mm6                      \n\t"\
-        "punpcklbw %%mm7, %%mm3                 \n\t"\
-        "punpckhbw %%mm7, %%mm6                 \n\t"\
-        "paddw %%mm3, %%mm3                     \n\t"\
-        "paddw %%mm6, %%mm6                     \n\t"\
-        "paddw %%mm3, %%mm2                     \n\t"\
-        "paddw %%mm6, %%mm5                     \n\t"\
-        "movq %%mm4, %%mm6                      \n\t"\
-        "punpcklbw %%mm7, %%mm4                 \n\t"\
-        "punpckhbw %%mm7, %%mm6                 \n\t"\
-        "psubw %%mm4, %%mm2                     \n\t"\
-        "psubw %%mm6, %%mm5                     \n\t"\
-        "psraw $2, %%mm2                        \n\t"\
-        "psraw $2, %%mm5                        \n\t"\
-        "packuswb %%mm5, %%mm2                  \n\t"\
-        "movq %%mm2, " #a "                     \n\t"\
-
-#define DEINT_L5(t1,t2,a,b,c)  REAL_DEINT_L5(t1,t2,a,b,c)
-
-DEINT_L5(%%mm0, %%mm1, (%0)              , (%%FF_REGa)       , (%%FF_REGa, %1)   )
-DEINT_L5(%%mm1, %%mm0, (%%FF_REGa)       , (%%FF_REGa, %1)   , (%%FF_REGa, %1, 2))
-DEINT_L5(%%mm0, %%mm1, (%%FF_REGa, %1)   , (%%FF_REGa, %1, 2), (%0, %1, 4)   )
-DEINT_L5(%%mm1, %%mm0, (%%FF_REGa, %1, 2), (%0, %1, 4)       , (%%FF_REGd)       )
-DEINT_L5(%%mm0, %%mm1, (%0, %1, 4)       , (%%FF_REGd)       , (%%FF_REGd, %1)   )
-DEINT_L5(%%mm1, %%mm0, (%%FF_REGd)       , (%%FF_REGd, %1)   , (%%FF_REGd, %1, 2))
-DEINT_L5(%%mm0, %%mm1, (%%FF_REGd, %1)   , (%%FF_REGd, %1, 2), (%0, %1, 8)   )
-DEINT_L5(%%mm1, %%mm0, (%%FF_REGd, %1, 2), (%0, %1, 8)       , (%%FF_REGd, %1, 4))
-
-        "movq %%mm0, (%2)                       \n\t"
-        "movq %%mm1, (%3)                       \n\t"
-        : : "r" (src), "r" ((x86_reg)stride), "r"(tmp), "r"(tmp2)
-        : "%"FF_REG_a, "%"FF_REG_d
-    );
-#else //(TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW) && HAVE_6REGS
-    int x;
-    src+= stride*4;
-    for(x=0; x<8; x++){
-        int t1= tmp[x];
-        int t2= tmp2[x];
-        int t3= src[0];
-
-        src[stride*0]= av_clip_uint8((-(t1 + src[stride*2]) + 2*(t2 + src[stride*1]) + 6*t3 + 4)>>3);
-        t1= src[stride*1];
-        src[stride*1]= av_clip_uint8((-(t2 + src[stride*3]) + 2*(t3 + src[stride*2]) + 6*t1 + 4)>>3);
-        t2= src[stride*2];
-        src[stride*2]= av_clip_uint8((-(t3 + src[stride*4]) + 2*(t1 + src[stride*3]) + 6*t2 + 4)>>3);
-        t3= src[stride*3];
-        src[stride*3]= av_clip_uint8((-(t1 + src[stride*5]) + 2*(t2 + src[stride*4]) + 6*t3 + 4)>>3);
-        t1= src[stride*4];
-        src[stride*4]= av_clip_uint8((-(t2 + src[stride*6]) + 2*(t3 + src[stride*5]) + 6*t1 + 4)>>3);
-        t2= src[stride*5];
-        src[stride*5]= av_clip_uint8((-(t3 + src[stride*7]) + 2*(t1 + src[stride*6]) + 6*t2 + 4)>>3);
-        t3= src[stride*6];
-        src[stride*6]= av_clip_uint8((-(t1 + src[stride*8]) + 2*(t2 + src[stride*7]) + 6*t3 + 4)>>3);
-        t1= src[stride*7];
-        src[stride*7]= av_clip_uint8((-(t2 + src[stride*9]) + 2*(t3 + src[stride*8]) + 6*t1 + 4)>>3);
-
-        tmp[x]= t3;
-        tmp2[x]= t1;
-
-        src++;
-    }
-#endif //(TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW) && HAVE_6REGS
-}
-
-/**
- * Deinterlace the given block by filtering all lines with a (1 2 1) filter.
- * will be called for every 8x8 block and can read & write from line 4-15
- * lines 0-3 have been passed through the deblock / dering filters already, but can be read, too.
- * lines 4-12 will be read into the deblocking filter and should be deinterlaced
- * this filter will read lines 4-13 and write 4-11
- */
-static inline void RENAME(deInterlaceBlendLinear)(uint8_t src[], int stride, uint8_t *tmp)
-{
-#if TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    src+= 4*stride;
-    __asm__ volatile(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_d"\n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1 %0+8%1  edx+4%1
-
-        "movq (%2), %%mm0                       \n\t" // L0
-        "movq (%%"FF_REG_a"), %%mm1             \n\t" // L2
-        PAVGB(%%mm1, %%mm0)                           // L0+L2
-        "movq (%0), %%mm2                       \n\t" // L1
-        PAVGB(%%mm2, %%mm0)
-        "movq %%mm0, (%0)                       \n\t"
-        "movq (%%"FF_REG_a", %1), %%mm0         \n\t" // L3
-        PAVGB(%%mm0, %%mm2)                           // L1+L3
-        PAVGB(%%mm1, %%mm2)                           // 2L2 + L1 + L3
-        "movq %%mm2, (%%"FF_REG_a")             \n\t"
-        "movq (%%"FF_REG_a", %1, 2), %%mm2      \n\t" // L4
-        PAVGB(%%mm2, %%mm1)                           // L2+L4
-        PAVGB(%%mm0, %%mm1)                           // 2L3 + L2 + L4
-        "movq %%mm1, (%%"FF_REG_a", %1)         \n\t"
-        "movq (%0, %1, 4), %%mm1                \n\t" // L5
-        PAVGB(%%mm1, %%mm0)                           // L3+L5
-        PAVGB(%%mm2, %%mm0)                           // 2L4 + L3 + L5
-        "movq %%mm0, (%%"FF_REG_a", %1, 2)      \n\t"
-        "movq (%%"FF_REG_d"), %%mm0             \n\t" // L6
-        PAVGB(%%mm0, %%mm2)                           // L4+L6
-        PAVGB(%%mm1, %%mm2)                           // 2L5 + L4 + L6
-        "movq %%mm2, (%0, %1, 4)                \n\t"
-        "movq (%%"FF_REG_d", %1), %%mm2         \n\t" // L7
-        PAVGB(%%mm2, %%mm1)                           // L5+L7
-        PAVGB(%%mm0, %%mm1)                           // 2L6 + L5 + L7
-        "movq %%mm1, (%%"FF_REG_d")             \n\t"
-        "movq (%%"FF_REG_d", %1, 2), %%mm1      \n\t" // L8
-        PAVGB(%%mm1, %%mm0)                           // L6+L8
-        PAVGB(%%mm2, %%mm0)                           // 2L7 + L6 + L8
-        "movq %%mm0, (%%"FF_REG_d", %1)         \n\t"
-        "movq (%0, %1, 8), %%mm0                \n\t" // L9
-        PAVGB(%%mm0, %%mm2)                           // L7+L9
-        PAVGB(%%mm1, %%mm2)                           // 2L8 + L7 + L9
-        "movq %%mm2, (%%"FF_REG_d", %1, 2)      \n\t"
-        "movq %%mm1, (%2)                       \n\t"
-
-        : : "r" (src), "r" ((x86_reg)stride), "r" (tmp)
-        : "%"FF_REG_a, "%"FF_REG_d
-    );
-#else //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-    int a, b, c, x;
-    src+= 4*stride;
-
-    for(x=0; x<2; x++){
-        a= *(uint32_t*)&tmp[stride*0];
-        b= *(uint32_t*)&src[stride*0];
-        c= *(uint32_t*)&src[stride*1];
-        a= (a&c) + (((a^c)&0xFEFEFEFEUL)>>1);
-        *(uint32_t*)&src[stride*0]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);
-
-        a= *(uint32_t*)&src[stride*2];
-        b= (a&b) + (((a^b)&0xFEFEFEFEUL)>>1);
-        *(uint32_t*)&src[stride*1]= (c|b) - (((c^b)&0xFEFEFEFEUL)>>1);
-
-        b= *(uint32_t*)&src[stride*3];
-        c= (b&c) + (((b^c)&0xFEFEFEFEUL)>>1);
-        *(uint32_t*)&src[stride*2]= (c|a) - (((c^a)&0xFEFEFEFEUL)>>1);
-
-        c= *(uint32_t*)&src[stride*4];
-        a= (a&c) + (((a^c)&0xFEFEFEFEUL)>>1);
-        *(uint32_t*)&src[stride*3]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);
-
-        a= *(uint32_t*)&src[stride*5];
-        b= (a&b) + (((a^b)&0xFEFEFEFEUL)>>1);
-        *(uint32_t*)&src[stride*4]= (c|b) - (((c^b)&0xFEFEFEFEUL)>>1);
-
-        b= *(uint32_t*)&src[stride*6];
-        c= (b&c) + (((b^c)&0xFEFEFEFEUL)>>1);
-        *(uint32_t*)&src[stride*5]= (c|a) - (((c^a)&0xFEFEFEFEUL)>>1);
-
-        c= *(uint32_t*)&src[stride*7];
-        a= (a&c) + (((a^c)&0xFEFEFEFEUL)>>1);
-        *(uint32_t*)&src[stride*6]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);
-
-        a= *(uint32_t*)&src[stride*8];
-        b= (a&b) + (((a^b)&0xFEFEFEFEUL)>>1);
-        *(uint32_t*)&src[stride*7]= (c|b) - (((c^b)&0xFEFEFEFEUL)>>1);
-
-        *(uint32_t*)&tmp[stride*0]= c;
-        src += 4;
-        tmp += 4;
-    }
-#endif //TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW
-}
-
-/**
- * Deinterlace the given block by applying a median filter to every second line.
- * will be called for every 8x8 block and can read & write from line 4-15,
- * lines 0-3 have been passed through the deblock / dering filters already, but can be read, too.
- * lines 4-12 will be read into the deblocking filter and should be deinterlaced
- */
-static inline void RENAME(deInterlaceMedian)(uint8_t src[], int stride)
-{
-#if TEMPLATE_PP_MMX
-    src+= 4*stride;
-#if TEMPLATE_PP_MMXEXT
-    __asm__ volatile(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_d"\n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1 %0+8%1  edx+4%1
-
-        "movq (%0), %%mm0                       \n\t"
-        "movq (%%"FF_REG_a", %1), %%mm2         \n\t"
-        "movq (%%"FF_REG_a"), %%mm1             \n\t"
-        "movq %%mm0, %%mm3                      \n\t"
-        "pmaxub %%mm1, %%mm0                    \n\t"
-        "pminub %%mm3, %%mm1                    \n\t"
-        "pmaxub %%mm2, %%mm1                    \n\t"
-        "pminub %%mm1, %%mm0                    \n\t"
-        "movq %%mm0, (%%"FF_REG_a")             \n\t"
-
-        "movq (%0, %1, 4), %%mm0                \n\t"
-        "movq (%%"FF_REG_a", %1, 2), %%mm1      \n\t"
-        "movq %%mm2, %%mm3                      \n\t"
-        "pmaxub %%mm1, %%mm2                    \n\t"
-        "pminub %%mm3, %%mm1                    \n\t"
-        "pmaxub %%mm0, %%mm1                    \n\t"
-        "pminub %%mm1, %%mm2                    \n\t"
-        "movq %%mm2, (%%"FF_REG_a", %1, 2)      \n\t"
-
-        "movq (%%"FF_REG_d"), %%mm2             \n\t"
-        "movq (%%"FF_REG_d", %1), %%mm1         \n\t"
-        "movq %%mm2, %%mm3                      \n\t"
-        "pmaxub %%mm0, %%mm2                    \n\t"
-        "pminub %%mm3, %%mm0                    \n\t"
-        "pmaxub %%mm1, %%mm0                    \n\t"
-        "pminub %%mm0, %%mm2                    \n\t"
-        "movq %%mm2, (%%"FF_REG_d")             \n\t"
-
-        "movq (%%"FF_REG_d", %1, 2), %%mm2      \n\t"
-        "movq (%0, %1, 8), %%mm0                \n\t"
-        "movq %%mm2, %%mm3                      \n\t"
-        "pmaxub %%mm0, %%mm2                    \n\t"
-        "pminub %%mm3, %%mm0                    \n\t"
-        "pmaxub %%mm1, %%mm0                    \n\t"
-        "pminub %%mm0, %%mm2                    \n\t"
-        "movq %%mm2, (%%"FF_REG_d", %1, 2)      \n\t"
-
-
-        : : "r" (src), "r" ((x86_reg)stride)
-        : "%"FF_REG_a, "%"FF_REG_d
-    );
-
-#else // MMX without MMX2
-    __asm__ volatile(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_d"\n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1 %0+8%1  edx+4%1
-        "pxor %%mm7, %%mm7                      \n\t"
-
-#define REAL_MEDIAN(a,b,c)\
-        "movq " #a ", %%mm0                     \n\t"\
-        "movq " #b ", %%mm2                     \n\t"\
-        "movq " #c ", %%mm1                     \n\t"\
-        "movq %%mm0, %%mm3                      \n\t"\
-        "movq %%mm1, %%mm4                      \n\t"\
-        "movq %%mm2, %%mm5                      \n\t"\
-        "psubusb %%mm1, %%mm3                   \n\t"\
-        "psubusb %%mm2, %%mm4                   \n\t"\
-        "psubusb %%mm0, %%mm5                   \n\t"\
-        "pcmpeqb %%mm7, %%mm3                   \n\t"\
-        "pcmpeqb %%mm7, %%mm4                   \n\t"\
-        "pcmpeqb %%mm7, %%mm5                   \n\t"\
-        "movq %%mm3, %%mm6                      \n\t"\
-        "pxor %%mm4, %%mm3                      \n\t"\
-        "pxor %%mm5, %%mm4                      \n\t"\
-        "pxor %%mm6, %%mm5                      \n\t"\
-        "por %%mm3, %%mm1                       \n\t"\
-        "por %%mm4, %%mm2                       \n\t"\
-        "por %%mm5, %%mm0                       \n\t"\
-        "pand %%mm2, %%mm0                      \n\t"\
-        "pand %%mm1, %%mm0                      \n\t"\
-        "movq %%mm0, " #b "                     \n\t"
-#define MEDIAN(a,b,c)  REAL_MEDIAN(a,b,c)
-
-MEDIAN((%0)           , (%%FF_REGa)       , (%%FF_REGa, %1))
-MEDIAN((%%FF_REGa, %1), (%%FF_REGa, %1, 2), (%0, %1, 4))
-MEDIAN((%0, %1, 4)    , (%%FF_REGd)       , (%%FF_REGd, %1))
-MEDIAN((%%FF_REGd, %1), (%%FF_REGd, %1, 2), (%0, %1, 8))
-
-        : : "r" (src), "r" ((x86_reg)stride)
-        : "%"FF_REG_a, "%"FF_REG_d
-    );
-#endif //TEMPLATE_PP_MMXEXT
-#else //TEMPLATE_PP_MMX
-    int x, y;
-    src+= 4*stride;
-    // FIXME - there should be a way to do a few columns in parallel like w/mmx
-    for(x=0; x<8; x++){
-        uint8_t *colsrc = src;
-        for (y=0; y<4; y++){
-            int a, b, c, d, e, f;
-            a = colsrc[0       ];
-            b = colsrc[stride  ];
-            c = colsrc[stride*2];
-            d = (a-b)>>31;
-            e = (b-c)>>31;
-            f = (c-a)>>31;
-            colsrc[stride  ] = (a|(d^f)) & (b|(d^e)) & (c|(e^f));
-            colsrc += stride*2;
-        }
-        src++;
-    }
-#endif //TEMPLATE_PP_MMX
-}
-
-#if TEMPLATE_PP_MMX
-/**
- * Transpose and shift the given 8x8 Block into dst1 and dst2.
- */
-static inline void RENAME(transpose1)(uint8_t *dst1, uint8_t *dst2, const uint8_t *src, int srcStride)
-{
-    __asm__(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1 %0+8%1  edx+4%1
-        "movq (%0), %%mm0                       \n\t" // 12345678
-        "movq (%%"FF_REG_a"), %%mm1             \n\t" // abcdefgh
-        "movq %%mm0, %%mm2                      \n\t" // 12345678
-        "punpcklbw %%mm1, %%mm0                 \n\t" // 1a2b3c4d
-        "punpckhbw %%mm1, %%mm2                 \n\t" // 5e6f7g8h
-
-        "movq (%%"FF_REG_a", %1), %%mm1         \n\t"
-        "movq (%%"FF_REG_a", %1, 2), %%mm3      \n\t"
-        "movq %%mm1, %%mm4                      \n\t"
-        "punpcklbw %%mm3, %%mm1                 \n\t"
-        "punpckhbw %%mm3, %%mm4                 \n\t"
-
-        "movq %%mm0, %%mm3                      \n\t"
-        "punpcklwd %%mm1, %%mm0                 \n\t"
-        "punpckhwd %%mm1, %%mm3                 \n\t"
-        "movq %%mm2, %%mm1                      \n\t"
-        "punpcklwd %%mm4, %%mm2                 \n\t"
-        "punpckhwd %%mm4, %%mm1                 \n\t"
-
-        "movd %%mm0, 128(%2)                    \n\t"
-        "psrlq $32, %%mm0                       \n\t"
-        "movd %%mm0, 144(%2)                    \n\t"
-        "movd %%mm3, 160(%2)                    \n\t"
-        "psrlq $32, %%mm3                       \n\t"
-        "movd %%mm3, 176(%2)                    \n\t"
-        "movd %%mm3, 48(%3)                     \n\t"
-        "movd %%mm2, 192(%2)                    \n\t"
-        "movd %%mm2, 64(%3)                     \n\t"
-        "psrlq $32, %%mm2                       \n\t"
-        "movd %%mm2, 80(%3)                     \n\t"
-        "movd %%mm1, 96(%3)                     \n\t"
-        "psrlq $32, %%mm1                       \n\t"
-        "movd %%mm1, 112(%3)                    \n\t"
-
-        "lea (%%"FF_REG_a", %1, 4), %%"FF_REG_a"\n\t"
-
-        "movq (%0, %1, 4), %%mm0                \n\t" // 12345678
-        "movq (%%"FF_REG_a"), %%mm1             \n\t" // abcdefgh
-        "movq %%mm0, %%mm2                      \n\t" // 12345678
-        "punpcklbw %%mm1, %%mm0                 \n\t" // 1a2b3c4d
-        "punpckhbw %%mm1, %%mm2                 \n\t" // 5e6f7g8h
-
-        "movq (%%"FF_REG_a", %1), %%mm1         \n\t"
-        "movq (%%"FF_REG_a", %1, 2), %%mm3      \n\t"
-        "movq %%mm1, %%mm4                      \n\t"
-        "punpcklbw %%mm3, %%mm1                 \n\t"
-        "punpckhbw %%mm3, %%mm4                 \n\t"
-
-        "movq %%mm0, %%mm3                      \n\t"
-        "punpcklwd %%mm1, %%mm0                 \n\t"
-        "punpckhwd %%mm1, %%mm3                 \n\t"
-        "movq %%mm2, %%mm1                      \n\t"
-        "punpcklwd %%mm4, %%mm2                 \n\t"
-        "punpckhwd %%mm4, %%mm1                 \n\t"
-
-        "movd %%mm0, 132(%2)                    \n\t"
-        "psrlq $32, %%mm0                       \n\t"
-        "movd %%mm0, 148(%2)                    \n\t"
-        "movd %%mm3, 164(%2)                    \n\t"
-        "psrlq $32, %%mm3                       \n\t"
-        "movd %%mm3, 180(%2)                    \n\t"
-        "movd %%mm3, 52(%3)                     \n\t"
-        "movd %%mm2, 196(%2)                    \n\t"
-        "movd %%mm2, 68(%3)                     \n\t"
-        "psrlq $32, %%mm2                       \n\t"
-        "movd %%mm2, 84(%3)                     \n\t"
-        "movd %%mm1, 100(%3)                    \n\t"
-        "psrlq $32, %%mm1                       \n\t"
-        "movd %%mm1, 116(%3)                    \n\t"
-
-
-        :: "r" (src), "r" ((x86_reg)srcStride), "r" (dst1), "r" (dst2)
-        : "%"FF_REG_a
-    );
-}
-
-/**
- * Transpose the given 8x8 block.
- */
-static inline void RENAME(transpose2)(uint8_t *dst, int dstStride, const uint8_t *src)
-{
-    __asm__(
-        "lea (%0, %1), %%"FF_REG_a"             \n\t"
-        "lea (%%"FF_REG_a",%1,4), %%"FF_REG_d"  \n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1 %0+8%1  edx+4%1
-        "movq (%2), %%mm0                       \n\t" // 12345678
-        "movq 16(%2), %%mm1                     \n\t" // abcdefgh
-        "movq %%mm0, %%mm2                      \n\t" // 12345678
-        "punpcklbw %%mm1, %%mm0                 \n\t" // 1a2b3c4d
-        "punpckhbw %%mm1, %%mm2                 \n\t" // 5e6f7g8h
-
-        "movq 32(%2), %%mm1                     \n\t"
-        "movq 48(%2), %%mm3                     \n\t"
-        "movq %%mm1, %%mm4                      \n\t"
-        "punpcklbw %%mm3, %%mm1                 \n\t"
-        "punpckhbw %%mm3, %%mm4                 \n\t"
-
-        "movq %%mm0, %%mm3                      \n\t"
-        "punpcklwd %%mm1, %%mm0                 \n\t"
-        "punpckhwd %%mm1, %%mm3                 \n\t"
-        "movq %%mm2, %%mm1                      \n\t"
-        "punpcklwd %%mm4, %%mm2                 \n\t"
-        "punpckhwd %%mm4, %%mm1                 \n\t"
-
-        "movd %%mm0, (%0)                       \n\t"
-        "psrlq $32, %%mm0                       \n\t"
-        "movd %%mm0, (%%"FF_REG_a")             \n\t"
-        "movd %%mm3, (%%"FF_REG_a", %1)         \n\t"
-        "psrlq $32, %%mm3                       \n\t"
-        "movd %%mm3, (%%"FF_REG_a", %1, 2)      \n\t"
-        "movd %%mm2, (%0, %1, 4)                \n\t"
-        "psrlq $32, %%mm2                       \n\t"
-        "movd %%mm2, (%%"FF_REG_d")             \n\t"
-        "movd %%mm1, (%%"FF_REG_d", %1)         \n\t"
-        "psrlq $32, %%mm1                       \n\t"
-        "movd %%mm1, (%%"FF_REG_d", %1, 2)      \n\t"
-
-
-        "movq 64(%2), %%mm0                     \n\t" // 12345678
-        "movq 80(%2), %%mm1                     \n\t" // abcdefgh
-        "movq %%mm0, %%mm2                      \n\t" // 12345678
-        "punpcklbw %%mm1, %%mm0                 \n\t" // 1a2b3c4d
-        "punpckhbw %%mm1, %%mm2                 \n\t" // 5e6f7g8h
-
-        "movq 96(%2), %%mm1                     \n\t"
-        "movq 112(%2), %%mm3                    \n\t"
-        "movq %%mm1, %%mm4                      \n\t"
-        "punpcklbw %%mm3, %%mm1                 \n\t"
-        "punpckhbw %%mm3, %%mm4                 \n\t"
-
-        "movq %%mm0, %%mm3                      \n\t"
-        "punpcklwd %%mm1, %%mm0                 \n\t"
-        "punpckhwd %%mm1, %%mm3                 \n\t"
-        "movq %%mm2, %%mm1                      \n\t"
-        "punpcklwd %%mm4, %%mm2                 \n\t"
-        "punpckhwd %%mm4, %%mm1                 \n\t"
-
-        "movd %%mm0, 4(%0)                      \n\t"
-        "psrlq $32, %%mm0                       \n\t"
-        "movd %%mm0, 4(%%"FF_REG_a")            \n\t"
-        "movd %%mm3, 4(%%"FF_REG_a", %1)        \n\t"
-        "psrlq $32, %%mm3                       \n\t"
-        "movd %%mm3, 4(%%"FF_REG_a", %1, 2)     \n\t"
-        "movd %%mm2, 4(%0, %1, 4)               \n\t"
-        "psrlq $32, %%mm2                       \n\t"
-        "movd %%mm2, 4(%%"FF_REG_d")            \n\t"
-        "movd %%mm1, 4(%%"FF_REG_d", %1)        \n\t"
-        "psrlq $32, %%mm1                       \n\t"
-        "movd %%mm1, 4(%%"FF_REG_d", %1, 2)     \n\t"
-
-        :: "r" (dst), "r" ((x86_reg)dstStride), "r" (src)
-        : "%"FF_REG_a, "%"FF_REG_d
-    );
-}
-#endif //TEMPLATE_PP_MMX
-//static long test=0;
-
-#if !TEMPLATE_PP_ALTIVEC
-static inline void RENAME(tempNoiseReducer)(uint8_t *src, int stride,
-                                    uint8_t *tempBlurred, uint32_t *tempBlurredPast, const int *maxNoise)
-{
-    // to save a register (FIXME do this outside of the loops)
-    tempBlurredPast[127]= maxNoise[0];
-    tempBlurredPast[128]= maxNoise[1];
-    tempBlurredPast[129]= maxNoise[2];
-
-#define FAST_L2_DIFF
-//#define L1_DIFF //u should change the thresholds too if u try that one
-#if (TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW) && HAVE_6REGS
-    __asm__ volatile(
-        "lea (%2, %2, 2), %%"FF_REG_a"          \n\t" // 3*stride
-        "lea (%2, %2, 4), %%"FF_REG_d"          \n\t" // 5*stride
-        "lea (%%"FF_REG_d", %2, 2), %%"FF_REG_c"\n\t" // 7*stride
-//      0       1       2       3       4       5       6       7       8       9
-//      %x      %x+%2   %x+2%2  %x+eax  %x+4%2  %x+edx  %x+2eax %x+ecx  %x+8%2
-//FIXME reorder?
-#ifdef L1_DIFF //needs mmx2
-        "movq (%0), %%mm0                       \n\t" // L0
-        "psadbw (%1), %%mm0                     \n\t" // |L0-R0|
-        "movq (%0, %2), %%mm1                   \n\t" // L1
-        "psadbw (%1, %2), %%mm1                 \n\t" // |L1-R1|
-        "movq (%0, %2, 2), %%mm2                \n\t" // L2
-        "psadbw (%1, %2, 2), %%mm2              \n\t" // |L2-R2|
-        "movq (%0, %%"FF_REG_a"), %%mm3         \n\t" // L3
-        "psadbw (%1, %%"FF_REG_a"), %%mm3       \n\t" // |L3-R3|
-
-        "movq (%0, %2, 4), %%mm4                \n\t" // L4
-        "paddw %%mm1, %%mm0                     \n\t"
-        "psadbw (%1, %2, 4), %%mm4              \n\t" // |L4-R4|
-        "movq (%0, %%"FF_REG_d"), %%mm5         \n\t" // L5
-        "paddw %%mm2, %%mm0                     \n\t"
-        "psadbw (%1, %%"FF_REG_d"), %%mm5       \n\t" // |L5-R5|
-        "movq (%0, %%"FF_REG_a", 2), %%mm6      \n\t" // L6
-        "paddw %%mm3, %%mm0                     \n\t"
-        "psadbw (%1, %%"FF_REG_a", 2), %%mm6    \n\t" // |L6-R6|
-        "movq (%0, %%"FF_REG_c"), %%mm7         \n\t" // L7
-        "paddw %%mm4, %%mm0                     \n\t"
-        "psadbw (%1, %%"FF_REG_c"), %%mm7       \n\t" // |L7-R7|
-        "paddw %%mm5, %%mm6                     \n\t"
-        "paddw %%mm7, %%mm6                     \n\t"
-        "paddw %%mm6, %%mm0                     \n\t"
-#else //L1_DIFF
-#if defined (FAST_L2_DIFF)
-        "pcmpeqb %%mm7, %%mm7                   \n\t"
-        "movq "MANGLE(b80)", %%mm6              \n\t"
-        "pxor %%mm0, %%mm0                      \n\t"
-#define REAL_L2_DIFF_CORE(a, b)\
-        "movq " #a ", %%mm5                     \n\t"\
-        "movq " #b ", %%mm2                     \n\t"\
-        "pxor %%mm7, %%mm2                      \n\t"\
-        PAVGB(%%mm2, %%mm5)\
-        "paddb %%mm6, %%mm5                     \n\t"\
-        "movq %%mm5, %%mm2                      \n\t"\
-        "psllw $8, %%mm5                        \n\t"\
-        "pmaddwd %%mm5, %%mm5                   \n\t"\
-        "pmaddwd %%mm2, %%mm2                   \n\t"\
-        "paddd %%mm2, %%mm5                     \n\t"\
-        "psrld $14, %%mm5                       \n\t"\
-        "paddd %%mm5, %%mm0                     \n\t"
-
-#else //defined (FAST_L2_DIFF)
-        "pxor %%mm7, %%mm7                      \n\t"
-        "pxor %%mm0, %%mm0                      \n\t"
-#define REAL_L2_DIFF_CORE(a, b)\
-        "movq " #a ", %%mm5                     \n\t"\
-        "movq " #b ", %%mm2                     \n\t"\
-        "movq %%mm5, %%mm1                      \n\t"\
-        "movq %%mm2, %%mm3                      \n\t"\
-        "punpcklbw %%mm7, %%mm5                 \n\t"\
-        "punpckhbw %%mm7, %%mm1                 \n\t"\
-        "punpcklbw %%mm7, %%mm2                 \n\t"\
-        "punpckhbw %%mm7, %%mm3                 \n\t"\
-        "psubw %%mm2, %%mm5                     \n\t"\
-        "psubw %%mm3, %%mm1                     \n\t"\
-        "pmaddwd %%mm5, %%mm5                   \n\t"\
-        "pmaddwd %%mm1, %%mm1                   \n\t"\
-        "paddd %%mm1, %%mm5                     \n\t"\
-        "paddd %%mm5, %%mm0                     \n\t"
-
-#endif //defined (FAST_L2_DIFF)
-
-#define L2_DIFF_CORE(a, b)  REAL_L2_DIFF_CORE(a, b)
-
-L2_DIFF_CORE((%0)             , (%1))
-L2_DIFF_CORE((%0, %2)         , (%1, %2))
-L2_DIFF_CORE((%0, %2, 2)      , (%1, %2, 2))
-L2_DIFF_CORE((%0, %%FF_REGa)  , (%1, %%FF_REGa))
-L2_DIFF_CORE((%0, %2, 4)      , (%1, %2, 4))
-L2_DIFF_CORE((%0, %%FF_REGd)  , (%1, %%FF_REGd))
-L2_DIFF_CORE((%0, %%FF_REGa,2), (%1, %%FF_REGa,2))
-L2_DIFF_CORE((%0, %%FF_REGc)  , (%1, %%FF_REGc))
-
-#endif //L1_DIFF
-
-        "movq %%mm0, %%mm4                      \n\t"
-        "psrlq $32, %%mm0                       \n\t"
-        "paddd %%mm0, %%mm4                     \n\t"
-        "movd %%mm4, %%ecx                      \n\t"
-        "shll $2, %%ecx                         \n\t"
-        "mov %3, %%"FF_REG_d"                   \n\t"
-        "addl -4(%%"FF_REG_d"), %%ecx           \n\t"
-        "addl 4(%%"FF_REG_d"), %%ecx            \n\t"
-        "addl -1024(%%"FF_REG_d"), %%ecx        \n\t"
-        "addl $4, %%ecx                         \n\t"
-        "addl 1024(%%"FF_REG_d"), %%ecx         \n\t"
-        "shrl $3, %%ecx                         \n\t"
-        "movl %%ecx, (%%"FF_REG_d")             \n\t"
-
-//        "mov %3, %%"FF_REG_c"                   \n\t"
-//        "mov %%"FF_REG_c", test                 \n\t"
-//        "jmp 4f                                 \n\t"
-        "cmpl 512(%%"FF_REG_d"), %%ecx          \n\t"
-        " jb 2f                                 \n\t"
-        "cmpl 516(%%"FF_REG_d"), %%ecx          \n\t"
-        " jb 1f                                 \n\t"
-
-        "lea (%%"FF_REG_a", %2, 2), %%"FF_REG_d"\n\t" // 5*stride
-        "lea (%%"FF_REG_d", %2, 2), %%"FF_REG_c"\n\t" // 7*stride
-        "movq (%0), %%mm0                       \n\t" // L0
-        "movq (%0, %2), %%mm1                   \n\t" // L1
-        "movq (%0, %2, 2), %%mm2                \n\t" // L2
-        "movq (%0, %%"FF_REG_a"), %%mm3         \n\t" // L3
-        "movq (%0, %2, 4), %%mm4                \n\t" // L4
-        "movq (%0, %%"FF_REG_d"), %%mm5         \n\t" // L5
-        "movq (%0, %%"FF_REG_a", 2), %%mm6      \n\t" // L6
-        "movq (%0, %%"FF_REG_c"), %%mm7         \n\t" // L7
-        "movq %%mm0, (%1)                       \n\t" // L0
-        "movq %%mm1, (%1, %2)                   \n\t" // L1
-        "movq %%mm2, (%1, %2, 2)                \n\t" // L2
-        "movq %%mm3, (%1, %%"FF_REG_a")         \n\t" // L3
-        "movq %%mm4, (%1, %2, 4)                \n\t" // L4
-        "movq %%mm5, (%1, %%"FF_REG_d")         \n\t" // L5
-        "movq %%mm6, (%1, %%"FF_REG_a", 2)      \n\t" // L6
-        "movq %%mm7, (%1, %%"FF_REG_c")         \n\t" // L7
-        "jmp 4f                                 \n\t"
-
-        "1:                                     \n\t"
-        "lea (%%"FF_REG_a", %2, 2), %%"FF_REG_d"\n\t" // 5*stride
-        "lea (%%"FF_REG_d", %2, 2), %%"FF_REG_c"\n\t" // 7*stride
-        "movq (%0), %%mm0                       \n\t" // L0
-        PAVGB((%1), %%mm0)                            // L0
-        "movq (%0, %2), %%mm1                   \n\t" // L1
-        PAVGB((%1, %2), %%mm1)                        // L1
-        "movq (%0, %2, 2), %%mm2                \n\t" // L2
-        PAVGB((%1, %2, 2), %%mm2)                     // L2
-        "movq (%0, %%"FF_REG_a"), %%mm3         \n\t" // L3
-        PAVGB((%1, %%FF_REGa), %%mm3)                 // L3
-        "movq (%0, %2, 4), %%mm4                \n\t" // L4
-        PAVGB((%1, %2, 4), %%mm4)                     // L4
-        "movq (%0, %%"FF_REG_d"), %%mm5         \n\t" // L5
-        PAVGB((%1, %%FF_REGd), %%mm5)                 // L5
-        "movq (%0, %%"FF_REG_a", 2), %%mm6      \n\t" // L6
-        PAVGB((%1, %%FF_REGa, 2), %%mm6)              // L6
-        "movq (%0, %%"FF_REG_c"), %%mm7         \n\t" // L7
-        PAVGB((%1, %%FF_REGc), %%mm7)                 // L7
-        "movq %%mm0, (%1)                       \n\t" // R0
-        "movq %%mm1, (%1, %2)                   \n\t" // R1
-        "movq %%mm2, (%1, %2, 2)                \n\t" // R2
-        "movq %%mm3, (%1, %%"FF_REG_a")         \n\t" // R3
-        "movq %%mm4, (%1, %2, 4)                \n\t" // R4
-        "movq %%mm5, (%1, %%"FF_REG_d")         \n\t" // R5
-        "movq %%mm6, (%1, %%"FF_REG_a", 2)      \n\t" // R6
-        "movq %%mm7, (%1, %%"FF_REG_c")         \n\t" // R7
-        "movq %%mm0, (%0)                       \n\t" // L0
-        "movq %%mm1, (%0, %2)                   \n\t" // L1
-        "movq %%mm2, (%0, %2, 2)                \n\t" // L2
-        "movq %%mm3, (%0, %%"FF_REG_a")         \n\t" // L3
-        "movq %%mm4, (%0, %2, 4)                \n\t" // L4
-        "movq %%mm5, (%0, %%"FF_REG_d")         \n\t" // L5
-        "movq %%mm6, (%0, %%"FF_REG_a", 2)      \n\t" // L6
-        "movq %%mm7, (%0, %%"FF_REG_c")         \n\t" // L7
-        "jmp 4f                                 \n\t"
-
-        "2:                                     \n\t"
-        "cmpl 508(%%"FF_REG_d"), %%ecx          \n\t"
-        " jb 3f                                 \n\t"
-
-        "lea (%%"FF_REG_a", %2, 2), %%"FF_REG_d"\n\t" // 5*stride
-        "lea (%%"FF_REG_d", %2, 2), %%"FF_REG_c"\n\t" // 7*stride
-        "movq (%0), %%mm0                       \n\t" // L0
-        "movq (%0, %2), %%mm1                   \n\t" // L1
-        "movq (%0, %2, 2), %%mm2                \n\t" // L2
-        "movq (%0, %%"FF_REG_a"), %%mm3         \n\t" // L3
-        "movq (%1), %%mm4                       \n\t" // R0
-        "movq (%1, %2), %%mm5                   \n\t" // R1
-        "movq (%1, %2, 2), %%mm6                \n\t" // R2
-        "movq (%1, %%"FF_REG_a"), %%mm7         \n\t" // R3
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        "movq %%mm0, (%1)                       \n\t" // R0
-        "movq %%mm1, (%1, %2)                   \n\t" // R1
-        "movq %%mm2, (%1, %2, 2)                \n\t" // R2
-        "movq %%mm3, (%1, %%"FF_REG_a")         \n\t" // R3
-        "movq %%mm0, (%0)                       \n\t" // L0
-        "movq %%mm1, (%0, %2)                   \n\t" // L1
-        "movq %%mm2, (%0, %2, 2)                \n\t" // L2
-        "movq %%mm3, (%0, %%"FF_REG_a")         \n\t" // L3
-
-        "movq (%0, %2, 4), %%mm0                \n\t" // L4
-        "movq (%0, %%"FF_REG_d"), %%mm1         \n\t" // L5
-        "movq (%0, %%"FF_REG_a", 2), %%mm2      \n\t" // L6
-        "movq (%0, %%"FF_REG_c"), %%mm3         \n\t" // L7
-        "movq (%1, %2, 4), %%mm4                \n\t" // R4
-        "movq (%1, %%"FF_REG_d"), %%mm5         \n\t" // R5
-        "movq (%1, %%"FF_REG_a", 2), %%mm6      \n\t" // R6
-        "movq (%1, %%"FF_REG_c"), %%mm7         \n\t" // R7
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        "movq %%mm0, (%1, %2, 4)                \n\t" // R4
-        "movq %%mm1, (%1, %%"FF_REG_d")         \n\t" // R5
-        "movq %%mm2, (%1, %%"FF_REG_a", 2)      \n\t" // R6
-        "movq %%mm3, (%1, %%"FF_REG_c")         \n\t" // R7
-        "movq %%mm0, (%0, %2, 4)                \n\t" // L4
-        "movq %%mm1, (%0, %%"FF_REG_d")         \n\t" // L5
-        "movq %%mm2, (%0, %%"FF_REG_a", 2)      \n\t" // L6
-        "movq %%mm3, (%0, %%"FF_REG_c")         \n\t" // L7
-        "jmp 4f                                 \n\t"
-
-        "3:                                     \n\t"
-        "lea (%%"FF_REG_a", %2, 2), %%"FF_REG_d"\n\t" // 5*stride
-        "lea (%%"FF_REG_d", %2, 2), %%"FF_REG_c"\n\t" // 7*stride
-        "movq (%0), %%mm0                       \n\t" // L0
-        "movq (%0, %2), %%mm1                   \n\t" // L1
-        "movq (%0, %2, 2), %%mm2                \n\t" // L2
-        "movq (%0, %%"FF_REG_a"), %%mm3         \n\t" // L3
-        "movq (%1), %%mm4                       \n\t" // R0
-        "movq (%1, %2), %%mm5                   \n\t" // R1
-        "movq (%1, %2, 2), %%mm6                \n\t" // R2
-        "movq (%1, %%"FF_REG_a"), %%mm7         \n\t" // R3
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        "movq %%mm0, (%1)                       \n\t" // R0
-        "movq %%mm1, (%1, %2)                   \n\t" // R1
-        "movq %%mm2, (%1, %2, 2)                \n\t" // R2
-        "movq %%mm3, (%1, %%"FF_REG_a")         \n\t" // R3
-        "movq %%mm0, (%0)                       \n\t" // L0
-        "movq %%mm1, (%0, %2)                   \n\t" // L1
-        "movq %%mm2, (%0, %2, 2)                \n\t" // L2
-        "movq %%mm3, (%0, %%"FF_REG_a")         \n\t" // L3
-
-        "movq (%0, %2, 4), %%mm0                \n\t" // L4
-        "movq (%0, %%"FF_REG_d"), %%mm1         \n\t" // L5
-        "movq (%0, %%"FF_REG_a", 2), %%mm2      \n\t" // L6
-        "movq (%0, %%"FF_REG_c"), %%mm3         \n\t" // L7
-        "movq (%1, %2, 4), %%mm4                \n\t" // R4
-        "movq (%1, %%"FF_REG_d"), %%mm5         \n\t" // R5
-        "movq (%1, %%"FF_REG_a", 2), %%mm6      \n\t" // R6
-        "movq (%1, %%"FF_REG_c"), %%mm7         \n\t" // R7
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        PAVGB(%%mm4, %%mm0)
-        PAVGB(%%mm5, %%mm1)
-        PAVGB(%%mm6, %%mm2)
-        PAVGB(%%mm7, %%mm3)
-        "movq %%mm0, (%1, %2, 4)                \n\t" // R4
-        "movq %%mm1, (%1, %%"FF_REG_d")         \n\t" // R5
-        "movq %%mm2, (%1, %%"FF_REG_a", 2)      \n\t" // R6
-        "movq %%mm3, (%1, %%"FF_REG_c")         \n\t" // R7
-        "movq %%mm0, (%0, %2, 4)                \n\t" // L4
-        "movq %%mm1, (%0, %%"FF_REG_d")         \n\t" // L5
-        "movq %%mm2, (%0, %%"FF_REG_a", 2)      \n\t" // L6
-        "movq %%mm3, (%0, %%"FF_REG_c")         \n\t" // L7
-
-        "4:                                     \n\t"
-
-        :: "r" (src), "r" (tempBlurred), "r"((x86_reg)stride), "m" (tempBlurredPast)
-          NAMED_CONSTRAINTS_ADD(b80)
-        : "%"FF_REG_a, "%"FF_REG_d, "%"FF_REG_c, "memory"
-    );
-#else //(TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW) && HAVE_6REGS
-{
-    int y;
-    int d=0;
-//    int sysd=0;
-    int i;
-
-    for(y=0; y<8; y++){
-        int x;
-        for(x=0; x<8; x++){
-            int ref= tempBlurred[ x + y*stride ];
-            int cur= src[ x + y*stride ];
-            int d1=ref - cur;
-//            if(x==0 || x==7) d1+= d1>>1;
-//            if(y==0 || y==7) d1+= d1>>1;
-//            d+= FFABS(d1);
-            d+= d1*d1;
-//            sysd+= d1;
-        }
-    }
-    i=d;
-    d=  (
-        4*d
-        +(*(tempBlurredPast-256))
-        +(*(tempBlurredPast-1))+ (*(tempBlurredPast+1))
-        +(*(tempBlurredPast+256))
-        +4)>>3;
-    *tempBlurredPast=i;
-//    ((*tempBlurredPast)*3 + d + 2)>>2;
-
-/*
-Switch between
- 1  0  0  0  0  0  0  (0)
-64 32 16  8  4  2  1  (1)
-64 48 36 27 20 15 11 (33) (approx)
-64 56 49 43 37 33 29 (200) (approx)
-*/
-    if(d > maxNoise[1]){
-        if(d < maxNoise[2]){
-            for(y=0; y<8; y++){
-                int x;
-                for(x=0; x<8; x++){
-                    int ref= tempBlurred[ x + y*stride ];
-                    int cur= src[ x + y*stride ];
-                    tempBlurred[ x + y*stride ]=
-                    src[ x + y*stride ]=
-                        (ref + cur + 1)>>1;
-                }
-            }
-        }else{
-            for(y=0; y<8; y++){
-                int x;
-                for(x=0; x<8; x++){
-                    tempBlurred[ x + y*stride ]= src[ x + y*stride ];
-                }
-            }
-        }
-    }else{
-        if(d < maxNoise[0]){
-            for(y=0; y<8; y++){
-                int x;
-                for(x=0; x<8; x++){
-                    int ref= tempBlurred[ x + y*stride ];
-                    int cur= src[ x + y*stride ];
-                    tempBlurred[ x + y*stride ]=
-                    src[ x + y*stride ]=
-                        (ref*7 + cur + 4)>>3;
-                }
-            }
-        }else{
-            for(y=0; y<8; y++){
-                int x;
-                for(x=0; x<8; x++){
-                    int ref= tempBlurred[ x + y*stride ];
-                    int cur= src[ x + y*stride ];
-                    tempBlurred[ x + y*stride ]=
-                    src[ x + y*stride ]=
-                        (ref*3 + cur + 2)>>2;
-                }
-            }
-        }
-    }
-}
-#endif //(TEMPLATE_PP_MMXEXT || TEMPLATE_PP_3DNOW) && HAVE_6REGS
-}
-#endif //TEMPLATE_PP_ALTIVEC
-
-#if TEMPLATE_PP_MMX
-/**
- * accurate deblock filter
- */
-static av_always_inline void RENAME(do_a_deblock)(uint8_t *src, int step, int stride, const PPContext *c, int mode){
-    int64_t dc_mask, eq_mask, both_masks;
-    int64_t sums[10*8*2];
-    src+= step*3; // src points to begin of the 8x8 Block
-
-    __asm__ volatile(
-        "movq %0, %%mm7                         \n\t"
-        "movq %1, %%mm6                         \n\t"
-        : : "m" (c->mmxDcOffset[c->nonBQP]),  "m" (c->mmxDcThreshold[c->nonBQP])
-        );
-
-    __asm__ volatile(
-        "lea (%2, %3), %%"FF_REG_a"             \n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %1      eax     eax+%2  eax+2%2 %1+4%2  ecx     ecx+%2  ecx+2%2 %1+8%2  ecx+4%2
-
-        "movq (%2), %%mm0                       \n\t"
-        "movq (%%"FF_REG_a"), %%mm1             \n\t"
-        "movq %%mm1, %%mm3                      \n\t"
-        "movq %%mm1, %%mm4                      \n\t"
-        "psubb %%mm1, %%mm0                     \n\t" // mm0 = difference
-        "paddb %%mm7, %%mm0                     \n\t"
-        "pcmpgtb %%mm6, %%mm0                   \n\t"
-
-        "movq (%%"FF_REG_a",%3), %%mm2          \n\t"
-        PMAXUB(%%mm2, %%mm4)
-        PMINUB(%%mm2, %%mm3, %%mm5)
-        "psubb %%mm2, %%mm1                     \n\t"
-        "paddb %%mm7, %%mm1                     \n\t"
-        "pcmpgtb %%mm6, %%mm1                   \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a", %3, 2), %%mm1      \n\t"
-        PMAXUB(%%mm1, %%mm4)
-        PMINUB(%%mm1, %%mm3, %%mm5)
-        "psubb %%mm1, %%mm2                     \n\t"
-        "paddb %%mm7, %%mm2                     \n\t"
-        "pcmpgtb %%mm6, %%mm2                   \n\t"
-        "paddb %%mm2, %%mm0                     \n\t"
-
-        "lea (%%"FF_REG_a", %3, 4), %%"FF_REG_a"\n\t"
-
-        "movq (%2, %3, 4), %%mm2                \n\t"
-        PMAXUB(%%mm2, %%mm4)
-        PMINUB(%%mm2, %%mm3, %%mm5)
-        "psubb %%mm2, %%mm1                     \n\t"
-        "paddb %%mm7, %%mm1                     \n\t"
-        "pcmpgtb %%mm6, %%mm1                   \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a"), %%mm1             \n\t"
-        PMAXUB(%%mm1, %%mm4)
-        PMINUB(%%mm1, %%mm3, %%mm5)
-        "psubb %%mm1, %%mm2                     \n\t"
-        "paddb %%mm7, %%mm2                     \n\t"
-        "pcmpgtb %%mm6, %%mm2                   \n\t"
-        "paddb %%mm2, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a", %3), %%mm2         \n\t"
-        PMAXUB(%%mm2, %%mm4)
-        PMINUB(%%mm2, %%mm3, %%mm5)
-        "psubb %%mm2, %%mm1                     \n\t"
-        "paddb %%mm7, %%mm1                     \n\t"
-        "pcmpgtb %%mm6, %%mm1                   \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a", %3, 2), %%mm1      \n\t"
-        PMAXUB(%%mm1, %%mm4)
-        PMINUB(%%mm1, %%mm3, %%mm5)
-        "psubb %%mm1, %%mm2                     \n\t"
-        "paddb %%mm7, %%mm2                     \n\t"
-        "pcmpgtb %%mm6, %%mm2                   \n\t"
-        "paddb %%mm2, %%mm0                     \n\t"
-
-        "movq (%2, %3, 8), %%mm2                \n\t"
-        PMAXUB(%%mm2, %%mm4)
-        PMINUB(%%mm2, %%mm3, %%mm5)
-        "psubb %%mm2, %%mm1                     \n\t"
-        "paddb %%mm7, %%mm1                     \n\t"
-        "pcmpgtb %%mm6, %%mm1                   \n\t"
-        "paddb %%mm1, %%mm0                     \n\t"
-
-        "movq (%%"FF_REG_a", %3, 4), %%mm1      \n\t"
-        "psubb %%mm1, %%mm2                     \n\t"
-        "paddb %%mm7, %%mm2                     \n\t"
-        "pcmpgtb %%mm6, %%mm2                   \n\t"
-        "paddb %%mm2, %%mm0                     \n\t"
-        "psubusb %%mm3, %%mm4                   \n\t"
-
-        "pxor %%mm6, %%mm6                      \n\t"
-        "movq %4, %%mm7                         \n\t" // QP,..., QP
-        "paddusb %%mm7, %%mm7                   \n\t" // 2QP ... 2QP
-        "psubusb %%mm4, %%mm7                   \n\t" // Diff >=2QP -> 0
-        "pcmpeqb %%mm6, %%mm7                   \n\t" // Diff < 2QP -> 0
-        "pcmpeqb %%mm6, %%mm7                   \n\t" // Diff < 2QP -> 0
-        "movq %%mm7, %1                         \n\t"
-
-        "movq %5, %%mm7                         \n\t"
-        "punpcklbw %%mm7, %%mm7                 \n\t"
-        "punpcklbw %%mm7, %%mm7                 \n\t"
-        "punpcklbw %%mm7, %%mm7                 \n\t"
-        "psubb %%mm0, %%mm6                     \n\t"
-        "pcmpgtb %%mm7, %%mm6                   \n\t"
-        "movq %%mm6, %0                         \n\t"
-
-        : "=m" (eq_mask), "=m" (dc_mask)
-        : "r" (src), "r" ((x86_reg)step), "m" (c->pQPb), "m"(c->ppMode.flatnessThreshold)
-        : "%"FF_REG_a
-    );
-
-    both_masks = dc_mask & eq_mask;
-
-    if(both_masks){
-        x86_reg offset= -8*step;
-        int64_t *temp_sums= sums;
-
-        __asm__ volatile(
-            "movq %2, %%mm0                         \n\t"  // QP,..., QP
-            "pxor %%mm4, %%mm4                      \n\t"
-
-            "movq (%0), %%mm6                       \n\t"
-            "movq (%0, %1), %%mm5                   \n\t"
-            "movq %%mm5, %%mm1                      \n\t"
-            "movq %%mm6, %%mm2                      \n\t"
-            "psubusb %%mm6, %%mm5                   \n\t"
-            "psubusb %%mm1, %%mm2                   \n\t"
-            "por %%mm5, %%mm2                       \n\t" // ABS Diff of lines
-            "psubusb %%mm2, %%mm0                   \n\t" // diff >= QP -> 0
-            "pcmpeqb %%mm4, %%mm0                   \n\t" // diff >= QP -> FF
-
-            "pxor %%mm6, %%mm1                      \n\t"
-            "pand %%mm0, %%mm1                      \n\t"
-            "pxor %%mm1, %%mm6                      \n\t"
-            // 0:QP  6:First
-
-            "movq (%0, %1, 8), %%mm5                \n\t"
-            "add %1, %0                             \n\t" // %0 points to line 1 not 0
-            "movq (%0, %1, 8), %%mm7                \n\t"
-            "movq %%mm5, %%mm1                      \n\t"
-            "movq %%mm7, %%mm2                      \n\t"
-            "psubusb %%mm7, %%mm5                   \n\t"
-            "psubusb %%mm1, %%mm2                   \n\t"
-            "por %%mm5, %%mm2                       \n\t" // ABS Diff of lines
-            "movq %2, %%mm0                         \n\t"  // QP,..., QP
-            "psubusb %%mm2, %%mm0                   \n\t" // diff >= QP -> 0
-            "pcmpeqb %%mm4, %%mm0                   \n\t" // diff >= QP -> FF
-
-            "pxor %%mm7, %%mm1                      \n\t"
-            "pand %%mm0, %%mm1                      \n\t"
-            "pxor %%mm1, %%mm7                      \n\t"
-
-            "movq %%mm6, %%mm5                      \n\t"
-            "punpckhbw %%mm4, %%mm6                 \n\t"
-            "punpcklbw %%mm4, %%mm5                 \n\t"
-            // 4:0 5/6:First 7:Last
-
-            "movq %%mm5, %%mm0                      \n\t"
-            "movq %%mm6, %%mm1                      \n\t"
-            "psllw $2, %%mm0                        \n\t"
-            "psllw $2, %%mm1                        \n\t"
-            "paddw "MANGLE(w04)", %%mm0             \n\t"
-            "paddw "MANGLE(w04)", %%mm1             \n\t"
-
-#define NEXT\
-            "movq (%0), %%mm2                       \n\t"\
-            "movq (%0), %%mm3                       \n\t"\
-            "add %1, %0                             \n\t"\
-            "punpcklbw %%mm4, %%mm2                 \n\t"\
-            "punpckhbw %%mm4, %%mm3                 \n\t"\
-            "paddw %%mm2, %%mm0                     \n\t"\
-            "paddw %%mm3, %%mm1                     \n\t"
-
-#define PREV\
-            "movq (%0), %%mm2                       \n\t"\
-            "movq (%0), %%mm3                       \n\t"\
-            "add %1, %0                             \n\t"\
-            "punpcklbw %%mm4, %%mm2                 \n\t"\
-            "punpckhbw %%mm4, %%mm3                 \n\t"\
-            "psubw %%mm2, %%mm0                     \n\t"\
-            "psubw %%mm3, %%mm1                     \n\t"
-
-
-            NEXT //0
-            NEXT //1
-            NEXT //2
-            "movq %%mm0, (%3)                       \n\t"
-            "movq %%mm1, 8(%3)                      \n\t"
-
-            NEXT //3
-            "psubw %%mm5, %%mm0                     \n\t"
-            "psubw %%mm6, %%mm1                     \n\t"
-            "movq %%mm0, 16(%3)                     \n\t"
-            "movq %%mm1, 24(%3)                     \n\t"
-
-            NEXT //4
-            "psubw %%mm5, %%mm0                     \n\t"
-            "psubw %%mm6, %%mm1                     \n\t"
-            "movq %%mm0, 32(%3)                     \n\t"
-            "movq %%mm1, 40(%3)                     \n\t"
-
-            NEXT //5
-            "psubw %%mm5, %%mm0                     \n\t"
-            "psubw %%mm6, %%mm1                     \n\t"
-            "movq %%mm0, 48(%3)                     \n\t"
-            "movq %%mm1, 56(%3)                     \n\t"
-
-            NEXT //6
-            "psubw %%mm5, %%mm0                     \n\t"
-            "psubw %%mm6, %%mm1                     \n\t"
-            "movq %%mm0, 64(%3)                     \n\t"
-            "movq %%mm1, 72(%3)                     \n\t"
-
-            "movq %%mm7, %%mm6                      \n\t"
-            "punpckhbw %%mm4, %%mm7                 \n\t"
-            "punpcklbw %%mm4, %%mm6                 \n\t"
-
-            NEXT //7
-            "mov %4, %0                             \n\t"
-            "add %1, %0                             \n\t"
-            PREV //0
-            "movq %%mm0, 80(%3)                     \n\t"
-            "movq %%mm1, 88(%3)                     \n\t"
-
-            PREV //1
-            "paddw %%mm6, %%mm0                     \n\t"
-            "paddw %%mm7, %%mm1                     \n\t"
-            "movq %%mm0, 96(%3)                     \n\t"
-            "movq %%mm1, 104(%3)                    \n\t"
-
-            PREV //2
-            "paddw %%mm6, %%mm0                     \n\t"
-            "paddw %%mm7, %%mm1                     \n\t"
-            "movq %%mm0, 112(%3)                    \n\t"
-            "movq %%mm1, 120(%3)                    \n\t"
-
-            PREV //3
-            "paddw %%mm6, %%mm0                     \n\t"
-            "paddw %%mm7, %%mm1                     \n\t"
-            "movq %%mm0, 128(%3)                    \n\t"
-            "movq %%mm1, 136(%3)                    \n\t"
-
-            PREV //4
-            "paddw %%mm6, %%mm0                     \n\t"
-            "paddw %%mm7, %%mm1                     \n\t"
-            "movq %%mm0, 144(%3)                    \n\t"
-            "movq %%mm1, 152(%3)                    \n\t"
-
-            "mov %4, %0                             \n\t" //FIXME
-
-            : "+&r"(src)
-            : "r" ((x86_reg)step), "m" (c->pQPb), "r"(sums), "g"(src)
-              NAMED_CONSTRAINTS_ADD(w04)
-        );
-
-        src+= step; // src points to begin of the 8x8 Block
-
-        __asm__ volatile(
-            "movq %4, %%mm6                         \n\t"
-            "pcmpeqb %%mm5, %%mm5                   \n\t"
-            "pxor %%mm6, %%mm5                      \n\t"
-            "pxor %%mm7, %%mm7                      \n\t"
-
-            "1:                                     \n\t"
-            "movq (%1), %%mm0                       \n\t"
-            "movq 8(%1), %%mm1                      \n\t"
-            "paddw 32(%1), %%mm0                    \n\t"
-            "paddw 40(%1), %%mm1                    \n\t"
-            "movq (%0, %3), %%mm2                   \n\t"
-            "movq %%mm2, %%mm3                      \n\t"
-            "movq %%mm2, %%mm4                      \n\t"
-            "punpcklbw %%mm7, %%mm2                 \n\t"
-            "punpckhbw %%mm7, %%mm3                 \n\t"
-            "paddw %%mm2, %%mm0                     \n\t"
-            "paddw %%mm3, %%mm1                     \n\t"
-            "paddw %%mm2, %%mm0                     \n\t"
-            "paddw %%mm3, %%mm1                     \n\t"
-            "psrlw $4, %%mm0                        \n\t"
-            "psrlw $4, %%mm1                        \n\t"
-            "packuswb %%mm1, %%mm0                  \n\t"
-            "pand %%mm6, %%mm0                      \n\t"
-            "pand %%mm5, %%mm4                      \n\t"
-            "por %%mm4, %%mm0                       \n\t"
-            "movq %%mm0, (%0, %3)                   \n\t"
-            "add $16, %1                            \n\t"
-            "add %2, %0                             \n\t"
-            " js 1b                                 \n\t"
-
-            : "+r"(offset), "+r"(temp_sums)
-            : "r" ((x86_reg)step), "r"(src - offset), "m"(both_masks)
-        );
-    }else
-        src+= step; // src points to begin of the 8x8 Block
-
-    if(eq_mask != -1LL){
-        uint8_t *temp_src= src;
-        DECLARE_ALIGNED(8, uint64_t, tmp)[4]; // make space for 4 8-byte vars
-        __asm__ volatile(
-            "pxor %%mm7, %%mm7                      \n\t"
-//      0       1       2       3       4       5       6       7       8       9
-//      %0      eax     eax+%1  eax+2%1 %0+4%1  ecx     ecx+%1  ecx+2%1 %1+8%1  ecx+4%1
-
-            "movq (%0), %%mm0                       \n\t"
-            "movq %%mm0, %%mm1                      \n\t"
-            "punpcklbw %%mm7, %%mm0                 \n\t" // low part of line 0
-            "punpckhbw %%mm7, %%mm1                 \n\t" // high part of line 0
-
-            "movq (%0, %1), %%mm2                   \n\t"
-            "lea (%0, %1, 2), %%"FF_REG_a"          \n\t"
-            "movq %%mm2, %%mm3                      \n\t"
-            "punpcklbw %%mm7, %%mm2                 \n\t" // low part of line 1
-            "punpckhbw %%mm7, %%mm3                 \n\t" // high part of line 1
-
-            "movq (%%"FF_REG_a"), %%mm4             \n\t"
-            "movq %%mm4, %%mm5                      \n\t"
-            "punpcklbw %%mm7, %%mm4                 \n\t" // low part of line 2
-            "punpckhbw %%mm7, %%mm5                 \n\t" // high part of line 2
-
-            "paddw %%mm0, %%mm0                     \n\t" // 2L0
-            "paddw %%mm1, %%mm1                     \n\t" // 2H0
-            "psubw %%mm4, %%mm2                     \n\t" // L1 - L2
-            "psubw %%mm5, %%mm3                     \n\t" // H1 - H2
-            "psubw %%mm2, %%mm0                     \n\t" // 2L0 - L1 + L2
-            "psubw %%mm3, %%mm1                     \n\t" // 2H0 - H1 + H2
-
-            "psllw $2, %%mm2                        \n\t" // 4L1 - 4L2
-            "psllw $2, %%mm3                        \n\t" // 4H1 - 4H2
-            "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2
-            "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2
-
-            "movq (%%"FF_REG_a", %1), %%mm2         \n\t"
-            "movq %%mm2, %%mm3                      \n\t"
-            "punpcklbw %%mm7, %%mm2                 \n\t" // L3
-            "punpckhbw %%mm7, %%mm3                 \n\t" // H3
-
-            "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2 - L3
-            "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2 - H3
-            "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2 - 2L3
-            "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2 - 2H3
-            "movq %%mm0, (%4)                       \n\t" // 2L0 - 5L1 + 5L2 - 2L3
-            "movq %%mm1, 8(%4)                      \n\t" // 2H0 - 5H1 + 5H2 - 2H3
-
-            "movq (%%"FF_REG_a", %1, 2), %%mm0      \n\t"
-            "movq %%mm0, %%mm1                      \n\t"
-            "punpcklbw %%mm7, %%mm0                 \n\t" // L4
-            "punpckhbw %%mm7, %%mm1                 \n\t" // H4
-
-            "psubw %%mm0, %%mm2                     \n\t" // L3 - L4
-            "psubw %%mm1, %%mm3                     \n\t" // H3 - H4
-            "movq %%mm2, 16(%4)                     \n\t" // L3 - L4
-            "movq %%mm3, 24(%4)                     \n\t" // H3 - H4
-            "paddw %%mm4, %%mm4                     \n\t" // 2L2
-            "paddw %%mm5, %%mm5                     \n\t" // 2H2
-            "psubw %%mm2, %%mm4                     \n\t" // 2L2 - L3 + L4
-            "psubw %%mm3, %%mm5                     \n\t" // 2H2 - H3 + H4
-
-            "lea (%%"FF_REG_a", %1), %0             \n\t"
-            "psllw $2, %%mm2                        \n\t" // 4L3 - 4L4
-            "psllw $2, %%mm3                        \n\t" // 4H3 - 4H4
-            "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4
-            "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4
-//50 opcodes so far
-            "movq (%0, %1, 2), %%mm2                \n\t"
-            "movq %%mm2, %%mm3                      \n\t"
-            "punpcklbw %%mm7, %%mm2                 \n\t" // L5
-            "punpckhbw %%mm7, %%mm3                 \n\t" // H5
-            "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4 - L5
-            "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4 - H5
-            "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4 - 2L5
-            "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4 - 2H5
-
-            "movq (%%"FF_REG_a", %1, 4), %%mm6      \n\t"
-            "punpcklbw %%mm7, %%mm6                 \n\t" // L6
-            "psubw %%mm6, %%mm2                     \n\t" // L5 - L6
-            "movq (%%"FF_REG_a", %1, 4), %%mm6      \n\t"
-            "punpckhbw %%mm7, %%mm6                 \n\t" // H6
-            "psubw %%mm6, %%mm3                     \n\t" // H5 - H6
-
-            "paddw %%mm0, %%mm0                     \n\t" // 2L4
-            "paddw %%mm1, %%mm1                     \n\t" // 2H4
-            "psubw %%mm2, %%mm0                     \n\t" // 2L4 - L5 + L6
-            "psubw %%mm3, %%mm1                     \n\t" // 2H4 - H5 + H6
-
-            "psllw $2, %%mm2                        \n\t" // 4L5 - 4L6
-            "psllw $2, %%mm3                        \n\t" // 4H5 - 4H6
-            "psubw %%mm2, %%mm0                     \n\t" // 2L4 - 5L5 + 5L6
-            "psubw %%mm3, %%mm1                     \n\t" // 2H4 - 5H5 + 5H6
-
-            "movq (%0, %1, 4), %%mm2                \n\t"
-            "movq %%mm2, %%mm3                      \n\t"
-            "punpcklbw %%mm7, %%mm2                 \n\t" // L7
-            "punpckhbw %%mm7, %%mm3                 \n\t" // H7
-
-            "paddw %%mm2, %%mm2                     \n\t" // 2L7
-            "paddw %%mm3, %%mm3                     \n\t" // 2H7
-            "psubw %%mm2, %%mm0                     \n\t" // 2L4 - 5L5 + 5L6 - 2L7
-            "psubw %%mm3, %%mm1                     \n\t" // 2H4 - 5H5 + 5H6 - 2H7
-
-            "movq (%4), %%mm2                       \n\t" // 2L0 - 5L1 + 5L2 - 2L3
-            "movq 8(%4), %%mm3                      \n\t" // 2H0 - 5H1 + 5H2 - 2H3
-
-#if TEMPLATE_PP_MMXEXT
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "psubw %%mm0, %%mm6                     \n\t"
-            "pmaxsw %%mm6, %%mm0                    \n\t" // |2L4 - 5L5 + 5L6 - 2L7|
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "psubw %%mm1, %%mm6                     \n\t"
-            "pmaxsw %%mm6, %%mm1                    \n\t" // |2H4 - 5H5 + 5H6 - 2H7|
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "psubw %%mm2, %%mm6                     \n\t"
-            "pmaxsw %%mm6, %%mm2                    \n\t" // |2L0 - 5L1 + 5L2 - 2L3|
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "psubw %%mm3, %%mm6                     \n\t"
-            "pmaxsw %%mm6, %%mm3                    \n\t" // |2H0 - 5H1 + 5H2 - 2H3|
-#else
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "pcmpgtw %%mm0, %%mm6                   \n\t"
-            "pxor %%mm6, %%mm0                      \n\t"
-            "psubw %%mm6, %%mm0                     \n\t" // |2L4 - 5L5 + 5L6 - 2L7|
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "pcmpgtw %%mm1, %%mm6                   \n\t"
-            "pxor %%mm6, %%mm1                      \n\t"
-            "psubw %%mm6, %%mm1                     \n\t" // |2H4 - 5H5 + 5H6 - 2H7|
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "pcmpgtw %%mm2, %%mm6                   \n\t"
-            "pxor %%mm6, %%mm2                      \n\t"
-            "psubw %%mm6, %%mm2                     \n\t" // |2L0 - 5L1 + 5L2 - 2L3|
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "pcmpgtw %%mm3, %%mm6                   \n\t"
-            "pxor %%mm6, %%mm3                      \n\t"
-            "psubw %%mm6, %%mm3                     \n\t" // |2H0 - 5H1 + 5H2 - 2H3|
-#endif
-
-#if TEMPLATE_PP_MMXEXT
-            "pminsw %%mm2, %%mm0                    \n\t"
-            "pminsw %%mm3, %%mm1                    \n\t"
-#else
-            "movq %%mm0, %%mm6                      \n\t"
-            "psubusw %%mm2, %%mm6                   \n\t"
-            "psubw %%mm6, %%mm0                     \n\t"
-            "movq %%mm1, %%mm6                      \n\t"
-            "psubusw %%mm3, %%mm6                   \n\t"
-            "psubw %%mm6, %%mm1                     \n\t"
-#endif
-
-            "movd %2, %%mm2                         \n\t" // QP
-            "punpcklbw %%mm7, %%mm2                 \n\t"
-
-            "movq %%mm7, %%mm6                      \n\t" // 0
-            "pcmpgtw %%mm4, %%mm6                   \n\t" // sign(2L2 - 5L3 + 5L4 - 2L5)
-            "pxor %%mm6, %%mm4                      \n\t"
-            "psubw %%mm6, %%mm4                     \n\t" // |2L2 - 5L3 + 5L4 - 2L5|
-            "pcmpgtw %%mm5, %%mm7                   \n\t" // sign(2H2 - 5H3 + 5H4 - 2H5)
-            "pxor %%mm7, %%mm5                      \n\t"
-            "psubw %%mm7, %%mm5                     \n\t" // |2H2 - 5H3 + 5H4 - 2H5|
-// 100 opcodes
-            "psllw $3, %%mm2                        \n\t" // 8QP
-            "movq %%mm2, %%mm3                      \n\t" // 8QP
-            "pcmpgtw %%mm4, %%mm2                   \n\t"
-            "pcmpgtw %%mm5, %%mm3                   \n\t"
-            "pand %%mm2, %%mm4                      \n\t"
-            "pand %%mm3, %%mm5                      \n\t"
-
-
-            "psubusw %%mm0, %%mm4                   \n\t" // hd
-            "psubusw %%mm1, %%mm5                   \n\t" // ld
-
-
-            "movq "MANGLE(w05)", %%mm2              \n\t" // 5
-            "pmullw %%mm2, %%mm4                    \n\t"
-            "pmullw %%mm2, %%mm5                    \n\t"
-            "movq "MANGLE(w20)", %%mm2              \n\t" // 32
-            "paddw %%mm2, %%mm4                     \n\t"
-            "paddw %%mm2, %%mm5                     \n\t"
-            "psrlw $6, %%mm4                        \n\t"
-            "psrlw $6, %%mm5                        \n\t"
-
-            "movq 16(%4), %%mm0                     \n\t" // L3 - L4
-            "movq 24(%4), %%mm1                     \n\t" // H3 - H4
-
-            "pxor %%mm2, %%mm2                      \n\t"
-            "pxor %%mm3, %%mm3                      \n\t"
-
-            "pcmpgtw %%mm0, %%mm2                   \n\t" // sign (L3-L4)
-            "pcmpgtw %%mm1, %%mm3                   \n\t" // sign (H3-H4)
-            "pxor %%mm2, %%mm0                      \n\t"
-            "pxor %%mm3, %%mm1                      \n\t"
-            "psubw %%mm2, %%mm0                     \n\t" // |L3-L4|
-            "psubw %%mm3, %%mm1                     \n\t" // |H3-H4|
-            "psrlw $1, %%mm0                        \n\t" // |L3 - L4|/2
-            "psrlw $1, %%mm1                        \n\t" // |H3 - H4|/2
-
-            "pxor %%mm6, %%mm2                      \n\t"
-            "pxor %%mm7, %%mm3                      \n\t"
-            "pand %%mm2, %%mm4                      \n\t"
-            "pand %%mm3, %%mm5                      \n\t"
-
-#if TEMPLATE_PP_MMXEXT
-            "pminsw %%mm0, %%mm4                    \n\t"
-            "pminsw %%mm1, %%mm5                    \n\t"
-#else
-            "movq %%mm4, %%mm2                      \n\t"
-            "psubusw %%mm0, %%mm2                   \n\t"
-            "psubw %%mm2, %%mm4                     \n\t"
-            "movq %%mm5, %%mm2                      \n\t"
-            "psubusw %%mm1, %%mm2                   \n\t"
-            "psubw %%mm2, %%mm5                     \n\t"
-#endif
-            "pxor %%mm6, %%mm4                      \n\t"
-            "pxor %%mm7, %%mm5                      \n\t"
-            "psubw %%mm6, %%mm4                     \n\t"
-            "psubw %%mm7, %%mm5                     \n\t"
-            "packsswb %%mm5, %%mm4                  \n\t"
-            "movq %3, %%mm1                         \n\t"
-            "pandn %%mm4, %%mm1                     \n\t"
-            "movq (%0), %%mm0                       \n\t"
-            "paddb   %%mm1, %%mm0                   \n\t"
-            "movq %%mm0, (%0)                       \n\t"
-            "movq (%0, %1), %%mm0                   \n\t"
-            "psubb %%mm1, %%mm0                     \n\t"
-            "movq %%mm0, (%0, %1)                   \n\t"
-
-            : "+r" (temp_src)
-            : "r" ((x86_reg)step), "m" (c->pQPb), "m"(eq_mask), "r"(tmp)
-              NAMED_CONSTRAINTS_ADD(w05,w20)
-            : "%"FF_REG_a
-        );
-    }
-}
-#endif //TEMPLATE_PP_MMX
-
-static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height,
-                                const int8_t QPs[], int QPStride, int isColor, PPContext *c);
-
-/**
- * Copy a block from src to dst and fixes the blacklevel.
- * levelFix == 0 -> do not touch the brightness & contrast
- */
-#undef REAL_SCALED_CPY
-#undef SCALED_CPY
-
-static inline void RENAME(blockCopy)(uint8_t dst[], int dstStride, const uint8_t src[], int srcStride,
-                                     int levelFix, int64_t *packedOffsetAndScale)
-{
-#if !TEMPLATE_PP_MMX || !HAVE_6REGS
-    int i;
-#endif
-    if(levelFix){
-#if TEMPLATE_PP_MMX && HAVE_6REGS
-    __asm__ volatile(
-        "movq (%%"FF_REG_a"), %%mm2     \n\t" // packedYOffset
-        "movq 8(%%"FF_REG_a"), %%mm3    \n\t" // packedYScale
-        "lea (%2,%4), %%"FF_REG_a"      \n\t"
-        "lea (%3,%5), %%"FF_REG_d"      \n\t"
-        "pxor %%mm4, %%mm4              \n\t"
-#if TEMPLATE_PP_MMXEXT
-#define REAL_SCALED_CPY(src1, src2, dst1, dst2)                                                \
-        "movq " #src1 ", %%mm0          \n\t"\
-        "movq " #src1 ", %%mm5          \n\t"\
-        "movq " #src2 ", %%mm1          \n\t"\
-        "movq " #src2 ", %%mm6          \n\t"\
-        "punpcklbw %%mm0, %%mm0         \n\t"\
-        "punpckhbw %%mm5, %%mm5         \n\t"\
-        "punpcklbw %%mm1, %%mm1         \n\t"\
-        "punpckhbw %%mm6, %%mm6         \n\t"\
-        "pmulhuw %%mm3, %%mm0           \n\t"\
-        "pmulhuw %%mm3, %%mm5           \n\t"\
-        "pmulhuw %%mm3, %%mm1           \n\t"\
-        "pmulhuw %%mm3, %%mm6           \n\t"\
-        "psubw %%mm2, %%mm0             \n\t"\
-        "psubw %%mm2, %%mm5             \n\t"\
-        "psubw %%mm2, %%mm1             \n\t"\
-        "psubw %%mm2, %%mm6             \n\t"\
-        "packuswb %%mm5, %%mm0          \n\t"\
-        "packuswb %%mm6, %%mm1          \n\t"\
-        "movq %%mm0, " #dst1 "          \n\t"\
-        "movq %%mm1, " #dst2 "          \n\t"\
-
-#else //TEMPLATE_PP_MMXEXT
-#define REAL_SCALED_CPY(src1, src2, dst1, dst2)                                        \
-        "movq " #src1 ", %%mm0          \n\t"\
-        "movq " #src1 ", %%mm5          \n\t"\
-        "punpcklbw %%mm4, %%mm0         \n\t"\
-        "punpckhbw %%mm4, %%mm5         \n\t"\
-        "psubw %%mm2, %%mm0             \n\t"\
-        "psubw %%mm2, %%mm5             \n\t"\
-        "movq " #src2 ", %%mm1          \n\t"\
-        "psllw $6, %%mm0                \n\t"\
-        "psllw $6, %%mm5                \n\t"\
-        "pmulhw %%mm3, %%mm0            \n\t"\
-        "movq " #src2 ", %%mm6          \n\t"\
-        "pmulhw %%mm3, %%mm5            \n\t"\
-        "punpcklbw %%mm4, %%mm1         \n\t"\
-        "punpckhbw %%mm4, %%mm6         \n\t"\
-        "psubw %%mm2, %%mm1             \n\t"\
-        "psubw %%mm2, %%mm6             \n\t"\
-        "psllw $6, %%mm1                \n\t"\
-        "psllw $6, %%mm6                \n\t"\
-        "pmulhw %%mm3, %%mm1            \n\t"\
-        "pmulhw %%mm3, %%mm6            \n\t"\
-        "packuswb %%mm5, %%mm0          \n\t"\
-        "packuswb %%mm6, %%mm1          \n\t"\
-        "movq %%mm0, " #dst1 "          \n\t"\
-        "movq %%mm1, " #dst2 "          \n\t"\
-
-#endif //TEMPLATE_PP_MMXEXT
-#define SCALED_CPY(src1, src2, dst1, dst2)\
-   REAL_SCALED_CPY(src1, src2, dst1, dst2)
-
-SCALED_CPY((%2)       , (%2, %4)      , (%3)       , (%3, %5))
-SCALED_CPY((%2, %4, 2), (%%FF_REGa, %4, 2), (%3, %5, 2), (%%FF_REGd, %5, 2))
-SCALED_CPY((%2, %4, 4), (%%FF_REGa, %4, 4), (%3, %5, 4), (%%FF_REGd, %5, 4))
-        "lea (%%"FF_REG_a",%4,4), %%"FF_REG_a"        \n\t"
-        "lea (%%"FF_REG_d",%5,4), %%"FF_REG_d"        \n\t"
-SCALED_CPY((%%FF_REGa, %4), (%%FF_REGa, %4, 2), (%%FF_REGd, %5), (%%FF_REGd, %5, 2))
-
-
-        : "=&a" (packedOffsetAndScale)
-        : "0" (packedOffsetAndScale),
-        "r"(src),
-        "r"(dst),
-        "r" ((x86_reg)srcStride),
-        "r" ((x86_reg)dstStride)
-        : "%"FF_REG_d
-    );
-#else //TEMPLATE_PP_MMX && HAVE_6REGS
-    for(i=0; i<8; i++)
-        memcpy( &(dst[dstStride*i]),
-                &(src[srcStride*i]), BLOCK_SIZE);
-#endif //TEMPLATE_PP_MMX && HAVE_6REGS
-    }else{
-#if TEMPLATE_PP_MMX && HAVE_6REGS
-    __asm__ volatile(
-        "lea (%0,%2), %%"FF_REG_a"      \n\t"
-        "lea (%1,%3), %%"FF_REG_d"      \n\t"
-
-#define REAL_SIMPLE_CPY(src1, src2, dst1, dst2)                              \
-        "movq " #src1 ", %%mm0          \n\t"\
-        "movq " #src2 ", %%mm1          \n\t"\
-        "movq %%mm0, " #dst1 "          \n\t"\
-        "movq %%mm1, " #dst2 "          \n\t"\
-
-#define SIMPLE_CPY(src1, src2, dst1, dst2)\
-   REAL_SIMPLE_CPY(src1, src2, dst1, dst2)
-
-SIMPLE_CPY((%0)       , (%0, %2)          , (%1)       , (%1, %3))
-SIMPLE_CPY((%0, %2, 2), (%%FF_REGa, %2, 2), (%1, %3, 2), (%%FF_REGd, %3, 2))
-SIMPLE_CPY((%0, %2, 4), (%%FF_REGa, %2, 4), (%1, %3, 4), (%%FF_REGd, %3, 4))
-        "lea (%%"FF_REG_a",%2,4), %%"FF_REG_a"        \n\t"
-        "lea (%%"FF_REG_d",%3,4), %%"FF_REG_d"        \n\t"
-SIMPLE_CPY((%%FF_REGa, %2), (%%FF_REGa, %2, 2), (%%FF_REGd, %3), (%%FF_REGd, %3, 2))
-
-        : : "r" (src),
-        "r" (dst),
-        "r" ((x86_reg)srcStride),
-        "r" ((x86_reg)dstStride)
-        : "%"FF_REG_a, "%"FF_REG_d
-    );
-#else //TEMPLATE_PP_MMX && HAVE_6REGS
-    for(i=0; i<8; i++)
-        memcpy( &(dst[dstStride*i]),
-                &(src[srcStride*i]), BLOCK_SIZE);
-#endif //TEMPLATE_PP_MMX && HAVE_6REGS
-    }
-}
-
-/**
- * Duplicate the given 8 src pixels ? times upward
- */
-static inline void RENAME(duplicate)(uint8_t src[], int stride)
-{
-#if TEMPLATE_PP_MMX
-    __asm__ volatile(
-        "movq (%0), %%mm0               \n\t"
-        "movq %%mm0, (%0, %1, 4)        \n\t"
-        "add %1, %0                     \n\t"
-        "movq %%mm0, (%0)               \n\t"
-        "movq %%mm0, (%0, %1)           \n\t"
-        "movq %%mm0, (%0, %1, 2)        \n\t"
-        "movq %%mm0, (%0, %1, 4)        \n\t"
-        : "+r" (src)
-        : "r" ((x86_reg)-stride)
-    );
-#else
-    int i;
-    uint8_t *p=src;
-    for(i=0; i<5; i++){
-        p-= stride;
-        memcpy(p, src, 8);
-    }
-#endif
-}
-
-#if ARCH_X86 && TEMPLATE_PP_MMXEXT
-static inline void RENAME(prefetchnta)(const void *p)
-{
-    __asm__ volatile(   "prefetchnta (%0)\n\t"
-        : : "r" (p)
-    );
-}
-
-static inline void RENAME(prefetcht0)(const void *p)
-{
-    __asm__ volatile(   "prefetcht0 (%0)\n\t"
-        : : "r" (p)
-    );
-}
-
-static inline void RENAME(prefetcht1)(const void *p)
-{
-    __asm__ volatile(   "prefetcht1 (%0)\n\t"
-        : : "r" (p)
-    );
-}
-
-static inline void RENAME(prefetcht2)(const void *p)
-{
-    __asm__ volatile(   "prefetcht2 (%0)\n\t"
-        : : "r" (p)
-    );
-}
-#elif !ARCH_X86 && AV_GCC_VERSION_AT_LEAST(3,2)
-static inline void RENAME(prefetchnta)(const void *p)
-{
-    __builtin_prefetch(p,0,0);
-}
-static inline void RENAME(prefetcht0)(const void *p)
-{
-    __builtin_prefetch(p,0,1);
-}
-static inline void RENAME(prefetcht1)(const void *p)
-{
-    __builtin_prefetch(p,0,2);
-}
-static inline void RENAME(prefetcht2)(const void *p)
-{
-    __builtin_prefetch(p,0,3);
-}
-#else
-static inline void RENAME(prefetchnta)(const void *p)
-{
-    return;
-}
-static inline void RENAME(prefetcht0)(const void *p)
-{
-    return;
-}
-static inline void RENAME(prefetcht1)(const void *p)
-{
-    return;
-}
-static inline void RENAME(prefetcht2)(const void *p)
-{
-    return;
-}
-#endif
-/**
- * Filter array of bytes (Y or U or V values)
- */
-static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height,
-                                const int8_t QPs[], int QPStride, int isColor, PPContext *c2)
-{
-    DECLARE_ALIGNED(8, PPContext, c)= *c2; //copy to stack for faster access
-    int x,y;
-#ifdef TEMPLATE_PP_TIME_MODE
-    const int mode= TEMPLATE_PP_TIME_MODE;
-#else
-    const int mode= isColor ? c.ppMode.chromMode : c.ppMode.lumMode;
-#endif
-    int black=0, white=255; // blackest black and whitest white in the picture
-    int QPCorrecture= 256*256;
-
-    int copyAhead;
-#if TEMPLATE_PP_MMX
-    int i;
-#endif
-
-    const int qpHShift= isColor ? 4-c.hChromaSubSample : 4;
-    const int qpVShift= isColor ? 4-c.vChromaSubSample : 4;
-
-    //FIXME remove
-    uint64_t * const yHistogram= c.yHistogram;
-    uint8_t * const tempSrc= srcStride > 0 ? c.tempSrc : c.tempSrc - 23*srcStride;
-    uint8_t * const tempDst= (dstStride > 0 ? c.tempDst : c.tempDst - 23*dstStride) + 32;
-    //const int mbWidth= isColor ? (width+7)>>3 : (width+15)>>4;
-
-    if (mode & VISUALIZE){
-        if(!(mode & (V_A_DEBLOCK | H_A_DEBLOCK)) || TEMPLATE_PP_MMX) {
-            av_log(c2, AV_LOG_WARNING, "Visualization is currently only supported with the accurate deblock filter without SIMD\n");
-        }
-    }
-
-#if TEMPLATE_PP_MMX
-    for(i=0; i<57; i++){
-        int offset= ((i*c.ppMode.baseDcDiff)>>8) + 1;
-        int threshold= offset*2 + 1;
-        c.mmxDcOffset[i]= 0x7F - offset;
-        c.mmxDcThreshold[i]= 0x7F - threshold;
-        c.mmxDcOffset[i]*= 0x0101010101010101LL;
-        c.mmxDcThreshold[i]*= 0x0101010101010101LL;
-    }
-#endif
-
-    if(mode & CUBIC_IPOL_DEINT_FILTER) copyAhead=16;
-    else if(   (mode & LINEAR_BLEND_DEINT_FILTER)
-            || (mode & FFMPEG_DEINT_FILTER)
-            || (mode & LOWPASS5_DEINT_FILTER)) copyAhead=14;
-    else if(   (mode & V_DEBLOCK)
-            || (mode & LINEAR_IPOL_DEINT_FILTER)
-            || (mode & MEDIAN_DEINT_FILTER)
-            || (mode & V_A_DEBLOCK)) copyAhead=13;
-    else if(mode & V_X1_FILTER) copyAhead=11;
-//    else if(mode & V_RK1_FILTER) copyAhead=10;
-    else if(mode & DERING) copyAhead=9;
-    else copyAhead=8;
-
-    copyAhead-= 8;
-
-    if(!isColor){
-        uint64_t sum= 0;
-        int i;
-        uint64_t maxClipped;
-        uint64_t clipped;
-        AVRational scale;
-
-        c.frameNum++;
-        // first frame is fscked so we ignore it
-        if(c.frameNum == 1) yHistogram[0]= width*(uint64_t)height/64*15/256;
-
-        for(i=0; i<256; i++){
-            sum+= yHistogram[i];
-        }
-
-        /* We always get a completely black picture first. */
-        maxClipped= av_rescale(sum, c.ppMode.maxClippedThreshold.num, c.ppMode.maxClippedThreshold.den);
-
-        clipped= sum;
-        for(black=255; black>0; black--){
-            if(clipped < maxClipped) break;
-            clipped-= yHistogram[black];
-        }
-
-        clipped= sum;
-        for(white=0; white<256; white++){
-            if(clipped < maxClipped) break;
-            clipped-= yHistogram[white];
-        }
-
-        scale = (AVRational){c.ppMode.maxAllowedY - c.ppMode.minAllowedY, white - black};
-
-#if TEMPLATE_PP_MMXEXT
-        c.packedYScale = (uint16_t)av_rescale(scale.num, 256, scale.den);
-        c.packedYOffset= (((black*c.packedYScale)>>8) - c.ppMode.minAllowedY) & 0xFFFF;
-#else
-        c.packedYScale = (uint16_t)av_rescale(scale.num, 1024, scale.den);
-        c.packedYOffset= (black - c.ppMode.minAllowedY) & 0xFFFF;
-#endif
-
-        c.packedYOffset|= c.packedYOffset<<32;
-        c.packedYOffset|= c.packedYOffset<<16;
-
-        c.packedYScale|= c.packedYScale<<32;
-        c.packedYScale|= c.packedYScale<<16;
-
-        if(mode & LEVEL_FIX)        QPCorrecture= (int)av_rescale(scale.num, 256*256, scale.den);
-        else                        QPCorrecture= 256*256;
-    }else{
-        c.packedYScale= 0x0100010001000100LL;
-        c.packedYOffset= 0;
-        QPCorrecture= 256*256;
-    }
-
-    /* copy & deinterlace first row of blocks */
-    y=-BLOCK_SIZE;
-    {
-        const uint8_t *srcBlock= &(src[y*srcStride]);
-        uint8_t *dstBlock= tempDst + dstStride;
-
-        // From this point on it is guaranteed that we can read and write 16 lines downward
-        // finish 1 block before the next otherwise we might have a problem
-        // with the L1 Cache of the P4 ... or only a few blocks at a time or something
-        for(x=0; x<width; x+=BLOCK_SIZE){
-            RENAME(prefetchnta)(srcBlock + (((x>>2)&6) + copyAhead)*srcStride + 32);
-            RENAME(prefetchnta)(srcBlock + (((x>>2)&6) + copyAhead+1)*srcStride + 32);
-            RENAME(prefetcht0)(dstBlock + (((x>>2)&6) + copyAhead)*dstStride + 32);
-            RENAME(prefetcht0)(dstBlock + (((x>>2)&6) + copyAhead+1)*dstStride + 32);
-
-            RENAME(blockCopy)(dstBlock + dstStride*8, dstStride,
-                              srcBlock + srcStride*8, srcStride, mode & LEVEL_FIX, &c.packedYOffset);
-
-            RENAME(duplicate)(dstBlock + dstStride*8, dstStride);
-
-            if(mode & LINEAR_IPOL_DEINT_FILTER)
-                RENAME(deInterlaceInterpolateLinear)(dstBlock, dstStride);
-            else if(mode & LINEAR_BLEND_DEINT_FILTER)
-                RENAME(deInterlaceBlendLinear)(dstBlock, dstStride, c.deintTemp + x);
-            else if(mode & MEDIAN_DEINT_FILTER)
-                RENAME(deInterlaceMedian)(dstBlock, dstStride);
-            else if(mode & CUBIC_IPOL_DEINT_FILTER)
-                RENAME(deInterlaceInterpolateCubic)(dstBlock, dstStride);
-            else if(mode & FFMPEG_DEINT_FILTER)
-                RENAME(deInterlaceFF)(dstBlock, dstStride, c.deintTemp + x);
-            else if(mode & LOWPASS5_DEINT_FILTER)
-                RENAME(deInterlaceL5)(dstBlock, dstStride, c.deintTemp + x, c.deintTemp + width + x);
-/*          else if(mode & CUBIC_BLEND_DEINT_FILTER)
-                RENAME(deInterlaceBlendCubic)(dstBlock, dstStride);
-*/
-            dstBlock+=8;
-            srcBlock+=8;
-        }
-        if(width==FFABS(dstStride))
-            linecpy(dst, tempDst + 9*dstStride, copyAhead, dstStride);
-        else{
-            int i;
-            for(i=0; i<copyAhead; i++){
-                memcpy(dst + i*dstStride, tempDst + (9+i)*dstStride, width);
-            }
-        }
-    }
-
-    for(y=0; y<height; y+=BLOCK_SIZE){
-        //1% speedup if these are here instead of the inner loop
-        const uint8_t *srcBlock= &(src[y*srcStride]);
-        uint8_t *dstBlock= &(dst[y*dstStride]);
-#if TEMPLATE_PP_MMX
-        uint8_t *tempBlock1= c.tempBlocks;
-        uint8_t *tempBlock2= c.tempBlocks + 8;
-#endif
-        const int8_t *QPptr= &QPs[(y>>qpVShift)*QPStride];
-        int8_t *nonBQPptr= &c.nonBQPTable[(y>>qpVShift)*FFABS(QPStride)];
-        int QP=0, nonBQP=0;
-        /* can we mess with a 8x16 block from srcBlock/dstBlock downwards and 1 line upwards
-           if not than use a temporary buffer */
-        if(y+15 >= height){
-            int i;
-            /* copy from line (copyAhead) to (copyAhead+7) of src, these will be copied with
-               blockcopy to dst later */
-            linecpy(tempSrc + srcStride*copyAhead, srcBlock + srcStride*copyAhead,
-                    FFMAX(height-y-copyAhead, 0), srcStride);
-
-            /* duplicate last line of src to fill the void up to line (copyAhead+7) */
-            for(i=FFMAX(height-y, 8); i<copyAhead+8; i++)
-                    memcpy(tempSrc + srcStride*i, src + srcStride*(height-1), FFABS(srcStride));
-
-            /* copy up to (copyAhead+1) lines of dst (line -1 to (copyAhead-1))*/
-            linecpy(tempDst, dstBlock - dstStride, FFMIN(height-y+1, copyAhead+1), dstStride);
-
-            /* duplicate last line of dst to fill the void up to line (copyAhead) */
-            for(i=height-y+1; i<=copyAhead; i++)
-                    memcpy(tempDst + dstStride*i, dst + dstStride*(height-1), FFABS(dstStride));
-
-            dstBlock= tempDst + dstStride;
-            srcBlock= tempSrc;
-        }
-
-        // From this point on it is guaranteed that we can read and write 16 lines downward
-        // finish 1 block before the next otherwise we might have a problem
-        // with the L1 Cache of the P4 ... or only a few blocks at a time or something
-        for(x=0; x<width; ){
-            int startx = x;
-            int endx = FFMIN(width, x+32);
-            uint8_t *dstBlockStart = dstBlock;
-            const uint8_t *srcBlockStart = srcBlock;
-            int qp_index = 0;
-            for(qp_index=0; qp_index < (endx-startx)/BLOCK_SIZE; qp_index++){
-                QP = QPptr[(x+qp_index*BLOCK_SIZE)>>qpHShift];
-                nonBQP = nonBQPptr[(x+qp_index*BLOCK_SIZE)>>qpHShift];
-            if(!isColor){
-                QP= (QP* QPCorrecture + 256*128)>>16;
-                nonBQP= (nonBQP* QPCorrecture + 256*128)>>16;
-                yHistogram[(srcBlock+qp_index*8)[srcStride*12 + 4]]++;
-            }
-            c.QP_block[qp_index] = QP;
-            c.nonBQP_block[qp_index] = nonBQP;
-#if TEMPLATE_PP_MMX
-            __asm__ volatile(
-                "movd %1, %%mm7         \n\t"
-                "packuswb %%mm7, %%mm7  \n\t" // 0, 0, 0, QP, 0, 0, 0, QP
-                "packuswb %%mm7, %%mm7  \n\t" // 0,QP, 0, QP, 0,QP, 0, QP
-                "packuswb %%mm7, %%mm7  \n\t" // QP,..., QP
-                "movq %%mm7, %0         \n\t"
-                : "=m" (c.pQPb_block[qp_index])
-                : "r" (QP)
-            );
-#endif
-            }
-          for(; x < endx; x+=BLOCK_SIZE){
-            RENAME(prefetchnta)(srcBlock + (((x>>2)&6) + copyAhead)*srcStride + 32);
-            RENAME(prefetchnta)(srcBlock + (((x>>2)&6) + copyAhead+1)*srcStride + 32);
-            RENAME(prefetcht0)(dstBlock + (((x>>2)&6) + copyAhead)*dstStride + 32);
-            RENAME(prefetcht0)(dstBlock + (((x>>2)&6) + copyAhead+1)*dstStride + 32);
-
-            RENAME(blockCopy)(dstBlock + dstStride*copyAhead, dstStride,
-                              srcBlock + srcStride*copyAhead, srcStride, mode & LEVEL_FIX, &c.packedYOffset);
-
-            if(mode & LINEAR_IPOL_DEINT_FILTER)
-                RENAME(deInterlaceInterpolateLinear)(dstBlock, dstStride);
-            else if(mode & LINEAR_BLEND_DEINT_FILTER)
-                RENAME(deInterlaceBlendLinear)(dstBlock, dstStride, c.deintTemp + x);
-            else if(mode & MEDIAN_DEINT_FILTER)
-                RENAME(deInterlaceMedian)(dstBlock, dstStride);
-            else if(mode & CUBIC_IPOL_DEINT_FILTER)
-                RENAME(deInterlaceInterpolateCubic)(dstBlock, dstStride);
-            else if(mode & FFMPEG_DEINT_FILTER)
-                RENAME(deInterlaceFF)(dstBlock, dstStride, c.deintTemp + x);
-            else if(mode & LOWPASS5_DEINT_FILTER)
-                RENAME(deInterlaceL5)(dstBlock, dstStride, c.deintTemp + x, c.deintTemp + width + x);
-/*          else if(mode & CUBIC_BLEND_DEINT_FILTER)
-                RENAME(deInterlaceBlendCubic)(dstBlock, dstStride);
-*/
-            dstBlock+=8;
-            srcBlock+=8;
-          }
-
-          dstBlock = dstBlockStart;
-          srcBlock = srcBlockStart;
-
-          for(x = startx, qp_index = 0; x < endx; x+=BLOCK_SIZE, qp_index++){
-            const int stride= dstStride;
-            //temporary while changing QP stuff to make things continue to work
-            //eventually QP,nonBQP,etc will be arrays and this will be unnecessary
-            c.QP = c.QP_block[qp_index];
-            c.nonBQP = c.nonBQP_block[qp_index];
-            c.pQPb = c.pQPb_block[qp_index];
-            c.pQPb2 = c.pQPb2_block[qp_index];
-
-            /* only deblock if we have 2 blocks */
-            if(y + 8 < height){
-                if(mode & V_X1_FILTER)
-                    RENAME(vertX1Filter)(dstBlock, stride, &c);
-                else if(mode & V_DEBLOCK){
-                    const int t= RENAME(vertClassify)(dstBlock, stride, &c);
-
-                    if(t==1)
-                        RENAME(doVertLowPass)(dstBlock, stride, &c);
-                    else if(t==2)
-                        RENAME(doVertDefFilter)(dstBlock, stride, &c);
-                }else if(mode & V_A_DEBLOCK){
-                    RENAME(do_a_deblock)(dstBlock, stride, 1, &c, mode);
-                }
-            }
-
-            dstBlock+=8;
-            srcBlock+=8;
-          }
-
-          dstBlock = dstBlockStart;
-          srcBlock = srcBlockStart;
-
-          for(x = startx, qp_index=0; x < endx; x+=BLOCK_SIZE, qp_index++){
-            const int stride= dstStride;
-            av_unused uint8_t *tmpXchg;
-            c.QP = c.QP_block[qp_index];
-            c.nonBQP = c.nonBQP_block[qp_index];
-            c.pQPb = c.pQPb_block[qp_index];
-            c.pQPb2 = c.pQPb2_block[qp_index];
-#if TEMPLATE_PP_MMX
-            RENAME(transpose1)(tempBlock1, tempBlock2, dstBlock, dstStride);
-#endif
-            /* check if we have a previous block to deblock it with dstBlock */
-            if(x - 8 >= 0){
-#if TEMPLATE_PP_MMX
-                if(mode & H_X1_FILTER)
-                        RENAME(vertX1Filter)(tempBlock1, 16, &c);
-                else if(mode & H_DEBLOCK){
-                    const int t= RENAME(vertClassify)(tempBlock1, 16, &c);
-                    if(t==1)
-                        RENAME(doVertLowPass)(tempBlock1, 16, &c);
-                    else if(t==2)
-                        RENAME(doVertDefFilter)(tempBlock1, 16, &c);
-                }else if(mode & H_A_DEBLOCK){
-                        RENAME(do_a_deblock)(tempBlock1, 16, 1, &c, mode);
-                }
-
-                RENAME(transpose2)(dstBlock-4, dstStride, tempBlock1 + 4*16);
-
-#else
-                if(mode & H_X1_FILTER)
-                    horizX1Filter(dstBlock-4, stride, c.QP);
-                else if(mode & H_DEBLOCK){
-#if TEMPLATE_PP_ALTIVEC
-                    DECLARE_ALIGNED(16, unsigned char, tempBlock)[272];
-                    int t;
-                    transpose_16x8_char_toPackedAlign_altivec(tempBlock, dstBlock - (4 + 1), stride);
-
-                    t = vertClassify_altivec(tempBlock-48, 16, &c);
-                    if(t==1) {
-                        doVertLowPass_altivec(tempBlock-48, 16, &c);
-                        transpose_8x16_char_fromPackedAlign_altivec(dstBlock - (4 + 1), tempBlock, stride);
-                    }
-                    else if(t==2) {
-                        doVertDefFilter_altivec(tempBlock-48, 16, &c);
-                        transpose_8x16_char_fromPackedAlign_altivec(dstBlock - (4 + 1), tempBlock, stride);
-                    }
-#else
-                    const int t= RENAME(horizClassify)(dstBlock-4, stride, &c);
-
-                    if(t==1)
-                        RENAME(doHorizLowPass)(dstBlock-4, stride, &c);
-                    else if(t==2)
-                        RENAME(doHorizDefFilter)(dstBlock-4, stride, &c);
-#endif
-                }else if(mode & H_A_DEBLOCK){
-                    RENAME(do_a_deblock)(dstBlock-8, 1, stride, &c, mode);
-                }
-#endif //TEMPLATE_PP_MMX
-                if(mode & DERING){
-                //FIXME filter first line
-                    if(y>0) RENAME(dering)(dstBlock - stride - 8, stride, &c);
-                }
-
-                if(mode & TEMP_NOISE_FILTER)
-                {
-                    RENAME(tempNoiseReducer)(dstBlock-8, stride,
-                            c.tempBlurred[isColor] + y*dstStride + x,
-                            c.tempBlurredPast[isColor] + (y>>3)*256 + (x>>3) + 256,
-                            c.ppMode.maxTmpNoise);
-                }
-            }
-
-            dstBlock+=8;
-            srcBlock+=8;
-
-#if TEMPLATE_PP_MMX
-            tmpXchg= tempBlock1;
-            tempBlock1= tempBlock2;
-            tempBlock2 = tmpXchg;
-#endif
-          }
-        }
-
-        if(mode & DERING){
-            if(y > 0) RENAME(dering)(dstBlock - dstStride - 8, dstStride, &c);
-        }
-
-        if((mode & TEMP_NOISE_FILTER)){
-            RENAME(tempNoiseReducer)(dstBlock-8, dstStride,
-                    c.tempBlurred[isColor] + y*dstStride + x,
-                    c.tempBlurredPast[isColor] + (y>>3)*256 + (x>>3) + 256,
-                    c.ppMode.maxTmpNoise);
-        }
-
-        /* did we use a tmp buffer for the last lines*/
-        if(y+15 >= height){
-            uint8_t *dstBlock= &(dst[y*dstStride]);
-            if(width==FFABS(dstStride))
-                linecpy(dstBlock, tempDst + dstStride, height-y, dstStride);
-            else{
-                int i;
-                for(i=0; i<height-y; i++){
-                    memcpy(dstBlock + i*dstStride, tempDst + (i+1)*dstStride, width);
-                }
-            }
-        }
-    }
-#if   TEMPLATE_PP_3DNOW
-    __asm__ volatile("femms");
-#elif TEMPLATE_PP_MMX
-    __asm__ volatile("emms");
-#endif
-
-#ifdef DEBUG_BRIGHTNESS
-    if(!isColor){
-        int max=1;
-        int i;
-        for(i=0; i<256; i++)
-            if(yHistogram[i] > max) max=yHistogram[i];
-
-        for(i=1; i<256; i++){
-            int x;
-            int start=yHistogram[i-1]/(max/256+1);
-            int end=yHistogram[i]/(max/256+1);
-            int inc= end > start ? 1 : -1;
-            for(x=start; x!=end+inc; x+=inc)
-                dst[ i*dstStride + x]+=128;
-        }
-
-        for(i=0; i<100; i+=2){
-            dst[ (white)*dstStride + i]+=128;
-            dst[ (black)*dstStride + i]+=128;
-        }
-    }
-#endif
-
-    *c2= c; //copy local context back
-
-}
-
-#undef RENAME
-#undef TEMPLATE_PP_C
-#undef TEMPLATE_PP_ALTIVEC
-#undef TEMPLATE_PP_MMX
-#undef TEMPLATE_PP_MMXEXT
-#undef TEMPLATE_PP_3DNOW
-#undef TEMPLATE_PP_SSE2
diff --git a/libswresample/tests/swresample.c b/libswresample/tests/swresample.c
deleted file mode 100644
index 5389658..0000000
--- a/libswresample/tests/swresample.c
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * Copyright (C) 2011-2012 Michael Niedermayer (michaelni@gmx.at)
- * Copyright (c) 2002 Fabrice Bellard
- *
- * This file is part of libswresample
- *
- * libswresample is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * libswresample 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with libswresample; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavutil/avassert.h"
-#include "libavutil/channel_layout.h"
-#include "libavutil/common.h"
-#include "libavutil/opt.h"
-
-#include "libswresample/swresample.h"
-
-#undef time
-#include <time.h>
-#undef fprintf
-
-#define SAMPLES 1000
-
-#define SWR_CH_MAX 32
-
-#define ASSERT_LEVEL 2
-
-static double get(uint8_t *a[], int ch, int index, int ch_count, enum AVSampleFormat f){
-    const uint8_t *p;
-    if(av_sample_fmt_is_planar(f)){
-        f= av_get_alt_sample_fmt(f, 0);
-        p= a[ch];
-    }else{
-        p= a[0];
-        index= ch + index*ch_count;
-    }
-
-    switch(f){
-    case AV_SAMPLE_FMT_U8 : return ((const uint8_t*)p)[index]/127.0-1.0;
-    case AV_SAMPLE_FMT_S16: return ((const int16_t*)p)[index]/32767.0;
-    case AV_SAMPLE_FMT_S32: return ((const int32_t*)p)[index]/2147483647.0;
-    case AV_SAMPLE_FMT_FLT: return ((const float  *)p)[index];
-    case AV_SAMPLE_FMT_DBL: return ((const double *)p)[index];
-    default: av_assert0(0);
-    }
-}
-
-static void  set(uint8_t *a[], int ch, int index, int ch_count, enum AVSampleFormat f, double v){
-    uint8_t *p;
-    if(av_sample_fmt_is_planar(f)){
-        f= av_get_alt_sample_fmt(f, 0);
-        p= a[ch];
-    }else{
-        p= a[0];
-        index= ch + index*ch_count;
-    }
-    switch(f){
-    case AV_SAMPLE_FMT_U8 : ((uint8_t*)p)[index]= av_clip_uint8 (lrint((v+1.0)*127));     break;
-    case AV_SAMPLE_FMT_S16: ((int16_t*)p)[index]= av_clip_int16 (lrint(v*32767));         break;
-    case AV_SAMPLE_FMT_S32: ((int32_t*)p)[index]= av_clipl_int32(llrint(v*2147483647));   break;
-    case AV_SAMPLE_FMT_FLT: ((float  *)p)[index]= v;                                      break;
-    case AV_SAMPLE_FMT_DBL: ((double *)p)[index]= v;                                      break;
-    default: av_assert2(0);
-    }
-}
-
-static void shift(uint8_t *a[], int index, int ch_count, enum AVSampleFormat f){
-    int ch;
-
-    if(av_sample_fmt_is_planar(f)){
-        f= av_get_alt_sample_fmt(f, 0);
-        for(ch= 0; ch<ch_count; ch++)
-            a[ch] += index*av_get_bytes_per_sample(f);
-    }else{
-        a[0] += index*ch_count*av_get_bytes_per_sample(f);
-    }
-}
-
-static const enum AVSampleFormat formats[] = {
-    AV_SAMPLE_FMT_S16,
-    AV_SAMPLE_FMT_FLTP,
-    AV_SAMPLE_FMT_S16P,
-    AV_SAMPLE_FMT_FLT,
-    AV_SAMPLE_FMT_S32P,
-    AV_SAMPLE_FMT_S32,
-    AV_SAMPLE_FMT_U8P,
-    AV_SAMPLE_FMT_U8,
-    AV_SAMPLE_FMT_DBLP,
-    AV_SAMPLE_FMT_DBL,
-};
-
-static const int rates[] = {
-    8000,
-    11025,
-    16000,
-    22050,
-    32000,
-    48000,
-};
-
-static const uint64_t layouts[]={
-    AV_CH_LAYOUT_MONO                    ,
-    AV_CH_LAYOUT_STEREO                  ,
-    AV_CH_LAYOUT_2_1                     ,
-    AV_CH_LAYOUT_SURROUND                ,
-    AV_CH_LAYOUT_4POINT0                 ,
-    AV_CH_LAYOUT_2_2                     ,
-    AV_CH_LAYOUT_QUAD                    ,
-    AV_CH_LAYOUT_5POINT0                 ,
-    AV_CH_LAYOUT_5POINT1                 ,
-    AV_CH_LAYOUT_5POINT0_BACK            ,
-    AV_CH_LAYOUT_5POINT1_BACK            ,
-    AV_CH_LAYOUT_7POINT0                 ,
-    AV_CH_LAYOUT_7POINT1                 ,
-    AV_CH_LAYOUT_7POINT1_WIDE            ,
-};
-
-static void setup_array(uint8_t *out[SWR_CH_MAX], uint8_t *in, enum AVSampleFormat format, int samples){
-    if(av_sample_fmt_is_planar(format)){
-        int i;
-        int plane_size= av_get_bytes_per_sample(format&0xFF)*samples;
-        format&=0xFF;
-        for(i=0; i<SWR_CH_MAX; i++){
-            out[i]= in + i*plane_size;
-        }
-    }else{
-        out[0]= in;
-    }
-}
-
-static int cmp(const void *a, const void *b){
-    return *(const int *)a - *(const int *)b;
-}
-
-static void audiogen(void *data, enum AVSampleFormat sample_fmt,
-                     int channels, int sample_rate, int nb_samples)
-{
-    int i, ch, k;
-    double v, f, a, ampa;
-    double tabf1[SWR_CH_MAX];
-    double tabf2[SWR_CH_MAX];
-    double taba[SWR_CH_MAX];
-    unsigned static rnd;
-
-#define PUT_SAMPLE set(data, ch, k, channels, sample_fmt, v);
-#define uint_rand(x) ((x) = (x) * 1664525 + 1013904223)
-#define dbl_rand(x) (uint_rand(x)*2.0 / (double)UINT_MAX - 1)
-    k = 0;
-
-    /* 1 second of single freq sinus at 1000 Hz */
-    a = 0;
-    for (i = 0; i < 1 * sample_rate && k < nb_samples; i++, k++) {
-        v = sin(a) * 0.30;
-        for (ch = 0; ch < channels; ch++)
-            PUT_SAMPLE
-        a += M_PI * 1000.0 * 2.0 / sample_rate;
-    }
-
-    /* 1 second of varying frequency between 100 and 10000 Hz */
-    a = 0;
-    for (i = 0; i < 1 * sample_rate && k < nb_samples; i++, k++) {
-        v = sin(a) * 0.30;
-        for (ch = 0; ch < channels; ch++)
-            PUT_SAMPLE
-        f  = 100.0 + (((10000.0 - 100.0) * i) / sample_rate);
-        a += M_PI * f * 2.0 / sample_rate;
-    }
-
-    /* 0.5 second of low amplitude white noise */
-    for (i = 0; i < sample_rate / 2 && k < nb_samples; i++, k++) {
-        v = dbl_rand(rnd) * 0.30;
-        for (ch = 0; ch < channels; ch++)
-            PUT_SAMPLE
-    }
-
-    /* 0.5 second of high amplitude white noise */
-    for (i = 0; i < sample_rate / 2 && k < nb_samples; i++, k++) {
-        v = dbl_rand(rnd);
-        for (ch = 0; ch < channels; ch++)
-            PUT_SAMPLE
-    }
-
-    /* 1 second of unrelated ramps for each channel */
-    for (ch = 0; ch < channels; ch++) {
-        taba[ch]  = 0;
-        tabf1[ch] = 100 + uint_rand(rnd) % 5000;
-        tabf2[ch] = 100 + uint_rand(rnd) % 5000;
-    }
-    for (i = 0; i < 1 * sample_rate && k < nb_samples; i++, k++) {
-        for (ch = 0; ch < channels; ch++) {
-            v = sin(taba[ch]) * 0.30;
-            PUT_SAMPLE
-            f = tabf1[ch] + (((tabf2[ch] - tabf1[ch]) * i) / sample_rate);
-            taba[ch] += M_PI * f * 2.0 / sample_rate;
-        }
-    }
-
-    /* 2 seconds of 500 Hz with varying volume */
-    a    = 0;
-    ampa = 0;
-    for (i = 0; i < 2 * sample_rate && k < nb_samples; i++, k++) {
-        for (ch = 0; ch < channels; ch++) {
-            double amp = (1.0 + sin(ampa)) * 0.15;
-            if (ch & 1)
-                amp = 0.30 - amp;
-            v = sin(a) * amp;
-            PUT_SAMPLE
-            a    += M_PI * 500.0 * 2.0 / sample_rate;
-            ampa += M_PI *  2.0 / sample_rate;
-        }
-    }
-}
-
-int main(int argc, char **argv){
-    int in_sample_rate, out_sample_rate, ch ,i, flush_count;
-    uint64_t in_ch_layout, out_ch_layout;
-    enum AVSampleFormat in_sample_fmt, out_sample_fmt;
-    uint8_t array_in[SAMPLES*8*8];
-    uint8_t array_mid[SAMPLES*8*8*3];
-    uint8_t array_out[SAMPLES*8*8+100];
-    uint8_t *ain[SWR_CH_MAX];
-    uint8_t *aout[SWR_CH_MAX];
-    uint8_t *amid[SWR_CH_MAX];
-    int flush_i=0;
-    int mode;
-    int num_tests = 10000;
-    uint32_t seed = 0;
-    uint32_t rand_seed = 0;
-    int remaining_tests[FF_ARRAY_ELEMS(rates) * FF_ARRAY_ELEMS(layouts) * FF_ARRAY_ELEMS(formats) * FF_ARRAY_ELEMS(layouts) * FF_ARRAY_ELEMS(formats)];
-    int max_tests = FF_ARRAY_ELEMS(remaining_tests);
-    int test;
-    int specific_test= -1;
-
-    struct SwrContext * forw_ctx= NULL;
-    struct SwrContext *backw_ctx= NULL;
-
-    if (argc > 1) {
-        if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) {
-            av_log(NULL, AV_LOG_INFO, "Usage: swresample-test [<num_tests>[ <test>]]  \n"
-                   "num_tests           Default is %d\n", num_tests);
-            return 0;
-        }
-        num_tests = strtol(argv[1], NULL, 0);
-        if(num_tests < 0) {
-            num_tests = -num_tests;
-            rand_seed = time(0);
-        }
-        if(num_tests<= 0 || num_tests>max_tests)
-            num_tests = max_tests;
-        if(argc > 2) {
-            specific_test = strtol(argv[1], NULL, 0);
-        }
-    }
-
-    for(i=0; i<max_tests; i++)
-        remaining_tests[i] = i;
-
-    for(test=0; test<num_tests; test++){
-        unsigned r;
-        uint_rand(seed);
-        r = (seed * (uint64_t)(max_tests - test)) >>32;
-        FFSWAP(int, remaining_tests[r], remaining_tests[max_tests - test - 1]);
-    }
-    qsort(remaining_tests + max_tests - num_tests, num_tests, sizeof(remaining_tests[0]), cmp);
-    in_sample_rate=16000;
-    for(test=0; test<num_tests; test++){
-        char  in_layout_string[256];
-        char out_layout_string[256];
-        unsigned vector= remaining_tests[max_tests - test - 1];
-        int in_ch_count;
-        int out_count, mid_count, out_ch_count;
-
-        in_ch_layout    = layouts[vector % FF_ARRAY_ELEMS(layouts)]; vector /= FF_ARRAY_ELEMS(layouts);
-        out_ch_layout   = layouts[vector % FF_ARRAY_ELEMS(layouts)]; vector /= FF_ARRAY_ELEMS(layouts);
-        in_sample_fmt   = formats[vector % FF_ARRAY_ELEMS(formats)]; vector /= FF_ARRAY_ELEMS(formats);
-        out_sample_fmt  = formats[vector % FF_ARRAY_ELEMS(formats)]; vector /= FF_ARRAY_ELEMS(formats);
-        out_sample_rate = rates  [vector % FF_ARRAY_ELEMS(rates  )]; vector /= FF_ARRAY_ELEMS(rates);
-        av_assert0(!vector);
-
-        if(specific_test == 0){
-            if(out_sample_rate != in_sample_rate || in_ch_layout != out_ch_layout)
-                continue;
-        }
-
-        in_ch_count= av_get_channel_layout_nb_channels(in_ch_layout);
-        out_ch_count= av_get_channel_layout_nb_channels(out_ch_layout);
-        av_get_channel_layout_string( in_layout_string, sizeof( in_layout_string),  in_ch_count,  in_ch_layout);
-        av_get_channel_layout_string(out_layout_string, sizeof(out_layout_string), out_ch_count, out_ch_layout);
-        fprintf(stderr, "TEST: %s->%s, rate:%5d->%5d, fmt:%s->%s\n",
-                in_layout_string, out_layout_string,
-                in_sample_rate, out_sample_rate,
-                av_get_sample_fmt_name(in_sample_fmt), av_get_sample_fmt_name(out_sample_fmt));
-        forw_ctx  = swr_alloc_set_opts(forw_ctx, out_ch_layout, out_sample_fmt,  out_sample_rate,
-                                                    in_ch_layout,  in_sample_fmt,  in_sample_rate,
-                                        0, 0);
-        backw_ctx = swr_alloc_set_opts(backw_ctx, in_ch_layout,  in_sample_fmt,             in_sample_rate,
-                                                    out_ch_layout, out_sample_fmt, out_sample_rate,
-                                        0, 0);
-        if(!forw_ctx) {
-            fprintf(stderr, "Failed to init forw_cts\n");
-            return 1;
-        }
-        if(!backw_ctx) {
-            fprintf(stderr, "Failed to init backw_ctx\n");
-            return 1;
-        }
-        if (uint_rand(rand_seed) % 3 == 0)
-            av_opt_set_int(forw_ctx, "ich", 0, 0);
-        if (uint_rand(rand_seed) % 3 == 0)
-            av_opt_set_int(forw_ctx, "och", 0, 0);
-
-        if(swr_init( forw_ctx) < 0)
-            fprintf(stderr, "swr_init(->) failed\n");
-        if(swr_init(backw_ctx) < 0)
-            fprintf(stderr, "swr_init(<-) failed\n");
-                //FIXME test planar
-        setup_array(ain , array_in ,  in_sample_fmt,   SAMPLES);
-        setup_array(amid, array_mid, out_sample_fmt, 3*SAMPLES);
-        setup_array(aout, array_out,  in_sample_fmt           ,   SAMPLES);
-#if 0
-        for(ch=0; ch<in_ch_count; ch++){
-            for(i=0; i<SAMPLES; i++)
-                set(ain, ch, i, in_ch_count, in_sample_fmt, sin(i*i*3/SAMPLES));
-        }
-#else
-        audiogen(ain, in_sample_fmt, in_ch_count, SAMPLES/6+1, SAMPLES);
-#endif
-        mode = uint_rand(rand_seed) % 3;
-        if(mode==0 /*|| out_sample_rate == in_sample_rate*/) {
-            mid_count= swr_convert(forw_ctx, amid, 3*SAMPLES, (const uint8_t **)ain, SAMPLES);
-        } else if(mode==1){
-            mid_count= swr_convert(forw_ctx, amid,         0, (const uint8_t **)ain, SAMPLES);
-            mid_count+=swr_convert(forw_ctx, amid, 3*SAMPLES, (const uint8_t **)ain,       0);
-        } else {
-            int tmp_count;
-            mid_count= swr_convert(forw_ctx, amid,         0, (const uint8_t **)ain,       1);
-            av_assert0(mid_count==0);
-            shift(ain,  1, in_ch_count, in_sample_fmt);
-            mid_count+=swr_convert(forw_ctx, amid, 3*SAMPLES, (const uint8_t **)ain,       0);
-            shift(amid,  mid_count, out_ch_count, out_sample_fmt); tmp_count = mid_count;
-            mid_count+=swr_convert(forw_ctx, amid,         2, (const uint8_t **)ain,       2);
-            shift(amid,  mid_count-tmp_count, out_ch_count, out_sample_fmt); tmp_count = mid_count;
-            shift(ain,  2, in_ch_count, in_sample_fmt);
-            mid_count+=swr_convert(forw_ctx, amid,         1, (const uint8_t **)ain, SAMPLES-3);
-            shift(amid,  mid_count-tmp_count, out_ch_count, out_sample_fmt); tmp_count = mid_count;
-            shift(ain, -3, in_ch_count, in_sample_fmt);
-            mid_count+=swr_convert(forw_ctx, amid, 3*SAMPLES, (const uint8_t **)ain,       0);
-            shift(amid,  -tmp_count, out_ch_count, out_sample_fmt);
-        }
-        out_count= swr_convert(backw_ctx,aout, SAMPLES, (const uint8_t **)amid, mid_count);
-
-        for(ch=0; ch<in_ch_count; ch++){
-            double sse, maxdiff=0;
-            double sum_a= 0;
-            double sum_b= 0;
-            double sum_aa= 0;
-            double sum_bb= 0;
-            double sum_ab= 0;
-            for(i=0; i<out_count; i++){
-                double a= get(ain , ch, i, in_ch_count, in_sample_fmt);
-                double b= get(aout, ch, i, in_ch_count, in_sample_fmt);
-                sum_a += a;
-                sum_b += b;
-                sum_aa+= a*a;
-                sum_bb+= b*b;
-                sum_ab+= a*b;
-                maxdiff= FFMAX(maxdiff, fabs(a-b));
-            }
-            sse= sum_aa + sum_bb - 2*sum_ab;
-            if(sse < 0 && sse > -0.00001) sse=0; //fix rounding error
-
-            fprintf(stderr, "[e:%f c:%f max:%f] len:%5d\n", out_count ? sqrt(sse/out_count) : 0, sum_ab/(sqrt(sum_aa*sum_bb)), maxdiff, out_count);
-        }
-
-        flush_i++;
-        flush_i%=21;
-        flush_count = swr_convert(backw_ctx,aout, flush_i, 0, 0);
-        shift(aout,  flush_i, in_ch_count, in_sample_fmt);
-        flush_count+= swr_convert(backw_ctx,aout, SAMPLES-flush_i, 0, 0);
-        shift(aout, -flush_i, in_ch_count, in_sample_fmt);
-        if(flush_count){
-            for(ch=0; ch<in_ch_count; ch++){
-                double sse, maxdiff=0;
-                double sum_a= 0;
-                double sum_b= 0;
-                double sum_aa= 0;
-                double sum_bb= 0;
-                double sum_ab= 0;
-                for(i=0; i<flush_count; i++){
-                    double a= get(ain , ch, i+out_count, in_ch_count, in_sample_fmt);
-                    double b= get(aout, ch, i, in_ch_count, in_sample_fmt);
-                    sum_a += a;
-                    sum_b += b;
-                    sum_aa+= a*a;
-                    sum_bb+= b*b;
-                    sum_ab+= a*b;
-                    maxdiff= FFMAX(maxdiff, fabs(a-b));
-                }
-                sse= sum_aa + sum_bb - 2*sum_ab;
-                if(sse < 0 && sse > -0.00001) sse=0; //fix rounding error
-
-                fprintf(stderr, "[e:%f c:%f max:%f] len:%5d F:%3d\n", sqrt(sse/flush_count), sum_ab/(sqrt(sum_aa*sum_bb)), maxdiff, flush_count, flush_i);
-            }
-        }
-
-
-        fprintf(stderr, "\n");
-    }
-
-    return 0;
-}
diff --git a/manifest/ffmpeg b/manifest/ffmpeg
new file mode 100644
index 0000000..a651d71
--- /dev/null
+++ b/manifest/ffmpeg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest>
+  <imports>
+    <import remote="https://fuchsia.googlesource.com/garnet"
+            manifest="manifest/garnet"
+            name="garnet"
+            revision="e558fa19d9178d5e61a650cfdc1a2afe6ae2292f"/>
+    </imports>
+    <projects>
+      <project name="third_party/ffmpeg"
+               path="third_party/ffmpeg"
+               remote="https://fuchsia.googlesource.com/third_party/ffmpeg"
+               gerrithost="https://fuchsia-review.googlesource.com"/>
+      <project name="third_party/yasm"
+               path="third_party/yasm"
+               remote="https://fuchsia.googlesource.com/third_party/yasm"
+               gerrithost="https://fuchsia-review.googlesource.com"
+               revision="edb428581932cfc87873aa44f4ff8b3a8c37bd09"/>
+    </projects>
+</manifest>
diff --git a/packages/ffmpeg b/packages/ffmpeg
new file mode 100644
index 0000000..be44b63
--- /dev/null
+++ b/packages/ffmpeg
@@ -0,0 +1,5 @@
+{
+    "labels": [
+        "//third_party/ffmpeg"
+    ]
+}
diff --git a/tests/checkasm/aacpsdsp.c b/tests/checkasm/aacpsdsp.c
deleted file mode 100644
index 2ceef43..0000000
--- a/tests/checkasm/aacpsdsp.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "libavcodec/aacpsdsp.h"
-#include "libavutil/intfloat.h"
-
-#include "checkasm.h"
-
-#define N 32
-#define STRIDE 128
-#define BUF_SIZE (N * STRIDE)
-
-#define randomize(buf, len) do {                                \
-    int i;                                                      \
-    for (i = 0; i < len; i++) {                                 \
-        const INTFLOAT f = (INTFLOAT)rnd() / UINT_MAX;          \
-        (buf)[i] = f;                                           \
-    }                                                           \
-} while (0)
-
-#define EPS 0.005
-
-static void clear_less_significant_bits(INTFLOAT *buf, int len, int bits)
-{
-    int i;
-    for (i = 0; i < len; i++) {
-        union av_intfloat32 u = { .f = buf[i] };
-        u.i &= (0xffffffff << bits);
-        buf[i] = u.f;
-    }
-}
-
-static void test_add_squares(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(INTFLOAT, src, [BUF_SIZE], [2]);
-
-    declare_func(void, INTFLOAT *dst,
-                 const INTFLOAT (*src)[2], int n);
-
-    randomize((INTFLOAT *)src, BUF_SIZE * 2);
-    randomize(dst0, BUF_SIZE);
-    memcpy(dst1, dst0, BUF_SIZE * sizeof(INTFLOAT));
-    call_ref(dst0, src, BUF_SIZE);
-    call_new(dst1, src, BUF_SIZE);
-    if (!float_near_abs_eps_array(dst0, dst1, EPS, BUF_SIZE))
-        fail();
-    bench_new(dst1, src, BUF_SIZE);
-}
-
-static void test_mul_pair_single(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, src0, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, src1, [BUF_SIZE]);
-
-    declare_func(void, INTFLOAT (*dst)[2],
-                       INTFLOAT (*src0)[2], INTFLOAT *src1, int n);
-
-    randomize((INTFLOAT *)src0, BUF_SIZE * 2);
-    randomize(src1, BUF_SIZE);
-    call_ref(dst0, src0, src1, BUF_SIZE);
-    call_new(dst1, src0, src1, BUF_SIZE);
-    if (!float_near_abs_eps_array((float *)dst0, (float *)dst1, EPS, BUF_SIZE * 2))
-        fail();
-    bench_new(dst1, src0, src1, BUF_SIZE);
-}
-
-static void test_hybrid_analysis(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, in, [13], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, filter, [N], [8][2]);
-
-    declare_func(void, INTFLOAT (*out)[2], INTFLOAT (*in)[2],
-                 const INTFLOAT (*filter)[8][2],
-                 ptrdiff_t stride, int n);
-
-    randomize((INTFLOAT *)in, 13 * 2);
-    randomize((INTFLOAT *)filter, N * 8 * 2);
-
-    randomize((INTFLOAT *)dst0, BUF_SIZE * 2);
-    memcpy(dst1, dst0, BUF_SIZE * 2 * sizeof(INTFLOAT));
-
-    call_ref(dst0, in, filter, STRIDE, N);
-    call_new(dst1, in, filter, STRIDE, N);
-
-    if (!float_near_abs_eps_array((float *)dst0, (float *)dst1, EPS, BUF_SIZE * 2))
-        fail();
-    bench_new(dst1, in, filter, STRIDE, N);
-}
-
-static void test_hybrid_analysis_ileave(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, in,   [2], [38][64]);
-    LOCAL_ALIGNED_16(INTFLOAT, out0, [91], [32][2]);
-    LOCAL_ALIGNED_16(INTFLOAT, out1, [91], [32][2]);
-
-    declare_func(void, INTFLOAT (*out)[32][2], INTFLOAT L[2][38][64],
-                       int i, int len);
-
-    randomize((INTFLOAT *)out0, 91 * 32 * 2);
-    randomize((INTFLOAT *)in,    2 * 38 * 64);
-    memcpy(out1, out0, 91 * 32 * 2 * sizeof(INTFLOAT));
-
-    /* len is hardcoded to 32 as that's the only value used in
-       libavcodec. asm functions are likely to be optimized
-       hardcoding this value in their loops and could fail with
-       anything else.
-       i is hardcoded to the two values currently used by the
-       aac decoder because the arm neon implementation is
-       micro-optimized for them and will fail for almost every
-       other value. */
-    call_ref(out0, in, 3, 32);
-    call_new(out1, in, 3, 32);
-
-    /* the function just moves data around, so memcmp is enough */
-    if (memcmp(out0, out1, 91 * 32 * 2 * sizeof(INTFLOAT)))
-        fail();
-
-    call_ref(out0, in, 5, 32);
-    call_new(out1, in, 5, 32);
-
-    if (memcmp(out0, out1, 91 * 32 * 2 * sizeof(INTFLOAT)))
-        fail();
-
-    bench_new(out1, in, 3, 32);
-}
-
-static void test_hybrid_synthesis_deint(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, out0, [2], [38][64]);
-    LOCAL_ALIGNED_16(INTFLOAT, out1, [2], [38][64]);
-    LOCAL_ALIGNED_16(INTFLOAT, in,  [91], [32][2]);
-
-    declare_func(void, INTFLOAT out[2][38][64], INTFLOAT (*in)[32][2],
-                       int i, int len);
-
-    randomize((INTFLOAT *)in,  91 * 32 * 2);
-    randomize((INTFLOAT *)out0, 2 * 38 * 64);
-    memcpy(out1, out0, 2 * 38 * 64 * sizeof(INTFLOAT));
-
-    /* len is hardcoded to 32 as that's the only value used in
-       libavcodec. asm functions are likely to be optimized
-       hardcoding this value in their loops and could fail with
-       anything else.
-       i is hardcoded to the two values currently used by the
-       aac decoder because the arm neon implementation is
-       micro-optimized for them and will fail for almost every
-       other value. */
-    call_ref(out0, in, 3, 32);
-    call_new(out1, in, 3, 32);
-
-    /* the function just moves data around, so memcmp is enough */
-    if (memcmp(out0, out1, 2 * 38 * 64 * sizeof(INTFLOAT)))
-        fail();
-
-    call_ref(out0, in, 5, 32);
-    call_new(out1, in, 5, 32);
-
-    if (memcmp(out0, out1, 2 * 38 * 64 * sizeof(INTFLOAT)))
-        fail();
-
-    bench_new(out1, in, 3, 32);
-}
-
-static void test_stereo_interpolate(PSDSPContext *psdsp)
-{
-    int i;
-    LOCAL_ALIGNED_16(INTFLOAT, l,  [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, r,  [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, l0, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, r0, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, l1, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, r1, [BUF_SIZE], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, h, [2], [4]);
-    LOCAL_ALIGNED_16(INTFLOAT, h_step, [2], [4]);
-
-    declare_func(void, INTFLOAT (*l)[2], INTFLOAT (*r)[2],
-                       INTFLOAT h[2][4], INTFLOAT h_step[2][4], int len);
-
-    randomize((INTFLOAT *)l, BUF_SIZE * 2);
-    randomize((INTFLOAT *)r, BUF_SIZE * 2);
-
-    for (i = 0; i < 2; i++) {
-        if (check_func(psdsp->stereo_interpolate[i], "ps_stereo_interpolate%s", i ? "_ipdopd" : "")) {
-            memcpy(l0, l, BUF_SIZE * 2 * sizeof(INTFLOAT));
-            memcpy(l1, l, BUF_SIZE * 2 * sizeof(INTFLOAT));
-            memcpy(r0, r, BUF_SIZE * 2 * sizeof(INTFLOAT));
-            memcpy(r1, r, BUF_SIZE * 2 * sizeof(INTFLOAT));
-
-            randomize((INTFLOAT *)h, 2 * 4);
-            randomize((INTFLOAT *)h_step, 2 * 4);
-            // Clear the least significant 14 bits of h_step, to avoid
-            // divergence when accumulating h_step BUF_SIZE times into
-            // a float variable which may or may not have extra intermediate
-            // precision. Therefore clear roughly log2(BUF_SIZE) less
-            // significant bits, to get the same result regardless of any
-            // extra precision in the accumulator.
-            clear_less_significant_bits((INTFLOAT *)h_step, 2 * 4, 14);
-
-            call_ref(l0, r0, h, h_step, BUF_SIZE);
-            call_new(l1, r1, h, h_step, BUF_SIZE);
-            if (!float_near_abs_eps_array((float *)l0, (float *)l1, EPS, BUF_SIZE * 2) ||
-                !float_near_abs_eps_array((float *)r0, (float *)r1, EPS, BUF_SIZE * 2))
-                fail();
-
-            memcpy(l1, l, BUF_SIZE * 2 * sizeof(INTFLOAT));
-            memcpy(r1, r, BUF_SIZE * 2 * sizeof(INTFLOAT));
-            bench_new(l1, r1, h, h_step, BUF_SIZE);
-        }
-    }
-}
-
-void checkasm_check_aacpsdsp(void)
-{
-    PSDSPContext psdsp;
-
-    ff_psdsp_init(&psdsp);
-
-    if (check_func(psdsp.add_squares, "ps_add_squares"))
-        test_add_squares();
-    report("add_squares");
-
-    if (check_func(psdsp.mul_pair_single, "ps_mul_pair_single"))
-        test_mul_pair_single();
-    report("mul_pair_single");
-
-    if (check_func(psdsp.hybrid_analysis, "ps_hybrid_analysis"))
-        test_hybrid_analysis();
-    report("hybrid_analysis");
-
-    if (check_func(psdsp.hybrid_analysis_ileave, "ps_hybrid_analysis_ileave"))
-        test_hybrid_analysis_ileave();
-    report("hybrid_analysis_ileave");
-
-    if (check_func(psdsp.hybrid_synthesis_deint, "ps_hybrid_synthesis_deint"))
-        test_hybrid_synthesis_deint();
-    report("hybrid_synthesis_deint");
-
-    test_stereo_interpolate(&psdsp);
-    report("stereo_interpolate");
-}
diff --git a/tests/checkasm/aarch64/checkasm.S b/tests/checkasm/aarch64/checkasm.S
deleted file mode 100644
index 89f2b77..0000000
--- a/tests/checkasm/aarch64/checkasm.S
+++ /dev/null
@@ -1,157 +0,0 @@
-/****************************************************************************
- * Assembly testing and benchmarking tool
- * Copyright (c) 2015 Martin Storsjo
- * Copyright (c) 2015 Janne Grunau
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
- *****************************************************************************/
-
-#include "libavutil/aarch64/asm.S"
-
-const register_init, align=4
-    .quad 0x21f86d66c8ca00ce
-    .quad 0x75b6ba21077c48ad
-    .quad 0xed56bb2dcb3c7736
-    .quad 0x8bda43d3fd1a7e06
-    .quad 0xb64a9c9e5d318408
-    .quad 0xdf9a54b303f1d3a3
-    .quad 0x4a75479abd64e097
-    .quad 0x249214109d5d1c88
-    .quad 0x1a1b2550a612b48c
-    .quad 0x79445c159ce79064
-    .quad 0x2eed899d5a28ddcd
-    .quad 0x86b2536fcd8cf636
-    .quad 0xb0856806085e7943
-    .quad 0x3f2bf84fc0fcca4e
-    .quad 0xacbd382dcf5b8de2
-    .quad 0xd229e1f5b281303f
-    .quad 0x71aeaff20b095fd9
-    .quad 0xab63e2e11fa38ed9
-endconst
-
-
-const error_message
-    .asciz "failed to preserve register"
-endconst
-
-
-// max number of args used by any asm function.
-#define MAX_ARGS 15
-
-#define CLOBBER_STACK ((8*MAX_ARGS + 15) & ~15)
-
-function checkasm_stack_clobber, export=1
-    mov         x3,  sp
-    mov         x2,  #CLOBBER_STACK
-1:
-    stp         x0,  x1,  [sp, #-16]!
-    subs        x2,  x2,  #16
-    b.gt        1b
-    mov         sp,  x3
-    ret
-endfunc
-
-#define ARG_STACK ((8*(MAX_ARGS - 8) + 15) & ~15)
-
-function checkasm_checked_call, export=1
-    stp         x29, x30, [sp, #-16]!
-    mov         x29, sp
-    stp         x19, x20, [sp, #-16]!
-    stp         x21, x22, [sp, #-16]!
-    stp         x23, x24, [sp, #-16]!
-    stp         x25, x26, [sp, #-16]!
-    stp         x27, x28, [sp, #-16]!
-    stp         d8,  d9,  [sp, #-16]!
-    stp         d10, d11, [sp, #-16]!
-    stp         d12, d13, [sp, #-16]!
-    stp         d14, d15, [sp, #-16]!
-
-    movrel      x9, register_init
-    ldp         d8,  d9,  [x9], #16
-    ldp         d10, d11, [x9], #16
-    ldp         d12, d13, [x9], #16
-    ldp         d14, d15, [x9], #16
-    ldp         x19, x20, [x9], #16
-    ldp         x21, x22, [x9], #16
-    ldp         x23, x24, [x9], #16
-    ldp         x25, x26, [x9], #16
-    ldp         x27, x28, [x9], #16
-
-    sub         sp,  sp,  #ARG_STACK
-.equ pos, 0
-.rept MAX_ARGS-8
-    // Skip the first 8 args, that are loaded into registers
-    ldr         x9, [x29, #16 + 8*8 + pos]
-    str         x9, [sp, #pos]
-.equ pos, pos + 8
-.endr
-
-    mov         x12, x0
-    ldp         x0,  x1,  [x29, #16]
-    ldp         x2,  x3,  [x29, #32]
-    ldp         x4,  x5,  [x29, #48]
-    ldp         x6,  x7,  [x29, #64]
-    blr         x12
-    add         sp,  sp,  #ARG_STACK
-    stp         x0,  x1,  [sp, #-16]!
-    movrel      x9, register_init
-    movi        v3.8h,  #0
-
-.macro check_reg_neon reg1, reg2
-    ldr         q1,  [x9], #16
-    uzp1        v2.2d,  v\reg1\().2d, v\reg2\().2d
-    eor         v1.16b, v1.16b, v2.16b
-    orr         v3.16b, v3.16b, v1.16b
-.endm
-    check_reg_neon  8,  9
-    check_reg_neon  10, 11
-    check_reg_neon  12, 13
-    check_reg_neon  14, 15
-    uqxtn       v3.8b,  v3.8h
-    umov        x3,  v3.d[0]
-
-.macro check_reg reg1, reg2
-    ldp         x0,  x1,  [x9], #16
-    eor         x0,  x0,  \reg1
-    eor         x1,  x1,  \reg2
-    orr         x3,  x3,  x0
-    orr         x3,  x3,  x1
-.endm
-    check_reg   x19, x20
-    check_reg   x21, x22
-    check_reg   x23, x24
-    check_reg   x25, x26
-    check_reg   x27, x28
-
-    cbz         x3,  0f
-
-    movrel      x0, error_message
-    bl          X(checkasm_fail_func)
-0:
-    ldp         x0,  x1,  [sp], #16
-    ldp         d14, d15, [sp], #16
-    ldp         d12, d13, [sp], #16
-    ldp         d10, d11, [sp], #16
-    ldp         d8,  d9,  [sp], #16
-    ldp         x27, x28, [sp], #16
-    ldp         x25, x26, [sp], #16
-    ldp         x23, x24, [sp], #16
-    ldp         x21, x22, [sp], #16
-    ldp         x19, x20, [sp], #16
-    ldp         x29, x30, [sp], #16
-    ret
-endfunc
diff --git a/tests/checkasm/alacdsp.c b/tests/checkasm/alacdsp.c
deleted file mode 100644
index cbf03f8..0000000
--- a/tests/checkasm/alacdsp.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2015 James Almer
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/alacdsp.h"
-#include "libavcodec/mathops.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-
-#define BUF_SIZE 256
-#define MAX_CHANNELS 2
-
-#define randomize_buffers()                           \
-    do {                                              \
-        int i;                                        \
-        for (i = 0; i < BUF_SIZE*MAX_CHANNELS; i++) { \
-            int32_t r = sign_extend(rnd(), 24);       \
-            ref_buf[i] = r;                           \
-            new_buf[i] = r;                           \
-        }                                             \
-    } while (0)
-
-static void check_decorrelate_stereo(void)
-{
-    LOCAL_ALIGNED_16(int32_t, ref_buf, [BUF_SIZE*MAX_CHANNELS]);
-    LOCAL_ALIGNED_16(int32_t, new_buf, [BUF_SIZE*MAX_CHANNELS]);
-    int32_t *ref[2] = { &ref_buf[BUF_SIZE*0], &ref_buf[BUF_SIZE*1] };
-    int32_t *new[2] = { &new_buf[BUF_SIZE*0], &new_buf[BUF_SIZE*1] };
-    ALACDSPContext c;
-
-    ff_alacdsp_init(&c);
-    if (check_func(c.decorrelate_stereo, "alac_decorrelate_stereo")) {
-        int len    = (rnd() & 0xFF) + 1;
-        int shift  =  rnd() & 0x1F;
-        int weight =  rnd() & 0xFF;
-        declare_func(void, int32_t *buf[2], int len, int shift, int weight);
-
-        randomize_buffers();
-        call_ref(ref, len, shift, weight);
-        call_new(new, len, shift, weight);
-        if (memcmp(ref[0], new[0], len * sizeof(int32_t)) ||
-            memcmp(ref[1], new[1], len * sizeof(int32_t)))
-            fail();
-        bench_new(new, BUF_SIZE, shift, weight);
-    }
-
-    report("decorrelate_stereo");
-}
-
-#undef randomize_buffers
-#define randomize_buffers()                           \
-    do {                                              \
-        int i, j;                                     \
-        for (i = 0; i < BUF_SIZE; i++) {              \
-            for (j = 0; j < ch; j++) {                \
-                int32_t r = sign_extend(rnd(), 24);   \
-                ref[j][i] = r;                        \
-                new[j][i] = r;                        \
-                r = rnd() & 0xFF;                     \
-                ref_ebb[j][i] = r;                    \
-                new_ebb[j][i] = r;                    \
-            }                                         \
-        }                                             \
-    } while (0)
-
-static void check_append_extra_bits(void)
-{
-    LOCAL_ALIGNED_16(int32_t, ref_buf, [BUF_SIZE*MAX_CHANNELS*2]);
-    LOCAL_ALIGNED_16(int32_t, new_buf, [BUF_SIZE*MAX_CHANNELS*2]);
-    int32_t *ref[2]     = { &ref_buf[BUF_SIZE*0], &ref_buf[BUF_SIZE*1] };
-    int32_t *new[2]     = { &new_buf[BUF_SIZE*0], &new_buf[BUF_SIZE*1] };
-    int32_t *ref_ebb[2] = { &ref_buf[BUF_SIZE*2], &ref_buf[BUF_SIZE*3] };
-    int32_t *new_ebb[2] = { &new_buf[BUF_SIZE*2], &new_buf[BUF_SIZE*3] };
-    ALACDSPContext c;
-    static const char * const channels[2] = { "mono", "stereo" };
-    int ch;
-
-    ff_alacdsp_init(&c);
-    for (ch = 1; ch <= 2; ch++) {
-        if (check_func(c.append_extra_bits[ch-1], "alac_append_extra_bits_%s", channels[ch-1])) {
-            int len    = (rnd() & 0xFF) + 1;
-            declare_func(void, int32_t *buf[2], int32_t *ebb[2], int ebits, int ch, int len);
-
-            randomize_buffers();
-            call_ref(ref, ref_ebb, 8, ch, len);
-            call_new(new, new_ebb, 8, ch, len);
-            if (            memcmp(ref[0], new[0], len * sizeof(int32_t)) ||
-                (ch == 2 && memcmp(ref[1], new[1], len * sizeof(int32_t))))
-                fail();
-            bench_new(new, new_ebb, 8, ch, BUF_SIZE);
-        }
-    }
-
-    report("append_extra_bits");
-}
-
-void checkasm_check_alacdsp(void)
-{
-    check_decorrelate_stereo();
-    check_append_extra_bits();
-}
diff --git a/tests/checkasm/arm/checkasm.S b/tests/checkasm/arm/checkasm.S
deleted file mode 100644
index 2051b29..0000000
--- a/tests/checkasm/arm/checkasm.S
+++ /dev/null
@@ -1,168 +0,0 @@
-/****************************************************************************
- * Assembly testing and benchmarking tool
- * Copyright (c) 2015 Martin Storsjo
- * Copyright (c) 2015 Janne Grunau
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
- *****************************************************************************/
-
-#include "libavutil/arm/asm.S"
-
-/* override fpu so that NEON instructions are rejected */
-#if HAVE_VFP
-FPU     .fpu            vfp
-ELF     .eabi_attribute 10, 0           @ suppress Tag_FP_arch
-#endif
-
-const register_init, align=3
-    .quad 0x21f86d66c8ca00ce
-    .quad 0x75b6ba21077c48ad
-    .quad 0xed56bb2dcb3c7736
-    .quad 0x8bda43d3fd1a7e06
-    .quad 0xb64a9c9e5d318408
-    .quad 0xdf9a54b303f1d3a3
-    .quad 0x4a75479abd64e097
-    .quad 0x249214109d5d1c88
-endconst
-
-const error_message_fpscr
-    .asciz "failed to preserve register FPSCR, changed bits: %x"
-error_message_gpr:
-    .asciz "failed to preserve register r%d"
-error_message_vfp:
-    .asciz "failed to preserve register d%d"
-endconst
-
-@ max number of args used by any asm function.
-#define MAX_ARGS 15
-
-#define ARG_STACK 4*(MAX_ARGS - 4)
-
-@ align the used stack space to 8 to preserve the stack alignment
-#define ARG_STACK_A (((ARG_STACK + pushed + 7) & ~7) - pushed)
-
-.macro clobbercheck variant
-.equ pushed, 4*9
-function checkasm_checked_call_\variant, export=1
-    push        {r4-r11, lr}
-.ifc \variant, vfp
-    vpush       {d8-d15}
-    fmrx        r4,  FPSCR
-    push        {r4}
-.equ pushed, pushed + 16*4 + 4
-.endif
-
-    movrel      r12, register_init
-.ifc \variant, vfp
-    vldm        r12, {d8-d15}
-.endif
-    ldm         r12, {r4-r11}
-
-    sub         sp,  sp,  #ARG_STACK_A
-.equ pos, 0
-.rept MAX_ARGS-4
-    ldr         r12, [sp, #ARG_STACK_A + pushed + 8 + pos]
-    str         r12, [sp, #pos]
-.equ pos, pos + 4
-.endr
-
-    mov         r12, r0
-    mov         r0,  r2
-    mov         r1,  r3
-    ldrd        r2,  r3,  [sp, #ARG_STACK_A + pushed]
-    blx         r12
-    add         sp,  sp,  #ARG_STACK_A
-
-    push        {r0, r1}
-    movrel      r12, register_init
-.ifc \variant, vfp
-.macro check_reg_vfp, dreg, offset
-    ldrd        r2,  r3,  [r12, #8 * (\offset)]
-    vmov        r0,  lr,  \dreg
-    eor         r2,  r2,  r0
-    eor         r3,  r3,  lr
-    orrs        r2,  r2,  r3
-    bne         4f
-.endm
-
-.irp n, 8, 9, 10, 11, 12, 13, 14, 15
-    @ keep track of the checked double/SIMD register
-    mov         r1,  #\n
-    check_reg_vfp d\n, \n-8
-.endr
-.purgem check_reg_vfp
-
-    fmrx        r1,  FPSCR
-    ldr         r3,  [sp, #8]
-    eor         r1,  r1,  r3
-    @ Ignore changes in bits 0-4 and 7
-    bic         r1,  r1,  #0x9f
-    @ Ignore changes in the topmost 5 bits
-    bics        r1,  r1,  #0xf8000000
-    bne         3f
-.endif
-
-    @ keep track of the checked GPR
-    mov         r1,  #4
-.macro check_reg reg1, reg2=
-    ldrd        r2,  r3,  [r12], #8
-    eors        r2,  r2,  \reg1
-    bne         2f
-    add         r1,  r1,  #1
-.ifnb \reg2
-    eors        r3,  r3,  \reg2
-    bne         2f
-.endif
-    add         r1,  r1,  #1
-.endm
-    check_reg   r4,  r5
-    check_reg   r6,  r7
-@ r9 is a volatile register in the ios ABI
-#ifdef __APPLE__
-    check_reg   r8
-#else
-    check_reg   r8,  r9
-#endif
-    check_reg   r10, r11
-.purgem check_reg
-
-    b           0f
-4:
-    movrel      r0, error_message_vfp
-    b           1f
-3:
-    movrel      r0, error_message_fpscr
-    b           1f
-2:
-    movrel      r0, error_message_gpr
-1:
-    blx         X(checkasm_fail_func)
-0:
-    pop         {r0, r1}
-.ifc \variant, vfp
-    pop         {r2}
-    fmxr        FPSCR, r2
-    vpop        {d8-d15}
-.endif
-    pop         {r4-r11, pc}
-endfunc
-.endm
-
-#if HAVE_VFP || HAVE_NEON
-clobbercheck vfp
-#endif
-clobbercheck novfp
diff --git a/tests/checkasm/audiodsp.c b/tests/checkasm/audiodsp.c
deleted file mode 100644
index 7c4e16e..0000000
--- a/tests/checkasm/audiodsp.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <math.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "libavcodec/audiodsp.h"
-
-#include "libavutil/common.h"
-#include "libavutil/intreadwrite.h"
-
-#include "checkasm.h"
-
-#define MAX_SIZE (32 * 128)
-
-#define randomize_float(buf, len)                               \
-    do {                                                        \
-        int i;                                                  \
-        for (i = 0; i < len; i++) {                             \
-            float f = (float)rnd() / (UINT_MAX >> 5) - 16.0f;   \
-            buf[i] = f;                                         \
-        }                                                       \
-    } while (0)
-
-#define randomize_int(buf, len, size, bits)                         \
-    do {                                                            \
-        int i;                                                      \
-        for (i = 0; i < len; i++) {                                 \
-            uint ## size ## _t r = rnd() & ((1LL << bits) - 1);     \
-            AV_WN ## size ## A(buf + i, -(1LL << (bits - 1)) + r);  \
-        }                                                           \
-    } while (0)
-
-void checkasm_check_audiodsp(void)
-{
-    AudioDSPContext adsp;
-
-    ff_audiodsp_init(&adsp);
-
-    if (check_func(adsp.scalarproduct_int16, "audiodsp.scalarproduct_int16")) {
-        LOCAL_ALIGNED(32, int16_t, v1, [MAX_SIZE]);
-        LOCAL_ALIGNED(32, int16_t, v2, [MAX_SIZE]);
-        unsigned int len_bits_minus4, v1_bits, v2_bits, len;
-        int32_t res0, res1;
-
-        declare_func_emms(AV_CPU_FLAG_MMX, int32_t, const int16_t *v1, const int16_t *v2, int len);
-
-        // generate random 5-12bit vector length
-        len_bits_minus4 = rnd() % 8;
-        len = rnd() & ((1 << len_bits_minus4) - 1);
-        len = 16 * FFMAX(len, 1);
-
-        // generate the bit counts for each of the vectors such that the result
-        // fits into int32
-        v1_bits = 1 + rnd() % 15;
-        v2_bits = FFMIN(32 - (len_bits_minus4 + 4) - v1_bits - 1, 15);
-
-        randomize_int(v1, MAX_SIZE, 16, v1_bits + 1);
-        randomize_int(v2, MAX_SIZE, 16, v2_bits + 1);
-
-        res0 = call_ref(v1, v2, len);
-        res1 = call_new(v1, v2, len);
-        if (res0 != res1)
-            fail();
-        bench_new(v1, v2, MAX_SIZE);
-    }
-
-    if (check_func(adsp.vector_clip_int32, "audiodsp.vector_clip_int32")) {
-        LOCAL_ALIGNED(32, int32_t, src,  [MAX_SIZE]);
-        LOCAL_ALIGNED(32, int32_t, dst0, [MAX_SIZE]);
-        LOCAL_ALIGNED(32, int32_t, dst1, [MAX_SIZE]);
-        int32_t val1, val2, min, max;
-        int len;
-
-        declare_func_emms(AV_CPU_FLAG_MMX, void, int32_t *dst, const int32_t *src,
-                          int32_t min, int32_t max, unsigned int len);
-
-        val1 = ((int32_t)rnd());
-        val1 = FFSIGN(val1) * (val1 & ((1 << 24) - 1));
-        val2 = ((int32_t)rnd());
-        val2 = FFSIGN(val2) * (val2 & ((1 << 24) - 1));
-
-        min = FFMIN(val1, val2);
-        max = FFMAX(val1, val2);
-
-        randomize_int(src, MAX_SIZE, 32, 32);
-
-        len = rnd() % 128;
-        len = 32 * FFMAX(len, 1);
-
-        call_ref(dst0, src, min, max, len);
-        call_new(dst1, src, min, max, len);
-        if (memcmp(dst0, dst1, len * sizeof(*dst0)))
-            fail();
-        bench_new(dst1, src, min, max, MAX_SIZE);
-    }
-
-    if (check_func(adsp.vector_clipf, "audiodsp.vector_clipf")) {
-        LOCAL_ALIGNED(32, float, src, [MAX_SIZE]);
-        LOCAL_ALIGNED(32, float, dst0, [MAX_SIZE]);
-        LOCAL_ALIGNED(32, float, dst1, [MAX_SIZE]);
-        float val1, val2, min, max;
-        int i, len;
-
-        declare_func_emms(AV_CPU_FLAG_MMX, void, float *dst, const float *src,
-                          int len, float min, float max);
-
-        val1 = (float)rnd() / (UINT_MAX >> 1) - 1.0f;
-        val2 = (float)rnd() / (UINT_MAX >> 1) - 1.0f;
-
-        min = FFMIN(val1, val2);
-        max = FFMAX(val1, val2);
-
-        randomize_float(src, MAX_SIZE);
-
-        len = rnd() % 128;
-        len = 16 * FFMAX(len, 1);
-
-        call_ref(dst0, src, len, min, max);
-        call_new(dst1, src, len, min, max);
-        for (i = 0; i < len; i++) {
-            if (!float_near_ulp_array(dst0, dst1, 3, len))
-                fail();
-        }
-        bench_new(dst1, src, MAX_SIZE, min, max);
-    }
-
-    report("audiodsp");
-}
diff --git a/tests/checkasm/blockdsp.c b/tests/checkasm/blockdsp.c
deleted file mode 100644
index c753506..0000000
--- a/tests/checkasm/blockdsp.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2015 Henrik Gramner
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-
-#include "checkasm.h"
-
-#include "libavcodec/blockdsp.h"
-
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-#define randomize_buffers(size)             \
-    do {                                    \
-        int i;                              \
-        for (i = 0; i < size; i++) {        \
-            uint16_t r = rnd();             \
-            AV_WN16A(buf0 + i, r);          \
-            AV_WN16A(buf1 + i, r);          \
-        }                                   \
-    } while (0)
-
-#define check_clear(func, size)                                     \
-do {                                                                \
-    if (check_func(h.func, "blockdsp." #func)) {                    \
-        declare_func_emms(AV_CPU_FLAG_MMX, void, int16_t *block);   \
-        randomize_buffers(size);                                    \
-        call_ref(buf0);                                             \
-        call_new(buf1);                                             \
-        if (memcmp(buf0, buf1, sizeof(*buf0) * size))               \
-            fail();                                                 \
-        bench_new(buf0);                                            \
-    }                                                               \
-} while (0)
-
-void checkasm_check_blockdsp(void)
-{
-    LOCAL_ALIGNED_32(uint16_t, buf0, [6 * 8 * 8]);
-    LOCAL_ALIGNED_32(uint16_t, buf1, [6 * 8 * 8]);
-
-    AVCodecContext avctx = { 0 };
-    BlockDSPContext h;
-
-    ff_blockdsp_init(&h, &avctx);
-
-    check_clear(clear_block,  8 * 8);
-    check_clear(clear_blocks, 8 * 8 * 6);
-
-    report("blockdsp");
-}
diff --git a/tests/checkasm/bswapdsp.c b/tests/checkasm/bswapdsp.c
deleted file mode 100644
index 5f75550..0000000
--- a/tests/checkasm/bswapdsp.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2015 Henrik Gramner
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/bswapdsp.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-#define BUF_SIZE 512
-
-#define randomize_buffers()                 \
-    do {                                    \
-        int i;                              \
-        for (i = 0; i < BUF_SIZE; i += 4) { \
-            uint32_t r = rnd();             \
-            AV_WN32A(src0 + i, r);          \
-            AV_WN32A(src1 + i, r);          \
-            r = rnd();                      \
-            AV_WN32A(dst0 + i, r);          \
-            AV_WN32A(dst1 + i, r);          \
-        }                                   \
-    } while (0)
-
-#define check_bswap(type)                                                                  \
-    do {                                                                                   \
-        int w;                                                                             \
-        declare_func(void, type *dst, const type *src, int w);                             \
-                                                                                           \
-        for (w = 0; w < BUF_SIZE / sizeof(type); w++) {                                    \
-            int offset = (BUF_SIZE / sizeof(type) - w) & 15; /* Test various alignments */ \
-            randomize_buffers();                                                           \
-            call_ref((type *)dst0 + offset, (type *)src0 + offset, w);                     \
-            call_new((type *)dst1 + offset, (type *)src1 + offset, w);                     \
-            if (memcmp(src0, src1, BUF_SIZE) || memcmp(dst0, dst1, BUF_SIZE))              \
-                fail();                                                                    \
-            bench_new((type *)dst1 + offset, (type *)src1 + offset, w);                    \
-        }                                                                                  \
-    } while (0)
-
-void checkasm_check_bswapdsp(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, src0, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, src1, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, dst0, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, dst1, [BUF_SIZE]);
-    BswapDSPContext h;
-
-    ff_bswapdsp_init(&h);
-
-    if (check_func(h.bswap_buf, "bswap_buf"))
-        check_bswap(uint32_t);
-
-    if (check_func(h.bswap16_buf, "bswap16_buf"))
-        check_bswap(uint16_t);
-
-    report("bswap");
-}
diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c
deleted file mode 100644
index d67147a..0000000
--- a/tests/checkasm/checkasm.c
+++ /dev/null
@@ -1,838 +0,0 @@
-/*
- * Assembly testing and benchmarking tool
- * Copyright (c) 2015 Henrik Gramner
- * Copyright (c) 2008 Loren Merritt
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "config.h"
-
-#if CONFIG_LINUX_PERF
-# ifndef _GNU_SOURCE
-#  define _GNU_SOURCE // for syscall (performance monitoring API)
-# endif
-#endif
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "checkasm.h"
-#include "libavutil/common.h"
-#include "libavutil/cpu.h"
-#include "libavutil/intfloat.h"
-#include "libavutil/random_seed.h"
-
-#if HAVE_IO_H
-#include <io.h>
-#endif
-
-#if HAVE_SETCONSOLETEXTATTRIBUTE && HAVE_GETSTDHANDLE
-#include <windows.h>
-#define COLOR_RED    FOREGROUND_RED
-#define COLOR_GREEN  FOREGROUND_GREEN
-#define COLOR_YELLOW (FOREGROUND_RED|FOREGROUND_GREEN)
-#else
-#define COLOR_RED    1
-#define COLOR_GREEN  2
-#define COLOR_YELLOW 3
-#endif
-
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#if !HAVE_ISATTY
-#define isatty(fd) 1
-#endif
-
-#if ARCH_ARM && HAVE_ARMV5TE_EXTERNAL
-#include "libavutil/arm/cpu.h"
-
-void (*checkasm_checked_call)(void *func, int dummy, ...) = checkasm_checked_call_novfp;
-#endif
-
-/* List of tests to invoke */
-static const struct {
-    const char *name;
-    void (*func)(void);
-} tests[] = {
-#if CONFIG_AVCODEC
-    #if CONFIG_AAC_DECODER
-        { "aacpsdsp", checkasm_check_aacpsdsp },
-        { "sbrdsp",   checkasm_check_sbrdsp },
-    #endif
-    #if CONFIG_ALAC_DECODER
-        { "alacdsp", checkasm_check_alacdsp },
-    #endif
-    #if CONFIG_AUDIODSP
-        { "audiodsp", checkasm_check_audiodsp },
-    #endif
-    #if CONFIG_BLOCKDSP
-        { "blockdsp", checkasm_check_blockdsp },
-    #endif
-    #if CONFIG_BSWAPDSP
-        { "bswapdsp", checkasm_check_bswapdsp },
-    #endif
-    #if CONFIG_DCA_DECODER
-        { "synth_filter", checkasm_check_synth_filter },
-    #endif
-    #if CONFIG_EXR_DECODER
-        { "exrdsp", checkasm_check_exrdsp },
-    #endif
-    #if CONFIG_FLACDSP
-        { "flacdsp", checkasm_check_flacdsp },
-    #endif
-    #if CONFIG_FMTCONVERT
-        { "fmtconvert", checkasm_check_fmtconvert },
-    #endif
-    #if CONFIG_G722DSP
-        { "g722dsp", checkasm_check_g722dsp },
-    #endif
-    #if CONFIG_H264DSP
-        { "h264dsp", checkasm_check_h264dsp },
-    #endif
-    #if CONFIG_H264PRED
-        { "h264pred", checkasm_check_h264pred },
-    #endif
-    #if CONFIG_H264QPEL
-        { "h264qpel", checkasm_check_h264qpel },
-    #endif
-    #if CONFIG_HEVC_DECODER
-        { "hevc_add_res", checkasm_check_hevc_add_res },
-        { "hevc_idct", checkasm_check_hevc_idct },
-        { "hevc_sao", checkasm_check_hevc_sao },
-    #endif
-    #if CONFIG_HUFFYUV_DECODER
-        { "huffyuvdsp", checkasm_check_huffyuvdsp },
-    #endif
-    #if CONFIG_JPEG2000_DECODER
-        { "jpeg2000dsp", checkasm_check_jpeg2000dsp },
-    #endif
-    #if CONFIG_HUFFYUVDSP
-        { "llviddsp", checkasm_check_llviddsp },
-    #endif
-    #if CONFIG_LLVIDENCDSP
-        { "llviddspenc", checkasm_check_llviddspenc },
-    #endif
-    #if CONFIG_OPUS_DECODER
-        { "opusdsp", checkasm_check_opusdsp },
-    #endif
-    #if CONFIG_PIXBLOCKDSP
-        { "pixblockdsp", checkasm_check_pixblockdsp },
-    #endif
-    #if CONFIG_UTVIDEO_DECODER
-        { "utvideodsp", checkasm_check_utvideodsp },
-    #endif
-    #if CONFIG_V210_DECODER
-        { "v210dec", checkasm_check_v210dec },
-    #endif
-    #if CONFIG_V210_ENCODER
-        { "v210enc", checkasm_check_v210enc },
-    #endif
-    #if CONFIG_VP8DSP
-        { "vp8dsp", checkasm_check_vp8dsp },
-    #endif
-    #if CONFIG_VP9_DECODER
-        { "vp9dsp", checkasm_check_vp9dsp },
-    #endif
-    #if CONFIG_VIDEODSP
-        { "videodsp", checkasm_check_videodsp },
-    #endif
-#endif
-#if CONFIG_AVFILTER
-    #if CONFIG_AFIR_FILTER
-        { "af_afir", checkasm_check_afir },
-    #endif
-    #if CONFIG_BLEND_FILTER
-        { "vf_blend", checkasm_check_blend },
-    #endif
-    #if CONFIG_COLORSPACE_FILTER
-        { "vf_colorspace", checkasm_check_colorspace },
-    #endif
-    #if CONFIG_EQ_FILTER
-        { "vf_eq", checkasm_check_vf_eq },
-    #endif
-    #if CONFIG_GBLUR_FILTER
-        { "vf_gblur", checkasm_check_vf_gblur },
-    #endif
-    #if CONFIG_HFLIP_FILTER
-        { "vf_hflip", checkasm_check_vf_hflip },
-    #endif
-    #if CONFIG_NLMEANS_FILTER
-        { "vf_nlmeans", checkasm_check_nlmeans },
-    #endif
-    #if CONFIG_THRESHOLD_FILTER
-        { "vf_threshold", checkasm_check_vf_threshold },
-    #endif
-#endif
-#if CONFIG_SWSCALE
-    { "sw_rgb", checkasm_check_sw_rgb },
-#endif
-#if CONFIG_AVUTIL
-        { "fixed_dsp", checkasm_check_fixed_dsp },
-        { "float_dsp", checkasm_check_float_dsp },
-#endif
-    { NULL }
-};
-
-/* List of cpu flags to check */
-static const struct {
-    const char *name;
-    const char *suffix;
-    int flag;
-} cpus[] = {
-#if   ARCH_AARCH64
-    { "ARMV8",    "armv8",    AV_CPU_FLAG_ARMV8 },
-    { "NEON",     "neon",     AV_CPU_FLAG_NEON },
-#elif ARCH_ARM
-    { "ARMV5TE",  "armv5te",  AV_CPU_FLAG_ARMV5TE },
-    { "ARMV6",    "armv6",    AV_CPU_FLAG_ARMV6 },
-    { "ARMV6T2",  "armv6t2",  AV_CPU_FLAG_ARMV6T2 },
-    { "VFP",      "vfp",      AV_CPU_FLAG_VFP },
-    { "VFP_VM",   "vfp_vm",   AV_CPU_FLAG_VFP_VM },
-    { "VFPV3",    "vfp3",     AV_CPU_FLAG_VFPV3 },
-    { "NEON",     "neon",     AV_CPU_FLAG_NEON },
-#elif ARCH_PPC
-    { "ALTIVEC",  "altivec",  AV_CPU_FLAG_ALTIVEC },
-    { "VSX",      "vsx",      AV_CPU_FLAG_VSX },
-    { "POWER8",   "power8",   AV_CPU_FLAG_POWER8 },
-#elif ARCH_X86
-    { "MMX",      "mmx",      AV_CPU_FLAG_MMX|AV_CPU_FLAG_CMOV },
-    { "MMXEXT",   "mmxext",   AV_CPU_FLAG_MMXEXT },
-    { "3DNOW",    "3dnow",    AV_CPU_FLAG_3DNOW },
-    { "3DNOWEXT", "3dnowext", AV_CPU_FLAG_3DNOWEXT },
-    { "SSE",      "sse",      AV_CPU_FLAG_SSE },
-    { "SSE2",     "sse2",     AV_CPU_FLAG_SSE2|AV_CPU_FLAG_SSE2SLOW },
-    { "SSE3",     "sse3",     AV_CPU_FLAG_SSE3|AV_CPU_FLAG_SSE3SLOW },
-    { "SSSE3",    "ssse3",    AV_CPU_FLAG_SSSE3|AV_CPU_FLAG_ATOM },
-    { "SSE4.1",   "sse4",     AV_CPU_FLAG_SSE4 },
-    { "SSE4.2",   "sse42",    AV_CPU_FLAG_SSE42 },
-    { "AES-NI",   "aesni",    AV_CPU_FLAG_AESNI },
-    { "AVX",      "avx",      AV_CPU_FLAG_AVX },
-    { "XOP",      "xop",      AV_CPU_FLAG_XOP },
-    { "FMA3",     "fma3",     AV_CPU_FLAG_FMA3 },
-    { "FMA4",     "fma4",     AV_CPU_FLAG_FMA4 },
-    { "AVX2",     "avx2",     AV_CPU_FLAG_AVX2 },
-    { "AVX-512",  "avx512",   AV_CPU_FLAG_AVX512 },
-#endif
-    { NULL }
-};
-
-typedef struct CheckasmFuncVersion {
-    struct CheckasmFuncVersion *next;
-    void *func;
-    int ok;
-    int cpu;
-    CheckasmPerf perf;
-} CheckasmFuncVersion;
-
-/* Binary search tree node */
-typedef struct CheckasmFunc {
-    struct CheckasmFunc *child[2];
-    CheckasmFuncVersion versions;
-    uint8_t color; /* 0 = red, 1 = black */
-    char name[1];
-} CheckasmFunc;
-
-/* Internal state */
-static struct {
-    CheckasmFunc *funcs;
-    CheckasmFunc *current_func;
-    CheckasmFuncVersion *current_func_ver;
-    const char *current_test_name;
-    const char *bench_pattern;
-    int bench_pattern_len;
-    int num_checked;
-    int num_failed;
-
-    /* perf */
-    int nop_time;
-    int sysfd;
-
-    int cpu_flag;
-    const char *cpu_flag_name;
-    const char *test_name;
-} state;
-
-/* PRNG state */
-AVLFG checkasm_lfg;
-
-/* float compare support code */
-static int is_negative(union av_intfloat32 u)
-{
-    return u.i >> 31;
-}
-
-int float_near_ulp(float a, float b, unsigned max_ulp)
-{
-    union av_intfloat32 x, y;
-
-    x.f = a;
-    y.f = b;
-
-    if (is_negative(x) != is_negative(y)) {
-        // handle -0.0 == +0.0
-        return a == b;
-    }
-
-    if (llabs((int64_t)x.i - y.i) <= max_ulp)
-        return 1;
-
-    return 0;
-}
-
-int float_near_ulp_array(const float *a, const float *b, unsigned max_ulp,
-                         unsigned len)
-{
-    unsigned i;
-
-    for (i = 0; i < len; i++) {
-        if (!float_near_ulp(a[i], b[i], max_ulp))
-            return 0;
-    }
-    return 1;
-}
-
-int float_near_abs_eps(float a, float b, float eps)
-{
-    float abs_diff = fabsf(a - b);
-    if (abs_diff < eps)
-        return 1;
-
-    fprintf(stderr, "test failed comparing %g with %g (abs diff=%g with EPS=%g)\n", a, b, abs_diff, eps);
-
-    return 0;
-}
-
-int float_near_abs_eps_array(const float *a, const float *b, float eps,
-                         unsigned len)
-{
-    unsigned i;
-
-    for (i = 0; i < len; i++) {
-        if (!float_near_abs_eps(a[i], b[i], eps))
-            return 0;
-    }
-    return 1;
-}
-
-int float_near_abs_eps_ulp(float a, float b, float eps, unsigned max_ulp)
-{
-    return float_near_ulp(a, b, max_ulp) || float_near_abs_eps(a, b, eps);
-}
-
-int float_near_abs_eps_array_ulp(const float *a, const float *b, float eps,
-                         unsigned max_ulp, unsigned len)
-{
-    unsigned i;
-
-    for (i = 0; i < len; i++) {
-        if (!float_near_abs_eps_ulp(a[i], b[i], eps, max_ulp))
-            return 0;
-    }
-    return 1;
-}
-
-int double_near_abs_eps(double a, double b, double eps)
-{
-    double abs_diff = fabs(a - b);
-
-    return abs_diff < eps;
-}
-
-int double_near_abs_eps_array(const double *a, const double *b, double eps,
-                              unsigned len)
-{
-    unsigned i;
-
-    for (i = 0; i < len; i++) {
-        if (!double_near_abs_eps(a[i], b[i], eps))
-            return 0;
-    }
-    return 1;
-}
-
-/* Print colored text to stderr if the terminal supports it */
-static void color_printf(int color, const char *fmt, ...)
-{
-    static int use_color = -1;
-    va_list arg;
-
-#if HAVE_SETCONSOLETEXTATTRIBUTE && HAVE_GETSTDHANDLE
-    static HANDLE con;
-    static WORD org_attributes;
-
-    if (use_color < 0) {
-        CONSOLE_SCREEN_BUFFER_INFO con_info;
-        con = GetStdHandle(STD_ERROR_HANDLE);
-        if (con && con != INVALID_HANDLE_VALUE && GetConsoleScreenBufferInfo(con, &con_info)) {
-            org_attributes = con_info.wAttributes;
-            use_color = 1;
-        } else
-            use_color = 0;
-    }
-    if (use_color)
-        SetConsoleTextAttribute(con, (org_attributes & 0xfff0) | (color & 0x0f));
-#else
-    if (use_color < 0) {
-        const char *term = getenv("TERM");
-        use_color = term && strcmp(term, "dumb") && isatty(2);
-    }
-    if (use_color)
-        fprintf(stderr, "\x1b[%d;3%dm", (color & 0x08) >> 3, color & 0x07);
-#endif
-
-    va_start(arg, fmt);
-    vfprintf(stderr, fmt, arg);
-    va_end(arg);
-
-    if (use_color) {
-#if HAVE_SETCONSOLETEXTATTRIBUTE && HAVE_GETSTDHANDLE
-        SetConsoleTextAttribute(con, org_attributes);
-#else
-        fprintf(stderr, "\x1b[0m");
-#endif
-    }
-}
-
-/* Deallocate a tree */
-static void destroy_func_tree(CheckasmFunc *f)
-{
-    if (f) {
-        CheckasmFuncVersion *v = f->versions.next;
-        while (v) {
-            CheckasmFuncVersion *next = v->next;
-            free(v);
-            v = next;
-        }
-
-        destroy_func_tree(f->child[0]);
-        destroy_func_tree(f->child[1]);
-        free(f);
-    }
-}
-
-/* Allocate a zero-initialized block, clean up and exit on failure */
-static void *checkasm_malloc(size_t size)
-{
-    void *ptr = calloc(1, size);
-    if (!ptr) {
-        fprintf(stderr, "checkasm: malloc failed\n");
-        destroy_func_tree(state.funcs);
-        exit(1);
-    }
-    return ptr;
-}
-
-/* Get the suffix of the specified cpu flag */
-static const char *cpu_suffix(int cpu)
-{
-    int i = FF_ARRAY_ELEMS(cpus);
-
-    while (--i >= 0)
-        if (cpu & cpus[i].flag)
-            return cpus[i].suffix;
-
-    return "c";
-}
-
-static int cmp_nop(const void *a, const void *b)
-{
-    return *(const uint16_t*)a - *(const uint16_t*)b;
-}
-
-/* Measure the overhead of the timing code (in decicycles) */
-static int measure_nop_time(void)
-{
-    uint16_t nops[10000];
-    int i, nop_sum = 0;
-    av_unused const int sysfd = state.sysfd;
-
-    uint64_t t = 0;
-    for (i = 0; i < 10000; i++) {
-        PERF_START(t);
-        PERF_STOP(t);
-        nops[i] = t;
-    }
-
-    qsort(nops, 10000, sizeof(uint16_t), cmp_nop);
-    for (i = 2500; i < 7500; i++)
-        nop_sum += nops[i];
-
-    return nop_sum / 500;
-}
-
-/* Print benchmark results */
-static void print_benchs(CheckasmFunc *f)
-{
-    if (f) {
-        print_benchs(f->child[0]);
-
-        /* Only print functions with at least one assembly version */
-        if (f->versions.cpu || f->versions.next) {
-            CheckasmFuncVersion *v = &f->versions;
-            do {
-                CheckasmPerf *p = &v->perf;
-                if (p->iterations) {
-                    int decicycles = (10*p->cycles/p->iterations - state.nop_time) / 4;
-                    printf("%s_%s: %d.%d\n", f->name, cpu_suffix(v->cpu), decicycles/10, decicycles%10);
-                }
-            } while ((v = v->next));
-        }
-
-        print_benchs(f->child[1]);
-    }
-}
-
-/* ASCIIbetical sort except preserving natural order for numbers */
-static int cmp_func_names(const char *a, const char *b)
-{
-    const char *start = a;
-    int ascii_diff, digit_diff;
-
-    for (; !(ascii_diff = *(const unsigned char*)a - *(const unsigned char*)b) && *a; a++, b++);
-    for (; av_isdigit(*a) && av_isdigit(*b); a++, b++);
-
-    if (a > start && av_isdigit(a[-1]) && (digit_diff = av_isdigit(*a) - av_isdigit(*b)))
-        return digit_diff;
-
-    return ascii_diff;
-}
-
-/* Perform a tree rotation in the specified direction and return the new root */
-static CheckasmFunc *rotate_tree(CheckasmFunc *f, int dir)
-{
-    CheckasmFunc *r = f->child[dir^1];
-    f->child[dir^1] = r->child[dir];
-    r->child[dir] = f;
-    r->color = f->color;
-    f->color = 0;
-    return r;
-}
-
-#define is_red(f) ((f) && !(f)->color)
-
-/* Balance a left-leaning red-black tree at the specified node */
-static void balance_tree(CheckasmFunc **root)
-{
-    CheckasmFunc *f = *root;
-
-    if (is_red(f->child[0]) && is_red(f->child[1])) {
-        f->color ^= 1;
-        f->child[0]->color = f->child[1]->color = 1;
-    }
-
-    if (!is_red(f->child[0]) && is_red(f->child[1]))
-        *root = rotate_tree(f, 0); /* Rotate left */
-    else if (is_red(f->child[0]) && is_red(f->child[0]->child[0]))
-        *root = rotate_tree(f, 1); /* Rotate right */
-}
-
-/* Get a node with the specified name, creating it if it doesn't exist */
-static CheckasmFunc *get_func(CheckasmFunc **root, const char *name)
-{
-    CheckasmFunc *f = *root;
-
-    if (f) {
-        /* Search the tree for a matching node */
-        int cmp = cmp_func_names(name, f->name);
-        if (cmp) {
-            f = get_func(&f->child[cmp > 0], name);
-
-            /* Rebalance the tree on the way up if a new node was inserted */
-            if (!f->versions.func)
-                balance_tree(root);
-        }
-    } else {
-        /* Allocate and insert a new node into the tree */
-        int name_length = strlen(name);
-        f = *root = checkasm_malloc(sizeof(CheckasmFunc) + name_length);
-        memcpy(f->name, name, name_length + 1);
-    }
-
-    return f;
-}
-
-/* Perform tests and benchmarks for the specified cpu flag if supported by the host */
-static void check_cpu_flag(const char *name, int flag)
-{
-    int old_cpu_flag = state.cpu_flag;
-
-    flag |= old_cpu_flag;
-    av_force_cpu_flags(-1);
-    state.cpu_flag = flag & av_get_cpu_flags();
-    av_force_cpu_flags(state.cpu_flag);
-
-    if (!flag || state.cpu_flag != old_cpu_flag) {
-        int i;
-
-        state.cpu_flag_name = name;
-        for (i = 0; tests[i].func; i++) {
-            if (state.test_name && strcmp(tests[i].name, state.test_name))
-                continue;
-            state.current_test_name = tests[i].name;
-            tests[i].func();
-        }
-    }
-}
-
-/* Print the name of the current CPU flag, but only do it once */
-static void print_cpu_name(void)
-{
-    if (state.cpu_flag_name) {
-        color_printf(COLOR_YELLOW, "%s:\n", state.cpu_flag_name);
-        state.cpu_flag_name = NULL;
-    }
-}
-
-#if CONFIG_LINUX_PERF
-static int bench_init_linux(void)
-{
-    struct perf_event_attr attr = {
-        .type           = PERF_TYPE_HARDWARE,
-        .size           = sizeof(struct perf_event_attr),
-        .config         = PERF_COUNT_HW_CPU_CYCLES,
-        .disabled       = 1, // start counting only on demand
-        .exclude_kernel = 1,
-        .exclude_hv     = 1,
-    };
-
-    printf("benchmarking with Linux Perf Monitoring API\n");
-
-    state.sysfd = syscall(__NR_perf_event_open, &attr, 0, -1, -1, 0);
-    if (state.sysfd == -1) {
-        perror("syscall");
-        return -1;
-    }
-    return 0;
-}
-#endif
-
-#if !CONFIG_LINUX_PERF
-static int bench_init_ffmpeg(void)
-{
-#ifdef AV_READ_TIME
-    printf("benchmarking with native FFmpeg timers\n");
-    return 0;
-#else
-    fprintf(stderr, "checkasm: --bench is not supported on your system\n");
-    return -1;
-#endif
-}
-#endif
-
-static int bench_init(void)
-{
-#if CONFIG_LINUX_PERF
-    int ret = bench_init_linux();
-#else
-    int ret = bench_init_ffmpeg();
-#endif
-    if (ret < 0)
-        return ret;
-
-    state.nop_time = measure_nop_time();
-    printf("nop: %d.%d\n", state.nop_time/10, state.nop_time%10);
-    return 0;
-}
-
-static void bench_uninit(void)
-{
-#if CONFIG_LINUX_PERF
-    if (state.sysfd > 0)
-        close(state.sysfd);
-#endif
-}
-
-int main(int argc, char *argv[])
-{
-    unsigned int seed = av_get_random_seed();
-    int i, ret = 0;
-
-#if ARCH_ARM && HAVE_ARMV5TE_EXTERNAL
-    if (have_vfp(av_get_cpu_flags()) || have_neon(av_get_cpu_flags()))
-        checkasm_checked_call = checkasm_checked_call_vfp;
-#endif
-
-    if (!tests[0].func || !cpus[0].flag) {
-        fprintf(stderr, "checkasm: no tests to perform\n");
-        return 0;
-    }
-
-    while (argc > 1) {
-        if (!strncmp(argv[1], "--bench", 7)) {
-            if (bench_init() < 0)
-                return 1;
-            if (argv[1][7] == '=') {
-                state.bench_pattern = argv[1] + 8;
-                state.bench_pattern_len = strlen(state.bench_pattern);
-            } else
-                state.bench_pattern = "";
-        } else if (!strncmp(argv[1], "--test=", 7)) {
-            state.test_name = argv[1] + 7;
-        } else {
-            seed = strtoul(argv[1], NULL, 10);
-        }
-
-        argc--;
-        argv++;
-    }
-
-    fprintf(stderr, "checkasm: using random seed %u\n", seed);
-    av_lfg_init(&checkasm_lfg, seed);
-
-    check_cpu_flag(NULL, 0);
-    for (i = 0; cpus[i].flag; i++)
-        check_cpu_flag(cpus[i].name, cpus[i].flag);
-
-    if (state.num_failed) {
-        fprintf(stderr, "checkasm: %d of %d tests have failed\n", state.num_failed, state.num_checked);
-        ret = 1;
-    } else {
-        fprintf(stderr, "checkasm: all %d tests passed\n", state.num_checked);
-        if (state.bench_pattern) {
-            print_benchs(state.funcs);
-        }
-    }
-
-    destroy_func_tree(state.funcs);
-    bench_uninit();
-    return ret;
-}
-
-/* Decide whether or not the specified function needs to be tested and
- * allocate/initialize data structures if needed. Returns a pointer to a
- * reference function if the function should be tested, otherwise NULL */
-void *checkasm_check_func(void *func, const char *name, ...)
-{
-    char name_buf[256];
-    void *ref = func;
-    CheckasmFuncVersion *v;
-    int name_length;
-    va_list arg;
-
-    va_start(arg, name);
-    name_length = vsnprintf(name_buf, sizeof(name_buf), name, arg);
-    va_end(arg);
-
-    if (!func || name_length <= 0 || name_length >= sizeof(name_buf))
-        return NULL;
-
-    state.current_func = get_func(&state.funcs, name_buf);
-    state.funcs->color = 1;
-    v = &state.current_func->versions;
-
-    if (v->func) {
-        CheckasmFuncVersion *prev;
-        do {
-            /* Only test functions that haven't already been tested */
-            if (v->func == func)
-                return NULL;
-
-            if (v->ok)
-                ref = v->func;
-
-            prev = v;
-        } while ((v = v->next));
-
-        v = prev->next = checkasm_malloc(sizeof(CheckasmFuncVersion));
-    }
-
-    v->func = func;
-    v->ok = 1;
-    v->cpu = state.cpu_flag;
-    state.current_func_ver = v;
-
-    if (state.cpu_flag)
-        state.num_checked++;
-
-    return ref;
-}
-
-/* Decide whether or not the current function needs to be benchmarked */
-int checkasm_bench_func(void)
-{
-    return !state.num_failed && state.bench_pattern &&
-           !strncmp(state.current_func->name, state.bench_pattern, state.bench_pattern_len);
-}
-
-/* Indicate that the current test has failed */
-void checkasm_fail_func(const char *msg, ...)
-{
-    if (state.current_func_ver->cpu && state.current_func_ver->ok) {
-        va_list arg;
-
-        print_cpu_name();
-        fprintf(stderr, "   %s_%s (", state.current_func->name, cpu_suffix(state.current_func_ver->cpu));
-        va_start(arg, msg);
-        vfprintf(stderr, msg, arg);
-        va_end(arg);
-        fprintf(stderr, ")\n");
-
-        state.current_func_ver->ok = 0;
-        state.num_failed++;
-    }
-}
-
-/* Get the benchmark context of the current function */
-CheckasmPerf *checkasm_get_perf_context(void)
-{
-    CheckasmPerf *perf = &state.current_func_ver->perf;
-    memset(perf, 0, sizeof(*perf));
-    perf->sysfd = state.sysfd;
-    return perf;
-}
-
-/* Print the outcome of all tests performed since the last time this function was called */
-void checkasm_report(const char *name, ...)
-{
-    static int prev_checked, prev_failed, max_length;
-
-    if (state.num_checked > prev_checked) {
-        int pad_length = max_length + 4;
-        va_list arg;
-
-        print_cpu_name();
-        pad_length -= fprintf(stderr, " - %s.", state.current_test_name);
-        va_start(arg, name);
-        pad_length -= vfprintf(stderr, name, arg);
-        va_end(arg);
-        fprintf(stderr, "%*c", FFMAX(pad_length, 0) + 2, '[');
-
-        if (state.num_failed == prev_failed)
-            color_printf(COLOR_GREEN, "OK");
-        else
-            color_printf(COLOR_RED, "FAILED");
-        fprintf(stderr, "]\n");
-
-        prev_checked = state.num_checked;
-        prev_failed  = state.num_failed;
-    } else if (!state.cpu_flag) {
-        /* Calculate the amount of padding required to make the output vertically aligned */
-        int length = strlen(state.current_test_name);
-        va_list arg;
-
-        va_start(arg, name);
-        length += vsnprintf(NULL, 0, name, arg);
-        va_end(arg);
-
-        if (length > max_length)
-            max_length = length;
-    }
-}
diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
deleted file mode 100644
index 0a7f9f2..0000000
--- a/tests/checkasm/checkasm.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Assembly testing and benchmarking tool
- * Copyright (c) 2015 Henrik Gramner
- * Copyright (c) 2008 Loren Merritt
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef TESTS_CHECKASM_CHECKASM_H
-#define TESTS_CHECKASM_CHECKASM_H
-
-#include <stdint.h>
-#include "config.h"
-
-#if CONFIG_LINUX_PERF
-#include <unistd.h> // read(3)
-#include <sys/ioctl.h>
-#include <asm/unistd.h>
-#include <linux/perf_event.h>
-#endif
-
-#include "libavutil/avstring.h"
-#include "libavutil/cpu.h"
-#include "libavutil/internal.h"
-#include "libavutil/lfg.h"
-#include "libavutil/timer.h"
-
-void checkasm_check_aacpsdsp(void);
-void checkasm_check_afir(void);
-void checkasm_check_alacdsp(void);
-void checkasm_check_audiodsp(void);
-void checkasm_check_blend(void);
-void checkasm_check_blockdsp(void);
-void checkasm_check_bswapdsp(void);
-void checkasm_check_colorspace(void);
-void checkasm_check_exrdsp(void);
-void checkasm_check_fixed_dsp(void);
-void checkasm_check_flacdsp(void);
-void checkasm_check_float_dsp(void);
-void checkasm_check_fmtconvert(void);
-void checkasm_check_g722dsp(void);
-void checkasm_check_h264dsp(void);
-void checkasm_check_h264pred(void);
-void checkasm_check_h264qpel(void);
-void checkasm_check_hevc_add_res(void);
-void checkasm_check_hevc_idct(void);
-void checkasm_check_hevc_sao(void);
-void checkasm_check_huffyuvdsp(void);
-void checkasm_check_jpeg2000dsp(void);
-void checkasm_check_llviddsp(void);
-void checkasm_check_llviddspenc(void);
-void checkasm_check_nlmeans(void);
-void checkasm_check_opusdsp(void);
-void checkasm_check_pixblockdsp(void);
-void checkasm_check_sbrdsp(void);
-void checkasm_check_synth_filter(void);
-void checkasm_check_sw_rgb(void);
-void checkasm_check_utvideodsp(void);
-void checkasm_check_v210dec(void);
-void checkasm_check_v210enc(void);
-void checkasm_check_vf_eq(void);
-void checkasm_check_vf_gblur(void);
-void checkasm_check_vf_hflip(void);
-void checkasm_check_vf_threshold(void);
-void checkasm_check_vp8dsp(void);
-void checkasm_check_vp9dsp(void);
-void checkasm_check_videodsp(void);
-
-struct CheckasmPerf;
-
-void *checkasm_check_func(void *func, const char *name, ...) av_printf_format(2, 3);
-int checkasm_bench_func(void);
-void checkasm_fail_func(const char *msg, ...) av_printf_format(1, 2);
-struct CheckasmPerf *checkasm_get_perf_context(void);
-void checkasm_report(const char *name, ...) av_printf_format(1, 2);
-
-/* float compare utilities */
-int float_near_ulp(float a, float b, unsigned max_ulp);
-int float_near_abs_eps(float a, float b, float eps);
-int float_near_abs_eps_ulp(float a, float b, float eps, unsigned max_ulp);
-int float_near_ulp_array(const float *a, const float *b, unsigned max_ulp,
-                         unsigned len);
-int float_near_abs_eps_array(const float *a, const float *b, float eps,
-                             unsigned len);
-int float_near_abs_eps_array_ulp(const float *a, const float *b, float eps,
-                                 unsigned max_ulp, unsigned len);
-int double_near_abs_eps(double a, double b, double eps);
-int double_near_abs_eps_array(const double *a, const double *b, double eps,
-                              unsigned len);
-
-extern AVLFG checkasm_lfg;
-#define rnd() av_lfg_get(&checkasm_lfg)
-
-static av_unused void *func_ref, *func_new;
-
-#define BENCH_RUNS 1000 /* Trade-off between accuracy and speed */
-
-/* Decide whether or not the specified function needs to be tested */
-#define check_func(func, ...) (func_ref = checkasm_check_func((func_new = func), __VA_ARGS__))
-
-/* Declare the function prototype. The first argument is the return value, the remaining
- * arguments are the function parameters. Naming parameters is optional. */
-#define declare_func(ret, ...) declare_new(ret, __VA_ARGS__) typedef ret func_type(__VA_ARGS__)
-#define declare_func_float(ret, ...) declare_new_float(ret, __VA_ARGS__) typedef ret func_type(__VA_ARGS__)
-#define declare_func_emms(cpu_flags, ret, ...) declare_new_emms(cpu_flags, ret, __VA_ARGS__) typedef ret func_type(__VA_ARGS__)
-
-/* Indicate that the current test has failed */
-#define fail() checkasm_fail_func("%s:%d", av_basename(__FILE__), __LINE__)
-
-/* Print the test outcome */
-#define report checkasm_report
-
-/* Call the reference function */
-#define call_ref(...) ((func_type *)func_ref)(__VA_ARGS__)
-
-#if ARCH_X86 && HAVE_X86ASM
-/* Verifies that clobbered callee-saved registers are properly saved and restored
- * and that either no MMX registers are touched or emms is issued */
-void checkasm_checked_call(void *func, ...);
-/* Verifies that clobbered callee-saved registers are properly saved and restored
- * and issues emms for asm functions which are not required to do so */
-void checkasm_checked_call_emms(void *func, ...);
-/* Verifies that clobbered callee-saved registers are properly saved and restored
- * but doesn't issue emms. Meant for dsp functions returning float or double */
-void checkasm_checked_call_float(void *func, ...);
-
-#if ARCH_X86_64
-/* Evil hack: detect incorrect assumptions that 32-bit ints are zero-extended to 64-bit.
- * This is done by clobbering the stack with junk around the stack pointer and calling the
- * assembly function through checked_call() with added dummy arguments which forces all
- * real arguments to be passed on the stack and not in registers. For 32-bit arguments the
- * upper half of the 64-bit register locations on the stack will now contain junk which will
- * cause misbehaving functions to either produce incorrect output or segfault. Note that
- * even though this works extremely well in practice, it's technically not guaranteed
- * and false negatives is theoretically possible, but there can never be any false positives.
- */
-void checkasm_stack_clobber(uint64_t clobber, ...);
-#define declare_new(ret, ...) ret (*checked_call)(void *, int, int, int, int, int, __VA_ARGS__)\
-                              = (void *)checkasm_checked_call;
-#define declare_new_float(ret, ...) ret (*checked_call)(void *, int, int, int, int, int, __VA_ARGS__)\
-                                    = (void *)checkasm_checked_call_float;
-#define declare_new_emms(cpu_flags, ret, ...) \
-    ret (*checked_call)(void *, int, int, int, int, int, __VA_ARGS__) = \
-        ((cpu_flags) & av_get_cpu_flags()) ? (void *)checkasm_checked_call_emms : \
-                                             (void *)checkasm_checked_call;
-#define CLOB (UINT64_C(0xdeadbeefdeadbeef))
-#define call_new(...) (checkasm_stack_clobber(CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,\
-                                              CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB),\
-                      checked_call(func_new, 0, 0, 0, 0, 0, __VA_ARGS__))
-#elif ARCH_X86_32
-#define declare_new(ret, ...) ret (*checked_call)(void *, __VA_ARGS__) = (void *)checkasm_checked_call;
-#define declare_new_float(ret, ...) ret (*checked_call)(void *, __VA_ARGS__) = (void *)checkasm_checked_call_float;
-#define declare_new_emms(cpu_flags, ret, ...) ret (*checked_call)(void *, __VA_ARGS__) = \
-        ((cpu_flags) & av_get_cpu_flags()) ? (void *)checkasm_checked_call_emms :        \
-                                             (void *)checkasm_checked_call;
-#define call_new(...) checked_call(func_new, __VA_ARGS__)
-#endif
-#elif ARCH_ARM && HAVE_ARMV5TE_EXTERNAL
-/* Use a dummy argument, to offset the real parameters by 2, not only 1.
- * This makes sure that potential 8-byte-alignment of parameters is kept the same
- * even when the extra parameters have been removed. */
-void checkasm_checked_call_vfp(void *func, int dummy, ...);
-void checkasm_checked_call_novfp(void *func, int dummy, ...);
-extern void (*checkasm_checked_call)(void *func, int dummy, ...);
-#define declare_new(ret, ...) ret (*checked_call)(void *, int dummy, __VA_ARGS__) = (void *)checkasm_checked_call;
-#define call_new(...) checked_call(func_new, 0, __VA_ARGS__)
-#elif ARCH_AARCH64 && !defined(__APPLE__)
-void checkasm_stack_clobber(uint64_t clobber, ...);
-void checkasm_checked_call(void *func, ...);
-#define declare_new(ret, ...) ret (*checked_call)(void *, int, int, int, int, int, int, int, __VA_ARGS__)\
-                              = (void *)checkasm_checked_call;
-#define CLOB (UINT64_C(0xdeadbeefdeadbeef))
-#define call_new(...) (checkasm_stack_clobber(CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,\
-                                              CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB),\
-                      checked_call(func_new, 0, 0, 0, 0, 0, 0, 0, __VA_ARGS__))
-#else
-#define declare_new(ret, ...)
-#define declare_new_float(ret, ...)
-#define declare_new_emms(cpu_flags, ret, ...)
-/* Call the function */
-#define call_new(...) ((func_type *)func_new)(__VA_ARGS__)
-#endif
-
-#ifndef declare_new_emms
-#define declare_new_emms(cpu_flags, ret, ...) declare_new(ret, __VA_ARGS__)
-#endif
-#ifndef declare_new_float
-#define declare_new_float(ret, ...) declare_new(ret, __VA_ARGS__)
-#endif
-
-typedef struct CheckasmPerf {
-    int sysfd;
-    uint64_t cycles;
-    int iterations;
-} CheckasmPerf;
-
-#if defined(AV_READ_TIME) || CONFIG_LINUX_PERF
-
-#if CONFIG_LINUX_PERF
-#define PERF_START(t) do {                              \
-    ioctl(sysfd, PERF_EVENT_IOC_RESET, 0);              \
-    ioctl(sysfd, PERF_EVENT_IOC_ENABLE, 0);             \
-} while (0)
-#define PERF_STOP(t) do {                               \
-    ioctl(sysfd, PERF_EVENT_IOC_DISABLE, 0);            \
-    read(sysfd, &t, sizeof(t));                         \
-} while (0)
-#else
-#define PERF_START(t) t = AV_READ_TIME()
-#define PERF_STOP(t)  t = AV_READ_TIME() - t
-#endif
-
-/* Benchmark the function */
-#define bench_new(...)\
-    do {\
-        if (checkasm_bench_func()) {\
-            struct CheckasmPerf *perf = checkasm_get_perf_context();\
-            av_unused const int sysfd = perf->sysfd;\
-            func_type *tfunc = func_new;\
-            uint64_t tsum = 0;\
-            int ti, tcount = 0;\
-            uint64_t t = 0; \
-            for (ti = 0; ti < BENCH_RUNS; ti++) {\
-                PERF_START(t);\
-                tfunc(__VA_ARGS__);\
-                tfunc(__VA_ARGS__);\
-                tfunc(__VA_ARGS__);\
-                tfunc(__VA_ARGS__);\
-                PERF_STOP(t);\
-                if (t*tcount <= tsum*4 && ti > 0) {\
-                    tsum += t;\
-                    tcount++;\
-                }\
-            }\
-            emms_c();\
-            perf->cycles += t;\
-            perf->iterations++;\
-        }\
-    } while (0)
-#else
-#define bench_new(...) while(0)
-#define PERF_START(t)  while(0)
-#define PERF_STOP(t)   while(0)
-#endif
-
-#endif /* TESTS_CHECKASM_CHECKASM_H */
diff --git a/tests/checkasm/exrdsp.c b/tests/checkasm/exrdsp.c
deleted file mode 100644
index 754a079..0000000
--- a/tests/checkasm/exrdsp.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2017 James Almer
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-
-#include "checkasm.h"
-#include "libavcodec/avcodec.h"
-#include "libavcodec/exrdsp.h"
-#include "libavutil/intreadwrite.h"
-
-#define BUF_SIZE 5120
-#define PADDED_BUF_SIZE BUF_SIZE+AV_INPUT_BUFFER_PADDING_SIZE*2
-
-#define randomize_buffers()                 \
-    do {                                    \
-        int i;                              \
-        for (i = 0; i < BUF_SIZE; i += 4) { \
-            uint32_t r = rnd();             \
-            AV_WN32A(src + i, r);           \
-        }                                   \
-    } while (0)
-
-static void check_reorder_pixels(void) {
-    LOCAL_ALIGNED_32(uint8_t, src,     [PADDED_BUF_SIZE]);
-    LOCAL_ALIGNED_32(uint8_t, dst_ref, [PADDED_BUF_SIZE]);
-    LOCAL_ALIGNED_32(uint8_t, dst_new, [PADDED_BUF_SIZE]);
-
-    declare_func(void, uint8_t *dst, const uint8_t *src, ptrdiff_t size);
-
-    memset(src,     0, PADDED_BUF_SIZE);
-    memset(dst_ref, 0, PADDED_BUF_SIZE);
-    memset(dst_new, 0, PADDED_BUF_SIZE);
-    randomize_buffers();
-    call_ref(dst_ref, src, BUF_SIZE);
-    call_new(dst_new, src, BUF_SIZE);
-    if (memcmp(dst_ref, dst_new, BUF_SIZE))
-        fail();
-    bench_new(dst_new, src, BUF_SIZE);
-}
-
-static void check_predictor(void) {
-    LOCAL_ALIGNED_32(uint8_t, src,     [PADDED_BUF_SIZE]);
-    LOCAL_ALIGNED_32(uint8_t, dst_ref, [PADDED_BUF_SIZE]);
-    LOCAL_ALIGNED_32(uint8_t, dst_new, [PADDED_BUF_SIZE]);
-
-    declare_func(void, uint8_t *src, ptrdiff_t size);
-
-    memset(src,     0, PADDED_BUF_SIZE);
-    randomize_buffers();
-    memcpy(dst_ref, src, PADDED_BUF_SIZE);
-    memcpy(dst_new, src, PADDED_BUF_SIZE);
-    call_ref(dst_ref, BUF_SIZE);
-    call_new(dst_new, BUF_SIZE);
-    if (memcmp(dst_ref, dst_new, BUF_SIZE))
-        fail();
-    bench_new(dst_new, BUF_SIZE);
-}
-
-void checkasm_check_exrdsp(void)
-{
-    ExrDSPContext h;
-
-    ff_exrdsp_init(&h);
-
-    if (check_func(h.reorder_pixels, "reorder_pixels"))
-        check_reorder_pixels();
-
-    report("reorder_pixels");
-
-    if (check_func(h.predictor, "predictor"))
-        check_predictor();
-
-    report("predictor");
-}
diff --git a/tests/checkasm/fixed_dsp.c b/tests/checkasm/fixed_dsp.c
deleted file mode 100644
index fa11f2e..0000000
--- a/tests/checkasm/fixed_dsp.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 2015 James Almer
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "checkasm.h"
-#include "libavutil/common.h"
-#include "libavutil/fixed_dsp.h"
-#include "libavutil/internal.h"
-#include "libavutil/mem.h"
-
-#define BUF_SIZE 256
-
-#define randomize_buffers()                   \
-    do {                                      \
-        int i;                                \
-        for (i = 0; i < BUF_SIZE; i++) {      \
-            src0[i] = sign_extend(rnd(), 24); \
-            src1[i] = sign_extend(rnd(), 24); \
-            src2[i] = sign_extend(rnd(), 24); \
-        }                                     \
-    } while (0)
-
-static void check_vector_fmul(const int *src0, const int *src1)
-{
-    LOCAL_ALIGNED_32(int, ref, [BUF_SIZE]);
-    LOCAL_ALIGNED_32(int, new, [BUF_SIZE]);
-
-    declare_func(void, int *dst, const int *src0, const int *src1, int len);
-
-    call_ref(ref, src0, src1, BUF_SIZE);
-    call_new(new, src0, src1, BUF_SIZE);
-    if (memcmp(ref, new, BUF_SIZE * sizeof(int)))
-        fail();
-    bench_new(new, src0, src1, BUF_SIZE);
-}
-
-static void check_vector_fmul_add(const int *src0, const int *src1, const int *src2)
-{
-    LOCAL_ALIGNED_32(int, ref, [BUF_SIZE]);
-    LOCAL_ALIGNED_32(int, new, [BUF_SIZE]);
-
-    declare_func(void, int *dst, const int *src0, const int *src1, const int *src2, int len);
-
-    call_ref(ref, src0, src1, src2, BUF_SIZE);
-    call_new(new, src0, src1, src2, BUF_SIZE);
-    if (memcmp(ref, new, BUF_SIZE * sizeof(int)))
-        fail();
-    bench_new(new, src0, src1, src2, BUF_SIZE);
-}
-
-static void check_vector_fmul_window(const int32_t *src0, const int32_t *src1, const int32_t *win)
-{
-    LOCAL_ALIGNED_32(int32_t, ref, [BUF_SIZE]);
-    LOCAL_ALIGNED_32(int32_t, new, [BUF_SIZE]);
-
-    declare_func(void, int32_t *dst, const int32_t *src0, const int32_t *src1, const int32_t *win, int len);
-
-    call_ref(ref, src0, src1, win, BUF_SIZE / 2);
-    call_new(new, src0, src1, win, BUF_SIZE / 2);
-    if (memcmp(ref, new, BUF_SIZE * sizeof(int32_t)))
-        fail();
-    bench_new(new, src0, src1, win, BUF_SIZE / 2);
-}
-
-static void check_vector_fmul_window_scaled(const int32_t *src0, const int32_t *src1, const int32_t *win)
-{
-    LOCAL_ALIGNED_16(int16_t, ref, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(int16_t, new, [BUF_SIZE]);
-
-    declare_func(void, int16_t *dst, const int32_t *src0, const int32_t *src1, const int32_t *win, int len, uint8_t bits);
-
-    call_ref(ref, src0, src1, win, BUF_SIZE / 2, 2);
-    call_new(new, src0, src1, win, BUF_SIZE / 2, 2);
-    if (memcmp(ref, new, BUF_SIZE * sizeof(int16_t)))
-        fail();
-    bench_new(new, src0, src1, win, BUF_SIZE / 2, 2);
-}
-
-static void check_butterflies(const int *src0, const int *src1)
-{
-    LOCAL_ALIGNED_16(int, ref0, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(int, ref1, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(int, new0, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(int, new1, [BUF_SIZE]);
-
-    declare_func(void, int *av_restrict src0, int *av_restrict src1, int len);
-
-    memcpy(ref0, src0, BUF_SIZE * sizeof(*src0));
-    memcpy(ref1, src1, BUF_SIZE * sizeof(*src1));
-    memcpy(new0, src0, BUF_SIZE * sizeof(*src0));
-    memcpy(new1, src1, BUF_SIZE * sizeof(*src1));
-
-    call_ref(ref0, ref1, BUF_SIZE);
-    call_new(new0, new1, BUF_SIZE);
-    if (memcmp(ref0, new0, BUF_SIZE * sizeof(*ref0)) ||
-        memcmp(ref1, new1, BUF_SIZE * sizeof(*ref1)))
-        fail();
-    memcpy(new0, src0, BUF_SIZE * sizeof(*src0));
-    memcpy(new1, src1, BUF_SIZE * sizeof(*src1));
-    bench_new(new0, new1, BUF_SIZE);
-}
-
-static void check_scalarproduct_fixed(const int *src0, const int *src1)
-{
-    int ref, new;
-
-    declare_func(int, const int *src0, const int *src1, int len);
-
-    ref = call_ref(src0, src1, BUF_SIZE);
-    new = call_new(src0, src1, BUF_SIZE);
-    if (ref != new)
-        fail();
-    bench_new(src0, src1, BUF_SIZE);
-}
-
-void checkasm_check_fixed_dsp(void)
-{
-    LOCAL_ALIGNED_32(int32_t, src0, [BUF_SIZE]);
-    LOCAL_ALIGNED_32(int32_t, src1, [BUF_SIZE]);
-    LOCAL_ALIGNED_32(int32_t, src2, [BUF_SIZE]);
-    AVFixedDSPContext *fdsp = avpriv_alloc_fixed_dsp(1);
-
-    randomize_buffers();
-    if (check_func(fdsp->vector_fmul, "vector_fmul_fixed"))
-        check_vector_fmul(src0, src1);
-    if (check_func(fdsp->vector_fmul_add, "vector_fmul_add_fixed"))
-        check_vector_fmul_add(src0, src1, src2);
-    if (check_func(fdsp->vector_fmul_reverse, "vector_fmul_reverse_fixed"))
-        check_vector_fmul(src0, src1);
-    if (check_func(fdsp->vector_fmul_window, "vector_fmul_window_fixed"))
-        check_vector_fmul_window(src0, src1, src2);
-    if (check_func(fdsp->vector_fmul_window_scaled, "vector_fmul_window_scaled_fixed"))
-        check_vector_fmul_window_scaled(src0, src1, src2);
-    report("vector_fmul");
-    if (check_func(fdsp->butterflies_fixed, "butterflies_fixed"))
-        check_butterflies(src0, src1);
-    report("butterflies_fixed");
-    if (check_func(fdsp->scalarproduct_fixed, "scalarproduct_fixed"))
-        check_scalarproduct_fixed(src0, src1);
-    report("scalarproduct_fixed");
-
-    av_freep(&fdsp);
-}
diff --git a/tests/checkasm/flacdsp.c b/tests/checkasm/flacdsp.c
deleted file mode 100644
index dccb54d..0000000
--- a/tests/checkasm/flacdsp.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2015 James Almer
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/flacdsp.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-#define BUF_SIZE 256
-#define MAX_CHANNELS 8
-
-#define randomize_buffers()                                 \
-    do {                                                    \
-        int i, j;                                           \
-        for (i = 0; i < BUF_SIZE; i += 4) {                 \
-            for (j = 0; j < channels; j++) {                \
-                uint32_t r = rnd() & (1 << (bits - 2)) - 1; \
-                AV_WN32A(ref_src[j] + i, r);                \
-                AV_WN32A(new_src[j] + i, r);                \
-            }                                               \
-        }                                                   \
-    } while (0)
-
-static void check_decorrelate(uint8_t **ref_dst, uint8_t **ref_src, uint8_t **new_dst, uint8_t **new_src,
-                              int channels, int bits) {
-    declare_func(void, uint8_t **out, int32_t **in, int channels, int len, int shift);
-
-    randomize_buffers();
-    call_ref(ref_dst, (int32_t **)ref_src, channels, BUF_SIZE / sizeof(int32_t), 8);
-    call_new(new_dst, (int32_t **)new_src, channels, BUF_SIZE / sizeof(int32_t), 8);
-    if (memcmp(*ref_dst, *new_dst, bits == 16 ? BUF_SIZE * (channels/2) : BUF_SIZE * channels) ||
-        memcmp(*ref_src, *new_src, BUF_SIZE * channels))
-        fail();
-    bench_new(new_dst, (int32_t **)new_src, channels, BUF_SIZE / sizeof(int32_t), 8);
-}
-
-void checkasm_check_flacdsp(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, ref_dst, [BUF_SIZE*MAX_CHANNELS]);
-    LOCAL_ALIGNED_16(uint8_t, ref_buf, [BUF_SIZE*MAX_CHANNELS]);
-    LOCAL_ALIGNED_16(uint8_t, new_dst, [BUF_SIZE*MAX_CHANNELS]);
-    LOCAL_ALIGNED_16(uint8_t, new_buf, [BUF_SIZE*MAX_CHANNELS]);
-    uint8_t *ref_src[] = { &ref_buf[BUF_SIZE*0], &ref_buf[BUF_SIZE*1], &ref_buf[BUF_SIZE*2], &ref_buf[BUF_SIZE*3],
-                           &ref_buf[BUF_SIZE*4], &ref_buf[BUF_SIZE*5], &ref_buf[BUF_SIZE*6], &ref_buf[BUF_SIZE*7] };
-    uint8_t *new_src[] = { &new_buf[BUF_SIZE*0], &new_buf[BUF_SIZE*1], &new_buf[BUF_SIZE*2], &new_buf[BUF_SIZE*3],
-                           &new_buf[BUF_SIZE*4], &new_buf[BUF_SIZE*5], &new_buf[BUF_SIZE*6], &new_buf[BUF_SIZE*7] };
-    static const char * const names[3] = { "ls", "rs", "ms" };
-    static const struct {
-        enum AVSampleFormat fmt;
-        int bits;
-    } fmts[] = {
-        { AV_SAMPLE_FMT_S16, 16 },
-        { AV_SAMPLE_FMT_S32, 32 },
-    };
-    FLACDSPContext h;
-    int i, j;
-
-    for (i = 0; i < 2; i++) {
-        ff_flacdsp_init(&h, fmts[i].fmt, 2, 0);
-        for (j = 0; j < 3; j++)
-            if (check_func(h.decorrelate[j], "flac_decorrelate_%s_%d", names[j], fmts[i].bits))
-                check_decorrelate(&ref_dst, ref_src, &new_dst, new_src, 2, fmts[i].bits);
-        for (j = 2; j <= MAX_CHANNELS; j += 2) {
-            ff_flacdsp_init(&h, fmts[i].fmt, j, 0);
-            if (check_func(h.decorrelate[0], "flac_decorrelate_indep%d_%d", j, fmts[i].bits))
-                check_decorrelate(&ref_dst, ref_src, &new_dst, new_src, j, fmts[i].bits);
-        }
-    }
-
-    report("decorrelate");
-}
diff --git a/tests/checkasm/float_dsp.c b/tests/checkasm/float_dsp.c
deleted file mode 100644
index a1616a6..0000000
--- a/tests/checkasm/float_dsp.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "config.h"
-
-#include <float.h>
-#include <stdint.h>
-
-#include "libavutil/float_dsp.h"
-#include "libavutil/internal.h"
-#include "checkasm.h"
-
-#define LEN 256
-
-#define randomize_buffer(buf)                 \
-do {                                          \
-    int i;                                    \
-    double bmg[2], stddev = 10.0, mean = 0.0; \
-                                              \
-    for (i = 0; i < LEN; i += 2) {            \
-        av_bmg_get(&checkasm_lfg, bmg);       \
-        buf[i]     = bmg[0] * stddev + mean;  \
-        buf[i + 1] = bmg[1] * stddev + mean;  \
-    }                                         \
-} while(0);
-
-static void test_vector_fmul(const float *src0, const float *src1)
-{
-    LOCAL_ALIGNED_32(float, cdst, [LEN]);
-    LOCAL_ALIGNED_32(float, odst, [LEN]);
-    int i;
-
-    declare_func(void, float *dst, const float *src0, const float *src1,
-                 int len);
-
-    call_ref(cdst, src0, src1, LEN);
-    call_new(odst, src0, src1, LEN);
-    for (i = 0; i < LEN; i++) {
-        double t = fabs(src0[i]) + fabs(src1[i]) + fabs(src0[i] * src1[i]) + 1.0;
-        if (!float_near_abs_eps(cdst[i], odst[i], t * 2 * FLT_EPSILON)) {
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                    i, cdst[i], odst[i], cdst[i] - odst[i]);
-            fail();
-            break;
-        }
-    }
-    bench_new(odst, src0, src1, LEN);
-}
-
-static void test_vector_dmul(const double *src0, const double *src1)
-{
-    LOCAL_ALIGNED_32(double, cdst, [LEN]);
-    LOCAL_ALIGNED_32(double, odst, [LEN]);
-    int i;
-
-    declare_func(void, double *dst, const double *src0, const double *src1,
-                 int len);
-
-    call_ref(cdst, src0, src1, LEN);
-    call_new(odst, src0, src1, LEN);
-    for (i = 0; i < LEN; i++) {
-        double t = fabs(src0[i]) + fabs(src1[i]) + fabs(src0[i] * src1[i]) + 1.0;
-        if (!double_near_abs_eps(cdst[i], odst[i], t * 2 * DBL_EPSILON)) {
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                    i, cdst[i], odst[i], cdst[i] - odst[i]);
-            fail();
-            break;
-        }
-    }
-    bench_new(odst, src0, src1, LEN);
-}
-
-#define ARBITRARY_FMUL_ADD_CONST 0.005
-static void test_vector_fmul_add(const float *src0, const float *src1, const float *src2)
-{
-    LOCAL_ALIGNED_32(float, cdst, [LEN]);
-    LOCAL_ALIGNED_32(float, odst, [LEN]);
-    int i;
-
-    declare_func(void, float *dst, const float *src0, const float *src1,
-                     const float *src2, int len);
-
-    call_ref(cdst, src0, src1, src2, LEN);
-    call_new(odst, src0, src1, src2, LEN);
-    for (i = 0; i < LEN; i++) {
-        if (!float_near_abs_eps(cdst[i], odst[i], ARBITRARY_FMUL_ADD_CONST)) {
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                    i, cdst[i], odst[i], cdst[i] - odst[i]);
-            fail();
-            break;
-        }
-    }
-    bench_new(odst, src0, src1, src2, LEN);
-}
-
-static void test_vector_fmul_scalar(const float *src0, const float *src1)
-{
-    LOCAL_ALIGNED_16(float, cdst, [LEN]);
-    LOCAL_ALIGNED_16(float, odst, [LEN]);
-    int i;
-
-    declare_func(void, float *dst, const float *src, float mul, int len);
-
-    call_ref(cdst, src0, src1[0], LEN);
-    call_new(odst, src0, src1[0], LEN);
-        for (i = 0; i < LEN; i++) {
-            double t = fabs(src0[i]) + fabs(src1[0]) + fabs(src0[i] * src1[0]) + 1.0;
-            if (!float_near_abs_eps(cdst[i], odst[i], t * 2 * FLT_EPSILON)) {
-                fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                        i, cdst[i], odst[i], cdst[i] - odst[i]);
-                fail();
-                break;
-            }
-        }
-    bench_new(odst, src0, src1[0], LEN);
-}
-
-#define ARBITRARY_FMUL_WINDOW_CONST 0.008
-static void test_vector_fmul_window(const float *src0, const float *src1, const float *win)
-{
-    LOCAL_ALIGNED_16(float, cdst, [LEN]);
-    LOCAL_ALIGNED_16(float, odst, [LEN]);
-    int i;
-
-    declare_func(void, float *dst, const float *src0, const float *src1,
-                 const float *win, int len);
-
-    call_ref(cdst, src0, src1, win, LEN / 2);
-    call_new(odst, src0, src1, win, LEN / 2);
-    for (i = 0; i < LEN; i++) {
-        if (!float_near_abs_eps(cdst[i], odst[i], ARBITRARY_FMUL_WINDOW_CONST)) {
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                    i, cdst[i], odst[i], cdst[i] - odst[i]);
-            fail();
-            break;
-        }
-    }
-    bench_new(odst, src0, src1, win, LEN / 2);
-}
-
-#define ARBITRARY_FMAC_SCALAR_CONST 0.005
-static void test_vector_fmac_scalar(const float *src0, const float *src1, const float *src2)
-{
-    LOCAL_ALIGNED_32(float, cdst, [LEN]);
-    LOCAL_ALIGNED_32(float, odst, [LEN]);
-    int i;
-
-    declare_func(void, float *dst, const float *src, float mul, int len);
-
-    memcpy(cdst, src2, LEN * sizeof(*src2));
-    memcpy(odst, src2, LEN * sizeof(*src2));
-
-    call_ref(cdst, src0, src1[0], LEN);
-    call_new(odst, src0, src1[0], LEN);
-    for (i = 0; i < LEN; i++) {
-        if (!float_near_abs_eps(cdst[i], odst[i], ARBITRARY_FMAC_SCALAR_CONST)) {
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                    i, cdst[i], odst[i], cdst[i] - odst[i]);
-            fail();
-            break;
-        }
-    }
-    memcpy(odst, src2, LEN * sizeof(*src2));
-    bench_new(odst, src0, src1[0], LEN);
-}
-
-static void test_vector_dmul_scalar(const double *src0, const double *src1)
-{
-    LOCAL_ALIGNED_32(double, cdst, [LEN]);
-    LOCAL_ALIGNED_32(double, odst, [LEN]);
-    int i;
-
-    declare_func(void, double *dst, const double *src, double mul, int len);
-
-    call_ref(cdst, src0, src1[0], LEN);
-    call_new(odst, src0, src1[0], LEN);
-    for (i = 0; i < LEN; i++) {
-        double t = fabs(src1[0]) + fabs(src0[i]) + fabs(src1[0] * src0[i]) + 1.0;
-        if (!double_near_abs_eps(cdst[i], odst[i], t * 2 * DBL_EPSILON)) {
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n", i,
-                    cdst[i], odst[i], cdst[i] - odst[i]);
-            fail();
-            break;
-        }
-    }
-    bench_new(odst, src0, src1[0], LEN);
-}
-
-#define ARBITRARY_DMAC_SCALAR_CONST 0.005
-static void test_vector_dmac_scalar(const double *src0, const double *src1, const double *src2)
-{
-    LOCAL_ALIGNED_32(double, cdst, [LEN]);
-    LOCAL_ALIGNED_32(double, odst, [LEN]);
-    int i;
-
-    declare_func(void, double *dst, const double *src, double mul, int len);
-
-    memcpy(cdst, src2, LEN * sizeof(*src2));
-    memcpy(odst, src2, LEN * sizeof(*src2));
-    call_ref(cdst, src0, src1[0], LEN);
-    call_new(odst, src0, src1[0], LEN);
-    for (i = 0; i < LEN; i++) {
-        if (!double_near_abs_eps(cdst[i], odst[i], ARBITRARY_DMAC_SCALAR_CONST)) {
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                    i, cdst[i], odst[i], cdst[i] - odst[i]);
-            fail();
-            break;
-        }
-    }
-    memcpy(odst, src2, LEN * sizeof(*src2));
-    bench_new(odst, src0, src1[0], LEN);
-}
-
-static void test_butterflies_float(const float *src0, const float *src1)
-{
-    LOCAL_ALIGNED_16(float,  cdst,  [LEN]);
-    LOCAL_ALIGNED_16(float,  odst,  [LEN]);
-    LOCAL_ALIGNED_16(float,  cdst1, [LEN]);
-    LOCAL_ALIGNED_16(float,  odst1, [LEN]);
-    int i;
-
-    declare_func(void, float *av_restrict src0, float *av_restrict src1,
-    int len);
-
-    memcpy(cdst,  src0, LEN * sizeof(*src0));
-    memcpy(cdst1, src1, LEN * sizeof(*src1));
-    memcpy(odst,  src0, LEN * sizeof(*src0));
-    memcpy(odst1, src1, LEN * sizeof(*src1));
-
-    call_ref(cdst, cdst1, LEN);
-    call_new(odst, odst1, LEN);
-    for (i = 0; i < LEN; i++) {
-        if (!float_near_abs_eps(cdst[i],  odst[i],  FLT_EPSILON) ||
-            !float_near_abs_eps(cdst1[i], odst1[i], FLT_EPSILON)) {
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                    i, cdst[i], odst[i], cdst[i] - odst[i]);
-            fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
-                    i, cdst1[i], odst1[i], cdst1[i] - odst1[i]);
-            fail();
-            break;
-        }
-    }
-    memcpy(odst,  src0, LEN * sizeof(*src0));
-    memcpy(odst1, src1, LEN * sizeof(*src1));
-    bench_new(odst, odst1, LEN);
-}
-
-#define ARBITRARY_SCALARPRODUCT_CONST 0.2
-static void test_scalarproduct_float(const float *src0, const float *src1)
-{
-    float cprod, oprod;
-
-    declare_func_float(float, const float *src0, const float *src1, int len);
-
-    cprod = call_ref(src0, src1, LEN);
-    oprod = call_new(src0, src1, LEN);
-    if (!float_near_abs_eps(cprod, oprod, ARBITRARY_SCALARPRODUCT_CONST)) {
-        fprintf(stderr, "%- .12f - %- .12f = % .12g\n",
-                cprod, oprod, cprod - oprod);
-        fail();
-    }
-    bench_new(src0, src1, LEN);
-}
-
-void checkasm_check_float_dsp(void)
-{
-    LOCAL_ALIGNED_32(float,  src0,     [LEN]);
-    LOCAL_ALIGNED_32(float,  src1,     [LEN]);
-    LOCAL_ALIGNED_32(float,  src2,     [LEN]);
-    LOCAL_ALIGNED_16(float,  src3,     [LEN]);
-    LOCAL_ALIGNED_16(float,  src4,     [LEN]);
-    LOCAL_ALIGNED_16(float,  src5,     [LEN]);
-    LOCAL_ALIGNED_32(double, dbl_src0, [LEN]);
-    LOCAL_ALIGNED_32(double, dbl_src1, [LEN]);
-    LOCAL_ALIGNED_32(double, dbl_src2, [LEN]);
-    AVFloatDSPContext *fdsp = avpriv_float_dsp_alloc(1);
-
-    if (!fdsp) {
-        fprintf(stderr, "floatdsp: Out of memory error\n");
-        return;
-    }
-
-    randomize_buffer(src0);
-    randomize_buffer(src1);
-    randomize_buffer(src2);
-    randomize_buffer(src3);
-    randomize_buffer(src4);
-    randomize_buffer(src5);
-    randomize_buffer(dbl_src0);
-    randomize_buffer(dbl_src1);
-    randomize_buffer(dbl_src2);
-
-    if (check_func(fdsp->vector_fmul, "vector_fmul"))
-        test_vector_fmul(src0, src1);
-    if (check_func(fdsp->vector_fmul_add, "vector_fmul_add"))
-        test_vector_fmul_add(src0, src1, src2);
-    if (check_func(fdsp->vector_fmul_scalar, "vector_fmul_scalar"))
-        test_vector_fmul_scalar(src3, src4);
-    if (check_func(fdsp->vector_fmul_reverse, "vector_fmul_reverse"))
-        test_vector_fmul(src0, src1);
-    if (check_func(fdsp->vector_fmul_window, "vector_fmul_window"))
-        test_vector_fmul_window(src3, src4, src5);
-    report("vector_fmul");
-    if (check_func(fdsp->vector_fmac_scalar, "vector_fmac_scalar"))
-        test_vector_fmac_scalar(src0, src1, src2);
-    report("vector_fmac");
-    if (check_func(fdsp->vector_dmul, "vector_dmul"))
-        test_vector_dmul(dbl_src0, dbl_src1);
-    if (check_func(fdsp->vector_dmul_scalar, "vector_dmul_scalar"))
-        test_vector_dmul_scalar(dbl_src0, dbl_src1);
-    report("vector_dmul");
-    if (check_func(fdsp->vector_dmac_scalar, "vector_dmac_scalar"))
-        test_vector_dmac_scalar(dbl_src0, dbl_src1, dbl_src2);
-    report("vector_dmac");
-    if (check_func(fdsp->butterflies_float, "butterflies_float"))
-        test_butterflies_float(src3, src4);
-    report("butterflies_float");
-    if (check_func(fdsp->scalarproduct_float, "scalarproduct_float"))
-        test_scalarproduct_float(src3, src4);
-    report("scalarproduct_float");
-
-    av_freep(&fdsp);
-}
diff --git a/tests/checkasm/fmtconvert.c b/tests/checkasm/fmtconvert.c
deleted file mode 100644
index 50ad3ca..0000000
--- a/tests/checkasm/fmtconvert.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2015 Janne Grunau
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <math.h>
-#include <stdint.h>
-#include <string.h>
-
-#include "libavutil/internal.h"
-#include "libavutil/common.h"
-#include "libavcodec/fmtconvert.h"
-
-#include "checkasm.h"
-
-#define BUF_SIZE 1024
-
-#define randomize_input(len)                                    \
-    do {                                                        \
-        int k;                                                  \
-        for (k = 0; k < len; k++) {                             \
-            in[k] = rnd() - INT32_MAX;                         \
-        }                                                       \
-        for (     ; k < BUF_SIZE; k++) {                        \
-            in[k] = INT32_MAX;                                  \
-        }                                                       \
-    } while (0)
-
-void checkasm_check_fmtconvert(void)
-{
-    FmtConvertContext c;
-    LOCAL_ALIGNED(32, float,   dst0, [BUF_SIZE]);
-    LOCAL_ALIGNED(32, float,   dst1, [BUF_SIZE]);
-    LOCAL_ALIGNED(32, int32_t, in,   [BUF_SIZE]);
-    float scale_arr[128];
-    int length[] = {8, 16, 24, 56, 72, 128, 512, 520, 656, 768, 992};
-    int i, j;
-
-    for (i = 0; i < FF_ARRAY_ELEMS(scale_arr); i++)
-        scale_arr[i] = (FF_ARRAY_ELEMS(scale_arr) - FF_ARRAY_ELEMS(scale_arr) / 2) / 13;
-
-    ff_fmt_convert_init(&c, NULL);
-
-    memset(dst0, 0, sizeof(*dst0) * BUF_SIZE);
-    memset(dst1, 0, sizeof(*dst1) * BUF_SIZE);
-
-    if (check_func(c.int32_to_float_fmul_scalar, "int32_to_float_fmul_scalar")) {
-        declare_func(void, float *, const int32_t *, float, int);
-
-        for (i = 0; i < FF_ARRAY_ELEMS(scale_arr); i++) {
-            for (j = 0; j < FF_ARRAY_ELEMS(length); j++) {
-
-                randomize_input(length[j]);
-
-                call_ref(dst0, in, scale_arr[i], length[j]);
-                call_new(dst1, in, scale_arr[i], length[j]);
-
-                if (!float_near_ulp_array(dst0, dst1, 3, length[j])) {
-                    fail();
-                    break;
-                }
-
-                bench_new(dst1, in, scale_arr[i], length[j]);
-            }
-        }
-    }
-    if (check_func(c.int32_to_float_fmul_array8, "int32_to_float_fmul_array8")) {
-        declare_func(void, FmtConvertContext *, float *, const int32_t *,
-                     const float *, int);
-
-        for (i = 0; i < 4; i++) {
-            for (j = 0; j < FF_ARRAY_ELEMS(length); j++) {
-
-                randomize_input(length[j]);
-
-                call_ref(&c, dst0, in, scale_arr, length[j]);
-                call_new(&c, dst1, in, scale_arr, length[j]);
-
-                if (!float_near_ulp_array(dst0, dst1, 3, length[j])) {
-                    fail();
-                    fprintf(stderr, "int32_to_float_fmul_array8: len: %d\n", length[j]);
-                    break;
-                }
-
-                bench_new(&c, dst1, in, scale_arr, length[j]);
-            }
-        }
-    }
-    report("fmtconvert");
-}
diff --git a/tests/checkasm/g722dsp.c b/tests/checkasm/g722dsp.c
deleted file mode 100644
index 6bcff11..0000000
--- a/tests/checkasm/g722dsp.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/g722.h"
-#include "libavcodec/g722dsp.h"
-#include "libavcodec/mathops.h"
-
-#define randomize_buffers()                             \
-    do {                                                \
-        int i;                                          \
-        for (i = 0; i < PREV_SAMPLES_BUF_SIZE; i++) {   \
-            src0[i] = src1[i] = sign_extend(rnd(), 16); \
-        }                                               \
-    } while (0)
-
-static void check_qmf(void) {
-    int16_t src0[PREV_SAMPLES_BUF_SIZE];
-    int16_t src1[PREV_SAMPLES_BUF_SIZE];
-    const int16_t *tmp0 = src0;
-    const int16_t *tmp1 = src1;
-    int dst0[2], dst1[2];
-    int i;
-
-    declare_func(void, const int16_t *prev_samples, int xout[2]);
-
-    randomize_buffers();
-    for (i = 0; i < PREV_SAMPLES_BUF_SIZE - 24; i++) {
-        call_ref(tmp0++, dst0);
-        call_new(tmp1++, dst1);
-        if (memcmp(dst0, dst1, sizeof(dst0)))
-            fail();
-    }
-    bench_new(src1, dst1);
-}
-
-void checkasm_check_g722dsp(void)
-{
-    G722DSPContext h;
-
-    ff_g722dsp_init(&h);
-
-    if (check_func(h.apply_qmf, "g722_apply_qmf"))
-        check_qmf();
-
-    report("apply_qmf");
-}
diff --git a/tests/checkasm/h264dsp.c b/tests/checkasm/h264dsp.c
deleted file mode 100644
index 6975205..0000000
--- a/tests/checkasm/h264dsp.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * Copyright (c) 2016 Martin Storsjo
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/avcodec.h"
-#include "libavcodec/h264dsp.h"
-#include "libavcodec/h264data.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-static const uint32_t pixel_mask[3] = { 0xffffffff, 0x01ff01ff, 0x03ff03ff };
-static const uint32_t pixel_mask_lf[3] = { 0xff0fff0f, 0x01ff000f, 0x03ff000f };
-
-#define SIZEOF_PIXEL ((bit_depth + 7) / 8)
-#define SIZEOF_COEF  (2 * ((bit_depth + 7) / 8))
-#define PIXEL_STRIDE 16
-
-#define randomize_buffers()                                                  \
-    do {                                                                     \
-        int x, y;                                                            \
-        uint32_t mask = pixel_mask[bit_depth - 8];                           \
-        for (y = 0; y < sz; y++) {                                           \
-            for (x = 0; x < PIXEL_STRIDE; x += 4) {                          \
-                AV_WN32A(src + y * PIXEL_STRIDE + x, rnd() & mask);          \
-                AV_WN32A(dst + y * PIXEL_STRIDE + x, rnd() & mask);          \
-            }                                                                \
-            for (x = 0; x < sz; x++) {                                       \
-                if (bit_depth == 8) {                                        \
-                    coef[y * sz + x] = src[y * PIXEL_STRIDE + x] -           \
-                                       dst[y * PIXEL_STRIDE + x];            \
-                } else {                                                     \
-                    ((int32_t *)coef)[y * sz + x] =                          \
-                        ((uint16_t *)src)[y * (PIXEL_STRIDE/2) + x] -        \
-                        ((uint16_t *)dst)[y * (PIXEL_STRIDE/2) + x];         \
-                }                                                            \
-            }                                                                \
-        }                                                                    \
-    } while (0)
-
-#define dct4x4_impl(size, dctcoef)                                           \
-static void dct4x4_##size(dctcoef *coef)                                     \
-{                                                                            \
-    int i, y, x;                                                             \
-    dctcoef tmp[16];                                                         \
-    for (i = 0; i < 4; i++) {                                                \
-        const int z0 = coef[i*4 + 0] + coef[i*4 + 3];                        \
-        const int z1 = coef[i*4 + 1] + coef[i*4 + 2];                        \
-        const int z2 = coef[i*4 + 0] - coef[i*4 + 3];                        \
-        const int z3 = coef[i*4 + 1] - coef[i*4 + 2];                        \
-        tmp[i + 4*0] =   z0 +   z1;                                          \
-        tmp[i + 4*1] = 2*z2 +   z3;                                          \
-        tmp[i + 4*2] =   z0 -   z1;                                          \
-        tmp[i + 4*3] =   z2 - 2*z3;                                          \
-    }                                                                        \
-    for (i = 0; i < 4; i++) {                                                \
-        const int z0 = tmp[i*4 + 0] + tmp[i*4 + 3];                          \
-        const int z1 = tmp[i*4 + 1] + tmp[i*4 + 2];                          \
-        const int z2 = tmp[i*4 + 0] - tmp[i*4 + 3];                          \
-        const int z3 = tmp[i*4 + 1] - tmp[i*4 + 2];                          \
-        coef[i*4 + 0] =   z0 +   z1;                                         \
-        coef[i*4 + 1] = 2*z2 +   z3;                                         \
-        coef[i*4 + 2] =   z0 -   z1;                                         \
-        coef[i*4 + 3] =   z2 - 2*z3;                                         \
-    }                                                                        \
-    for (y = 0; y < 4; y++) {                                                \
-        for (x = 0; x < 4; x++) {                                            \
-            static const int scale[] = { 13107 * 10, 8066 * 13, 5243 * 16 }; \
-            const int idx = (y & 1) + (x & 1);                               \
-            coef[y*4 + x] = (coef[y*4 + x] * scale[idx] + (1 << 14)) >> 15;  \
-        }                                                                    \
-    }                                                                        \
-}
-
-#define DCT8_1D(src, srcstride, dst, dststride) do {                         \
-    const int a0 = (src)[srcstride * 0] + (src)[srcstride * 7];              \
-    const int a1 = (src)[srcstride * 0] - (src)[srcstride * 7];              \
-    const int a2 = (src)[srcstride * 1] + (src)[srcstride * 6];              \
-    const int a3 = (src)[srcstride * 1] - (src)[srcstride * 6];              \
-    const int a4 = (src)[srcstride * 2] + (src)[srcstride * 5];              \
-    const int a5 = (src)[srcstride * 2] - (src)[srcstride * 5];              \
-    const int a6 = (src)[srcstride * 3] + (src)[srcstride * 4];              \
-    const int a7 = (src)[srcstride * 3] - (src)[srcstride * 4];              \
-    const int b0 = a0 + a6;                                                  \
-    const int b1 = a2 + a4;                                                  \
-    const int b2 = a0 - a6;                                                  \
-    const int b3 = a2 - a4;                                                  \
-    const int b4 = a3 + a5 + (a1 + (a1 >> 1));                               \
-    const int b5 = a1 - a7 - (a5 + (a5 >> 1));                               \
-    const int b6 = a1 + a7 - (a3 + (a3 >> 1));                               \
-    const int b7 = a3 - a5 + (a7 + (a7 >> 1));                               \
-    (dst)[dststride * 0] =  b0 +  b1;                                        \
-    (dst)[dststride * 1] =  b4 + (b7 >> 2);                                  \
-    (dst)[dststride * 2] =  b2 + (b3 >> 1);                                  \
-    (dst)[dststride * 3] =  b5 + (b6 >> 2);                                  \
-    (dst)[dststride * 4] =  b0  - b1;                                        \
-    (dst)[dststride * 5] =  b6 - (b5 >> 2);                                  \
-    (dst)[dststride * 6] = (b2 >> 1) - b3;                                   \
-    (dst)[dststride * 7] = (b4 >> 2) - b7;                                   \
-} while (0)
-
-#define dct8x8_impl(size, dctcoef)                                           \
-static void dct8x8_##size(dctcoef *coef)                                     \
-{                                                                            \
-    int i, x, y;                                                             \
-    dctcoef tmp[64];                                                         \
-    for (i = 0; i < 8; i++)                                                  \
-        DCT8_1D(coef + i, 8, tmp + i, 8);                                    \
-                                                                             \
-    for (i = 0; i < 8; i++)                                                  \
-        DCT8_1D(tmp + 8*i, 1, coef + i, 8);                                  \
-                                                                             \
-    for (y = 0; y < 8; y++) {                                                \
-        for (x = 0; x < 8; x++) {                                            \
-            static const int scale[] = {                                     \
-                13107 * 20, 11428 * 18, 20972 * 32,                          \
-                12222 * 19, 16777 * 25, 15481 * 24,                          \
-            };                                                               \
-            static const int idxmap[] = {                                    \
-                0, 3, 4, 3,                                                  \
-                3, 1, 5, 1,                                                  \
-                4, 5, 2, 5,                                                  \
-                3, 1, 5, 1,                                                  \
-            };                                                               \
-            const int idx = idxmap[(y & 3) * 4 + (x & 3)];                   \
-            coef[y*8 + x] = ((int64_t)coef[y*8 + x] *                        \
-                             scale[idx] + (1 << 17)) >> 18;                  \
-        }                                                                    \
-    }                                                                        \
-}
-
-dct4x4_impl(16, int16_t)
-dct4x4_impl(32, int32_t)
-
-dct8x8_impl(16, int16_t)
-dct8x8_impl(32, int32_t)
-
-static void dct4x4(int16_t *coef, int bit_depth)
-{
-    if (bit_depth == 8)
-        dct4x4_16(coef);
-    else
-        dct4x4_32((int32_t *) coef);
-}
-
-static void dct8x8(int16_t *coef, int bit_depth)
-{
-    if (bit_depth == 8) {
-        dct8x8_16(coef);
-    } else {
-        dct8x8_32((int32_t *) coef);
-    }
-}
-
-
-static void check_idct(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, src,  [8 * 8 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst,  [8 * 8 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst0, [8 * 8 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst1_base, [8 * 8 * 2 + 32]);
-    LOCAL_ALIGNED_16(int16_t, coef, [8 * 8 * 2]);
-    LOCAL_ALIGNED_16(int16_t, subcoef0, [8 * 8 * 2]);
-    LOCAL_ALIGNED_16(int16_t, subcoef1, [8 * 8 * 2]);
-    H264DSPContext h;
-    int bit_depth, sz, align, dc;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, int16_t *block, int stride);
-
-    for (bit_depth = 8; bit_depth <= 10; bit_depth++) {
-        ff_h264dsp_init(&h, bit_depth, 1);
-        for (sz = 4; sz <= 8; sz += 4) {
-            randomize_buffers();
-
-            if (sz == 4)
-                dct4x4(coef, bit_depth);
-            else
-                dct8x8(coef, bit_depth);
-
-            for (dc = 0; dc <= 1; dc++) {
-                void (*idct)(uint8_t *, int16_t *, int) = NULL;
-                switch ((sz << 1) | dc) {
-                case (4 << 1) | 0: idct = h.h264_idct_add; break;
-                case (4 << 1) | 1: idct = h.h264_idct_dc_add; break;
-                case (8 << 1) | 0: idct = h.h264_idct8_add; break;
-                case (8 << 1) | 1: idct = h.h264_idct8_dc_add; break;
-                }
-                if (check_func(idct, "h264_idct%d_add%s_%dbpp", sz, dc ? "_dc" : "", bit_depth)) {
-                    for (align = 0; align < 16; align += sz * SIZEOF_PIXEL) {
-                        uint8_t *dst1 = dst1_base + align;
-                        if (dc) {
-                            memset(subcoef0, 0, sz * sz * SIZEOF_COEF);
-                            memcpy(subcoef0, coef, SIZEOF_COEF);
-                        } else {
-                            memcpy(subcoef0, coef, sz * sz * SIZEOF_COEF);
-                        }
-                        memcpy(dst0, dst, sz * PIXEL_STRIDE);
-                        memcpy(dst1, dst, sz * PIXEL_STRIDE);
-                        memcpy(subcoef1, subcoef0, sz * sz * SIZEOF_COEF);
-                        call_ref(dst0, subcoef0, PIXEL_STRIDE);
-                        call_new(dst1, subcoef1, PIXEL_STRIDE);
-                        if (memcmp(dst0, dst1, sz * PIXEL_STRIDE) ||
-                            memcmp(subcoef0, subcoef1, sz * sz * SIZEOF_COEF))
-                            fail();
-                        bench_new(dst1, subcoef1, sz * SIZEOF_PIXEL);
-                    }
-                }
-            }
-        }
-    }
-}
-
-static void check_idct_multiple(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, dst_full,  [16 * 16 * 2]);
-    LOCAL_ALIGNED_16(int16_t, coef_full, [16 * 16 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst0,  [16 * 16 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst1,  [16 * 16 * 2]);
-    LOCAL_ALIGNED_16(int16_t, coef0, [16 * 16 * 2]);
-    LOCAL_ALIGNED_16(int16_t, coef1, [16 * 16 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, nnzc,  [15 * 8]);
-    H264DSPContext h;
-    int bit_depth, i, y, func;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, const int *block_offset, int16_t *block, int stride, const uint8_t nnzc[15*8]);
-
-    for (bit_depth = 8; bit_depth <= 10; bit_depth++) {
-        ff_h264dsp_init(&h, bit_depth, 1);
-        for (func = 0; func < 3; func++) {
-            void (*idct)(uint8_t *, const int *, int16_t *, int, const uint8_t[]) = NULL;
-            const char *name;
-            int sz = 4, intra = 0;
-            int block_offset[16] = { 0 };
-            switch (func) {
-            case 0:
-                idct = h.h264_idct_add16;
-                name = "h264_idct_add16";
-                break;
-            case 1:
-                idct = h.h264_idct_add16intra;
-                name = "h264_idct_add16intra";
-                intra = 1;
-                break;
-            case 2:
-                idct = h.h264_idct8_add4;
-                name = "h264_idct8_add4";
-                sz = 8;
-                break;
-            }
-            memset(nnzc, 0, 15 * 8);
-            memset(coef_full, 0, 16 * 16 * SIZEOF_COEF);
-            for (i = 0; i < 16 * 16; i += sz * sz) {
-                uint8_t src[8 * 8 * 2];
-                uint8_t dst[8 * 8 * 2];
-                int16_t coef[8 * 8 * 2];
-                int index = i / sz;
-                int block_y = (index / 16) * sz;
-                int block_x = index % 16;
-                int offset = (block_y * 16 + block_x) * SIZEOF_PIXEL;
-                int nnz = rnd() % 3;
-
-                randomize_buffers();
-                if (sz == 4)
-                    dct4x4(coef, bit_depth);
-                else
-                    dct8x8(coef, bit_depth);
-
-                for (y = 0; y < sz; y++)
-                    memcpy(&dst_full[offset + y * 16 * SIZEOF_PIXEL],
-                           &dst[PIXEL_STRIDE * y], sz * SIZEOF_PIXEL);
-
-                if (nnz > 1)
-                    nnz = sz * sz;
-                memcpy(&coef_full[i * SIZEOF_COEF/sizeof(coef[0])],
-                       coef, nnz * SIZEOF_COEF);
-
-                if (intra && nnz == 1)
-                    nnz = 0;
-
-                nnzc[scan8[i / 16]] = nnz;
-                block_offset[i / 16] = offset;
-            }
-
-            if (check_func(idct, "%s_%dbpp", name, bit_depth)) {
-                memcpy(coef0, coef_full, 16 * 16 * SIZEOF_COEF);
-                memcpy(coef1, coef_full, 16 * 16 * SIZEOF_COEF);
-                memcpy(dst0, dst_full, 16 * 16 * SIZEOF_PIXEL);
-                memcpy(dst1, dst_full, 16 * 16 * SIZEOF_PIXEL);
-                call_ref(dst0, block_offset, coef0, 16 * SIZEOF_PIXEL, nnzc);
-                call_new(dst1, block_offset, coef1, 16 * SIZEOF_PIXEL, nnzc);
-                if (memcmp(dst0, dst1, 16 * 16 * SIZEOF_PIXEL) ||
-                    memcmp(coef0, coef1, 16 * 16 * SIZEOF_COEF))
-                    fail();
-                bench_new(dst1, block_offset, coef1, 16 * SIZEOF_PIXEL, nnzc);
-            }
-        }
-    }
-}
-
-
-static void check_loop_filter(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, dst, [32 * 16 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst0, [32 * 16 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst1, [32 * 16 * 2]);
-    H264DSPContext h;
-    int bit_depth;
-    int alphas[36], betas[36];
-    int8_t tc0[36][4];
-
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *pix, ptrdiff_t stride,
-                      int alpha, int beta, int8_t *tc0);
-
-    for (bit_depth = 8; bit_depth <= 10; bit_depth++) {
-        int i, j, a, c;
-        uint32_t mask = pixel_mask_lf[bit_depth - 8];
-        ff_h264dsp_init(&h, bit_depth, 1);
-        for (i = 35, a = 255, c = 250; i >= 0; i--) {
-            alphas[i] = a << (bit_depth - 8);
-            betas[i]  = (i + 1) / 2 << (bit_depth - 8);
-            tc0[i][0] = tc0[i][3] = (c + 6) / 10;
-            tc0[i][1] = (c + 7) / 15;
-            tc0[i][2] = (c + 9) / 20;
-            a = a*9/10;
-            c = c*9/10;
-        }
-
-#define CHECK_LOOP_FILTER(name, align, idc)                             \
-        do {                                                            \
-            if (check_func(h.name, #name #idc "_%dbpp", bit_depth)) {   \
-                for (j = 0; j < 36; j++) {                              \
-                    intptr_t off = 8 * 32 + (j & 15) * 4 * !align;      \
-                    for (i = 0; i < 1024; i+=4) {                       \
-                        AV_WN32A(dst + i, rnd() & mask);                \
-                    }                                                   \
-                    memcpy(dst0, dst, 32 * 16 * 2);                     \
-                    memcpy(dst1, dst, 32 * 16 * 2);                     \
-                                                                        \
-                    call_ref(dst0 + off, 32, alphas[j], betas[j], tc0[j]); \
-                    call_new(dst1 + off, 32, alphas[j], betas[j], tc0[j]); \
-                    if (memcmp(dst0, dst1, 32 * 16 * SIZEOF_PIXEL)) {   \
-                        fprintf(stderr, #name #idc ": j:%d, alpha:%d beta:%d " \
-                                "tc0:{%d,%d,%d,%d}\n", j, alphas[j], betas[j], \
-                                tc0[j][0], tc0[j][1], tc0[j][2], tc0[j][3]); \
-                        fail();                                         \
-                    }                                                   \
-                    bench_new(dst1, 32, alphas[j], betas[j], tc0[j]);   \
-                }                                                       \
-            }                                                           \
-        } while (0)
-
-        CHECK_LOOP_FILTER(h264_v_loop_filter_luma, 1,);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_luma, 0,);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_luma_mbaff, 0,);
-        CHECK_LOOP_FILTER(h264_v_loop_filter_chroma, 1,);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_chroma, 0,);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_chroma_mbaff, 0,);
-
-        ff_h264dsp_init(&h, bit_depth, 2);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_chroma, 0, 422);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_chroma_mbaff, 0, 422);
-#undef CHECK_LOOP_FILTER
-    }
-}
-
-static void check_loop_filter_intra(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, dst, [32 * 16 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst0, [32 * 16 * 2]);
-    LOCAL_ALIGNED_16(uint8_t, dst1, [32 * 16 * 2]);
-    H264DSPContext h;
-    int bit_depth;
-    int alphas[36], betas[36];
-
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *pix, ptrdiff_t stride,
-                      int alpha, int beta);
-
-    for (bit_depth = 8; bit_depth <= 10; bit_depth++) {
-        int i, j, a;
-        uint32_t mask = pixel_mask_lf[bit_depth - 8];
-        ff_h264dsp_init(&h, bit_depth, 1);
-        for (i = 35, a = 255; i >= 0; i--) {
-            alphas[i] = a << (bit_depth - 8);
-            betas[i]  = (i + 1) / 2 << (bit_depth - 8);
-            a = a*9/10;
-        }
-
-#define CHECK_LOOP_FILTER(name, align, idc)                             \
-        do {                                                            \
-            if (check_func(h.name, #name #idc "_%dbpp", bit_depth)) {   \
-                for (j = 0; j < 36; j++) {                              \
-                    intptr_t off = 8 * 32 + (j & 15) * 4 * !align;      \
-                    for (i = 0; i < 1024; i+=4) {                       \
-                        AV_WN32A(dst + i, rnd() & mask);                \
-                    }                                                   \
-                    memcpy(dst0, dst, 32 * 16 * 2);                     \
-                    memcpy(dst1, dst, 32 * 16 * 2);                     \
-                                                                        \
-                    call_ref(dst0 + off, 32, alphas[j], betas[j]);      \
-                    call_new(dst1 + off, 32, alphas[j], betas[j]);      \
-                    if (memcmp(dst0, dst1, 32 * 16 * SIZEOF_PIXEL)) {   \
-                        fprintf(stderr, #name #idc ": j:%d, alpha:%d beta:%d\n", \
-                                j, alphas[j], betas[j]);                \
-                        fail();                                         \
-                    }                                                   \
-                    bench_new(dst1, 32, alphas[j], betas[j]);           \
-                }                                                       \
-            }                                                           \
-        } while (0)
-
-        CHECK_LOOP_FILTER(h264_v_loop_filter_luma_intra, 1,);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_luma_intra, 0,);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_luma_mbaff_intra, 0,);
-        CHECK_LOOP_FILTER(h264_v_loop_filter_chroma_intra, 1,);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_chroma_intra, 0,);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_chroma_mbaff_intra, 0,);
-
-        ff_h264dsp_init(&h, bit_depth, 2);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_chroma_intra, 0, 422);
-        CHECK_LOOP_FILTER(h264_h_loop_filter_chroma_mbaff_intra, 0, 422);
-#undef CHECK_LOOP_FILTER
-    }
-}
-
-void checkasm_check_h264dsp(void)
-{
-    check_idct();
-    check_idct_multiple();
-    report("idct");
-
-    check_loop_filter();
-    report("loop_filter");
-
-    check_loop_filter_intra();
-    report("loop_filter_intra");
-}
diff --git a/tests/checkasm/h264pred.c b/tests/checkasm/h264pred.c
deleted file mode 100644
index 59dcb2f..0000000
--- a/tests/checkasm/h264pred.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright (c) 2015 Henrik Gramner
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/avcodec.h"
-#include "libavcodec/h264pred.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-static const int codec_ids[4] = { AV_CODEC_ID_H264, AV_CODEC_ID_VP8, AV_CODEC_ID_RV40, AV_CODEC_ID_SVQ3 };
-
-static const char * const pred4x4_modes[4][15] = {
-    { /* H.264 */
-        [VERT_PRED           ] = "vertical",
-        [HOR_PRED            ] = "horizontal",
-        [DC_PRED             ] = "dc",
-        [DIAG_DOWN_LEFT_PRED ] = "down_left",
-        [DIAG_DOWN_RIGHT_PRED] = "down_right",
-        [VERT_RIGHT_PRED     ] = "vertical_right",
-        [HOR_DOWN_PRED       ] = "horizontal_right",
-        [VERT_LEFT_PRED      ] = "vertical_left",
-        [HOR_UP_PRED         ] = "horizontal_up",
-        [LEFT_DC_PRED        ] = "left_dc",
-        [TOP_DC_PRED         ] = "top_dc",
-        [DC_128_PRED         ] = "dc_128",
-    },
-    { /* VP8 */
-        [VERT_PRED     ] = "vertical_vp8",
-        [HOR_PRED      ] = "horizontal_vp8",
-        [VERT_LEFT_PRED] = "vertical_left_vp8",
-        [TM_VP8_PRED   ] = "tm_vp8",
-        [DC_127_PRED   ] = "dc_127_vp8",
-        [DC_129_PRED   ] = "dc_129_vp8",
-    },
-    { /* RV40 */
-        [DIAG_DOWN_LEFT_PRED            ] = "down_left_rv40",
-        [VERT_LEFT_PRED                 ] = "vertical_left_rv40",
-        [HOR_UP_PRED                    ] = "horizontal_up_rv40",
-        [DIAG_DOWN_LEFT_PRED_RV40_NODOWN] = "down_left_nodown_rv40",
-        [HOR_UP_PRED_RV40_NODOWN        ] = "horizontal_up_nodown_rv40",
-        [VERT_LEFT_PRED_RV40_NODOWN     ] = "vertical_left_nodown_rv40",
-    },
-    { /* SVQ3 */
-        [DIAG_DOWN_LEFT_PRED] = "down_left_svq3",
-    },
-};
-
-static const char * const pred8x8_modes[4][11] = {
-    { /* H.264 */
-        [DC_PRED8x8              ] = "dc",
-        [HOR_PRED8x8             ] = "horizontal",
-        [VERT_PRED8x8            ] = "vertical",
-        [PLANE_PRED8x8           ] = "plane",
-        [LEFT_DC_PRED8x8         ] = "left_dc",
-        [TOP_DC_PRED8x8          ] = "top_dc",
-        [DC_128_PRED8x8          ] = "dc_128",
-        [ALZHEIMER_DC_L0T_PRED8x8] = "mad_cow_dc_l0t",
-        [ALZHEIMER_DC_0LT_PRED8x8] = "mad_cow_dc_0lt",
-        [ALZHEIMER_DC_L00_PRED8x8] = "mad_cow_dc_l00",
-        [ALZHEIMER_DC_0L0_PRED8x8] = "mad_cow_dc_0l0",
-    },
-    { /* VP8 */
-        [PLANE_PRED8x8 ] = "tm_vp8",
-        [DC_127_PRED8x8] = "dc_127_vp8",
-        [DC_129_PRED8x8] = "dc_129_vp8",
-    },
-    { /* RV40 */
-        [DC_PRED8x8     ] = "dc_rv40",
-        [LEFT_DC_PRED8x8] = "left_dc_rv40",
-        [TOP_DC_PRED8x8 ] = "top_dc_rv40",
-    },
-    /* nothing for SVQ3 */
-};
-
-static const char * const pred16x16_modes[4][9] = {
-    { /* H.264 */
-        [DC_PRED8x8     ] = "dc",
-        [HOR_PRED8x8    ] = "horizontal",
-        [VERT_PRED8x8   ] = "vertical",
-        [PLANE_PRED8x8  ] = "plane",
-        [LEFT_DC_PRED8x8] = "left_dc",
-        [TOP_DC_PRED8x8 ] = "top_dc",
-        [DC_128_PRED8x8 ] = "dc_128",
-    },
-    { /* VP8 */
-        [PLANE_PRED8x8 ] = "tm_vp8",
-        [DC_127_PRED8x8] = "dc_127_vp8",
-        [DC_129_PRED8x8] = "dc_129_vp8",
-    },
-    { /* RV40 */
-        [PLANE_PRED8x8] = "plane_rv40",
-    },
-    { /* SVQ3 */
-        [PLANE_PRED8x8] = "plane_svq3",
-    },
-};
-
-static const uint32_t pixel_mask[3] = { 0xffffffff, 0x01ff01ff, 0x03ff03ff };
-
-#define SIZEOF_PIXEL ((bit_depth + 7) / 8)
-#define BUF_SIZE (3 * 16 * 17)
-
-#define check_pred_func(func, name, mode_name)                                    \
-    (mode_name && ((codec_ids[codec] == AV_CODEC_ID_H264) ?                       \
-                   check_func(func, "pred%s_%s_%d", name, mode_name, bit_depth) : \
-                   check_func(func, "pred%s_%s", name, mode_name)))
-
-#define randomize_buffers()                        \
-    do {                                           \
-        uint32_t mask = pixel_mask[bit_depth - 8]; \
-        int i;                                     \
-        for (i = 0; i < BUF_SIZE; i += 4) {        \
-            uint32_t r = rnd() & mask;             \
-            AV_WN32A(buf0 + i, r);                 \
-            AV_WN32A(buf1 + i, r);                 \
-        }                                          \
-    } while (0)
-
-#define src0 (buf0 + 4 * 16) /* Offset to allow room for top and left */
-#define src1 (buf1 + 4 * 16)
-
-static void check_pred4x4(H264PredContext *h, uint8_t *buf0, uint8_t *buf1,
-                          int codec, int chroma_format, int bit_depth)
-{
-    if (chroma_format == 1) {
-        uint8_t *topright = buf0 + 2*16;
-        int pred_mode;
-        declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *src, const uint8_t *topright, ptrdiff_t stride);
-
-        for (pred_mode = 0; pred_mode < 15; pred_mode++) {
-            if (check_pred_func(h->pred4x4[pred_mode], "4x4", pred4x4_modes[codec][pred_mode])) {
-                randomize_buffers();
-                call_ref(src0, topright, 12*SIZEOF_PIXEL);
-                call_new(src1, topright, 12*SIZEOF_PIXEL);
-                if (memcmp(buf0, buf1, BUF_SIZE))
-                    fail();
-                bench_new(src1, topright, 12*SIZEOF_PIXEL);
-            }
-        }
-    }
-}
-
-static void check_pred8x8(H264PredContext *h, uint8_t *buf0, uint8_t *buf1,
-                          int codec, int chroma_format, int bit_depth)
-{
-    int pred_mode;
-    declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *src, ptrdiff_t stride);
-
-    for (pred_mode = 0; pred_mode < 11; pred_mode++) {
-        if (check_pred_func(h->pred8x8[pred_mode], (chroma_format == 2) ? "8x16" : "8x8",
-                            pred8x8_modes[codec][pred_mode])) {
-            randomize_buffers();
-            call_ref(src0, 24*SIZEOF_PIXEL);
-            call_new(src1, 24*SIZEOF_PIXEL);
-            if (memcmp(buf0, buf1, BUF_SIZE))
-                fail();
-            bench_new(src1, 24*SIZEOF_PIXEL);
-        }
-    }
-}
-
-static void check_pred16x16(H264PredContext *h, uint8_t *buf0, uint8_t *buf1,
-                            int codec, int chroma_format, int bit_depth)
-{
-    if (chroma_format == 1) {
-        int pred_mode;
-        declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *src, ptrdiff_t stride);
-
-        for (pred_mode = 0; pred_mode < 9; pred_mode++) {
-            if (check_pred_func(h->pred16x16[pred_mode], "16x16", pred16x16_modes[codec][pred_mode])) {
-                randomize_buffers();
-                call_ref(src0, 48);
-                call_new(src1, 48);
-                if (memcmp(buf0, buf1, BUF_SIZE))
-                    fail();
-                bench_new(src1, 48);
-            }
-        }
-    }
-}
-
-static void check_pred8x8l(H264PredContext *h, uint8_t *buf0, uint8_t *buf1,
-                           int codec, int chroma_format, int bit_depth)
-{
-    if (chroma_format == 1 && codec_ids[codec] == AV_CODEC_ID_H264) {
-        int pred_mode;
-        declare_func_emms(AV_CPU_FLAG_MMXEXT, void, uint8_t *src, int topleft, int topright, ptrdiff_t stride);
-
-        for (pred_mode = 0; pred_mode < 12; pred_mode++) {
-            if (check_pred_func(h->pred8x8l[pred_mode], "8x8l", pred4x4_modes[codec][pred_mode])) {
-                int neighbors;
-                for (neighbors = 0; neighbors <= 0xc000; neighbors += 0x4000) {
-                    int has_topleft  = neighbors & 0x8000;
-                    int has_topright = neighbors & 0x4000;
-
-                    if ((pred_mode == DIAG_DOWN_RIGHT_PRED || pred_mode == VERT_RIGHT_PRED) && !has_topleft)
-                        continue; /* Those aren't allowed according to the spec */
-
-                    randomize_buffers();
-                    call_ref(src0, has_topleft, has_topright, 24*SIZEOF_PIXEL);
-                    call_new(src1, has_topleft, has_topright, 24*SIZEOF_PIXEL);
-                    if (memcmp(buf0, buf1, BUF_SIZE))
-                        fail();
-                    bench_new(src1, has_topleft, has_topright, 24*SIZEOF_PIXEL);
-                }
-            }
-        }
-    }
-}
-
-/* TODO: Add tests for H.264 lossless H/V prediction */
-
-void checkasm_check_h264pred(void)
-{
-    static const struct {
-        void (*func)(H264PredContext*, uint8_t*, uint8_t*, int, int, int);
-        const char *name;
-    } tests[] = {
-        { check_pred4x4,   "pred4x4"   },
-        { check_pred8x8,   "pred8x8"   },
-        { check_pred16x16, "pred16x16" },
-        { check_pred8x8l,  "pred8x8l"  },
-    };
-
-    LOCAL_ALIGNED_16(uint8_t, buf0, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, buf1, [BUF_SIZE]);
-    H264PredContext h;
-    int test, codec, chroma_format, bit_depth;
-
-    for (test = 0; test < FF_ARRAY_ELEMS(tests); test++) {
-        for (codec = 0; codec < 4; codec++) {
-            int codec_id = codec_ids[codec];
-            for (bit_depth = 8; bit_depth <= (codec_id == AV_CODEC_ID_H264 ? 10 : 8); bit_depth++)
-                for (chroma_format = 1; chroma_format <= (codec_id == AV_CODEC_ID_H264 ? 2 : 1); chroma_format++) {
-                    ff_h264_pred_init(&h, codec_id, bit_depth, chroma_format);
-                    tests[test].func(&h, buf0, buf1, codec, chroma_format, bit_depth);
-                }
-        }
-        report("%s", tests[test].name);
-    }
-}
diff --git a/tests/checkasm/h264qpel.c b/tests/checkasm/h264qpel.c
deleted file mode 100644
index ba069f1..0000000
--- a/tests/checkasm/h264qpel.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2015 Henrik Gramner
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/h264qpel.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-static const uint32_t pixel_mask[3] = { 0xffffffff, 0x01ff01ff, 0x03ff03ff };
-
-#define SIZEOF_PIXEL ((bit_depth + 7) / 8)
-#define BUF_SIZE (2 * 16 * (16 + 3 + 4))
-
-#define randomize_buffers()                        \
-    do {                                           \
-        uint32_t mask = pixel_mask[bit_depth - 8]; \
-        int k;                                     \
-        for (k = 0; k < BUF_SIZE; k += 4) {        \
-            uint32_t r = rnd() & mask;             \
-            AV_WN32A(buf0 + k, r);                 \
-            AV_WN32A(buf1 + k, r);                 \
-            r = rnd();                             \
-            AV_WN32A(dst0 + k, r);                 \
-            AV_WN32A(dst1 + k, r);                 \
-        }                                          \
-    } while (0)
-
-#define src0 (buf0 + 3 * 2 * 16) /* h264qpel functions read data from negative src pointer offsets */
-#define src1 (buf1 + 3 * 2 * 16)
-
-void checkasm_check_h264qpel(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, buf0, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, buf1, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, dst0, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, dst1, [BUF_SIZE]);
-    H264QpelContext h;
-    int op, bit_depth, i, j;
-    declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, const uint8_t *src, ptrdiff_t stride);
-
-    for (op = 0; op < 2; op++) {
-        qpel_mc_func (*tab)[16] = op ? h.avg_h264_qpel_pixels_tab : h.put_h264_qpel_pixels_tab;
-        const char *op_name = op ? "avg" : "put";
-
-        for (bit_depth = 8; bit_depth <= 10; bit_depth++) {
-            ff_h264qpel_init(&h, bit_depth);
-            for (i = 0; i < (op ? 3 : 4); i++) {
-                int size = 16 >> i;
-                for (j = 0; j < 16; j++)
-                    if (check_func(tab[i][j], "%s_h264_qpel_%d_mc%d%d_%d", op_name, size, j & 3, j >> 2, bit_depth)) {
-                        randomize_buffers();
-                        call_ref(dst0, src0, size * SIZEOF_PIXEL);
-                        call_new(dst1, src1, size * SIZEOF_PIXEL);
-                        if (memcmp(buf0, buf1, BUF_SIZE) || memcmp(dst0, dst1, BUF_SIZE))
-                            fail();
-                        bench_new(dst1, src1, size * SIZEOF_PIXEL);
-                    }
-            }
-        }
-        report("%s", op_name);
-    }
-}
diff --git a/tests/checkasm/hevc_add_res.c b/tests/checkasm/hevc_add_res.c
deleted file mode 100644
index 0a3bcbb..0000000
--- a/tests/checkasm/hevc_add_res.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2016 Alexandra Hájková
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-
-#include "libavutil/intreadwrite.h"
-
-#include "libavcodec/hevcdsp.h"
-
-#include "checkasm.h"
-
-#define randomize_buffers(buf, size)            \
-    do {                                        \
-        int j;                                  \
-        for (j = 0; j < size; j++) {            \
-            int16_t r = rnd();                  \
-            AV_WN16A(buf + j, r >> 3);          \
-        }                                       \
-    } while (0)
-
-#define randomize_buffers2(buf, size)             \
-    do {                                          \
-        int j;                                    \
-        for (j = 0; j < size; j++)                \
-            AV_WN16A(buf + j * 2, rnd() & 0x3FF); \
-    } while (0)
-
-static void compare_add_res(int size, ptrdiff_t stride, int overflow_test)
-{
-    LOCAL_ALIGNED_32(int16_t, res0, [32 * 32]);
-    LOCAL_ALIGNED_32(int16_t, res1, [32 * 32]);
-    LOCAL_ALIGNED_32(uint8_t, dst0, [32 * 32 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, dst1, [32 * 32 * 2]);
-
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, int16_t *res, ptrdiff_t stride);
-
-    randomize_buffers(res0, size);
-    randomize_buffers2(dst0, size);
-    if (overflow_test)
-        res0[0] = 0x8000;
-    memcpy(res1, res0, sizeof(*res0) * size);
-    memcpy(dst1, dst0, sizeof(int16_t) * size);
-
-    call_ref(dst0, res0, stride);
-    call_new(dst1, res1, stride);
-    if (memcmp(dst0, dst1, size))
-        fail();
-    bench_new(dst1, res1, stride);
-}
-
-static void check_add_res(HEVCDSPContext h, int bit_depth)
-{
-    int i;
-
-    for (i = 2; i <= 5; i++) {
-        int block_size = 1 << i;
-        int size = block_size * block_size;
-        ptrdiff_t stride = block_size << (bit_depth > 8);
-
-        if (check_func(h.add_residual[i - 2], "hevc_add_res_%dx%d_%d", block_size, block_size, bit_depth)) {
-            compare_add_res(size, stride, 0);
-            // overflow test for res = -32768
-            compare_add_res(size, stride, 1);
-        }
-    }
-}
-
-void checkasm_check_hevc_add_res(void)
-{
-    int bit_depth;
-
-    for (bit_depth = 8; bit_depth <= 10; bit_depth++) {
-        HEVCDSPContext h;
-
-        ff_hevc_dsp_init(&h, bit_depth);
-        check_add_res(h, bit_depth);
-    }
-    report("add_residual");
-}
diff --git a/tests/checkasm/hevc_idct.c b/tests/checkasm/hevc_idct.c
deleted file mode 100644
index c20111c..0000000
--- a/tests/checkasm/hevc_idct.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2016 Alexandra Hájková
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-
-#include "libavutil/intreadwrite.h"
-
-#include "libavcodec/hevcdsp.h"
-
-#include "checkasm.h"
-
-#define randomize_buffers(buf, size)            \
-    do {                                        \
-        int j;                                  \
-        for (j = 0; j < size; j++) {            \
-            int16_t r = rnd();                  \
-            AV_WN16A(buf + j, r);               \
-        }                                       \
-    } while (0)
-
-static void check_idct(HEVCDSPContext h, int bit_depth)
-{
-    int i;
-    LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]);
-    LOCAL_ALIGNED(32, int16_t, coeffs1, [32 * 32]);
-
-    for (i = 2; i <= 5; i++) {
-        int block_size = 1 << i;
-        int size = block_size * block_size;
-        int col_limit = block_size;
-        declare_func(void, int16_t *coeffs, int col_limit);
-
-        randomize_buffers(coeffs0, size);
-        memcpy(coeffs1, coeffs0, sizeof(*coeffs0) * size);
-        if (check_func(h.idct[i - 2], "hevc_idct_%dx%d_%d", block_size, block_size, bit_depth)) {
-            call_ref(coeffs0, col_limit);
-            call_new(coeffs1, col_limit);
-            if (memcmp(coeffs0, coeffs1, sizeof(*coeffs0) * size))
-                fail();
-            bench_new(coeffs1, col_limit);
-        }
-    }
-}
-
-static void check_idct_dc(HEVCDSPContext h, int bit_depth)
-{
-    int i;
-    LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]);
-    LOCAL_ALIGNED(32, int16_t, coeffs1, [32 * 32]);
-
-    for (i = 2; i <= 5; i++) {
-        int block_size = 1 << i;
-        int size = block_size * block_size;
-        declare_func_emms(AV_CPU_FLAG_MMXEXT, void, int16_t *coeffs);
-
-        randomize_buffers(coeffs0, size);
-        memcpy(coeffs1, coeffs0, sizeof(*coeffs0) * size);
-
-        if (check_func(h.idct_dc[i - 2], "hevc_idct_%dx%d_dc_%d", block_size, block_size, bit_depth)) {
-            call_ref(coeffs0);
-            call_new(coeffs1);
-            if (memcmp(coeffs0, coeffs1, sizeof(*coeffs0) * size))
-                fail();
-            bench_new(coeffs1);
-        }
-    }
-}
-
-void checkasm_check_hevc_idct(void)
-{
-    int bit_depth;
-
-    for (bit_depth = 8; bit_depth <= 12; bit_depth += 2) {
-        HEVCDSPContext h;
-
-        ff_hevc_dsp_init(&h, bit_depth);
-        check_idct_dc(h, bit_depth);
-    }
-    report("idct_dc");
-
-    for (bit_depth = 8; bit_depth <= 12; bit_depth += 2) {
-        HEVCDSPContext h;
-
-        ff_hevc_dsp_init(&h, bit_depth);
-        check_idct(h, bit_depth);
-    }
-    report("idct");
-}
diff --git a/tests/checkasm/jpeg2000dsp.c b/tests/checkasm/jpeg2000dsp.c
deleted file mode 100644
index bce534d..0000000
--- a/tests/checkasm/jpeg2000dsp.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2015 James Almer
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "checkasm.h"
-#include "libavcodec/jpeg2000dsp.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-#define BUF_SIZE 512
-
-#define randomize_buffers()                 \
-    do {                                    \
-        int i;                              \
-        for (i = 0; i < BUF_SIZE*3; i++)    \
-            src[i] = rnd();                 \
-    } while (0)
-
-#define randomize_buffers_float()                    \
-    do {                                             \
-        int i;                                       \
-        for (i = 0; i < BUF_SIZE*3; i++)             \
-            src[i] = (float)rnd() / (UINT_MAX >> 5); \
-    } while (0)
-
-static void check_rct_int(void)
-{
-    LOCAL_ALIGNED_32(int32_t, src, [BUF_SIZE*3]);
-    LOCAL_ALIGNED_32(int32_t, ref, [BUF_SIZE*3]);
-    LOCAL_ALIGNED_32(int32_t, new, [BUF_SIZE*3]);
-    int32_t *ref0 = &ref[BUF_SIZE*0], *new0 = &new[BUF_SIZE*0];
-    int32_t *ref1 = &ref[BUF_SIZE*1], *new1 = &new[BUF_SIZE*1];
-    int32_t *ref2 = &ref[BUF_SIZE*2], *new2 = &new[BUF_SIZE*2];
-
-    declare_func(void, void *src0, void *src1, void *src2, int csize);
-
-    randomize_buffers();
-    memcpy(ref, src, BUF_SIZE * 3 * sizeof(*src));
-    memcpy(new, src, BUF_SIZE * 3 * sizeof(*src));
-    call_ref(ref0, ref1, ref2, BUF_SIZE);
-    call_new(new0, new1, new2, BUF_SIZE);
-    if (memcmp(ref0, new0, BUF_SIZE * sizeof(*src)) ||
-        memcmp(ref1, new1, BUF_SIZE * sizeof(*src)) ||
-        memcmp(ref2, new2, BUF_SIZE * sizeof(*src)))
-        fail();
-    memcpy(new, src, BUF_SIZE * 3 * sizeof(*src));
-    bench_new(new0, new1, new2, BUF_SIZE);
-}
-
-static void check_ict_float(void)
-{
-    LOCAL_ALIGNED_32(float, src, [BUF_SIZE*3]);
-    LOCAL_ALIGNED_32(float, ref, [BUF_SIZE*3]);
-    LOCAL_ALIGNED_32(float, new, [BUF_SIZE*3]);
-    float *ref0 = &ref[BUF_SIZE*0], *new0 = &new[BUF_SIZE*0];
-    float *ref1 = &ref[BUF_SIZE*1], *new1 = &new[BUF_SIZE*1];
-    float *ref2 = &ref[BUF_SIZE*2], *new2 = &new[BUF_SIZE*2];
-
-    declare_func(void, void *src0, void *src1, void *src2, int csize);
-
-    randomize_buffers_float();
-    memcpy(ref, src, BUF_SIZE * 3 * sizeof(*src));
-    memcpy(new, src, BUF_SIZE * 3 * sizeof(*src));
-    call_ref(ref0, ref1, ref2, BUF_SIZE);
-    call_new(new0, new1, new2, BUF_SIZE);
-    if (!float_near_abs_eps_array(ref0, new0, 1.0e-5, BUF_SIZE) ||
-        !float_near_abs_eps_array(ref1, new1, 1.0e-5, BUF_SIZE) ||
-        !float_near_abs_eps_array(ref2, new2, 1.0e-5, BUF_SIZE))
-        fail();
-    memcpy(new, src, BUF_SIZE * 3 * sizeof(*src));
-    bench_new(new0, new1, new2, BUF_SIZE);
-}
-
-void checkasm_check_jpeg2000dsp(void)
-{
-    Jpeg2000DSPContext h;
-
-    ff_jpeg2000dsp_init(&h);
-
-    if (check_func(h.mct_decode[FF_DWT53], "jpeg2000_rct_int"))
-        check_rct_int();
-    if (check_func(h.mct_decode[FF_DWT97], "jpeg2000_ict_float"))
-        check_ict_float();
-
-    report("mct_decode");
-}
diff --git a/tests/checkasm/llviddsp.c b/tests/checkasm/llviddsp.c
deleted file mode 100644
index 4f75ffc..0000000
--- a/tests/checkasm/llviddsp.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (c) 2016 Alexandra Hájková
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-
-#include "libavutil/common.h"
-#include "libavutil/intreadwrite.h"
-#include "libavutil/mem.h"
-
-#include "libavcodec/lossless_videodsp.h"
-
-#include "checkasm.h"
-
-#define randomize_buffers(buf, size)     \
-    do {                                 \
-        int j;                           \
-        uint8_t *tmp_buf = (uint8_t *)buf;\
-        for (j = 0; j < size; j++)       \
-            tmp_buf[j] = rnd() & 0xFF;       \
-    } while (0)
-
-#define init_buffer(a0, a1, type, width)\
-    if (!a0 || !a1)\
-        fail();\
-    randomize_buffers(a0, width * sizeof(type));\
-    memcpy(a1, a0, width*sizeof(type));\
-
-static void check_add_bytes(LLVidDSPContext c, int width)
-{
-    uint8_t *dst0 = av_mallocz(width);
-    uint8_t *dst1 = av_mallocz(width);
-    uint8_t *src0 = av_mallocz_array(width, sizeof(uint8_t));
-    uint8_t *src1 = av_mallocz_array(width, sizeof(uint8_t));
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, uint8_t *src, ptrdiff_t w);
-
-    init_buffer(src0, src1, uint8_t, width);
-
-    if (!dst0 || !dst1)
-        fail();
-
-
-    if (check_func(c.add_bytes, "add_bytes")) {
-        call_ref(dst0, src0, width);
-        call_new(dst1, src1, width);
-        if (memcmp(dst0, dst1, width))
-            fail();
-        bench_new(dst1, src1, width);
-    }
-
-    av_free(src0);
-    av_free(src1);
-    av_free(dst0);
-    av_free(dst1);
-}
-
-static void check_add_median_pred(LLVidDSPContext c, int width) {
-    int A0, A1, B0, B1;
-    uint8_t *dst0 = av_mallocz(width);
-    uint8_t *dst1 = av_mallocz(width);
-    uint8_t *src0 = av_mallocz_array(width, sizeof(uint8_t));
-    uint8_t *src1 = av_mallocz_array(width, sizeof(uint8_t));
-    uint8_t *diff0 = av_mallocz_array(width, sizeof(uint8_t));
-    uint8_t *diff1 = av_mallocz_array(width, sizeof(uint8_t));
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, const uint8_t *src1,
-                      const uint8_t *diff, ptrdiff_t w,
-                      int *left, int *left_top);
-
-    init_buffer(src0, src1, uint8_t, width);
-    init_buffer(diff0, diff1, uint8_t, width);
-
-    A0 = rnd() & 0xFF;
-    B0 = rnd() & 0xFF;
-    A1 = A0;
-    B1 = B0;
-
-
-    if (check_func(c.add_median_pred, "add_median_pred")) {
-        call_ref(dst0, src0, diff0, width, &A0, &B0);
-        call_new(dst1, src1, diff1, width, &A1, &B1);
-        if (memcmp(dst0, dst1, width) || (A0 != A1) || (B0 != B1))
-            fail();
-        bench_new(dst1, src1, diff1, width, &A1, &B1);
-    }
-
-    av_free(src0);
-    av_free(src1);
-    av_free(diff0);
-    av_free(diff1);
-    av_free(dst0);
-    av_free(dst1);
-}
-
-static void check_add_left_pred(LLVidDSPContext c, int width, int acc, const char * report)
-{
-    int res0, res1;
-    uint8_t *dst0 = av_mallocz(width);
-    uint8_t *dst1 = av_mallocz(width);
-    uint8_t *src0 = av_mallocz_array(width, sizeof(uint8_t));
-    uint8_t *src1 = av_mallocz_array(width, sizeof(uint8_t));
-    declare_func_emms(AV_CPU_FLAG_MMX, int, uint8_t *dst, uint8_t *src, ptrdiff_t w, int acc);
-
-    init_buffer(src0, src1, uint8_t, width);
-
-    if (!dst0 || !dst1)
-        fail();
-
-    if (check_func(c.add_left_pred, "%s", report)) {
-        res0 = call_ref(dst0, src0, width, acc);
-        res1 = call_new(dst1, src1, width, acc);
-        if ((res0 & 0xFF) != (res1 & 0xFF)||\
-            memcmp(dst0, dst1, width))
-            fail();
-        bench_new(dst1, src1, width, acc);
-    }
-
-    av_free(src0);
-    av_free(src1);
-    av_free(dst0);
-    av_free(dst1);
-}
-
-static void check_add_left_pred_16(LLVidDSPContext c, unsigned mask, int width, unsigned acc, const char * report)
-{
-    int res0, res1;
-    uint16_t *dst0 = av_mallocz_array(width, sizeof(uint16_t));
-    uint16_t *dst1 = av_mallocz_array(width, sizeof(uint16_t));
-    uint16_t *src0 = av_mallocz_array(width, sizeof(uint16_t));
-    uint16_t *src1 = av_mallocz_array(width, sizeof(uint16_t));
-    declare_func_emms(AV_CPU_FLAG_MMX, int, uint16_t *dst, uint16_t *src, unsigned mask, ptrdiff_t w, unsigned acc);
-
-    init_buffer(src0, src1, uint16_t, width);
-
-    if (!dst0 || !dst1)
-        fail();
-
-    if (check_func(c.add_left_pred_int16, "%s", report)) {
-        res0 = call_ref(dst0, src0, mask, width, acc);
-        res1 = call_new(dst1, src1, mask, width, acc);
-        if ((res0 &0xFFFF) != (res1 &0xFFFF)||\
-            memcmp(dst0, dst1, width))
-            fail();
-        bench_new(dst1, src1, mask, width, acc);
-    }
-
-    av_free(src0);
-    av_free(src1);
-    av_free(dst0);
-    av_free(dst1);
-}
-
-static void check_add_gradient_pred(LLVidDSPContext c, int w) {
-    int src_size, stride;
-    uint8_t *src0, *src1;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *src, const ptrdiff_t stride,
-                      const ptrdiff_t width);
-
-    stride = w + 32;
-    src_size = (stride + 32) * 2; /* dsp need previous line, and ignore the start of the line */
-    src0 = av_mallocz(src_size);
-    src1 = av_mallocz(src_size);
-
-    init_buffer(src0, src1, uint8_t, src_size);
-
-    if (check_func(c.add_gradient_pred, "add_gradient_pred")) {
-        call_ref(src0 + stride + 32, stride, w);
-        call_new(src1 + stride + 32, stride, w);
-        if (memcmp(src0, src1, stride)||/* previous line doesn't change */
-            memcmp(src0+stride, src1 + stride, w + 32)) {
-            fail();
-        }
-        bench_new(src1 + stride + 32, stride, w);
-    }
-
-    av_free(src0);
-    av_free(src1);
-}
-
-void checkasm_check_llviddsp(void)
-{
-    LLVidDSPContext c;
-    int width = 16 * av_clip(rnd(), 16, 128);
-    int accRnd = rnd() & 0xFF;
-
-    ff_llviddsp_init(&c);
-
-    check_add_bytes(c, width);
-    report("add_bytes");
-
-    check_add_median_pred(c, width);
-    report("add_median_pred");
-
-    check_add_left_pred(c, width, 0, "add_left_pred_zero");
-    report("add_left_pred_zero");
-
-    check_add_left_pred(c, width, accRnd, "add_left_pred_rnd_acc");
-    report("add_left_pred_rnd_acc");
-
-    check_add_left_pred_16(c, 255, width, accRnd, "add_left_pred_int16");
-    report("add_left_pred_int16");
-
-    check_add_gradient_pred(c, width);
-    report("add_gradient_pred");
-}
diff --git a/tests/checkasm/pixblockdsp.c b/tests/checkasm/pixblockdsp.c
deleted file mode 100644
index e14b0a9..0000000
--- a/tests/checkasm/pixblockdsp.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2015 Tiancheng "Timothy" Gu
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/pixblockdsp.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-#define BUF_UNITS 8
-#define BUF_SIZE (BUF_UNITS * 128 + 8 * BUF_UNITS)
-
-#define randomize_buffers()                 \
-    do {                                    \
-        int i;                              \
-        for (i = 0; i < BUF_SIZE; i += 4) { \
-            uint32_t r = rnd();             \
-            AV_WN32A(src10 + i, r);         \
-            AV_WN32A(src11 + i, r);         \
-            r = rnd();                      \
-            AV_WN32A(src20 + i, r);         \
-            AV_WN32A(src21 + i, r);         \
-            r = rnd();                      \
-            AV_WN32A(dst0_ + i, r);         \
-            AV_WN32A(dst1_ + i, r);         \
-        }                                   \
-    } while (0)
-
-#define check_get_pixels(type)                                                             \
-    do {                                                                                   \
-        int i;                                                                             \
-        declare_func_emms(AV_CPU_FLAG_MMX, void, int16_t *block, const uint8_t *pixels, ptrdiff_t line_size);    \
-                                                                                           \
-        for (i = 0; i < BUF_UNITS; i++) {                                              \
-            int src_offset = i * 64 * sizeof(type) + 8 * i; /* Test various alignments */      \
-            int dst_offset = i * 64; /* dst must be aligned */                             \
-            randomize_buffers();                                                           \
-            call_ref(dst0 + dst_offset, src10 + src_offset, 8);                            \
-            call_new(dst1 + dst_offset, src11 + src_offset, 8);                            \
-            if (memcmp(src10, src11, BUF_SIZE)|| memcmp(dst0, dst1, BUF_SIZE)) \
-                fail();                                                                    \
-            bench_new(dst1 + dst_offset, src11 + src_offset, 8);                           \
-        }                                                                                  \
-    } while (0)
-
-#define check_diff_pixels(type)                                                            \
-    do {                                                                                   \
-        int i;                                                                             \
-        declare_func_emms(AV_CPU_FLAG_MMX, void, int16_t *av_restrict block, const uint8_t *s1, const uint8_t *s2, ptrdiff_t stride); \
-                                                                                           \
-        for (i = 0; i < BUF_UNITS; i++) {                                              \
-            int src_offset = i * 64 * sizeof(type) + 8 * i; /* Test various alignments */      \
-            int dst_offset = i * 64; /* dst must be aligned */                             \
-            randomize_buffers();                                                           \
-            call_ref(dst0 + dst_offset, src10 + src_offset, src20 + src_offset, 8);        \
-            call_new(dst1 + dst_offset, src11 + src_offset, src21 + src_offset, 8);        \
-            if (memcmp(src10, src11, BUF_SIZE) || memcmp(src20, src21, BUF_SIZE) || memcmp(dst0, dst1, BUF_SIZE)) \
-                fail();                                                                    \
-            bench_new(dst1 + dst_offset, src11 + src_offset, src21 + src_offset, 8);       \
-        }                                                                                  \
-    } while (0)
-
-void checkasm_check_pixblockdsp(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, src10, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, src11, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, src20, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, src21, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, dst0_, [BUF_SIZE]);
-    LOCAL_ALIGNED_16(uint8_t, dst1_, [BUF_SIZE]);
-    uint16_t *dst0 = (uint16_t *)dst0_;
-    uint16_t *dst1 = (uint16_t *)dst1_;
-    PixblockDSPContext h;
-    AVCodecContext avctx = {
-        .bits_per_raw_sample = 8,
-    };
-
-    ff_pixblockdsp_init(&h, &avctx);
-
-    if (check_func(h.get_pixels, "get_pixels"))
-        check_get_pixels(uint8_t);
-
-    report("get_pixels");
-
-    if (check_func(h.diff_pixels, "diff_pixels"))
-        check_diff_pixels(uint8_t);
-
-    report("diff_pixels");
-}
diff --git a/tests/checkasm/sbrdsp.c b/tests/checkasm/sbrdsp.c
deleted file mode 100644
index 516b9f0..0000000
--- a/tests/checkasm/sbrdsp.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "libavcodec/sbrdsp.h"
-#include <float.h>
-
-#include "checkasm.h"
-
-#define randomize(buf, len) do {                                \
-    int i;                                                      \
-    for (i = 0; i < len; i++) {                                 \
-        const INTFLOAT f = (INTFLOAT)rnd() / UINT_MAX;          \
-        (buf)[i] = f;                                           \
-    }                                                           \
-} while (0)
-
-#define EPS 0.0001
-
-static void test_sum64x5(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [64 + 256]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [64 + 256]);
-
-    declare_func(void, INTFLOAT *z);
-
-    randomize((INTFLOAT *)dst0, 64 + 256);
-    memcpy(dst1, dst0, (64 + 256) * sizeof(INTFLOAT));
-    call_ref(dst0);
-    call_new(dst1);
-    if (!float_near_abs_eps_array(dst0, dst1, EPS, 64 + 256))
-        fail();
-    bench_new(dst1);
-}
-
-static void test_sum_square(void)
-{
-    INTFLOAT res0;
-    INTFLOAT res1;
-    LOCAL_ALIGNED_16(INTFLOAT, src, [256], [2]);
-    double t = 4 * 256;
-
-    declare_func_float(INTFLOAT, INTFLOAT (*x)[2], int n);
-
-    randomize((INTFLOAT *)src, 256 * 2);
-    res0 = call_ref(src, 256);
-    res1 = call_new(src, 256);
-    if (!float_near_abs_eps(res0, res1, t * 2 * FLT_EPSILON))
-        fail();
-    bench_new(src, 256);
-}
-
-static void test_neg_odd_64(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [64]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [64]);
-
-    declare_func(void, INTFLOAT *x);
-
-    randomize((INTFLOAT *)dst0, 64);
-    memcpy(dst1, dst0, (64) * sizeof(INTFLOAT));
-    call_ref(dst0);
-    call_new(dst1);
-    if (!float_near_abs_eps_array(dst0, dst1, EPS, 64))
-        fail();
-    bench_new(dst1);
-}
-
-static void test_qmf_pre_shuffle(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [128]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [128]);
-
-    declare_func(void, INTFLOAT *z);
-
-    randomize((INTFLOAT *)dst0, 128);
-    memcpy(dst1, dst0, (128) * sizeof(INTFLOAT));
-    call_ref(dst0);
-    call_new(dst1);
-    if (!float_near_abs_eps_array(dst0, dst1, EPS, 128))
-        fail();
-    bench_new(dst1);
-}
-
-static void test_qmf_post_shuffle(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, src, [64]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [32], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [32], [2]);
-
-    declare_func(void, INTFLOAT W[32][2], const INTFLOAT *z);
-
-    randomize((INTFLOAT *)src, 64);
-    call_ref(dst0, src);
-    call_new(dst1, src);
-    if (!float_near_abs_eps_array((INTFLOAT *)dst0, (INTFLOAT *)dst1, EPS, 64))
-        fail();
-    bench_new(dst1, src);
-}
-
-static void test_qmf_deint_neg(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, src, [64]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [64]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [64]);
-
-    declare_func(void, INTFLOAT *v, const INTFLOAT *src);
-
-    randomize((INTFLOAT *)src, 64);
-    call_ref(dst0, src);
-    call_new(dst1, src);
-    if (!float_near_abs_eps_array(dst0, dst1, EPS, 64))
-        fail();
-    bench_new(dst1, src);
-}
-
-static void test_qmf_deint_bfly(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, src0, [64]);
-    LOCAL_ALIGNED_16(INTFLOAT, src1, [64]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [128]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [128]);
-
-    declare_func(void, INTFLOAT *v, const INTFLOAT *src0, const INTFLOAT *src1);
-
-    memset(dst0, 0, 128 * sizeof(INTFLOAT));
-    memset(dst1, 0, 128 * sizeof(INTFLOAT));
-
-    randomize((INTFLOAT *)src0, 64);
-    randomize((INTFLOAT *)src1, 64);
-    call_ref(dst0, src0, src1);
-    call_new(dst1, src0, src1);
-    if (!float_near_abs_eps_array(dst0, dst1, EPS, 128))
-        fail();
-    bench_new(dst1, src0, src1);
-}
-
-static void test_autocorrelate(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, src, [40], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [3], [2][2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [3], [2][2]);
-
-    declare_func(void, const INTFLOAT x[40][2], INTFLOAT phi[3][2][2]);
-
-    memset(dst0, 0, 3 * 2 * 2 * sizeof(INTFLOAT));
-    memset(dst1, 0, 3 * 2 * 2 * sizeof(INTFLOAT));
-
-    randomize((INTFLOAT *)src, 80);
-    call_ref(src, dst0);
-    call_new(src, dst1);
-    if (!float_near_abs_eps_array((INTFLOAT *)dst0, (INTFLOAT *)dst1, EPS, 3 * 2 * 2))
-        fail();
-    bench_new(src, dst1);
-}
-
-static void test_hf_gen(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, low, [128], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, alpha0, [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, alpha1, [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [128], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [128], [2]);
-    INTFLOAT bw = (INTFLOAT)rnd() / UINT_MAX;
-    int i;
-
-    declare_func(void, INTFLOAT (*X_high)[2], const INTFLOAT (*X_low)[2],
-                       const INTFLOAT alpha0[2], const INTFLOAT alpha1[2],
-                       INTFLOAT bw, int start, int end);
-
-    randomize((INTFLOAT *)low, 128 * 2);
-    randomize((INTFLOAT *)alpha0, 2);
-    randomize((INTFLOAT *)alpha1, 2);
-    for (i = 2; i < 64; i += 2) {
-        memset(dst0, 0, 128 * 2 * sizeof(INTFLOAT));
-        memset(dst1, 0, 128 * 2 * sizeof(INTFLOAT));
-        call_ref(dst0, low, alpha0, alpha1, 0.0, i, 128);
-        call_new(dst1, low, alpha0, alpha1, 0.0, i, 128);
-        if (!float_near_abs_eps_array((INTFLOAT *)dst0, (INTFLOAT *)dst1, EPS, 128 * 2))
-            fail();
-        bench_new(dst1, low, alpha0, alpha1, bw, i, 128);
-    }
-}
-
-static void test_hf_g_filt(void)
-{
-    LOCAL_ALIGNED_16(INTFLOAT, high, [128], [40][2]);
-    LOCAL_ALIGNED_16(INTFLOAT, g_filt, [128]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [128], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [128], [2]);
-
-    declare_func(void, INTFLOAT (*Y)[2], const INTFLOAT (*X_high)[40][2],
-                       const INTFLOAT *g_filt, int m_max, intptr_t ixh);
-
-    randomize((INTFLOAT *)high, 128 * 40 * 2);
-    randomize((INTFLOAT *)g_filt, 128);
-
-    call_ref(dst0, high, g_filt, 128, 20);
-    call_new(dst1, high, g_filt, 128, 20);
-    if (!float_near_abs_eps_array((INTFLOAT *)dst0, (INTFLOAT *)dst1, EPS, 128 * 2))
-        fail();
-    bench_new(dst1, high, g_filt, 128, 20);
-}
-
-static void test_hf_apply_noise(const SBRDSPContext *sbrdsp)
-{
-    LOCAL_ALIGNED_16(AAC_FLOAT, s_m, [128]);
-    LOCAL_ALIGNED_16(AAC_FLOAT, q_filt, [128]);
-    LOCAL_ALIGNED_16(INTFLOAT, ref, [128], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst0, [128], [2]);
-    LOCAL_ALIGNED_16(INTFLOAT, dst1, [128], [2]);
-    int noise = 0x2a;
-    int i, j;
-
-    declare_func(void, INTFLOAT (*Y)[2], const AAC_FLOAT *s_m,
-                       const AAC_FLOAT *q_filt, int noise,
-                       int kx, int m_max);
-
-    randomize((INTFLOAT *)ref, 128 * 2);
-    randomize((INTFLOAT *)s_m, 128);
-    randomize((INTFLOAT *)q_filt, 128);
-
-    for (i = 0; i < 4; i++) {
-        if (check_func(sbrdsp->hf_apply_noise[i], "hf_apply_noise_%d", i)) {
-            for (j = 0; j < 2; j++) {
-                memcpy(dst0, ref, 128 * 2 * sizeof(INTFLOAT));
-                memcpy(dst1, ref, 128 * 2 * sizeof(INTFLOAT));
-                call_ref(dst0, s_m, q_filt, noise, j, 128);
-                call_new(dst1, s_m, q_filt, noise, j, 128);
-                if (!float_near_abs_eps_array((INTFLOAT *)dst0, (INTFLOAT *)dst1, EPS, 128 * 2))
-                    fail();
-                bench_new(dst1, s_m, q_filt, noise, j, 128);
-            }
-        }
-    }
-}
-
-void checkasm_check_sbrdsp(void)
-{
-    SBRDSPContext sbrdsp;
-
-    ff_sbrdsp_init(&sbrdsp);
-
-    if (check_func(sbrdsp.sum64x5, "sum64x5"))
-        test_sum64x5();
-    report("sum64x5");
-
-    if (check_func(sbrdsp.sum_square, "sum_square"))
-        test_sum_square();
-    report("sum_square");
-
-    if (check_func(sbrdsp.neg_odd_64, "neg_odd_64"))
-        test_neg_odd_64();
-    report("neg_odd_64");
-
-    if (check_func(sbrdsp.qmf_pre_shuffle, "qmf_pre_shuffle"))
-        test_qmf_pre_shuffle();
-    report("qmf_pre_shuffle");
-
-    if (check_func(sbrdsp.qmf_post_shuffle, "qmf_post_shuffle"))
-        test_qmf_post_shuffle();
-    report("qmf_post_shuffle");
-
-    if (check_func(sbrdsp.qmf_deint_neg, "qmf_deint_neg"))
-        test_qmf_deint_neg();
-    report("qmf_deint_neg");
-
-    if (check_func(sbrdsp.qmf_deint_bfly, "qmf_deint_bfly"))
-        test_qmf_deint_bfly();
-    report("qmf_deint_bfly");
-
-    if (check_func(sbrdsp.autocorrelate, "autocorrelate"))
-        test_autocorrelate();
-    report("autocorrelate");
-
-    if (check_func(sbrdsp.hf_gen, "hf_gen"))
-        test_hf_gen();
-    report("hf_gen");
-
-    if (check_func(sbrdsp.hf_g_filt, "hf_g_filt"))
-        test_hf_g_filt();
-    report("hf_g_filt");
-
-    test_hf_apply_noise(&sbrdsp);
-    report("hf_apply_noise");
-}
diff --git a/tests/checkasm/synth_filter.c b/tests/checkasm/synth_filter.c
deleted file mode 100644
index 87e32eb..0000000
--- a/tests/checkasm/synth_filter.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2015 Janne Grunau
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <math.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "libavutil/internal.h"
-#include "libavutil/intfloat.h"
-#include "libavcodec/dcadata.h"
-#include "libavcodec/synth_filter.h"
-
-#include "checkasm.h"
-
-#define BUF_SIZE 32
-
-#define randomize_input()                                       \
-    do {                                                        \
-        int i;                                                  \
-        for (i = 0; i < BUF_SIZE; i++) {                        \
-            float f = (float)rnd() / (UINT_MAX >> 5) - 16.0f;   \
-            in[i] = f;                                          \
-        }                                                       \
-    } while (0)
-
-void checkasm_check_synth_filter(void)
-{
-    FFTContext imdct;
-    SynthFilterContext synth;
-
-    ff_mdct_init(&imdct, 6, 1, 1.0);
-    ff_synth_filter_init(&synth);
-
-    if (check_func(synth.synth_filter_float, "synth_filter_float")) {
-        LOCAL_ALIGNED(32, float,   out0,   [BUF_SIZE]);
-        LOCAL_ALIGNED(32, float,   out1,   [BUF_SIZE]);
-        LOCAL_ALIGNED(32, float,   out_b,  [BUF_SIZE]);
-        LOCAL_ALIGNED(32, float,   in,     [BUF_SIZE]);
-        LOCAL_ALIGNED(32, float,   buf2_0, [BUF_SIZE]);
-        LOCAL_ALIGNED(32, float,   buf2_1, [BUF_SIZE]);
-        LOCAL_ALIGNED(32, float,   buf2_b, [BUF_SIZE]);
-        LOCAL_ALIGNED(32, float,   buf0,   [512]);
-        LOCAL_ALIGNED(32, float,   buf1,   [512]);
-        LOCAL_ALIGNED(32, float,   buf_b,  [512]);
-        float scale = 1.0f;
-        int i, offset0 = 0, offset1 = 0, offset_b = 0;
-
-        declare_func(void, FFTContext *, float *, int *, float[32], const float[512],
-                     float[32], float[32], float);
-
-        memset(buf2_0, 0, sizeof(*buf2_0) * BUF_SIZE);
-        memset(buf2_1, 0, sizeof(*buf2_1) * BUF_SIZE);
-        memset(buf2_b, 0, sizeof(*buf2_b) * BUF_SIZE);
-        memset(buf0, 0, sizeof(*buf2_0) * 512);
-        memset(buf1, 0, sizeof(*buf2_1) * 512);
-        memset(buf_b, 0, sizeof(*buf2_b) * 512);
-
-        /* more than 1 synth_buf_offset wrap-around */
-        for (i = 0; i < 20; i++) {
-            int j;
-            const float * window = (i & 1) ? ff_dca_fir_32bands_perfect : ff_dca_fir_32bands_nonperfect;
-
-            memset(out0, 0, sizeof(*out0) * BUF_SIZE);
-            memset(out1, 0, sizeof(*out1) * BUF_SIZE);
-            memset(out_b, 0, sizeof(*out_b) * BUF_SIZE);
-
-            randomize_input();
-
-            call_ref(&imdct, buf0, &offset0, buf2_0, window,
-                     out0, in, scale);
-            call_new(&imdct, buf1, &offset1, buf2_1, window,
-                     out1, in, scale);
-
-            if (offset0 != offset1) {
-                fail();
-                fprintf(stderr, "offsets do not match: %d, %d", offset0, offset1);
-                break;
-            }
-
-            for (j = 0; j < BUF_SIZE; j++) {
-                if (!float_near_abs_eps_ulp(out0[j],   out1[j],   7.0e-7, 16) ||
-                    !float_near_abs_eps_ulp(buf2_0[j], buf2_1[j], 7.0e-7, 16)) {
-                    union av_intfloat32 o0, o1, b0, b1;
-
-                    fail();
-                    o0.f = out0[j];   o1.f = out1[j];
-                    b0.f = buf2_0[j], b1.f = buf2_1[j];
-                    fprintf(stderr, "out:  %11g (0x%08x); %11g (0x%08x); abs diff %11g\n",
-                            o0.f, o0.i, o1.f, o1.i, fabsf(o0.f - o1.f));
-                    fprintf(stderr, "buf2: %11g (0x%08x); %11g (0x%08x); abs diff %11g\n",
-                            b0.f, b0.i, b1.f, b1.i, fabsf(b0.f - b1.f));
-                    break;
-                }
-            }
-
-            bench_new(&imdct, buf_b, &offset_b, buf2_b, window,
-                      out_b, in, scale);
-        }
-    }
-    ff_mdct_end(&imdct);
-
-    report("synth_filter");
-}
diff --git a/tests/checkasm/v210enc.c b/tests/checkasm/v210enc.c
deleted file mode 100644
index ed36776..0000000
--- a/tests/checkasm/v210enc.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2015 Henrik Gramner
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/v210enc.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-#define BUF_SIZE 512
-
-#define randomize_buffers(mask)                        \
-    do {                                               \
-        int i, size = sizeof(*y0);                     \
-        for (i = 0; i < BUF_SIZE; i += 4 / size) {     \
-            uint32_t r = rnd() & mask;                 \
-            AV_WN32A(y0 + i, r);                       \
-            AV_WN32A(y1 + i, r);                       \
-        }                                              \
-        for (i = 0; i < BUF_SIZE / 2; i += 4 / size) { \
-            uint32_t r = rnd() & mask;                 \
-            AV_WN32A(u0 + i, r);                       \
-            AV_WN32A(u1 + i, r);                       \
-            r = rnd() & mask;                          \
-            AV_WN32A(v0 + i, r);                       \
-            AV_WN32A(v1 + i, r);                       \
-        }                                              \
-        for (i = 0; i < width * 8 / 3; i += 4) {       \
-            uint32_t r = rnd();                        \
-            AV_WN32A(dst0 + i, r);                     \
-            AV_WN32A(dst1 + i, r);                     \
-        }                                              \
-    } while (0)
-
-#define check_pack_line(type, mask)                                                \
-    do {                                                                           \
-        LOCAL_ALIGNED_16(type, y0, [BUF_SIZE]);                                    \
-        LOCAL_ALIGNED_16(type, y1, [BUF_SIZE]);                                    \
-        LOCAL_ALIGNED_16(type, u0, [BUF_SIZE / 2]);                                \
-        LOCAL_ALIGNED_16(type, u1, [BUF_SIZE / 2]);                                \
-        LOCAL_ALIGNED_16(type, v0, [BUF_SIZE / 2]);                                \
-        LOCAL_ALIGNED_16(type, v1, [BUF_SIZE / 2]);                                \
-        LOCAL_ALIGNED_16(uint8_t, dst0, [BUF_SIZE * 8 / 3]);                       \
-        LOCAL_ALIGNED_16(uint8_t, dst1, [BUF_SIZE * 8 / 3]);                       \
-                                                                                   \
-        declare_func(void, const type * y, const type * u, const type * v,         \
-                     uint8_t * dst, ptrdiff_t width);                              \
-        ptrdiff_t width, step = 12 / sizeof(type);                                 \
-                                                                                   \
-        for (width = step; width < BUF_SIZE - 15; width += step) {                 \
-            int y_offset  = rnd() & 15;                                            \
-            int uv_offset = y_offset / 2;                                          \
-            randomize_buffers(mask);                                               \
-            call_ref(y0 + y_offset, u0 + uv_offset, v0 + uv_offset, dst0, width);  \
-            call_new(y1 + y_offset, u1 + uv_offset, v1 + uv_offset, dst1, width);  \
-            if (memcmp(y0, y1, BUF_SIZE) || memcmp(u0, u1, BUF_SIZE / 2) ||        \
-                memcmp(v0, v1, BUF_SIZE / 2) || memcmp(dst0, dst1, width * 8 / 3)) \
-                fail();                                                            \
-            bench_new(y1 + y_offset, u1 + uv_offset, v1 + uv_offset, dst1, width); \
-        }                                                                          \
-    } while (0)
-
-void checkasm_check_v210enc(void)
-{
-    V210EncContext h;
-
-    ff_v210enc_init(&h);
-
-    if (check_func(h.pack_line_8, "v210_planar_pack_8"))
-        check_pack_line(uint8_t, 0xffffffff);
-
-    if (check_func(h.pack_line_10, "v210_planar_pack_10"))
-        check_pack_line(uint16_t, 0x03ff03ff);
-
-    report("planar_pack");
-}
diff --git a/tests/checkasm/vf_blend.c b/tests/checkasm/vf_blend.c
deleted file mode 100644
index a7578fe..0000000
--- a/tests/checkasm/vf_blend.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2016 Tiancheng "Timothy" Gu
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavfilter/blend.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-#define WIDTH 256
-#define HEIGHT 256
-#define BUF_UNITS 3
-#define SIZE_PER_UNIT (WIDTH * HEIGHT)
-#define BUF_SIZE (BUF_UNITS * SIZE_PER_UNIT)
-
-#define randomize_buffers()                   \
-    do {                                      \
-        int i, j;                             \
-        for (i = 0; i < HEIGHT; i++) {        \
-            for (j = 0; j < WIDTH; j++) {     \
-                top1[i * WIDTH + j] =         \
-                top2[i * WIDTH + j] = i;      \
-                bot1[i * WIDTH + j] =         \
-                bot2[i * WIDTH + j] = j;      \
-            }                                 \
-        }                                     \
-        for (i = 0; i < SIZE_PER_UNIT; i += 4) { \
-            uint32_t r = rnd();               \
-            AV_WN32A(dst1 + i, r);            \
-            AV_WN32A(dst2 + i, r);            \
-        }                                     \
-        for (; i < BUF_SIZE; i += 4) {        \
-            uint32_t r = rnd();               \
-            AV_WN32A(top1 + i, r);            \
-            AV_WN32A(top2 + i, r);            \
-            r = rnd();                        \
-            AV_WN32A(bot1 + i, r);            \
-            AV_WN32A(bot2 + i, r);            \
-            r = rnd();                        \
-            AV_WN32A(dst1 + i, r);            \
-            AV_WN32A(dst2 + i, r);            \
-        }                                     \
-    } while (0)
-
-#define check_blend_func(depth)                                                            \
-    do {                                                                                   \
-        int i, w;                                                                          \
-        declare_func(void, const uint8_t *top, ptrdiff_t top_linesize,                     \
-                     const uint8_t *bottom, ptrdiff_t bottom_linesize,                     \
-                     uint8_t *dst, ptrdiff_t dst_linesize,                                 \
-                     ptrdiff_t width, ptrdiff_t height,                                    \
-                     struct FilterParams *param, double *values);                          \
-        w = WIDTH / depth;                                                                 \
-                                                                                           \
-        for (i = 0; i < BUF_UNITS - 1; i++) {                                              \
-            int src_offset = i * SIZE_PER_UNIT + (BUF_UNITS - 1 - i) * depth; /* Test various alignments */  \
-            int dst_offset = i * SIZE_PER_UNIT; /* dst must be aligned */                  \
-            randomize_buffers();                                                           \
-            call_ref(top1 + src_offset, w, bot1 + src_offset, w,                           \
-                     dst1 + dst_offset, w, w, HEIGHT, &param, NULL);                       \
-            call_new(top2 + src_offset, w, bot2 + src_offset, w,                           \
-                     dst2 + dst_offset, w, w, HEIGHT, &param, NULL);                       \
-            if (memcmp(top1, top2, BUF_SIZE) || memcmp(bot1, bot2, BUF_SIZE) || memcmp(dst1, dst2, BUF_SIZE)) \
-                fail();                                                                    \
-        }                                                                                  \
-        bench_new(top2, w / 4, bot2, w / 4, dst2, w / 4,                                   \
-                  w / 4, HEIGHT / 4, &param, NULL);                                        \
-    } while (0)
-
-void checkasm_check_blend(void)
-{
-    uint8_t *top1 = av_malloc(BUF_SIZE);
-    uint8_t *top2 = av_malloc(BUF_SIZE);
-    uint8_t *bot1 = av_malloc(BUF_SIZE);
-    uint8_t *bot2 = av_malloc(BUF_SIZE);
-    uint8_t *dst1 = av_malloc(BUF_SIZE);
-    uint8_t *dst2 = av_malloc(BUF_SIZE);
-    FilterParams param = {
-        .opacity = 1.0,
-    };
-
-#define check_and_report(name, val, depth)        \
-    param.mode = val;                             \
-    ff_blend_init(&param, depth - 1);             \
-    if (check_func(param.blend, #name))           \
-        check_blend_func(depth);
-
-    check_and_report(addition, BLEND_ADDITION, 1)
-    check_and_report(grainmerge, BLEND_GRAINMERGE, 1)
-    check_and_report(and, BLEND_AND, 1)
-    check_and_report(average, BLEND_AVERAGE, 1)
-    check_and_report(darken, BLEND_DARKEN, 1)
-    check_and_report(grainextract, BLEND_GRAINEXTRACT, 1)
-    check_and_report(hardmix, BLEND_HARDMIX, 1)
-    check_and_report(lighten, BLEND_LIGHTEN, 1)
-    check_and_report(multiply, BLEND_MULTIPLY, 1)
-    check_and_report(or, BLEND_OR, 1)
-    check_and_report(phoenix, BLEND_PHOENIX, 1)
-    check_and_report(screen, BLEND_SCREEN, 1)
-    check_and_report(subtract, BLEND_SUBTRACT, 1)
-    check_and_report(xor, BLEND_XOR, 1)
-    check_and_report(difference, BLEND_DIFFERENCE, 1)
-    check_and_report(extremity, BLEND_EXTREMITY, 1)
-    check_and_report(negation, BLEND_NEGATION, 1)
-
-    report("8bit");
-
-    check_and_report(addition_16, BLEND_ADDITION, 2)
-    check_and_report(grainmerge_16, BLEND_GRAINMERGE, 2)
-    check_and_report(and_16, BLEND_AND, 2)
-    check_and_report(average_16, BLEND_AVERAGE, 2)
-    check_and_report(darken_16, BLEND_DARKEN, 2)
-    check_and_report(grainextract_16, BLEND_GRAINEXTRACT, 2)
-    check_and_report(difference_16, BLEND_DIFFERENCE, 2)
-    check_and_report(extremity_16, BLEND_EXTREMITY, 2)
-    check_and_report(negation_16, BLEND_NEGATION, 2)
-    check_and_report(lighten_16, BLEND_LIGHTEN, 2)
-    check_and_report(or_16, BLEND_OR, 2)
-    check_and_report(phoenix_16, BLEND_PHOENIX, 2)
-    check_and_report(subtract_16, BLEND_SUBTRACT, 2)
-    check_and_report(xor_16, BLEND_SUBTRACT, 2)
-
-    report("16bit");
-
-    av_freep(&top1);
-    av_freep(&top2);
-    av_freep(&bot1);
-    av_freep(&bot2);
-    av_freep(&dst1);
-    av_freep(&dst2);
-}
diff --git a/tests/checkasm/videodsp.c b/tests/checkasm/videodsp.c
deleted file mode 100644
index 0a4424a..0000000
--- a/tests/checkasm/videodsp.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2016 Ronald S. Bultje <rsbultje@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/videodsp.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-
-#define randomize_buffers(w, h)                         \
-    do {                                                \
-        int i;                                          \
-        for (i = 0; i < w * h * sizeof(*src0); i += 4)  \
-            AV_WN32A(((uint8_t *) src0) + i, rnd());    \
-    } while (0)
-
-#define iter_1d(type, fix, fix_val, var, var_start, var_end)        \
-    for (fix = fix_val, var = var_start; var <= var_end; var++) {   \
-        call_ref((type *) dst0, (const type *) (src0 + y * pw + x), \
-                 bw * sizeof(type), pw * sizeof(type),              \
-                 bw, bh, x, y, pw, ph);                             \
-        call_new((type *) dst1, (const type *) (src1 + y * pw + x), \
-                 bw * sizeof(type), pw * sizeof(type),              \
-                 bw, bh, x, y, pw, ph);                             \
-        if (memcmp(dst0, dst1, bw * bh * sizeof(type)))             \
-            fail();                                                 \
-        bench_new((type *) dst1, (const type *) (src1 + y * pw + x),\
-                  bw * sizeof(type), pw * sizeof(type),             \
-                  bw, bh, x, y, pw, ph);                            \
-    }
-
-#define check_emu_edge_size(type, src_w, src_h, dst_w, dst_h)   \
-    do {                                                        \
-        LOCAL_ALIGNED_16(type, src0, [src_w * src_h]);          \
-        LOCAL_ALIGNED_16(type, src1, [src_w * src_h]);          \
-        int bw = dst_w, bh = dst_h;                             \
-        int pw = src_w, ph = src_h;                             \
-        int y, x;                                               \
-        randomize_buffers(src_w, src_h);                        \
-        memcpy(src1, src0, pw * ph * sizeof(type));             \
-        iter_1d(type, y, 0 - src_h, x, 0 - src_w, src_w - 0);   \
-        iter_1d(type, x, src_w - 0, y, 0 - src_h, src_h - 0);   \
-        iter_1d(type, y, src_h - 0, x, 0 - src_w, src_w - 0);   \
-        iter_1d(type, x, 0 - src_w, y, 0 - src_h, src_h - 0);   \
-    } while (0)
-
-#define check_emu_edge(type)                                    \
-    do {                                                        \
-        LOCAL_ALIGNED_16(type, dst0, [64 * 64]);                \
-        LOCAL_ALIGNED_16(type, dst1, [64 * 64]);                \
-        declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, \
-                          void, type *dst, const type *src,     \
-                          ptrdiff_t dst_linesize,               \
-                          ptrdiff_t src_linesize,               \
-                          int block_w, int block_h,             \
-                          int src_x, int src_y,                 \
-                          int src_w, int src_h);                \
-        check_emu_edge_size(type, 16,  1, 64, 64);              \
-        check_emu_edge_size(type, 16, 16, 64, 64);              \
-        check_emu_edge_size(type, 64, 64, 64, 64);              \
-    } while (0)
-
-void checkasm_check_videodsp(void)
-{
-    VideoDSPContext vdsp;
-
-    ff_videodsp_init(&vdsp, 8);
-    if (check_func(vdsp.emulated_edge_mc, "emulated_edge_mc_8"))
-        check_emu_edge(uint8_t);
-
-    report("emulated_edge_mc");
-}
diff --git a/tests/checkasm/vp8dsp.c b/tests/checkasm/vp8dsp.c
deleted file mode 100644
index d93f730..0000000
--- a/tests/checkasm/vp8dsp.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * Copyright (c) 2016 Martin Storsjo
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-
-#include "libavcodec/avcodec.h"
-#include "libavcodec/vp8dsp.h"
-
-#include "libavutil/common.h"
-#include "libavutil/intreadwrite.h"
-
-#include "checkasm.h"
-
-#define PIXEL_STRIDE 16
-
-#define randomize_buffers(src, dst, stride, coef)                            \
-    do {                                                                     \
-        int x, y;                                                            \
-        for (y = 0; y < 4; y++) {                                            \
-            AV_WN32A((src) + y * (stride), rnd());                           \
-            AV_WN32A((dst) + y * (stride), rnd());                           \
-            for (x = 0; x < 4; x++)                                          \
-                (coef)[y * 4 + x] = (src)[y * (stride) + x] -                \
-                                    (dst)[y * (stride) + x];                 \
-        }                                                                    \
-    } while (0)
-
-static void dct4x4(int16_t *coef)
-{
-    int i;
-    for (i = 0; i < 4; i++) {
-        const int a1 = (coef[i*4 + 0] + coef[i*4 + 3]) * 8;
-        const int b1 = (coef[i*4 + 1] + coef[i*4 + 2]) * 8;
-        const int c1 = (coef[i*4 + 1] - coef[i*4 + 2]) * 8;
-        const int d1 = (coef[i*4 + 0] - coef[i*4 + 3]) * 8;
-        coef[i*4 + 0] =  a1 + b1;
-        coef[i*4 + 1] = (c1 * 2217 + d1 * 5352 + 14500) >> 12;
-        coef[i*4 + 2] =  a1 - b1;
-        coef[i*4 + 3] = (d1 * 2217 - c1 * 5352 +  7500) >> 12;
-    }
-    for (i = 0; i < 4; i++) {
-        const int a1 = coef[i + 0*4] + coef[i + 3*4];
-        const int b1 = coef[i + 1*4] + coef[i + 2*4];
-        const int c1 = coef[i + 1*4] - coef[i + 2*4];
-        const int d1 = coef[i + 0*4] - coef[i + 3*4];
-        coef[i + 0*4] =  (a1 + b1 + 7) >> 4;
-        coef[i + 1*4] = ((c1 * 2217 + d1 * 5352 + 12000) >> 16) + !!d1;
-        coef[i + 2*4] =  (a1 - b1 + 7) >> 4;
-        coef[i + 3*4] =  (d1 * 2217 - c1 * 5352 + 51000) >> 16;
-    }
-}
-
-static void wht4x4(int16_t *coef)
-{
-    int i;
-    for (i = 0; i < 4; i++) {
-        int a1 = coef[0 * 4 + i];
-        int b1 = coef[1 * 4 + i];
-        int c1 = coef[2 * 4 + i];
-        int d1 = coef[3 * 4 + i];
-        int e1;
-        a1 += b1;
-        d1 -= c1;
-        e1 = (a1 - d1) >> 1;
-        b1 = e1 - b1;
-        c1 = e1 - c1;
-        a1 -= c1;
-        d1 += b1;
-        coef[0 * 4 + i] = a1;
-        coef[1 * 4 + i] = c1;
-        coef[2 * 4 + i] = d1;
-        coef[3 * 4 + i] = b1;
-    }
-    for (i = 0; i < 4; i++) {
-        int a1 = coef[i * 4 + 0];
-        int b1 = coef[i * 4 + 1];
-        int c1 = coef[i * 4 + 2];
-        int d1 = coef[i * 4 + 3];
-        int e1;
-        a1 += b1;
-        d1 -= c1;
-        e1 = (a1 - d1) >> 1;
-        b1 = e1 - b1;
-        c1 = e1 - c1;
-        a1 -= c1;
-        d1 += b1;
-        coef[i * 4 + 0] = a1 * 2;
-        coef[i * 4 + 1] = c1 * 2;
-        coef[i * 4 + 2] = d1 * 2;
-        coef[i * 4 + 3] = b1 * 2;
-    }
-}
-
-static void check_idct(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, src,  [4 * 4]);
-    LOCAL_ALIGNED_16(uint8_t, dst,  [4 * 4]);
-    LOCAL_ALIGNED_16(uint8_t, dst0, [4 * 4]);
-    LOCAL_ALIGNED_16(uint8_t, dst1, [4 * 4]);
-    LOCAL_ALIGNED_16(int16_t, coef, [4 * 4]);
-    LOCAL_ALIGNED_16(int16_t, subcoef0, [4 * 4]);
-    LOCAL_ALIGNED_16(int16_t, subcoef1, [4 * 4]);
-    VP8DSPContext d;
-    int dc;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, int16_t *block, ptrdiff_t stride);
-
-    ff_vp8dsp_init(&d);
-    randomize_buffers(src, dst, 4, coef);
-
-    dct4x4(coef);
-
-    for (dc = 0; dc <= 1; dc++) {
-        void (*idct)(uint8_t *, int16_t *, ptrdiff_t) = dc ? d.vp8_idct_dc_add : d.vp8_idct_add;
-
-        if (check_func(idct, "vp8_idct_%sadd", dc ? "dc_" : "")) {
-            if (dc) {
-                memset(subcoef0, 0, 4 * 4 * sizeof(int16_t));
-                subcoef0[0] = coef[0];
-            } else {
-                memcpy(subcoef0, coef, 4 * 4 * sizeof(int16_t));
-            }
-            memcpy(dst0, dst, 4 * 4);
-            memcpy(dst1, dst, 4 * 4);
-            memcpy(subcoef1, subcoef0, 4 * 4 * sizeof(int16_t));
-            // Note, this uses a pixel stride of 4, even though the real decoder uses a stride as a
-            // multiple of 16. If optimizations want to take advantage of that, this test needs to be
-            // updated to make it more like the h264dsp tests.
-            call_ref(dst0, subcoef0, 4);
-            call_new(dst1, subcoef1, 4);
-            if (memcmp(dst0, dst1, 4 * 4) ||
-                memcmp(subcoef0, subcoef1, 4 * 4 * sizeof(int16_t)))
-                fail();
-
-            bench_new(dst1, subcoef1, 4);
-        }
-    }
-}
-
-static void check_idct_dc4(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, src,  [4 * 4 * 4]);
-    LOCAL_ALIGNED_16(uint8_t, dst,  [4 * 4 * 4]);
-    LOCAL_ALIGNED_16(uint8_t, dst0, [4 * 4 * 4]);
-    LOCAL_ALIGNED_16(uint8_t, dst1, [4 * 4 * 4]);
-    LOCAL_ALIGNED_16(int16_t, coef, [4], [4 * 4]);
-    LOCAL_ALIGNED_16(int16_t, subcoef0, [4], [4 * 4]);
-    LOCAL_ALIGNED_16(int16_t, subcoef1, [4], [4 * 4]);
-    VP8DSPContext d;
-    int i, chroma;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, int16_t block[4][16], ptrdiff_t stride);
-
-    ff_vp8dsp_init(&d);
-
-    for (chroma = 0; chroma <= 1; chroma++) {
-        void (*idct4dc)(uint8_t *, int16_t[4][16], ptrdiff_t) = chroma ? d.vp8_idct_dc_add4uv : d.vp8_idct_dc_add4y;
-        if (check_func(idct4dc, "vp8_idct_dc_add4%s", chroma ? "uv" : "y")) {
-            ptrdiff_t stride = chroma ? 8 : 16;
-            int w      = chroma ? 2 : 4;
-            for (i = 0; i < 4; i++) {
-                int blockx = 4 * (i % w);
-                int blocky = 4 * (i / w);
-                randomize_buffers(src + stride * blocky + blockx, dst + stride * blocky + blockx, stride, coef[i]);
-                dct4x4(coef[i]);
-                memset(&coef[i][1], 0, 15 * sizeof(int16_t));
-            }
-
-            memcpy(dst0, dst, 4 * 4 * 4);
-            memcpy(dst1, dst, 4 * 4 * 4);
-            memcpy(subcoef0, coef, 4 * 4 * 4 * sizeof(int16_t));
-            memcpy(subcoef1, coef, 4 * 4 * 4 * sizeof(int16_t));
-            call_ref(dst0, subcoef0, stride);
-            call_new(dst1, subcoef1, stride);
-            if (memcmp(dst0, dst1, 4 * 4 * 4) ||
-                memcmp(subcoef0, subcoef1, 4 * 4 * 4 * sizeof(int16_t)))
-                fail();
-            bench_new(dst1, subcoef1, stride);
-        }
-    }
-
-}
-
-static void check_luma_dc_wht(void)
-{
-    LOCAL_ALIGNED_16(int16_t, dc, [4 * 4]);
-    LOCAL_ALIGNED_16(int16_t, dc0, [4 * 4]);
-    LOCAL_ALIGNED_16(int16_t, dc1, [4 * 4]);
-    int16_t block[4][4][16];
-    LOCAL_ALIGNED_16(int16_t, block0, [4], [4][16]);
-    LOCAL_ALIGNED_16(int16_t, block1, [4], [4][16]);
-    VP8DSPContext d;
-    int dc_only;
-    int blockx, blocky;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, int16_t block[4][4][16], int16_t dc[16]);
-
-    ff_vp8dsp_init(&d);
-
-    for (blocky = 0; blocky < 4; blocky++) {
-        for (blockx = 0; blockx < 4; blockx++) {
-            uint8_t src[16], dst[16];
-            randomize_buffers(src, dst, 4, block[blocky][blockx]);
-
-            dct4x4(block[blocky][blockx]);
-            dc[blocky * 4 + blockx] = block[blocky][blockx][0];
-            block[blocky][blockx][0] = rnd();
-        }
-    }
-    wht4x4(dc);
-
-    for (dc_only = 0; dc_only <= 1; dc_only++) {
-        void (*idct)(int16_t [4][4][16], int16_t [16]) = dc_only ? d.vp8_luma_dc_wht_dc : d.vp8_luma_dc_wht;
-
-        if (check_func(idct, "vp8_luma_dc_wht%s", dc_only ? "_dc" : "")) {
-            if (dc_only) {
-                memset(dc0, 0, 16 * sizeof(int16_t));
-                dc0[0] = dc[0];
-            } else {
-                memcpy(dc0, dc, 16 * sizeof(int16_t));
-            }
-            memcpy(dc1, dc0, 16 * sizeof(int16_t));
-            memcpy(block0, block, 4 * 4 * 16 * sizeof(int16_t));
-            memcpy(block1, block, 4 * 4 * 16 * sizeof(int16_t));
-            call_ref(block0, dc0);
-            call_new(block1, dc1);
-            if (memcmp(block0, block1, 4 * 4 * 16 * sizeof(int16_t)) ||
-                memcmp(dc0, dc1, 16 * sizeof(int16_t)))
-                fail();
-            bench_new(block1, dc1);
-        }
-    }
-}
-
-#define SRC_BUF_STRIDE 32
-#define SRC_BUF_SIZE (((size << (size < 16)) + 5) * SRC_BUF_STRIDE)
-// The mc subpixel interpolation filter needs the 2 previous pixels in either
-// direction, the +1 is to make sure the actual load addresses always are
-// unaligned.
-#define src (buf + 2 * SRC_BUF_STRIDE + 2 + 1)
-
-#undef randomize_buffers
-#define randomize_buffers()                               \
-    do {                                                  \
-        int k;                                            \
-        for (k = 0; k < SRC_BUF_SIZE; k += 4) {           \
-            AV_WN32A(buf + k, rnd());                     \
-        }                                                 \
-    } while (0)
-
-static void check_mc(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, buf, [32 * 32]);
-    LOCAL_ALIGNED_16(uint8_t, dst0, [16 * 16]);
-    LOCAL_ALIGNED_16(uint8_t, dst1, [16 * 16]);
-    VP8DSPContext d;
-    int type, k, dx, dy;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *, ptrdiff_t, uint8_t *, ptrdiff_t, int, int, int);
-
-    ff_vp78dsp_init(&d);
-
-    for (type = 0; type < 2; type++) {
-        vp8_mc_func (*tab)[3][3] = type ? d.put_vp8_bilinear_pixels_tab : d.put_vp8_epel_pixels_tab;
-        for (k = 1; k < 8; k++) {
-            int hsize  = k / 3;
-            int size   = 16 >> hsize;
-            int height = (size << 1) >> (k % 3);
-            for (dy = 0; dy < 3; dy++) {
-                for (dx = 0; dx < 3; dx++) {
-                    char str[100];
-                    if (dx || dy) {
-                        if (type == 0) {
-                            static const char *dx_names[] = { "", "h4", "h6" };
-                            static const char *dy_names[] = { "", "v4", "v6" };
-                            snprintf(str, sizeof(str), "epel%d_%s%s", size, dx_names[dx], dy_names[dy]);
-                        } else {
-                            snprintf(str, sizeof(str), "bilin%d_%s%s", size, dx ? "h" : "", dy ? "v" : "");
-                        }
-                    } else {
-                        snprintf(str, sizeof(str), "pixels%d", size);
-                    }
-                    if (check_func(tab[hsize][dy][dx], "vp8_put_%s", str)) {
-                        int mx, my;
-                        int i;
-                        if (type == 0) {
-                            mx = dx == 2 ? 2 + 2 * (rnd() % 3) : dx == 1 ? 1 + 2 * (rnd() % 4) : 0;
-                            my = dy == 2 ? 2 + 2 * (rnd() % 3) : dy == 1 ? 1 + 2 * (rnd() % 4) : 0;
-                        } else {
-                            mx = dx ? 1 + (rnd() % 7) : 0;
-                            my = dy ? 1 + (rnd() % 7) : 0;
-                        }
-                        randomize_buffers();
-                        for (i = -2; i <= 3; i++) {
-                            int val = (i == -1 || i == 2) ? 0 : 0xff;
-                            // Set pixels in the first row and column to the maximum pattern,
-                            // to test for potential overflows in the filter.
-                            src[i                 ] = val;
-                            src[i * SRC_BUF_STRIDE] = val;
-                        }
-                        call_ref(dst0, size, src, SRC_BUF_STRIDE, height, mx, my);
-                        call_new(dst1, size, src, SRC_BUF_STRIDE, height, mx, my);
-                        if (memcmp(dst0, dst1, size * height))
-                            fail();
-                        bench_new(dst1, size, src, SRC_BUF_STRIDE, height, mx, my);
-                    }
-                }
-            }
-        }
-    }
-}
-
-#undef randomize_buffers
-
-#define setpx(a, b, c) buf[(a) + (b) * jstride] = av_clip_uint8(c)
-// Set the pixel to c +/- [0,d]
-#define setdx(a, b, c, d) setpx(a, b, c - (d) + (rnd() % ((d) * 2 + 1)))
-// Set the pixel to c +/- [d,d+e] (making sure it won't be clipped)
-#define setdx2(a, b, o, c, d, e) setpx(a, b, o = c + ((d) + (rnd() % (e))) * (c >= 128 ? -1 : 1))
-
-static void randomize_loopfilter_buffers(int lineoff, int str,
-                                         int dir, int flim_E, int flim_I,
-                                         int hev_thresh, uint8_t *buf,
-                                         int force_hev)
-{
-    uint32_t mask = 0xff;
-    int off = dir ? lineoff : lineoff * str;
-    int istride = dir ? 1 : str;
-    int jstride = dir ? str : 1;
-    int i;
-    for (i = 0; i < 8; i += 2) {
-        // Row 0 will trigger hev for q0/q1, row 2 will trigger hev for p0/p1,
-        // rows 4 and 6 will not trigger hev.
-        // force_hev 1 will make sure all rows trigger hev, while force_hev -1
-        // makes none of them trigger it.
-        int idx = off + i * istride, p2, p1, p0, q0, q1, q2;
-        setpx(idx,  0, q0 = rnd() & mask);
-        if (i == 0 && force_hev >= 0 || force_hev > 0)
-            setdx2(idx, 1, q1, q0, hev_thresh + 1, flim_I - hev_thresh - 1);
-        else
-            setdx(idx,  1, q1 = q0, hev_thresh);
-        setdx(idx,  2, q2 = q1, flim_I);
-        setdx(idx,  3, q2,      flim_I);
-        setdx(idx, -1, p0 = q0, flim_E >> 2);
-        if (i == 2 && force_hev >= 0 || force_hev > 0)
-            setdx2(idx, -2, p1, p0, hev_thresh + 1, flim_I - hev_thresh - 1);
-        else
-            setdx(idx, -2, p1 = p0, hev_thresh);
-        setdx(idx, -3, p2 = p1, flim_I);
-        setdx(idx, -4, p2,      flim_I);
-    }
-}
-
-// Fill the buffer with random pixels
-static void fill_loopfilter_buffers(uint8_t *buf, ptrdiff_t stride, int w, int h)
-{
-    int x, y;
-    for (y = 0; y < h; y++)
-        for (x = 0; x < w; x++)
-            buf[y * stride + x] = rnd() & 0xff;
-}
-
-#define randomize_buffers(buf, lineoff, str, force_hev) \
-    randomize_loopfilter_buffers(lineoff, str, dir, flim_E, flim_I, hev_thresh, buf, force_hev)
-
-static void check_loopfilter_16y(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, base0, [32 + 16 * 16]);
-    LOCAL_ALIGNED_16(uint8_t, base1, [32 + 16 * 16]);
-    VP8DSPContext d;
-    int dir, edge, force_hev;
-    int flim_E = 20, flim_I = 10, hev_thresh = 7;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *, ptrdiff_t, int, int, int);
-
-    ff_vp8dsp_init(&d);
-
-    for (dir = 0; dir < 2; dir++) {
-        int midoff = dir ? 4 * 16 : 4;
-        int midoff_aligned = dir ? 4 * 16 : 16;
-        uint8_t *buf0 = base0 + midoff_aligned;
-        uint8_t *buf1 = base1 + midoff_aligned;
-        for (edge = 0; edge < 2; edge++) {
-            void (*func)(uint8_t *, ptrdiff_t, int, int, int) = NULL;
-            switch (dir << 1 | edge) {
-            case (0 << 1) | 0: func = d.vp8_h_loop_filter16y; break;
-            case (1 << 1) | 0: func = d.vp8_v_loop_filter16y; break;
-            case (0 << 1) | 1: func = d.vp8_h_loop_filter16y_inner; break;
-            case (1 << 1) | 1: func = d.vp8_v_loop_filter16y_inner; break;
-            }
-            if (check_func(func, "vp8_loop_filter16y%s_%s", edge ? "_inner" : "", dir ? "v" : "h")) {
-                for (force_hev = -1; force_hev <= 1; force_hev++) {
-                    fill_loopfilter_buffers(buf0 - midoff, 16, 16, 16);
-                    randomize_buffers(buf0, 0, 16, force_hev);
-                    randomize_buffers(buf0, 8, 16, force_hev);
-                    memcpy(buf1 - midoff, buf0 - midoff, 16 * 16);
-                    call_ref(buf0, 16, flim_E, flim_I, hev_thresh);
-                    call_new(buf1, 16, flim_E, flim_I, hev_thresh);
-                    if (memcmp(buf0 - midoff, buf1 - midoff, 16 * 16))
-                        fail();
-                }
-                fill_loopfilter_buffers(buf0 - midoff, 16, 16, 16);
-                randomize_buffers(buf0, 0, 16, 0);
-                randomize_buffers(buf0, 8, 16, 0);
-                bench_new(buf0, 16, flim_E, flim_I, hev_thresh);
-            }
-        }
-    }
-}
-
-static void check_loopfilter_8uv(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, base0u, [32 + 16 * 16]);
-    LOCAL_ALIGNED_16(uint8_t, base0v, [32 + 16 * 16]);
-    LOCAL_ALIGNED_16(uint8_t, base1u, [32 + 16 * 16]);
-    LOCAL_ALIGNED_16(uint8_t, base1v, [32 + 16 * 16]);
-    VP8DSPContext d;
-    int dir, edge, force_hev;
-    int flim_E = 20, flim_I = 10, hev_thresh = 7;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *, uint8_t *, ptrdiff_t, int, int, int);
-
-    ff_vp8dsp_init(&d);
-
-    for (dir = 0; dir < 2; dir++) {
-        int midoff = dir ? 4 * 16 : 4;
-        int midoff_aligned = dir ? 4 * 16 : 16;
-        uint8_t *buf0u = base0u + midoff_aligned;
-        uint8_t *buf0v = base0v + midoff_aligned;
-        uint8_t *buf1u = base1u + midoff_aligned;
-        uint8_t *buf1v = base1v + midoff_aligned;
-        for (edge = 0; edge < 2; edge++) {
-            void (*func)(uint8_t *, uint8_t *, ptrdiff_t, int, int, int) = NULL;
-            switch (dir << 1 | edge) {
-            case (0 << 1) | 0: func = d.vp8_h_loop_filter8uv; break;
-            case (1 << 1) | 0: func = d.vp8_v_loop_filter8uv; break;
-            case (0 << 1) | 1: func = d.vp8_h_loop_filter8uv_inner; break;
-            case (1 << 1) | 1: func = d.vp8_v_loop_filter8uv_inner; break;
-            }
-            if (check_func(func, "vp8_loop_filter8uv%s_%s", edge ? "_inner" : "", dir ? "v" : "h")) {
-                for (force_hev = -1; force_hev <= 1; force_hev++) {
-                    fill_loopfilter_buffers(buf0u - midoff, 16, 16, 16);
-                    fill_loopfilter_buffers(buf0v - midoff, 16, 16, 16);
-                    randomize_buffers(buf0u, 0, 16, force_hev);
-                    randomize_buffers(buf0v, 0, 16, force_hev);
-                    memcpy(buf1u - midoff, buf0u - midoff, 16 * 16);
-                    memcpy(buf1v - midoff, buf0v - midoff, 16 * 16);
-
-                    call_ref(buf0u, buf0v, 16, flim_E, flim_I, hev_thresh);
-                    call_new(buf1u, buf1v, 16, flim_E, flim_I, hev_thresh);
-                    if (memcmp(buf0u - midoff, buf1u - midoff, 16 * 16) ||
-                        memcmp(buf0v - midoff, buf1v - midoff, 16 * 16))
-                        fail();
-                }
-                fill_loopfilter_buffers(buf0u - midoff, 16, 16, 16);
-                fill_loopfilter_buffers(buf0v - midoff, 16, 16, 16);
-                randomize_buffers(buf0u, 0, 16, 0);
-                randomize_buffers(buf0v, 0, 16, 0);
-                bench_new(buf0u, buf0v, 16, flim_E, flim_I, hev_thresh);
-            }
-        }
-    }
-}
-
-static void check_loopfilter_simple(void)
-{
-    LOCAL_ALIGNED_16(uint8_t, base0, [32 + 16 * 16]);
-    LOCAL_ALIGNED_16(uint8_t, base1, [32 + 16 * 16]);
-    VP8DSPContext d;
-    int dir;
-    int flim_E = 20, flim_I = 30, hev_thresh = 0;
-    declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *, ptrdiff_t, int);
-
-    ff_vp8dsp_init(&d);
-
-    for (dir = 0; dir < 2; dir++) {
-        int midoff = dir ? 4 * 16 : 4;
-        int midoff_aligned = dir ? 4 * 16 : 16;
-        uint8_t *buf0 = base0 + midoff_aligned;
-        uint8_t *buf1 = base1 + midoff_aligned;
-        void (*func)(uint8_t *, ptrdiff_t, int) = dir ? d.vp8_v_loop_filter_simple : d.vp8_h_loop_filter_simple;
-        if (check_func(func, "vp8_loop_filter_simple_%s", dir ? "v" : "h")) {
-            fill_loopfilter_buffers(buf0 - midoff, 16, 16, 16);
-            randomize_buffers(buf0, 0, 16, -1);
-            randomize_buffers(buf0, 8, 16, -1);
-            memcpy(buf1 - midoff, buf0 - midoff, 16 * 16);
-            call_ref(buf0, 16, flim_E);
-            call_new(buf1, 16, flim_E);
-            if (memcmp(buf0 - midoff, buf1 - midoff, 16 * 16))
-                fail();
-            bench_new(buf0, 16, flim_E);
-        }
-    }
-}
-
-void checkasm_check_vp8dsp(void)
-{
-    check_idct();
-    check_idct_dc4();
-    check_luma_dc_wht();
-    report("idct");
-    check_mc();
-    report("mc");
-    check_loopfilter_16y();
-    check_loopfilter_8uv();
-    check_loopfilter_simple();
-    report("loopfilter");
-}
diff --git a/tests/checkasm/vp9dsp.c b/tests/checkasm/vp9dsp.c
deleted file mode 100644
index a91577b..0000000
--- a/tests/checkasm/vp9dsp.c
+++ /dev/null
@@ -1,631 +0,0 @@
-/*
- * Copyright (c) 2015 Ronald S. Bultje <rsbultje@gmail.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <math.h>
-#include <string.h>
-#include "checkasm.h"
-#include "libavcodec/vp9data.h"
-#include "libavcodec/vp9.h"
-#include "libavutil/common.h"
-#include "libavutil/internal.h"
-#include "libavutil/intreadwrite.h"
-#include "libavutil/mathematics.h"
-
-static const uint32_t pixel_mask[3] = { 0xffffffff, 0x03ff03ff, 0x0fff0fff };
-#define SIZEOF_PIXEL ((bit_depth + 7) / 8)
-
-#define randomize_buffers()                                        \
-    do {                                                           \
-        uint32_t mask = pixel_mask[(bit_depth - 8) >> 1];          \
-        int k;                                                     \
-        for (k = -4;  k < SIZEOF_PIXEL * FFMAX(8, size); k += 4) { \
-            uint32_t r = rnd() & mask;                             \
-            AV_WN32A(a + k, r);                                    \
-        }                                                          \
-        for (k = 0; k < size * SIZEOF_PIXEL; k += 4) {             \
-            uint32_t r = rnd() & mask;                             \
-            AV_WN32A(l + k, r);                                    \
-        }                                                          \
-    } while (0)
-
-static void check_ipred(void)
-{
-    LOCAL_ALIGNED_32(uint8_t, a_buf, [64 * 2]);
-    uint8_t *a = &a_buf[32 * 2];
-    LOCAL_ALIGNED_32(uint8_t, l, [32 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, dst0, [32 * 32 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, dst1, [32 * 32 * 2]);
-    VP9DSPContext dsp;
-    int tx, mode, bit_depth;
-    declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, ptrdiff_t stride,
-                      const uint8_t *left, const uint8_t *top);
-    static const char *const mode_names[N_INTRA_PRED_MODES] = {
-        [VERT_PRED] = "vert",
-        [HOR_PRED] = "hor",
-        [DC_PRED] = "dc",
-        [DIAG_DOWN_LEFT_PRED] = "diag_downleft",
-        [DIAG_DOWN_RIGHT_PRED] = "diag_downright",
-        [VERT_RIGHT_PRED] = "vert_right",
-        [HOR_DOWN_PRED] = "hor_down",
-        [VERT_LEFT_PRED] = "vert_left",
-        [HOR_UP_PRED] = "hor_up",
-        [TM_VP8_PRED] = "tm",
-        [LEFT_DC_PRED] = "dc_left",
-        [TOP_DC_PRED] = "dc_top",
-        [DC_128_PRED] = "dc_128",
-        [DC_127_PRED] = "dc_127",
-        [DC_129_PRED] = "dc_129",
-    };
-
-    for (bit_depth = 8; bit_depth <= 12; bit_depth += 2) {
-        ff_vp9dsp_init(&dsp, bit_depth, 0);
-        for (tx = 0; tx < 4; tx++) {
-            int size = 4 << tx;
-
-            for (mode = 0; mode < N_INTRA_PRED_MODES; mode++) {
-                if (check_func(dsp.intra_pred[tx][mode], "vp9_%s_%dx%d_%dbpp",
-                               mode_names[mode], size, size, bit_depth)) {
-                    randomize_buffers();
-                    call_ref(dst0, size * SIZEOF_PIXEL, l, a);
-                    call_new(dst1, size * SIZEOF_PIXEL, l, a);
-                    if (memcmp(dst0, dst1, size * size * SIZEOF_PIXEL))
-                        fail();
-                    bench_new(dst1, size * SIZEOF_PIXEL,l, a);
-                }
-            }
-        }
-    }
-    report("ipred");
-}
-
-#undef randomize_buffers
-
-#define randomize_buffers() \
-    do { \
-        uint32_t mask = pixel_mask[(bit_depth - 8) >> 1];                  \
-        for (y = 0; y < sz; y++) {                                         \
-            for (x = 0; x < sz * SIZEOF_PIXEL; x += 4) {                   \
-                uint32_t r = rnd() & mask;                                 \
-                AV_WN32A(dst + y * sz * SIZEOF_PIXEL + x, r);              \
-                AV_WN32A(src + y * sz * SIZEOF_PIXEL + x, rnd() & mask);   \
-            }                                                              \
-            for (x = 0; x < sz; x++) {                                     \
-                if (bit_depth == 8) {                                      \
-                    coef[y * sz + x] = src[y * sz + x] - dst[y * sz + x];  \
-                } else {                                                   \
-                    ((int32_t *) coef)[y * sz + x] =                       \
-                        ((uint16_t *) src)[y * sz + x] -                   \
-                        ((uint16_t *) dst)[y * sz + x];                    \
-                }                                                          \
-            }                                                              \
-        }                                                                  \
-    } while(0)
-
-// wht function copied from libvpx
-static void fwht_1d(double *out, const double *in, int sz)
-{
-    double t0 = in[0] + in[1];
-    double t3 = in[3] - in[2];
-    double t4 = trunc((t0 - t3) * 0.5);
-    double t1 = t4 - in[1];
-    double t2 = t4 - in[2];
-
-    out[0] = t0 - t2;
-    out[1] = t2;
-    out[2] = t3 + t1;
-    out[3] = t1;
-}
-
-// standard DCT-II
-static void fdct_1d(double *out, const double *in, int sz)
-{
-    int k, n;
-
-    for (k = 0; k < sz; k++) {
-        out[k] = 0.0;
-        for (n = 0; n < sz; n++)
-            out[k] += in[n] * cos(M_PI * (2 * n + 1) * k / (sz * 2.0));
-    }
-    out[0] *= M_SQRT1_2;
-}
-
-// see "Towards jointly optimal spatial prediction and adaptive transform in
-// video/image coding", by J. Han, A. Saxena, and K. Rose
-// IEEE Proc. ICASSP, pp. 726-729, Mar. 2010.
-static void fadst4_1d(double *out, const double *in, int sz)
-{
-    int k, n;
-
-    for (k = 0; k < sz; k++) {
-        out[k] = 0.0;
-        for (n = 0; n < sz; n++)
-            out[k] += in[n] * sin(M_PI * (n + 1) * (2 * k + 1) / (sz * 2.0 + 1.0));
-    }
-}
-
-// see "A Butterfly Structured Design of The Hybrid Transform Coding Scheme",
-// by Jingning Han, Yaowu Xu, and Debargha Mukherjee
-// http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41418.pdf
-static void fadst_1d(double *out, const double *in, int sz)
-{
-    int k, n;
-
-    for (k = 0; k < sz; k++) {
-        out[k] = 0.0;
-        for (n = 0; n < sz; n++)
-            out[k] += in[n] * sin(M_PI * (2 * n + 1) * (2 * k + 1) / (sz * 4.0));
-    }
-}
-
-typedef void (*ftx1d_fn)(double *out, const double *in, int sz);
-static void ftx_2d(double *out, const double *in, enum TxfmMode tx,
-                   enum TxfmType txtp, int sz)
-{
-    static const double scaling_factors[5][4] = {
-        { 4.0, 16.0 * M_SQRT1_2 / 3.0, 16.0 * M_SQRT1_2 / 3.0, 32.0 / 9.0 },
-        { 2.0, 2.0, 2.0, 2.0 },
-        { 1.0, 1.0, 1.0, 1.0 },
-        { 0.25 },
-        { 4.0 }
-    };
-    static const ftx1d_fn ftx1d_tbl[5][4][2] = {
-        {
-            { fdct_1d, fdct_1d },
-            { fadst4_1d, fdct_1d },
-            { fdct_1d, fadst4_1d },
-            { fadst4_1d, fadst4_1d },
-        }, {
-            { fdct_1d, fdct_1d },
-            { fadst_1d, fdct_1d },
-            { fdct_1d, fadst_1d },
-            { fadst_1d, fadst_1d },
-        }, {
-            { fdct_1d, fdct_1d },
-            { fadst_1d, fdct_1d },
-            { fdct_1d, fadst_1d },
-            { fadst_1d, fadst_1d },
-        }, {
-            { fdct_1d, fdct_1d },
-        }, {
-            { fwht_1d, fwht_1d },
-        },
-    };
-    double temp[1024];
-    double scaling_factor = scaling_factors[tx][txtp];
-    int i, j;
-
-    // cols
-    for (i = 0; i < sz; ++i) {
-        double temp_out[32];
-
-        ftx1d_tbl[tx][txtp][0](temp_out, &in[i * sz], sz);
-        // scale and transpose
-        for (j = 0; j < sz; ++j)
-            temp[j * sz + i] = temp_out[j] * scaling_factor;
-    }
-
-    // rows
-    for (i = 0; i < sz; i++)
-        ftx1d_tbl[tx][txtp][1](&out[i * sz], &temp[i * sz], sz);
-}
-
-static void ftx(int16_t *buf, enum TxfmMode tx,
-                enum TxfmType txtp, int sz, int bit_depth)
-{
-    double ind[1024], outd[1024];
-    int n;
-
-    emms_c();
-    for (n = 0; n < sz * sz; n++) {
-        if (bit_depth == 8)
-            ind[n] = buf[n];
-        else
-            ind[n] = ((int32_t *) buf)[n];
-    }
-    ftx_2d(outd, ind, tx, txtp, sz);
-    for (n = 0; n < sz * sz; n++) {
-        if (bit_depth == 8)
-            buf[n] = lrint(outd[n]);
-        else
-            ((int32_t *) buf)[n] = lrint(outd[n]);
-    }
-}
-
-static int copy_subcoefs(int16_t *out, const int16_t *in, enum TxfmMode tx,
-                         enum TxfmType txtp, int sz, int sub, int bit_depth)
-{
-    // copy the topleft coefficients such that the return value (being the
-    // coefficient scantable index for the eob token) guarantees that only
-    // the topleft $sub out of $sz (where $sz >= $sub) coefficients in both
-    // dimensions are non-zero. This leads to braching to specific optimized
-    // simd versions (e.g. dc-only) so that we get full asm coverage in this
-    // test
-
-    int n;
-    const int16_t *scan = ff_vp9_scans[tx][txtp];
-    int eob;
-
-    for (n = 0; n < sz * sz; n++) {
-        int rc = scan[n], rcx = rc % sz, rcy = rc / sz;
-
-        // find eob for this sub-idct
-        if (rcx >= sub || rcy >= sub)
-            break;
-
-        // copy coef
-        if (bit_depth == 8) {
-            out[rc] = in[rc];
-        } else {
-            AV_COPY32(&out[rc * 2], &in[rc * 2]);
-        }
-    }
-
-    eob = n;
-
-    for (; n < sz * sz; n++) {
-        int rc = scan[n];
-
-        // zero
-        if (bit_depth == 8) {
-            out[rc] = 0;
-        } else {
-            AV_ZERO32(&out[rc * 2]);
-        }
-    }
-
-    return eob;
-}
-
-static int iszero(const int16_t *c, int sz)
-{
-    int n;
-
-    for (n = 0; n < sz / sizeof(int16_t); n += 2)
-        if (AV_RN32A(&c[n]))
-            return 0;
-
-    return 1;
-}
-
-#define SIZEOF_COEF (2 * ((bit_depth + 7) / 8))
-
-static void check_itxfm(void)
-{
-    LOCAL_ALIGNED_32(uint8_t, src, [32 * 32 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, dst, [32 * 32 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, dst0, [32 * 32 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, dst1, [32 * 32 * 2]);
-    LOCAL_ALIGNED_32(int16_t, coef, [32 * 32 * 2]);
-    LOCAL_ALIGNED_32(int16_t, subcoef0, [32 * 32 * 2]);
-    LOCAL_ALIGNED_32(int16_t, subcoef1, [32 * 32 * 2]);
-    declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob);
-    VP9DSPContext dsp;
-    int y, x, tx, txtp, bit_depth, sub;
-    static const char *const txtp_types[N_TXFM_TYPES] = {
-        [DCT_DCT] = "dct_dct", [DCT_ADST] = "adst_dct",
-        [ADST_DCT] = "dct_adst", [ADST_ADST] = "adst_adst"
-    };
-
-    for (bit_depth = 8; bit_depth <= 12; bit_depth += 2) {
-        ff_vp9dsp_init(&dsp, bit_depth, 0);
-
-        for (tx = TX_4X4; tx <= N_TXFM_SIZES /* 4 = lossless */; tx++) {
-            int sz = 4 << (tx & 3);
-            int n_txtps = tx < TX_32X32 ? N_TXFM_TYPES : 1;
-
-            for (txtp = 0; txtp < n_txtps; txtp++) {
-                // skip testing sub-IDCTs for WHT or ADST since they don't
-                // implement it in any of the SIMD functions. If they do,
-                // consider changing this to ensure we have complete test
-                // coverage. Test sub=1 for dc-only, then 2, 4, 8, 12, etc,
-                // since the arm version can distinguish them at that level.
-                for (sub = (txtp == 0 && tx < 4) ? 1 : sz; sub <= sz;
-                     sub < 4 ? (sub <<= 1) : (sub += 4)) {
-                    if (check_func(dsp.itxfm_add[tx][txtp],
-                                   "vp9_inv_%s_%dx%d_sub%d_add_%d",
-                                   tx == 4 ? "wht_wht" : txtp_types[txtp],
-                                   sz, sz, sub, bit_depth)) {
-                        int eob;
-
-                        randomize_buffers();
-                        ftx(coef, tx, txtp, sz, bit_depth);
-
-                        if (sub < sz) {
-                            eob = copy_subcoefs(subcoef0, coef, tx, txtp,
-                                                sz, sub, bit_depth);
-                        } else {
-                            eob = sz * sz;
-                            memcpy(subcoef0, coef, sz * sz * SIZEOF_COEF);
-                        }
-
-                        memcpy(dst0, dst, sz * sz * SIZEOF_PIXEL);
-                        memcpy(dst1, dst, sz * sz * SIZEOF_PIXEL);
-                        memcpy(subcoef1, subcoef0, sz * sz * SIZEOF_COEF);
-                        call_ref(dst0, sz * SIZEOF_PIXEL, subcoef0, eob);
-                        call_new(dst1, sz * SIZEOF_PIXEL, subcoef1, eob);
-                        if (memcmp(dst0, dst1, sz * sz * SIZEOF_PIXEL) ||
-                            !iszero(subcoef0, sz * sz * SIZEOF_COEF) ||
-                            !iszero(subcoef1, sz * sz * SIZEOF_COEF))
-                            fail();
-
-                        bench_new(dst, sz * SIZEOF_PIXEL, coef, eob);
-                    }
-                }
-            }
-        }
-    }
-    report("itxfm");
-}
-
-#undef randomize_buffers
-
-#define setpx(a,b,c) \
-    do { \
-        if (SIZEOF_PIXEL == 1) { \
-            buf0[(a) + (b) * jstride] = av_clip_uint8(c); \
-        } else { \
-            ((uint16_t *)buf0)[(a) + (b) * jstride] = av_clip_uintp2(c, bit_depth); \
-        } \
-    } while (0)
-
-// c can be an assignment and must not be put under ()
-#define setdx(a,b,c,d) setpx(a,b,c-(d)+(rnd()%((d)*2+1)))
-#define setsx(a,b,c,d) setdx(a,b,c,(d) << (bit_depth - 8))
-static void randomize_loopfilter_buffers(int bidx, int lineoff, int str,
-                                         int bit_depth, int dir, const int *E,
-                                         const int *F, const int *H, const int *I,
-                                         uint8_t *buf0, uint8_t *buf1)
-{
-    uint32_t mask = (1 << bit_depth) - 1;
-    int off = dir ? lineoff : lineoff * 16;
-    int istride = dir ? 1 : 16;
-    int jstride = dir ? str : 1;
-    int i, j;
-    for (i = 0; i < 2; i++) /* flat16 */ {
-        int idx = off + i * istride, p0, q0;
-        setpx(idx,  0, q0 = rnd() & mask);
-        setsx(idx, -1, p0 = q0, E[bidx] >> 2);
-        for (j = 1; j < 8; j++) {
-            setsx(idx, -1 - j, p0, F[bidx]);
-            setsx(idx, j, q0, F[bidx]);
-        }
-    }
-    for (i = 2; i < 4; i++) /* flat8 */ {
-        int idx = off + i * istride, p0, q0;
-        setpx(idx,  0, q0 = rnd() & mask);
-        setsx(idx, -1, p0 = q0, E[bidx] >> 2);
-        for (j = 1; j < 4; j++) {
-            setsx(idx, -1 - j, p0, F[bidx]);
-            setsx(idx, j, q0, F[bidx]);
-        }
-        for (j = 4; j < 8; j++) {
-            setpx(idx, -1 - j, rnd() & mask);
-            setpx(idx, j, rnd() & mask);
-        }
-    }
-    for (i = 4; i < 6; i++) /* regular */ {
-        int idx = off + i * istride, p2, p1, p0, q0, q1, q2;
-        setpx(idx,  0, q0 = rnd() & mask);
-        setsx(idx,  1, q1 = q0, I[bidx]);
-        setsx(idx,  2, q2 = q1, I[bidx]);
-        setsx(idx,  3, q2,      I[bidx]);
-        setsx(idx, -1, p0 = q0, E[bidx] >> 2);
-        setsx(idx, -2, p1 = p0, I[bidx]);
-        setsx(idx, -3, p2 = p1, I[bidx]);
-        setsx(idx, -4, p2,      I[bidx]);
-        for (j = 4; j < 8; j++) {
-            setpx(idx, -1 - j, rnd() & mask);
-            setpx(idx, j, rnd() & mask);
-        }
-    }
-    for (i = 6; i < 8; i++) /* off */ {
-        int idx = off + i * istride;
-        for (j = 0; j < 8; j++) {
-            setpx(idx, -1 - j, rnd() & mask);
-            setpx(idx, j, rnd() & mask);
-        }
-    }
-}
-#define randomize_buffers(bidx, lineoff, str) \
-        randomize_loopfilter_buffers(bidx, lineoff, str, bit_depth, dir, \
-                                     E, F, H, I, buf0, buf1)
-
-static void check_loopfilter(void)
-{
-    LOCAL_ALIGNED_32(uint8_t, base0, [32 + 16 * 16 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, base1, [32 + 16 * 16 * 2]);
-    VP9DSPContext dsp;
-    int dir, wd, wd2, bit_depth;
-    static const char *const dir_name[2] = { "h", "v" };
-    static const int E[2] = { 20, 28 }, I[2] = { 10, 16 };
-    static const int H[2] = { 7, 11 }, F[2] = { 1, 1 };
-    declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, ptrdiff_t stride, int E, int I, int H);
-
-    for (bit_depth = 8; bit_depth <= 12; bit_depth += 2) {
-        ff_vp9dsp_init(&dsp, bit_depth, 0);
-
-        for (dir = 0; dir < 2; dir++) {
-            int midoff = (dir ? 8 * 8 : 8) * SIZEOF_PIXEL;
-            int midoff_aligned = (dir ? 8 * 8 : 16) * SIZEOF_PIXEL;
-            uint8_t *buf0 = base0 + midoff_aligned;
-            uint8_t *buf1 = base1 + midoff_aligned;
-
-            for (wd = 0; wd < 3; wd++) {
-                // 4/8/16wd_8px
-                if (check_func(dsp.loop_filter_8[wd][dir],
-                               "vp9_loop_filter_%s_%d_8_%dbpp",
-                               dir_name[dir], 4 << wd, bit_depth)) {
-                    randomize_buffers(0, 0, 8);
-                    memcpy(buf1 - midoff, buf0 - midoff,
-                           16 * 8 * SIZEOF_PIXEL);
-                    call_ref(buf0, 16 * SIZEOF_PIXEL >> dir, E[0], I[0], H[0]);
-                    call_new(buf1, 16 * SIZEOF_PIXEL >> dir, E[0], I[0], H[0]);
-                    if (memcmp(buf0 - midoff, buf1 - midoff, 16 * 8 * SIZEOF_PIXEL))
-                        fail();
-                    bench_new(buf1, 16 * SIZEOF_PIXEL >> dir, E[0], I[0], H[0]);
-                }
-            }
-
-            midoff = (dir ? 16 * 8 : 8) * SIZEOF_PIXEL;
-            midoff_aligned = (dir ? 16 * 8 : 16) * SIZEOF_PIXEL;
-
-            buf0 = base0 + midoff_aligned;
-            buf1 = base1 + midoff_aligned;
-
-            // 16wd_16px loopfilter
-            if (check_func(dsp.loop_filter_16[dir],
-                           "vp9_loop_filter_%s_16_16_%dbpp",
-                           dir_name[dir], bit_depth)) {
-                randomize_buffers(0, 0, 16);
-                randomize_buffers(0, 8, 16);
-                memcpy(buf1 - midoff, buf0 - midoff, 16 * 16 * SIZEOF_PIXEL);
-                call_ref(buf0, 16 * SIZEOF_PIXEL, E[0], I[0], H[0]);
-                call_new(buf1, 16 * SIZEOF_PIXEL, E[0], I[0], H[0]);
-                if (memcmp(buf0 - midoff, buf1 - midoff, 16 * 16 * SIZEOF_PIXEL))
-                    fail();
-                bench_new(buf1, 16 * SIZEOF_PIXEL, E[0], I[0], H[0]);
-            }
-
-            for (wd = 0; wd < 2; wd++) {
-                for (wd2 = 0; wd2 < 2; wd2++) {
-                    // mix2 loopfilter
-                    if (check_func(dsp.loop_filter_mix2[wd][wd2][dir],
-                                   "vp9_loop_filter_mix2_%s_%d%d_16_%dbpp",
-                                   dir_name[dir], 4 << wd, 4 << wd2, bit_depth)) {
-                        randomize_buffers(0, 0, 16);
-                        randomize_buffers(1, 8, 16);
-                        memcpy(buf1 - midoff, buf0 - midoff, 16 * 16 * SIZEOF_PIXEL);
-#define M(a) (((a)[1] << 8) | (a)[0])
-                        call_ref(buf0, 16 * SIZEOF_PIXEL, M(E), M(I), M(H));
-                        call_new(buf1, 16 * SIZEOF_PIXEL, M(E), M(I), M(H));
-                        if (memcmp(buf0 - midoff, buf1 - midoff, 16 * 16 * SIZEOF_PIXEL))
-                            fail();
-                        bench_new(buf1, 16 * SIZEOF_PIXEL, M(E), M(I), M(H));
-#undef M
-                    }
-                }
-            }
-        }
-    }
-    report("loopfilter");
-}
-
-#undef setsx
-#undef setpx
-#undef setdx
-#undef randomize_buffers
-
-#define DST_BUF_SIZE (size * size * SIZEOF_PIXEL)
-#define SRC_BUF_STRIDE 72
-#define SRC_BUF_SIZE ((size + 7) * SRC_BUF_STRIDE * SIZEOF_PIXEL)
-#define src (buf + 3 * SIZEOF_PIXEL * (SRC_BUF_STRIDE + 1))
-
-#define randomize_buffers()                               \
-    do {                                                  \
-        uint32_t mask = pixel_mask[(bit_depth - 8) >> 1]; \
-        int k;                                            \
-        for (k = 0; k < SRC_BUF_SIZE; k += 4) {           \
-            uint32_t r = rnd() & mask;                    \
-            AV_WN32A(buf + k, r);                         \
-        }                                                 \
-        if (op == 1) {                                    \
-            for (k = 0; k < DST_BUF_SIZE; k += 4) {       \
-                uint32_t r = rnd() & mask;                \
-                AV_WN32A(dst0 + k, r);                    \
-                AV_WN32A(dst1 + k, r);                    \
-            }                                             \
-        }                                                 \
-    } while (0)
-
-static void check_mc(void)
-{
-    LOCAL_ALIGNED_32(uint8_t, buf, [72 * 72 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, dst0, [64 * 64 * 2]);
-    LOCAL_ALIGNED_32(uint8_t, dst1, [64 * 64 * 2]);
-    VP9DSPContext dsp;
-    int op, hsize, bit_depth, filter, dx, dy;
-    declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, ptrdiff_t dst_stride,
-                      const uint8_t *ref, ptrdiff_t ref_stride,
-                 int h, int mx, int my);
-    static const char *const filter_names[4] = {
-        "8tap_smooth", "8tap_regular", "8tap_sharp", "bilin"
-    };
-    static const char *const subpel_names[2][2] = { { "", "h" }, { "v", "hv" } };
-    static const char *const op_names[2] = { "put", "avg" };
-    char str[256];
-
-    for (op = 0; op < 2; op++) {
-        for (bit_depth = 8; bit_depth <= 12; bit_depth += 2) {
-            ff_vp9dsp_init(&dsp, bit_depth, 0);
-            for (hsize = 0; hsize < 5; hsize++) {
-                int size = 64 >> hsize;
-
-                for (filter = 0; filter < 4; filter++) {
-                    for (dx = 0; dx < 2; dx++) {
-                        for (dy = 0; dy < 2; dy++) {
-                            if (dx || dy) {
-                                snprintf(str, sizeof(str),
-                                         "%s_%s_%d%s", op_names[op],
-                                         filter_names[filter], size,
-                                         subpel_names[dy][dx]);
-                            } else {
-                                snprintf(str, sizeof(str),
-                                         "%s%d", op_names[op], size);
-                            }
-                            if (check_func(dsp.mc[hsize][filter][op][dx][dy],
-                                           "vp9_%s_%dbpp", str, bit_depth)) {
-                                int mx = dx ? 1 + (rnd() % 14) : 0;
-                                int my = dy ? 1 + (rnd() % 14) : 0;
-                                randomize_buffers();
-                                call_ref(dst0, size * SIZEOF_PIXEL,
-                                         src, SRC_BUF_STRIDE * SIZEOF_PIXEL,
-                                         size, mx, my);
-                                call_new(dst1, size * SIZEOF_PIXEL,
-                                         src, SRC_BUF_STRIDE * SIZEOF_PIXEL,
-                                         size, mx, my);
-                                if (memcmp(dst0, dst1, DST_BUF_SIZE))
-                                    fail();
-
-                                // simd implementations for each filter of subpel
-                                // functions are identical
-                                if (filter >= 1 && filter <= 2) continue;
-                                // 10/12 bpp for bilin are identical
-                                if (bit_depth == 12 && filter == 3) continue;
-
-                                bench_new(dst1, size * SIZEOF_PIXEL,
-                                          src, SRC_BUF_STRIDE * SIZEOF_PIXEL,
-                                          size, mx, my);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-    report("mc");
-}
-
-void checkasm_check_vp9dsp(void)
-{
-    check_ipred();
-    check_itxfm();
-    check_loopfilter();
-    check_mc();
-}
diff --git a/tests/checkasm/x86/checkasm.asm b/tests/checkasm/x86/checkasm.asm
deleted file mode 100644
index 683aae8..0000000
--- a/tests/checkasm/x86/checkasm.asm
+++ /dev/null
@@ -1,244 +0,0 @@
-;*****************************************************************************
-;* Assembly testing and benchmarking tool
-;* Copyright (c) 2008 Loren Merritt
-;* Copyright (c) 2012 Henrik Gramner
-;*
-;* This file is part of FFmpeg.
-;*
-;* FFmpeg is free software; you can redistribute it and/or modify
-;* it under the terms of the GNU General Public License as published by
-;* the Free Software Foundation; either version 2 of the License, or
-;* (at your option) any later version.
-;*
-;* 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 General Public License for more details.
-;*
-;* You should have received a copy of the GNU General Public License
-;* along with this program; if not, write to the Free Software
-;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
-;*****************************************************************************
-
-%define private_prefix checkasm
-%include "libavutil/x86/x86inc.asm"
-
-SECTION_RODATA
-
-error_message: db "failed to preserve register", 0
-error_message_emms: db "failed to issue emms", 0
-
-%if ARCH_X86_64
-; just random numbers to reduce the chance of incidental match
-ALIGN 16
-x6:  dq 0x1a1b2550a612b48c,0x79445c159ce79064
-x7:  dq 0x2eed899d5a28ddcd,0x86b2536fcd8cf636
-x8:  dq 0xb0856806085e7943,0x3f2bf84fc0fcca4e
-x9:  dq 0xacbd382dcf5b8de2,0xd229e1f5b281303f
-x10: dq 0x71aeaff20b095fd9,0xab63e2e11fa38ed9
-x11: dq 0x89b0c0765892729a,0x77d410d5c42c882d
-x12: dq 0xc45ea11a955d8dd5,0x24b3c1d2a024048b
-x13: dq 0x2e8ec680de14b47c,0xdd7b8919edd42786
-x14: dq 0x135ce6888fa02cbf,0x11e53e2b2ac655ef
-x15: dq 0x011ff554472a7a10,0x6de8f4c914c334d5
-n7:  dq 0x21f86d66c8ca00ce
-n8:  dq 0x75b6ba21077c48ad
-n9:  dq 0xed56bb2dcb3c7736
-n10: dq 0x8bda43d3fd1a7e06
-n11: dq 0xb64a9c9e5d318408
-n12: dq 0xdf9a54b303f1d3a3
-n13: dq 0x4a75479abd64e097
-n14: dq 0x249214109d5d1c88
-%endif
-
-SECTION .text
-
-cextern fail_func
-
-; max number of args used by any asm function.
-; (max_args % 4) must equal 3 for stack alignment
-%define max_args 15
-
-%if ARCH_X86_64
-
-;-----------------------------------------------------------------------------
-; int checkasm_stack_clobber(uint64_t clobber, ...)
-;-----------------------------------------------------------------------------
-cglobal stack_clobber, 1,2
-    ; Clobber the stack with junk below the stack pointer
-    %define argsize (max_args+6)*8
-    SUB  rsp, argsize
-    mov   r1, argsize-8
-.loop:
-    mov [rsp+r1], r0
-    sub   r1, 8
-    jge .loop
-    ADD  rsp, argsize
-    RET
-
-%if WIN64
-    %assign free_regs 7
-    DECLARE_REG_TMP 4
-%else
-    %assign free_regs 9
-    DECLARE_REG_TMP 7
-%endif
-
-%macro report_fail 1
-    mov  r9, rax
-    mov r10, rdx
-    lea  r0, [%1]
-    xor eax, eax
-    call fail_func
-    mov rdx, r10
-    mov rax, r9
-%endmacro
-
-;-----------------------------------------------------------------------------
-; void checkasm_checked_call(void *func, ...)
-;-----------------------------------------------------------------------------
-INIT_XMM
-%macro CHECKED_CALL 0-1
-cglobal checked_call%1, 2,15,16,max_args*8+8
-    mov  t0, r0
-
-    ; All arguments have been pushed on the stack instead of registers in order to
-    ; test for incorrect assumptions that 32-bit ints are zero-extended to 64-bit.
-    mov  r0, r6mp
-    mov  r1, r7mp
-    mov  r2, r8mp
-    mov  r3, r9mp
-%if UNIX64
-    mov  r4, r10mp
-    mov  r5, r11mp
-    %assign i 6
-    %rep max_args-6
-        mov  r9, [rsp+stack_offset+(i+1)*8]
-        mov  [rsp+(i-6)*8], r9
-        %assign i i+1
-    %endrep
-%else ; WIN64
-    %assign i 4
-    %rep max_args-4
-        mov  r9, [rsp+stack_offset+(i+7)*8]
-        mov  [rsp+i*8], r9
-        %assign i i+1
-    %endrep
-
-    ; Move possible floating-point arguments to the correct registers
-    movq m0, r0
-    movq m1, r1
-    movq m2, r2
-    movq m3, r3
-
-    %assign i 6
-    %rep 16-6
-        mova m %+ i, [x %+ i]
-        %assign i i+1
-    %endrep
-%endif
-
-%assign i 14
-%rep 15-free_regs
-    mov r %+ i, [n %+ i]
-    %assign i i-1
-%endrep
-    call t0
-%assign i 14
-%rep 15-free_regs
-    xor r %+ i, [n %+ i]
-    or  r14, r %+ i
-    %assign i i-1
-%endrep
-
-%if WIN64
-    %assign i 6
-    %rep 16-6
-        pxor m %+ i, [x %+ i]
-        por  m6, m %+ i
-        %assign i i+1
-    %endrep
-    packsswb m6, m6
-    movq r5, m6
-    or  r14, r5
-%endif
-
-    ; Call fail_func() with a descriptive message to mark it as a failure
-    ; if the called function didn't preserve all callee-saved registers.
-    ; Save the return value located in rdx:rax first to prevent clobbering.
-    jz .clobber_ok
-    report_fail error_message
-.clobber_ok:
-%ifidn %1, _emms
-    emms
-%elifnidn %1, _float
-    fstenv [rsp]
-    cmp  word [rsp + 8], 0xffff
-    je   .emms_ok
-    report_fail error_message_emms
-    emms
-.emms_ok:
-%endif
-    RET
-%endmacro
-
-%else
-
-; just random numbers to reduce the chance of incidental match
-%define n3 dword 0x6549315c
-%define n4 dword 0xe02f3e23
-%define n5 dword 0xb78d0d1d
-%define n6 dword 0x33627ba7
-
-%macro report_fail 1
-    mov  r3, eax
-    mov  r4, edx
-    lea  r0, [%1]
-    mov [esp], r0
-    call fail_func
-    mov  edx, r4
-    mov  eax, r3
-%endmacro
-
-%macro CHECKED_CALL 0-1
-;-----------------------------------------------------------------------------
-; void checkasm_checked_call(void *func, ...)
-;-----------------------------------------------------------------------------
-cglobal checked_call%1, 1,7
-    mov  r3, n3
-    mov  r4, n4
-    mov  r5, n5
-    mov  r6, n6
-%rep max_args
-    PUSH dword [esp+20+max_args*4]
-%endrep
-    call r0
-    xor  r3, n3
-    xor  r4, n4
-    xor  r5, n5
-    xor  r6, n6
-    or   r3, r4
-    or   r5, r6
-    or   r3, r5
-    jz .clobber_ok
-    report_fail error_message
-.clobber_ok:
-%ifidn %1, _emms
-    emms
-%elifnidn %1, _float
-    fstenv [esp]
-    cmp  word [esp + 8], 0xffff
-    je   .emms_ok
-    report_fail error_message_emms
-    emms
-.emms_ok:
-%endif
-    add  esp, max_args*4
-    REP_RET
-%endmacro
-
-%endif ; ARCH_X86_64
-
-CHECKED_CALL
-CHECKED_CALL _emms
-CHECKED_CALL _float
diff --git a/tests/tiny_ssim.c b/tests/tiny_ssim.c
deleted file mode 100644
index 08f8e92..0000000
--- a/tests/tiny_ssim.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (c) 2003-2013 Loren Merritt
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110 USA
- */
-/*
- * tiny_ssim.c
- * Computes the Structural Similarity Metric between two rawYV12 video files.
- * original algorithm:
- * Z. Wang, A. C. Bovik, H. R. Sheikh and E. P. Simoncelli,
- *   "Image quality assessment: From error visibility to structural similarity,"
- *   IEEE Transactions on Image Processing, vol. 13, no. 4, pp. 600-612, Apr. 2004.
- *
- * To improve speed, this implementation uses the standard approximation of
- * overlapped 8x8 block sums, rather than the original gaussian weights.
- */
-
-#include "config.h"
-#include <inttypes.h>
-#include <limits.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)
-#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
-
-#define BIT_DEPTH 8
-#define PIXEL_MAX ((1 << BIT_DEPTH)-1)
-typedef uint8_t  pixel;
-
-/****************************************************************************
- * structural similarity metric
- ****************************************************************************/
-static void ssim_4x4x2_core( const pixel *pix1, intptr_t stride1,
-                             const pixel *pix2, intptr_t stride2,
-                             int sums[2][4] )
-{
-    int x,y,z;
-
-    for( z = 0; z < 2; z++ )
-    {
-        uint32_t s1 = 0, s2 = 0, ss = 0, s12 = 0;
-        for( y = 0; y < 4; y++ )
-            for( x = 0; x < 4; x++ )
-            {
-                int a = pix1[x+y*stride1];
-                int b = pix2[x+y*stride2];
-                s1  += a;
-                s2  += b;
-                ss  += a*a;
-                ss  += b*b;
-                s12 += a*b;
-            }
-        sums[z][0] = s1;
-        sums[z][1] = s2;
-        sums[z][2] = ss;
-        sums[z][3] = s12;
-        pix1 += 4;
-        pix2 += 4;
-    }
-}
-
-static float ssim_end1( int s1, int s2, int ss, int s12 )
-{
-/* Maximum value for 10-bit is: ss*64 = (2^10-1)^2*16*4*64 = 4286582784, which will overflow in some cases.
- * s1*s1, s2*s2, and s1*s2 also obtain this value for edge cases: ((2^10-1)*16*4)^2 = 4286582784.
- * Maximum value for 9-bit is: ss*64 = (2^9-1)^2*16*4*64 = 1069551616, which will not overflow. */
-#if BIT_DEPTH > 9
-    typedef float type;
-    static const float ssim_c1 = .01*.01*PIXEL_MAX*PIXEL_MAX*64;
-    static const float ssim_c2 = .03*.03*PIXEL_MAX*PIXEL_MAX*64*63;
-#else
-    typedef int type;
-    static const int ssim_c1 = (int)(.01*.01*PIXEL_MAX*PIXEL_MAX*64 + .5);
-    static const int ssim_c2 = (int)(.03*.03*PIXEL_MAX*PIXEL_MAX*64*63 + .5);
-#endif
-    type fs1 = s1;
-    type fs2 = s2;
-    type fss = ss;
-    type fs12 = s12;
-    type vars = fss*64 - fs1*fs1 - fs2*fs2;
-    type covar = fs12*64 - fs1*fs2;
-    return (float)(2*fs1*fs2 + ssim_c1) * (float)(2*covar + ssim_c2)
-         / ((float)(fs1*fs1 + fs2*fs2 + ssim_c1) * (float)(vars + ssim_c2));
-}
-
-static float ssim_end4( int sum0[5][4], int sum1[5][4], int width )
-{
-    float ssim = 0.0;
-    int i;
-
-    for( i = 0; i < width; i++ )
-        ssim += ssim_end1( sum0[i][0] + sum0[i+1][0] + sum1[i][0] + sum1[i+1][0],
-                           sum0[i][1] + sum0[i+1][1] + sum1[i][1] + sum1[i+1][1],
-                           sum0[i][2] + sum0[i+1][2] + sum1[i][2] + sum1[i+1][2],
-                           sum0[i][3] + sum0[i+1][3] + sum1[i][3] + sum1[i+1][3] );
-    return ssim;
-}
-
-float ssim_plane(
-                           pixel *pix1, intptr_t stride1,
-                           pixel *pix2, intptr_t stride2,
-                           int width, int height, void *buf, int *cnt )
-{
-    int z = 0;
-    int x, y;
-    float ssim = 0.0;
-    int (*sum0)[4] = buf;
-    int (*sum1)[4] = sum0 + (width >> 2) + 3;
-    width >>= 2;
-    height >>= 2;
-    for( y = 1; y < height; y++ )
-    {
-        for( ; z <= y; z++ )
-        {
-            FFSWAP( void*, sum0, sum1 );
-            for( x = 0; x < width; x+=2 )
-                ssim_4x4x2_core( &pix1[4*(x+z*stride1)], stride1, &pix2[4*(x+z*stride2)], stride2, &sum0[x] );
-        }
-        for( x = 0; x < width-1; x += 4 )
-            ssim += ssim_end4( sum0+x, sum1+x, FFMIN(4,width-x-1) );
-    }
-//     *cnt = (height-1) * (width-1);
-    return ssim / ((height-1) * (width-1));
-}
-
-
-uint64_t ssd_plane( const uint8_t *pix1, const uint8_t *pix2, int size )
-{
-    uint64_t ssd = 0;
-    int i;
-    for( i=0; i<size; i++ )
-    {
-        int d = pix1[i] - pix2[i];
-        ssd += d*d;
-    }
-    return ssd;
-}
-
-static double ssd_to_psnr( uint64_t ssd, uint64_t denom )
-{
-    return -10*log((double)ssd/(denom*255*255))/log(10);
-}
-
-static double ssim_db( double ssim, double weight )
-{
-    return 10*(log(weight)/log(10)-log(weight-ssim)/log(10));
-}
-
-static void print_results(uint64_t ssd[3], double ssim[3], int frames, int w, int h)
-{
-    printf( "PSNR Y:%.3f  U:%.3f  V:%.3f  All:%.3f | ",
-            ssd_to_psnr( ssd[0], (uint64_t)frames*w*h ),
-            ssd_to_psnr( ssd[1], (uint64_t)frames*w*h/4 ),
-            ssd_to_psnr( ssd[2], (uint64_t)frames*w*h/4 ),
-            ssd_to_psnr( ssd[0] + ssd[1] + ssd[2], (uint64_t)frames*w*h*3/2 ) );
-    printf( "SSIM Y:%.5f U:%.5f V:%.5f All:%.5f (%.5f)",
-            ssim[0] / frames,
-            ssim[1] / frames,
-            ssim[2] / frames,
-            (ssim[0]*4 + ssim[1] + ssim[2]) / (frames*6),
-            ssim_db(ssim[0] * 4 + ssim[1] + ssim[2], frames*6));
-}
-
-int main(int argc, char* argv[])
-{
-    FILE *f[2];
-    uint8_t *buf[2], *plane[2][3];
-    int *temp;
-    uint64_t ssd[3] = {0,0,0};
-    double ssim[3] = {0,0,0};
-    int frame_size, w, h;
-    int frames, seek;
-    int i;
-
-    if( argc<4 || 2 != sscanf(argv[3], "%dx%d", &w, &h) )
-    {
-        printf("tiny_ssim <file1.yuv> <file2.yuv> <width>x<height> [<seek>]\n");
-        return -1;
-    }
-
-    f[0] = fopen(argv[1], "rb");
-    f[1] = fopen(argv[2], "rb");
-    sscanf(argv[3], "%dx%d", &w, &h);
-
-    if (w<=0 || h<=0 || w*(int64_t)h >= INT_MAX/3 || 2LL*w+12 >= INT_MAX / sizeof(*temp)) {
-        fprintf(stderr, "Dimensions are too large, or invalid\n");
-        return -2;
-    }
-
-    frame_size = w*h*3LL/2;
-    for( i=0; i<2; i++ )
-    {
-        buf[i] = malloc(frame_size);
-        plane[i][0] = buf[i];
-        plane[i][1] = plane[i][0] + w*h;
-        plane[i][2] = plane[i][1] + w*h/4;
-    }
-    temp = malloc((2*w+12)*sizeof(*temp));
-    seek = argc<5 ? 0 : atoi(argv[4]);
-    fseek(f[seek<0], seek < 0 ? -seek : seek, SEEK_SET);
-
-    for( frames=0;; frames++ )
-    {
-        uint64_t ssd_one[3];
-        double ssim_one[3];
-        if( fread(buf[0], frame_size, 1, f[0]) != 1) break;
-        if( fread(buf[1], frame_size, 1, f[1]) != 1) break;
-        for( i=0; i<3; i++ )
-        {
-            ssd_one[i]  = ssd_plane ( plane[0][i], plane[1][i], w*h>>2*!!i );
-            ssim_one[i] = ssim_plane( plane[0][i], w>>!!i,
-                                     plane[1][i], w>>!!i,
-                                     w>>!!i, h>>!!i, temp, NULL );
-            ssd[i] += ssd_one[i];
-            ssim[i] += ssim_one[i];
-        }
-
-        printf("Frame %d | ", frames);
-        print_results(ssd_one, ssim_one, 1, w, h);
-        printf("                \r");
-        fflush(stdout);
-    }
-
-    if( !frames ) return 0;
-
-    printf("Total %d frames | ", frames);
-    print_results(ssd, ssim, frames, w, h);
-    printf("\n");
-
-    return 0;
-}