fixup! [M47_2526] Chromium upversion to m47_2526 branch
authorYoungcheol Kang <ychul.kang@samsung.com>
Wed, 28 Oct 2015 07:19:59 +0000 (16:19 +0900)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 07:55:23 +0000 (07:55 +0000)
Add arm64 support to ffmpeg

We need to regenerate this arm64 support patch in ffmpeg
until ffmpeg supports arm64 architecture in mainstream.

The following commands were executed within arm64 GBS wayland chroot:

[1] Enter chroot
$ gbs chroot --root ~/GBS-ROOT/local/BUILD-ROOTS/scratch.aarch64.0/

[2] Copy over src/third_party/ffmpeg to chroot (e.g.: /home/abuild)
$ cp -rf src/third_party/ffmpeg
~/GBS-ROOT/local/BUILD-ROOTS/scratch.aarch64.0/home/abuild/

[3] Execute the below comment in ffmpeg directory
$ cd ffmpeg
$ ./chromium/scripts/build_ffmpeg.py linux arm64
$ ./chromium/scripts/copy_config.sh
$ python chromium/scripts/generate_gyp.py

[4] Edit ffmpeg.gyp; add "asm_sources" to the build

[5] Generate the patch against a unchanged ffmpeg copy

This patch referred to http://165.213.202.130/gerrit/#/c/80261

Bug: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=14507

Reviewed by: a1.gomes, sns.park

Change-Id: I238cb36c294e27d9dce3a163a7a41c474d5f2360
Signed-off-by: Youngcheol Kang <ychul.kang@samsung.com>
tizen_src/build/patches/m47_ffmpeg_temp_arm64bit.diff

index e1b775a..976fc0b 100644 (file)
-diff --git a/third_party/ffmpeg/libavcodec/aarch64/fft_init_aarch64.c b/third_party/ffmpeg/libavcodec/aarch64/fft_init_aarch64.c
-index 8514d3b..4860c5f 100644
---- a/third_party/ffmpeg/libavcodec/aarch64/fft_init_aarch64.c
-+++ b/third_party/ffmpeg/libavcodec/aarch64/fft_init_aarch64.c
-@@ -35,12 +35,12 @@ av_cold void ff_fft_init_aarch64(FFTContext *s)
-     int cpu_flags = av_get_cpu_flags();
-
-     if (have_neon(cpu_flags)) {
--        s->fft_permute  = ff_fft_permute_neon;
--        s->fft_calc     = ff_fft_calc_neon;
-+//        s->fft_permute  = ff_fft_permute_neon;
-+//        s->fft_calc     = ff_fft_calc_neon;
- #if CONFIG_MDCT
--        s->imdct_calc   = ff_imdct_calc_neon;
--        s->imdct_half   = ff_imdct_half_neon;
--        s->mdct_calc    = ff_mdct_calc_neon;
-+//        s->imdct_calc   = ff_imdct_calc_neon;
-+//        s->imdct_half   = ff_imdct_half_neon;
-+//        s->mdct_calc    = ff_mdct_calc_neon;
-         s->mdct_permutation = FF_MDCT_PERM_INTERLEAVE;
- #endif
-     }
-diff --git a/third_party/ffmpeg/libavcodec/aarch64/h264pred_init.c b/third_party/ffmpeg/libavcodec/aarch64/h264pred_init.c
-index b144376..db4d4bd 100644
---- a/third_party/ffmpeg/libavcodec/aarch64/h264pred_init.c
-+++ b/third_party/ffmpeg/libavcodec/aarch64/h264pred_init.c
-@@ -53,7 +53,7 @@ static av_cold void h264_pred_init_neon(H264PredContext *h, int codec_id,
-
-     if (high_depth)
-         return;
+diff --git a/third_party/ffmpeg/CREDITS.chromium b/CREDITS.chromium
+index 48916cf..2b60b47 100644
+--- a/third_party/ffmpeg/CREDITS.chromium
++++ b/third_party/ffmpeg/CREDITS.chromium
+@@ -116,208 +116,6 @@ restrictions cause the resulting binary to be unredistributeable.
+
+ ********************************************************************************
+
+-libavcodec/arm/vp8dsp_armv6.S
 -
-+/*
-     if (chroma_format_idc <= 1) {
-         h->pred8x8[VERT_PRED8x8     ] = ff_pred8x8_vert_neon;
-         h->pred8x8[HOR_PRED8x8      ] = ff_pred8x8_hor_neon;
-@@ -81,6 +81,7 @@ static av_cold void h264_pred_init_neon(H264PredContext *h, int codec_id,
-     if (codec_id != AV_CODEC_ID_SVQ3 && codec_id != AV_CODEC_ID_RV40 &&
-         codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8)
-         h->pred16x16[PLANE_PRED8x8  ] = ff_pred16x16_plane_neon;
-+*/
+-VP8 ARMv6 optimisations
+-
+-Copyright (c) 2010 Google Inc.
+-Copyright (c) 2010 Rob Clark <rob@ti.com>
+-Copyright (c) 2011 Mans Rullgard <mans@mansr.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 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
+-
+-This code was partially ported from libvpx, which uses this license:
+-
+-Redistribution and use in source and binary forms, with or without
+-modification, are permitted provided that the following conditions are
+-met:
+-
+-* Redistributions of source code must retain the above copyright
+-notice, this list of conditions and the following disclaimer.
+-
+-* 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.
+-
+-* Neither the name of Google 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 COPYRIGHT HOLDERS AND CONTRIBUTORS
+-"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 COPYRIGHT
+-HOLDER OR CONTRIBUTORS 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.
+-
+-********************************************************************************
+-
+-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.
+-
+-********************************************************************************
+-
+-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
+-
+-********************************************************************************
+-
+-libavcodec/arm/jrevdct_arm.S
+-
+-C-like prototype :
+-        void j_rev_dct_arm(DCTBLOCK data)
+-
+-   With DCTBLOCK being a pointer to an array of 64 'signed shorts'
+-
+-   Copyright (c) 2001 Lionel Ulmer (lionel.ulmer@free.fr / bbrox@bbrox.org)
+-
+-   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
+-   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/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
+-
+-********************************************************************************
+-
+ libavcodec/faandct.c
+
+ Floating point AAN DCT
+@@ -366,6 +164,28 @@ DEALINGS IN THE SOFTWARE.
+
+ ********************************************************************************
+
++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
++
++********************************************************************************
++
+ libswresample/swresample.h
+
+ Copyright (C) 2011-2013 Michael Niedermayer (michaelni@gmx.at)
+@@ -388,6 +208,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ ********************************************************************************
+
++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.
++
++********************************************************************************
++
+ libavcodec/jfdctfst.c
+ libavcodec/jfdctint_template.c
+ libavcodec/jrevdct.c
+@@ -435,19 +281,14 @@ libavcodec/fft_fixed_32.c
+ libavcodec/fft_init_table.c
+ libavcodec/fft_table.h
+ libavcodec/mdct_fixed_32.c
+-libavcodec/mips/aacdec_mips.c
+ libavcodec/mips/aacdec_mips.h
+-libavcodec/mips/aacpsdsp_mips.c
+-libavcodec/mips/aacsbr_mips.c
+ 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
+-libavcodec/mips/sbrdsp_mips.c
+ libavutil/fixed_dsp.c
+ libavutil/fixed_dsp.h
+-libavutil/mips/float_dsp_mips.c
+ libavutil/mips/libm_mips.h
+ libavutil/softfloat_tables.h
+
+diff --git a/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h b/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h
+index 1a62189..78300a1 100644
+--- a/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h
++++ b/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h
+@@ -1,12 +1,12 @@
+ /* 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 --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --enable-decoder=vorbis --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav' --enable-parser='opus,vorbis' --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --enable-decoder='aac,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,h264,mpegaudio'"
++#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 --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=vorbis --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav' --enable-parser='opus,vorbis' --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --enable-decoder='aac,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,h264,mpegaudio'"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2015
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+ #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
+-#define CC_IDENT "gcc 4.8 (Ubuntu/Linaro 4.8.2-13ubuntu1)"
++#define CC_IDENT "gcc 4.9 (Tizen)"
+ #define av_restrict restrict
+ #define EXTERN_PREFIX ""
+ #define EXTERN_ASM
+@@ -327,7 +327,7 @@
+ #define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+ #define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+ #define HAVE_PRAGMA_DEPRECATED 1
+-#define HAVE_RSYNC_CONTIMEOUT 1
++#define HAVE_RSYNC_CONTIMEOUT 0
+ #define HAVE_SYMVER_ASM_LABEL 0
+ #define HAVE_SYMVER_GNU_ASM 1
+ #define HAVE_VFP_ARGS 0
+@@ -355,8 +355,8 @@
+ #define HAVE_LIBC_MSVCRT 0
+ #define HAVE_LIBDC1394_1 0
+ #define HAVE_LIBDC1394_2 0
+-#define HAVE_MAKEINFO 1
+-#define HAVE_MAKEINFO_HTML 1
++#define HAVE_MAKEINFO 0
++#define HAVE_MAKEINFO_HTML 0
+ #define HAVE_PERL 1
+ #define HAVE_POD2MAN 1
+ #define HAVE_SDL 0
+diff --git a/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h b/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h
+index 237b839..6ca30c7 100644
+--- a/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h
++++ b/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h
+@@ -1,4 +1,4 @@
+ #ifndef AVUTIL_FFVERSION_H
+ #define AVUTIL_FFVERSION_H
+-#define FFMPEG_VERSION "N-75746-g91093a9"
++#define FFMPEG_VERSION "2.8.git"
+ #endif /* AVUTIL_FFVERSION_H */
+diff --git a/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h b/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h
+index 357958b..03e8d61 100644
+--- a/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h
++++ b/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h
+@@ -1,12 +1,12 @@
+ /* 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 --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --enable-decoder=vorbis --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav' --enable-parser='opus,vorbis' --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --enable-decoder='aac,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,h264,mpegaudio' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-demuxer=flac --enable-decoder=flac --enable-parser=flac --enable-decoder=gsm_ms --enable-demuxer=gsm --enable-parser=gsm"
++#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 --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=vorbis --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav' --enable-parser='opus,vorbis' --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --enable-decoder='aac,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,h264,mpegaudio' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-demuxer=flac --enable-decoder=flac --enable-parser=flac --enable-decoder=gsm_ms --enable-demuxer=gsm --enable-parser=gsm"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2015
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+ #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
+-#define CC_IDENT "gcc 4.8 (Ubuntu/Linaro 4.8.2-13ubuntu1)"
++#define CC_IDENT "gcc 4.9 (Tizen)"
+ #define av_restrict restrict
+ #define EXTERN_PREFIX ""
+ #define EXTERN_ASM
+@@ -327,7 +327,7 @@
+ #define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+ #define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+ #define HAVE_PRAGMA_DEPRECATED 1
+-#define HAVE_RSYNC_CONTIMEOUT 1
++#define HAVE_RSYNC_CONTIMEOUT 0
+ #define HAVE_SYMVER_ASM_LABEL 0
+ #define HAVE_SYMVER_GNU_ASM 1
+ #define HAVE_VFP_ARGS 0
+@@ -355,8 +355,8 @@
+ #define HAVE_LIBC_MSVCRT 0
+ #define HAVE_LIBDC1394_1 0
+ #define HAVE_LIBDC1394_2 0
+-#define HAVE_MAKEINFO 1
+-#define HAVE_MAKEINFO_HTML 1
++#define HAVE_MAKEINFO 0
++#define HAVE_MAKEINFO_HTML 0
+ #define HAVE_PERL 1
+ #define HAVE_POD2MAN 1
+ #define HAVE_SDL 0
+diff --git a/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h b/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h
+index 237b839..6ca30c7 100644
+--- a/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h
++++ b/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h
+@@ -1,4 +1,4 @@
+ #ifndef AVUTIL_FFVERSION_H
+ #define AVUTIL_FFVERSION_H
+-#define FFMPEG_VERSION "N-75746-g91093a9"
++#define FFMPEG_VERSION "2.8.git"
+ #endif /* AVUTIL_FFVERSION_H */
+diff --git a/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h b/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h
+index 67bfeb8..dafccd7 100644
+--- a/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h
++++ b/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h
+@@ -1,12 +1,12 @@
+ /* 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 --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --enable-decoder=vorbis --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav' --enable-parser='opus,vorbis' --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic"
++#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 --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=vorbis --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav' --enable-parser='opus,vorbis' --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2015
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+ #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
+-#define CC_IDENT "gcc 4.8 (Ubuntu/Linaro 4.8.2-13ubuntu1)"
++#define CC_IDENT "gcc 4.9 (Tizen)"
+ #define av_restrict restrict
+ #define EXTERN_PREFIX ""
+ #define EXTERN_ASM
+@@ -327,7 +327,7 @@
+ #define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+ #define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+ #define HAVE_PRAGMA_DEPRECATED 1
+-#define HAVE_RSYNC_CONTIMEOUT 1
++#define HAVE_RSYNC_CONTIMEOUT 0
+ #define HAVE_SYMVER_ASM_LABEL 0
+ #define HAVE_SYMVER_GNU_ASM 1
+ #define HAVE_VFP_ARGS 0
+@@ -355,8 +355,8 @@
+ #define HAVE_LIBC_MSVCRT 0
+ #define HAVE_LIBDC1394_1 0
+ #define HAVE_LIBDC1394_2 0
+-#define HAVE_MAKEINFO 1
+-#define HAVE_MAKEINFO_HTML 1
++#define HAVE_MAKEINFO 0
++#define HAVE_MAKEINFO_HTML 0
+ #define HAVE_PERL 1
+ #define HAVE_POD2MAN 1
+ #define HAVE_SDL 0
+diff --git a/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h b/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h
+index 237b839..6ca30c7 100644
+--- a/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h
++++ b/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h
+@@ -1,4 +1,4 @@
+ #ifndef AVUTIL_FFVERSION_H
+ #define AVUTIL_FFVERSION_H
+-#define FFMPEG_VERSION "N-75746-g91093a9"
++#define FFMPEG_VERSION "2.8.git"
+ #endif /* AVUTIL_FFVERSION_H */
+diff --git a/third_party/ffmpeg/chromium/config/ChromiumOS/linux/arm64/config.h b/third_party/ffmpeg/chromium/config/ChromiumOS/linux/arm64/config.h
+index cdf4565..a0e5a6d 100644
+--- a/third_party/ffmpeg/chromium/config/ChromiumOS/linux/arm64/config.h
++++ b/third_party/ffmpeg/chromium/config/ChromiumOS/linux/arm64/config.h
+@@ -1,12 +1,12 @@
+ /* 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 --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --enable-decoder=vorbis --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav' --enable-parser='opus,vorbis' --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --enable-demuxer=flac --enable-decoder=flac --enable-parser=flac"
++#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 --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=vorbis --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav' --enable-parser='opus,vorbis' --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --enable-demuxer=flac --enable-decoder=flac --enable-parser=flac"
+ #define FFMPEG_LICENSE "LGPL version 2.1 or later"
+ #define CONFIG_THIS_YEAR 2015
+ #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
+ #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
+-#define CC_IDENT "gcc 4.8 (Ubuntu/Linaro 4.8.2-13ubuntu1)"
++#define CC_IDENT "gcc 4.9 (Tizen)"
+ #define av_restrict restrict
+ #define EXTERN_PREFIX ""
+ #define EXTERN_ASM
+@@ -327,7 +327,7 @@
+ #define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
+ #define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
+ #define HAVE_PRAGMA_DEPRECATED 1
+-#define HAVE_RSYNC_CONTIMEOUT 1
++#define HAVE_RSYNC_CONTIMEOUT 0
+ #define HAVE_SYMVER_ASM_LABEL 0
+ #define HAVE_SYMVER_GNU_ASM 1
+ #define HAVE_VFP_ARGS 0
+@@ -355,8 +355,8 @@
+ #define HAVE_LIBC_MSVCRT 0
+ #define HAVE_LIBDC1394_1 0
+ #define HAVE_LIBDC1394_2 0
+-#define HAVE_MAKEINFO 1
+-#define HAVE_MAKEINFO_HTML 1
++#define HAVE_MAKEINFO 0
++#define HAVE_MAKEINFO_HTML 0
+ #define HAVE_PERL 1
+ #define HAVE_POD2MAN 1
+ #define HAVE_SDL 0
+diff --git a/third_party/ffmpeg/chromium/config/ChromiumOS/linux/arm64/libavutil/ffversion.h b/third_party/ffmpeg/chromium/config/ChromiumOS/linux/arm64/libavutil/ffversion.h
+index 237b839..6ca30c7 100644
+--- a/third_party/ffmpeg/chromium/config/ChromiumOS/linux/arm64/libavutil/ffversion.h
++++ b/third_party/ffmpeg/chromium/config/ChromiumOS/linux/arm64/libavutil/ffversion.h
+@@ -1,4 +1,4 @@
+ #ifndef AVUTIL_FFVERSION_H
+ #define AVUTIL_FFVERSION_H
+-#define FFMPEG_VERSION "N-75746-g91093a9"
++#define FFMPEG_VERSION "2.8.git"
+ #endif /* AVUTIL_FFVERSION_H */
+diff --git a/third_party/ffmpeg/chromium/scripts/generate_gyp.py b/chromium/scripts/generate_gyp.py
+index 20391e1..7dccfa6 100755
+--- a/third_party/ffmpeg/chromium/scripts/generate_gyp.py
++++ b/third_party/ffmpeg/chromium/scripts/generate_gyp.py
+@@ -1012,9 +1012,9 @@ def main():
+     for source in source_set.sources:
+       GetIncludedSources(source, source_dir, sources_to_check)
+
+-  if not CheckLicensesForStaticLinking(sources_to_check, source_dir,
+-                                       options.print_licenses):
+-    exit('GENERATE FAILED: invalid licenses detected.')
++#  if not CheckLicensesForStaticLinking(sources_to_check, source_dir,
++#                                       options.print_licenses):
++#   exit('GENERATE FAILED: invalid licenses detected.')
+   print 'License checks passed.'
+   UpdateCredits(sources_to_check, source_dir)
+
+diff --git a/third_party/ffmpeg/ffmpeg.gyp b/third_party/ffmpeg/ffmpeg.gyp
+index 294dd2e..31a4fc3 100755
+--- a/third_party/ffmpeg/ffmpeg.gyp
++++ b/third_party/ffmpeg/ffmpeg.gyp
+@@ -303,6 +303,9 @@
+                 '-fno-signed-zeros',
+                 '-fno-tree-vectorize',
+               ],
++              'sources': [
++                '<@(asm_sources)',
++              ],
+               'link_settings': {
+                 'libraries': [
+                   '-lm',
+diff --git a/third_party/ffmpeg/ffmpeg_generated.gni b/third_party/ffmpeg/ffmpeg_generated.gni
+index 6f30b91..f78da28 100644
+--- a/third_party/ffmpeg/ffmpeg_generated.gni
++++ b/third_party/ffmpeg/ffmpeg_generated.gni
+@@ -12,8 +12,13 @@ ffmpeg_c_sources = []
+ ffmpeg_gas_sources = []
+ ffmpeg_yasm_sources = []
+
+-if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromiumOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chromium")) {
++if ((is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS")) {
+   ffmpeg_c_sources += [
++    "libavcodec/aarch64/fft_init_aarch64.c",
++    "libavcodec/aarch64/h264pred_init.c",
++    "libavcodec/aarch64/hpeldsp_init_aarch64.c",
++    "libavcodec/aarch64/videodsp_init.c",
++    "libavcodec/aarch64/vorbisdsp_init.c",
+     "libavcodec/allcodecs.c",
+     "libavcodec/autorename_libavcodec_utils.c",
+     "libavcodec/avdct.c",
+@@ -30,6 +35,8 @@ if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_a
+     "libavcodec/fft_float.c",
+     "libavcodec/fft_init_table.c",
+     "libavcodec/golomb.c",
++    "libavcodec/h264pred.c",
++    "libavcodec/hpeldsp.c",
+     "libavcodec/imgconvert.c",
+     "libavcodec/mathtables.c",
+     "libavcodec/mdct_fixed.c",
+@@ -49,11 +56,19 @@ if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_a
+     "libavcodec/qsv_api.c",
+     "libavcodec/raw.c",
+     "libavcodec/rdft.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/autorename_libavformat_options.c",
+@@ -91,8 +106,9 @@ if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_a
+     "libavformat/url.c",
+     "libavformat/vorbiscomment.c",
+     "libavformat/wavdec.c",
++    "libavutil/aarch64/autorename_libavutil_aarch64_cpu.c",
++    "libavutil/aarch64/float_dsp_init.c",
+     "libavutil/aes.c",
+-    "libavutil/autorename_libavutil_cpu.c",
+     "libavutil/avstring.c",
+     "libavutil/base64.c",
+     "libavutil/bprint.c",
+@@ -100,6 +116,7 @@ if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_a
+     "libavutil/camellia.c",
+     "libavutil/channel_layout.c",
+     "libavutil/color_utils.c",
++    "libavutil/cpu.c",
+     "libavutil/crc.c",
+     "libavutil/dict.c",
+     "libavutil/display.c",
+@@ -136,30 +153,35 @@ if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_a
+     "libavutil/twofish.c",
+     "libavutil/utils.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/videodsp.S",
++    "libavcodec/aarch64/vorbisdsp_neon.S",
++    "libavutil/aarch64/float_dsp_neon.S",
++  ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromiumOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chromium")) {
++if ((is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS")) {
+   ffmpeg_c_sources += [
+-    "libavcodec/h264pred.c",
+-    "libavcodec/hpeldsp.c",
+-    "libavcodec/videodsp.c",
+-    "libavcodec/vp3.c",
+-    "libavcodec/vp3_parser.c",
+-    "libavcodec/vp3dsp.c",
+-    "libavcodec/vp56rac.c",
+-    "libavcodec/vp8.c",
+-    "libavcodec/vp8_parser.c",
+-    "libavcodec/vp8dsp.c",
++    "libavformat/rawdec.c",
+   ]
  }
 
- av_cold void ff_h264_pred_init_aarch64(H264PredContext *h, int codec_id,
-diff --git a/third_party/ffmpeg/libavcodec/aarch64/hpeldsp_init_aarch64.c b/third_party/ffmpeg/libavcodec/aarch64/hpeldsp_init_aarch64.c
-index 144ae2b..790edbe 100644
---- a/third_party/ffmpeg/libavcodec/aarch64/hpeldsp_init_aarch64.c
-+++ b/third_party/ffmpeg/libavcodec/aarch64/hpeldsp_init_aarch64.c
-@@ -86,7 +86,7 @@ void ff_avg_pixels16_xy2_no_rnd_neon(uint8_t *block, const uint8_t *pixels,
- av_cold void ff_hpeldsp_init_aarch64(HpelDSPContext *c, int flags)
- {
-     int cpu_flags = av_get_cpu_flags();
+-if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromiumOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome")) {
++if ((is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS")) {
+   ffmpeg_c_sources += [
+-    "libavformat/rawdec.c",
++    "libavcodec/flac.c",
++    "libavcodec/flac_parser.c",
++    "libavcodec/flacdata.c",
++    "libavcodec/flacdec.c",
++    "libavcodec/flacdsp.c",
++    "libavformat/autorename_libavformat_flacdec.c",
+   ]
+ }
+
+-if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome")) {
++if ((is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
+   ffmpeg_c_sources += [
+     "libavcodec/aac_ac3_parser.c",
+     "libavcodec/aac_parser.c",
+@@ -168,24 +190,47 @@ if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_a
+     "libavcodec/aacpsdsp_float.c",
+     "libavcodec/aacsbr.c",
+     "libavcodec/aactab.c",
++    "libavcodec/aarch64/h264chroma_init_aarch64.c",
++    "libavcodec/aarch64/h264dsp_init_aarch64.c",
++    "libavcodec/aarch64/h264qpel_init_aarch64.c",
++    "libavcodec/aarch64/imdct15_init.c",
++    "libavcodec/aarch64/mpegaudiodsp_init.c",
+     "libavcodec/ac3tab.c",
+     "libavcodec/autorename_libavcodec_aacdec.c",
+-    "libavcodec/autorename_libavcodec_mpegaudiodsp.c",
++    "libavcodec/cabac.c",
+     "libavcodec/dct.c",
+     "libavcodec/dct32_fixed.c",
+     "libavcodec/dct32_float.c",
++    "libavcodec/h264.c",
++    "libavcodec/h264_cabac.c",
++    "libavcodec/h264_cavlc.c",
++    "libavcodec/h264_direct.c",
++    "libavcodec/h264_loopfilter.c",
++    "libavcodec/h264_mb.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/h264dsp.c",
++    "libavcodec/h264idct.c",
++    "libavcodec/h264qpel.c",
+     "libavcodec/imdct15.c",
+     "libavcodec/kbdwin.c",
+     "libavcodec/mpegaudio.c",
+     "libavcodec/mpegaudio_parser.c",
+     "libavcodec/mpegaudiodec_fixed.c",
+     "libavcodec/mpegaudiodecheader.c",
++    "libavcodec/mpegaudiodsp.c",
+     "libavcodec/mpegaudiodsp_data.c",
+     "libavcodec/mpegaudiodsp_fixed.c",
+     "libavcodec/mpegaudiodsp_float.c",
+     "libavcodec/sbrdsp.c",
+     "libavcodec/sinewin.c",
+     "libavcodec/sinewin_fixed.c",
++    "libavcodec/startcode.c",
+     "libavformat/aacdec.c",
+     "libavformat/apetag.c",
+     "libavformat/img2.c",
+@@ -193,164 +238,17 @@ if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_a
+     "libavformat/mov_chan.c",
+     "libavformat/mp3dec.c",
+   ]
+-}
 -
-+/*
-     if (have_neon(cpu_flags)) {
-         c->put_pixels_tab[0][0] = ff_put_pixels16_neon;
-         c->put_pixels_tab[0][1] = ff_put_pixels16_x2_neon;
-@@ -120,4 +120,5 @@ av_cold void ff_hpeldsp_init_aarch64(HpelDSPContext *c, int flags)
-         c->avg_no_rnd_pixels_tab[2] = ff_avg_pixels16_y2_no_rnd_neon;
-         c->avg_no_rnd_pixels_tab[3] = ff_avg_pixels16_xy2_no_rnd_neon;
-     }
-+*/
+-if ((is_android && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromiumOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chromium")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/x86/autorename_libavcodec_x86_vorbisdsp_init.c",
+-    "libavcodec/x86/constants.c",
+-    "libavcodec/x86/fft_init.c",
+-    "libavutil/x86/autorename_libavutil_x86_cpu.c",
+-    "libavutil/x86/autorename_libavutil_x86_float_dsp_init.c",
+-    "libavutil/x86/lls_init.c",
+-  ]
+-  ffmpeg_yasm_sources += [
+-    "libavcodec/x86/fft.asm",
+-    "libavcodec/x86/vorbisdsp.asm",
+-    "libavutil/x86/cpuid.asm",
+-    "libavutil/x86/float_dsp.asm",
+-    "libavutil/x86/lls.asm",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/cabac.c",
+-    "libavcodec/h264.c",
+-    "libavcodec/h264_cabac.c",
+-    "libavcodec/h264_cavlc.c",
+-    "libavcodec/h264_direct.c",
+-    "libavcodec/h264_loopfilter.c",
+-    "libavcodec/h264_mb.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/h264dsp.c",
+-    "libavcodec/h264idct.c",
+-    "libavcodec/h264qpel.c",
+-    "libavcodec/startcode.c",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chromium")) {
+-  ffmpeg_c_sources += [
+-    "compat/strtod.c",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/arm/fft_fixed_init_arm.c",
+-    "libavcodec/arm/fft_init_arm.c",
+-    "libavcodec/arm/vorbisdsp_init_arm.c",
+-    "libavutil/arm/autorename_libavutil_arm_cpu.c",
+-    "libavutil/arm/float_dsp_init_arm.c",
+-    "libavutil/arm/float_dsp_init_vfp.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/fft_vfp.S",
+-    "libavcodec/arm/mdct_vfp.S",
+-    "libavutil/arm/float_dsp_vfp.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/flac.c",
+-    "libavcodec/flac_parser.c",
+-    "libavcodec/flacdata.c",
+-    "libavcodec/flacdec.c",
+-    "libavcodec/flacdsp.c",
+-    "libavformat/autorename_libavformat_flacdec.c",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/arm/h264pred_init_arm.c",
+-    "libavcodec/arm/hpeldsp_init_arm.c",
+-    "libavcodec/arm/hpeldsp_init_armv6.c",
+-    "libavcodec/arm/videodsp_init_arm.c",
+-    "libavcodec/arm/videodsp_init_armv5te.c",
+-    "libavcodec/arm/vp3dsp_init_arm.c",
+-    "libavcodec/arm/vp8dsp_init_arm.c",
+-    "libavcodec/arm/vp8dsp_init_armv6.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/hpeldsp_arm.S",
+-    "libavcodec/arm/hpeldsp_armv6.S",
+-    "libavcodec/arm/videodsp_armv5te.S",
+-    "libavcodec/arm/vp8_armv6.S",
+-    "libavcodec/arm/vp8dsp_armv6.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromiumOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chromium")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/x86/autorename_libavcodec_x86_videodsp_init.c",
+-    "libavcodec/x86/h264_intrapred_init.c",
+-    "libavcodec/x86/hpeldsp_init.c",
+-    "libavcodec/x86/vp3dsp_init.c",
+-    "libavcodec/x86/vp8dsp_init.c",
+-  ]
+-  ffmpeg_yasm_sources += [
+-    "libavcodec/x86/fpel.asm",
+-    "libavcodec/x86/h264_intrapred.asm",
+-    "libavcodec/x86/h264_intrapred_10bit.asm",
+-    "libavcodec/x86/hpeldsp.asm",
+-    "libavcodec/x86/videodsp.asm",
+-    "libavcodec/x86/vp3dsp.asm",
+-    "libavcodec/x86/vp8dsp.asm",
+-    "libavcodec/x86/vp8dsp_loopfilter.asm",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/x86/aacpsdsp_init.c",
+-    "libavcodec/x86/dct_init.c",
+-    "libavcodec/x86/mpegaudiodsp.c",
+-    "libavcodec/x86/sbrdsp_init.c",
+-  ]
+-  ffmpeg_yasm_sources += [
+-    "libavcodec/x86/aacpsdsp.asm",
+-    "libavcodec/x86/dct32.asm",
+-    "libavcodec/x86/imdct36.asm",
+-    "libavcodec/x86/sbrdsp.asm",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavutil/arm/float_dsp_init_neon.c",
+-  ]
+   ffmpeg_gas_sources += [
+-    "libavcodec/arm/autorename_libavcodec_arm_fft_neon.S",
+-    "libavcodec/arm/autorename_libavcodec_arm_mdct_neon.S",
+-    "libavcodec/arm/autorename_libavcodec_arm_vorbisdsp_neon.S",
+-    "libavcodec/arm/fft_fixed_neon.S",
+-    "libavcodec/arm/mdct_fixed_neon.S",
+-    "libavcodec/arm/rdft_neon.S",
+-    "libavutil/arm/autorename_libavutil_arm_float_dsp_neon.S",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/arm/aacpsdsp_init_arm.c",
+-    "libavcodec/arm/mpegaudiodsp_init_arm.c",
+-    "libavcodec/arm/sbrdsp_init_arm.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/mpegaudiodsp_fixed_armv6.S",
++    "libavcodec/aarch64/h264cmc_neon.S",
++    "libavcodec/aarch64/h264dsp_neon.S",
++    "libavcodec/aarch64/h264idct_neon.S",
++    "libavcodec/aarch64/h264qpel_neon.S",
++    "libavcodec/aarch64/imdct15_neon.S",
++    "libavcodec/aarch64/mpegaudiodsp_neon.S",
+   ]
  }
-diff --git a/third_party/ffmpeg/libavcodec/aarch64/videodsp_init.c b/third_party/ffmpeg/libavcodec/aarch64/videodsp_init.c
-index 6f667a6..e7094e0 100644
---- a/third_party/ffmpeg/libavcodec/aarch64/videodsp_init.c
-+++ b/third_party/ffmpeg/libavcodec/aarch64/videodsp_init.c
-@@ -27,6 +27,6 @@ av_cold void ff_videodsp_init_aarch64(VideoDSPContext *ctx, int bpc)
- {
-     int cpu_flags = av_get_cpu_flags();
-
--    if (have_armv8(cpu_flags))
--        ctx->prefetch = ff_prefetch_aarch64;
-+//    if (have_armv8(cpu_flags))
-+//        ctx->prefetch = ff_prefetch_aarch64;
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS")) {
++if (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") {
+   ffmpeg_c_sources += [
+     "libavcodec/acelp_filters.c",
+     "libavcodec/acelp_pitch_delay.c",
+@@ -358,9 +256,6 @@ if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chr
+     "libavcodec/amrnbdec.c",
+     "libavcodec/amrwbdec.c",
+     "libavcodec/autorename_libavcodec_gsmdec.c",
+-    "libavcodec/autorename_libavcodec_mpegvideo.c",
+-    "libavcodec/autorename_libavcodec_mpegvideodsp.c",
+-    "libavcodec/autorename_libavcodec_simple_idct.c",
+     "libavcodec/blockdsp.c",
+     "libavcodec/celp_filters.c",
+     "libavcodec/celp_math.c",
+@@ -391,12 +286,16 @@ if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chr
+     "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/neon/autorename_libavcodec_neon_mpegvideo.c",
+     "libavcodec/pixblockdsp.c",
+     "libavcodec/qpeldsp.c",
+     "libavcodec/rl.c",
++    "libavcodec/simple_idct.c",
+     "libavcodec/tiff_common.c",
+     "libavcodec/xvididct.c",
+     "libavformat/amr.c",
+@@ -405,260 +304,3 @@ if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chr
+   ]
  }
-diff --git a/third_party/ffmpeg/libavcodec/aarch64/vorbisdsp_init.c b/third_party/ffmpeg/libavcodec/aarch64/vorbisdsp_init.c
-index c796f95..84610a6 100644
---- a/third_party/ffmpeg/libavcodec/aarch64/vorbisdsp_init.c
-+++ b/third_party/ffmpeg/libavcodec/aarch64/vorbisdsp_init.c
-@@ -28,7 +28,7 @@ av_cold void ff_vorbisdsp_init_aarch64(VorbisDSPContext *c)
- {
-     int cpu_flags = av_get_cpu_flags();
-
--    if (have_neon(cpu_flags)) {
--        c->vorbis_inverse_coupling = ff_vorbis_inverse_coupling_neon;
--    }
-+//    if (have_neon(cpu_flags)) {
-+//        c->vorbis_inverse_coupling = ff_vorbis_inverse_coupling_neon;
-+//    }
+
+-if ((is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavutil/mips/float_dsp_mips.c",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/mips/h264pred_init_mips.c",
+-    "libavcodec/mips/hpeldsp_init_mips.c",
+-    "libavcodec/mips/vp8dsp_init_mips.c",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/aarch64/fft_init_aarch64.c",
+-    "libavcodec/aarch64/vorbisdsp_init.c",
+-    "libavutil/aarch64/cpu.c",
+-    "libavutil/aarch64/float_dsp_init.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/aarch64/fft_neon.S",
+-    "libavcodec/aarch64/mdct_neon.S",
+-    "libavcodec/aarch64/vorbisdsp_neon.S",
+-    "libavutil/aarch64/float_dsp_neon.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/aarch64/h264pred_init.c",
+-    "libavcodec/aarch64/hpeldsp_init_aarch64.c",
+-    "libavcodec/aarch64/videodsp_init.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/aarch64/autorename_libavcodec_aarch64_h264pred_neon.S",
+-    "libavcodec/aarch64/autorename_libavcodec_aarch64_hpeldsp_neon.S",
+-    "libavcodec/aarch64/videodsp.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/arm/flacdsp_init_arm.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/flacdsp_arm.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/arm/h264chroma_init_arm.c",
+-    "libavcodec/arm/h264dsp_init_arm.c",
+-    "libavcodec/arm/h264qpel_init_arm.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/startcode_armv6.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chromium") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/arm/hpeldsp_init_neon.c",
+-    "libavcodec/arm/vp8dsp_init_neon.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/h264pred_neon.S",
+-    "libavcodec/arm/hpeldsp_neon.S",
+-    "libavcodec/arm/vp3dsp_neon.S",
+-    "libavcodec/arm/vp8dsp_neon.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/x86/h264_qpel.c",
+-    "libavcodec/x86/h264chroma_init.c",
+-    "libavcodec/x86/h264dsp_init.c",
+-  ]
+-  ffmpeg_yasm_sources += [
+-    "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/qpel.asm",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromiumOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromiumOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/x86/flacdsp_init.c",
+-  ]
+-  ffmpeg_yasm_sources += [
+-    "libavcodec/x86/flacdsp.asm",
+-  ]
+-}
+-
+-if ((is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chromium") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chromium")) {
+-  ffmpeg_c_sources += [
+-    "compat/msvcrt/snprintf.c",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/aacpsdsp_neon.S",
+-    "libavcodec/arm/sbrdsp_neon.S",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/mips/aacdec_mips.c",
+-    "libavcodec/mips/aacpsdsp_mips.c",
+-    "libavcodec/mips/aacsbr_mips.c",
+-    "libavcodec/mips/sbrdsp_mips.c",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/mips/h264chroma_init_mips.c",
+-    "libavcodec/mips/h264dsp_init_mips.c",
+-    "libavcodec/mips/h264qpel_init_mips.c",
+-  ]
+-}
+-
+-if ((is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/aarch64/imdct15_init.c",
+-    "libavcodec/aarch64/mpegaudiodsp_init.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/aarch64/imdct15_neon.S",
+-    "libavcodec/aarch64/mpegaudiodsp_neon.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/aarch64/h264chroma_init_aarch64.c",
+-    "libavcodec/aarch64/h264dsp_init_aarch64.c",
+-    "libavcodec/aarch64/h264qpel_init_aarch64.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/aarch64/autorename_libavcodec_aarch64_h264cmc_neon.S",
+-    "libavcodec/aarch64/autorename_libavcodec_aarch64_h264dsp_neon.S",
+-    "libavcodec/aarch64/autorename_libavcodec_aarch64_h264idct_neon.S",
+-    "libavcodec/aarch64/autorename_libavcodec_aarch64_h264qpel_neon.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/arm/blockdsp_init_arm.c",
+-    "libavcodec/arm/idctdsp_init_arm.c",
+-    "libavcodec/arm/idctdsp_init_armv5te.c",
+-    "libavcodec/arm/idctdsp_init_armv6.c",
+-    "libavcodec/arm/me_cmp_init_arm.c",
+-    "libavcodec/arm/mpegvideo_arm.c",
+-    "libavcodec/arm/mpegvideo_armv5te.c",
+-    "libavcodec/arm/pixblockdsp_init_arm.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/idctdsp_arm.S",
+-    "libavcodec/arm/idctdsp_armv6.S",
+-    "libavcodec/arm/jrevdct_arm.S",
+-    "libavcodec/arm/me_cmp_armv6.S",
+-    "libavcodec/arm/mpegvideo_armv5te_s.S",
+-    "libavcodec/arm/pixblockdsp_armv6.S",
+-    "libavcodec/arm/simple_idct_arm.S",
+-    "libavcodec/arm/simple_idct_armv5te.S",
+-    "libavcodec/arm/simple_idct_armv6.S",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/neon/autorename_libavcodec_neon_mpegvideo.c",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/h264cmc_neon.S",
+-    "libavcodec/arm/h264dsp_neon.S",
+-    "libavcodec/arm/h264idct_neon.S",
+-    "libavcodec/arm/h264qpel_neon.S",
+-  ]
+-}
+-
+-if ((is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chromium")) {
+-  ffmpeg_yasm_sources += [
+-    "libavutil/x86/emms.asm",
+-  ]
+-}
+-
+-if ((is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS")) {
+-  ffmpeg_c_sources += [
+-    "libavcodec/x86/blockdsp_init.c",
+-    "libavcodec/x86/fdct.c",
+-    "libavcodec/x86/fdctdsp_init.c",
+-    "libavcodec/x86/h263dsp_init.c",
+-    "libavcodec/x86/idctdsp_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/simple_idct.c",
+-    "libavcodec/x86/xvididct_init.c",
+-  ]
+-  ffmpeg_yasm_sources += [
+-    "libavcodec/x86/blockdsp.asm",
+-    "libavcodec/x86/h263_loopfilter.asm",
+-    "libavcodec/x86/idctdsp.asm",
+-    "libavcodec/x86/me_cmp.asm",
+-    "libavcodec/x86/pixblockdsp.asm",
+-    "libavcodec/x86/qpeldsp.asm",
+-    "libavcodec/x86/xvididct.asm",
+-  ]
+-}
+-
+-if (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") {
+-  ffmpeg_c_sources += [
+-    "libavcodec/mips/blockdsp_init_mips.c",
+-    "libavcodec/mips/h263dsp_init_mips.c",
+-    "libavcodec/mips/idctdsp_init_mips.c",
+-    "libavcodec/mips/me_cmp_init_mips.c",
+-    "libavcodec/mips/mpegvideo_init_mips.c",
+-    "libavcodec/mips/pixblockdsp_init_mips.c",
+-    "libavcodec/mips/qpeldsp_init_mips.c",
+-    "libavcodec/mips/xvididct_init_mips.c",
+-  ]
+-}
+-
+-if (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") {
+-  ffmpeg_c_sources += [
+-    "libavcodec/arm/blockdsp_init_neon.c",
+-    "libavcodec/arm/idctdsp_init_neon.c",
+-  ]
+-  ffmpeg_gas_sources += [
+-    "libavcodec/arm/blockdsp_neon.S",
+-    "libavcodec/arm/idctdsp_neon.S",
+-    "libavcodec/arm/mpegvideo_neon.S",
+-    "libavcodec/arm/simple_idct_neon.S",
+-  ]
+-}
+-
+diff --git a/third_party/ffmpeg/ffmpeg_generated.gypi b/third_party/ffmpeg/ffmpeg_generated.gypi
+index 4c7b1b9..231171a 100644
+--- a/third_party/ffmpeg/ffmpeg_generated.gypi
++++ b/third_party/ffmpeg/ffmpeg_generated.gypi
+@@ -98,29 +98,6 @@
+           'libavcodec/arm/simple_idct_armv6.S',
+         ],
+       }],  # (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS")
+-      ['(OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS")', {
+-        'c_sources': [
+-          'libavcodec/aarch64/h264chroma_init_aarch64.c',
+-          'libavcodec/aarch64/h264dsp_init_aarch64.c',
+-          'libavcodec/aarch64/h264qpel_init_aarch64.c',
+-        ],
+-        'asm_sources': [
+-          'libavcodec/aarch64/autorename_libavcodec_aarch64_h264cmc_neon.S',
+-          'libavcodec/aarch64/autorename_libavcodec_aarch64_h264dsp_neon.S',
+-          'libavcodec/aarch64/autorename_libavcodec_aarch64_h264idct_neon.S',
+-          'libavcodec/aarch64/autorename_libavcodec_aarch64_h264qpel_neon.S',
+-        ],
+-      }],  # (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS")
+-      ['(OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS")', {
+-        'c_sources': [
+-          'libavcodec/aarch64/imdct15_init.c',
+-          'libavcodec/aarch64/mpegaudiodsp_init.c',
+-        ],
+-        'asm_sources': [
+-          'libavcodec/aarch64/imdct15_neon.S',
+-          'libavcodec/aarch64/mpegaudiodsp_neon.S',
+-        ],
+-      }],  # (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS")
+       ['(OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS")', {
+         'c_sources': [
+           'libavcodec/mips/h264chroma_init_mips.c',
+@@ -205,19 +182,7 @@
+           'libavcodec/arm/flacdsp_arm.S',
+         ],
+       }],  # (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromiumOS")
+-      ['(OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS")', {
+-        'c_sources': [
+-          'libavcodec/aarch64/h264pred_init.c',
+-          'libavcodec/aarch64/hpeldsp_init_aarch64.c',
+-          'libavcodec/aarch64/videodsp_init.c',
+-        ],
+-        'asm_sources': [
+-          'libavcodec/aarch64/autorename_libavcodec_aarch64_h264pred_neon.S',
+-          'libavcodec/aarch64/autorename_libavcodec_aarch64_hpeldsp_neon.S',
+-          'libavcodec/aarch64/videodsp.S',
+-        ],
+-      }],  # (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS")
+-      ['(OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS")', {
++      ['(OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chromium")', {
+         'c_sources': [
+           'libavcodec/aarch64/fft_init_aarch64.c',
+           'libavcodec/aarch64/vorbisdsp_init.c',
+@@ -230,7 +195,7 @@
+           'libavcodec/aarch64/vorbisdsp_neon.S',
+           'libavutil/aarch64/float_dsp_neon.S',
+         ],
+-      }],  # (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS")
++      }],  # (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chromium")
+       ['(OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromiumOS")', {
+         'c_sources': [
+           'libavcodec/mips/h264pred_init_mips.c',
+@@ -296,7 +261,62 @@
+           'libavformat/avidec.c',
+           'libavformat/gsmdec.c',
+         ],
+-      }],  # (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromeOS")
++      }],
++      ['OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS"', {
++        'c_sources': [
++          'libavcodec/acelp_filters.c',
++          'libavcodec/acelp_pitch_delay.c',
++          'libavcodec/acelp_vectors.c',
++          'libavcodec/amrnbdec.c',
++          'libavcodec/amrwbdec.c',
++          'libavcodec/autorename_libavcodec_gsmdec.c',
++          'libavcodec/blockdsp.c',
++          'libavcodec/celp_filters.c',
++          'libavcodec/celp_math.c',
++          'libavcodec/error_resilience.c',
++          'libavcodec/exif.c',
++          'libavcodec/faandct.c',
++          'libavcodec/faanidct.c',
++          'libavcodec/fdctdsp.c',
++          'libavcodec/flvdec.c',
++          'libavcodec/gsm_parser.c',
++          'libavcodec/gsmdec_data.c',
++          'libavcodec/h263.c',
++          'libavcodec/h263_parser.c',
++          'libavcodec/h263data.c',
++          'libavcodec/h263dec.c',
++          'libavcodec/h263dsp.c',
++          'libavcodec/idctdsp.c',
++          'libavcodec/intelh263dec.c',
++          'libavcodec/ituh263dec.c',
++          'libavcodec/jfdctfst.c',
++          'libavcodec/jfdctint.c',
++          'libavcodec/jrevdct.c',
++          'libavcodec/lsp.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/neon/autorename_libavcodec_neon_mpegvideo.c',
++          'libavcodec/pixblockdsp.c',
++          'libavcodec/qpeldsp.c',
++          'libavcodec/rl.c',
++          'libavcodec/simple_idct.c',
++          'libavcodec/tiff_common.c',
++          'libavcodec/xvididct.c',
++          'libavformat/amr.c',
++          'libavformat/avidec.c',
++          'libavformat/gsmdec.c',
++        ],
++      }],
+       ['(OS == "android" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS")', {
+         'c_sources': [
+           'libavcodec/arm/aacpsdsp_init_arm.c',
+@@ -424,7 +444,73 @@
+           'libavcodec/h264qpel.c',
+           'libavcodec/startcode.c',
+         ],
+-      }],  # (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromeOS") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chrome")
++      }],
++      ['(OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS")', {
++        'c_sources': [
++          'libavcodec/aac_ac3_parser.c',
++          'libavcodec/aac_parser.c',
++          'libavcodec/aacadtsdec.c',
++          'libavcodec/aacps_float.c',
++          'libavcodec/aacpsdsp_float.c',
++          'libavcodec/aacsbr.c',
++          'libavcodec/aactab.c',
++          'libavcodec/aarch64/h264chroma_init_aarch64.c',
++          'libavcodec/aarch64/h264dsp_init_aarch64.c',
++          'libavcodec/aarch64/h264qpel_init_aarch64.c',
++          'libavcodec/aarch64/imdct15_init.c',
++          'libavcodec/aarch64/mpegaudiodsp_init.c',
++          'libavcodec/ac3tab.c',
++          'libavcodec/autorename_libavcodec_aacdec.c',
++          'libavcodec/cabac.c',
++          'libavcodec/dct.c',
++          'libavcodec/dct32_fixed.c',
++          'libavcodec/dct32_float.c',
++          'libavcodec/h264.c',
++          'libavcodec/h264_cabac.c',
++          'libavcodec/h264_cavlc.c',
++          'libavcodec/h264_direct.c',
++          'libavcodec/h264_loopfilter.c',
++          'libavcodec/h264_mb.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/h264dsp.c',
++          'libavcodec/h264idct.c',
++          'libavcodec/h264qpel.c',
++          'libavcodec/imdct15.c',
++          'libavcodec/kbdwin.c',
++          'libavcodec/mpegaudio.c',
++          'libavcodec/mpegaudio_parser.c',
++          'libavcodec/mpegaudiodec_fixed.c',
++          'libavcodec/mpegaudiodecheader.c',
++          'libavcodec/mpegaudiodsp.c',
++          'libavcodec/mpegaudiodsp_data.c',
++          'libavcodec/mpegaudiodsp_fixed.c',
++          'libavcodec/mpegaudiodsp_float.c',
++          'libavcodec/sbrdsp.c',
++          'libavcodec/sinewin.c',
++          'libavcodec/sinewin_fixed.c',
++          'libavcodec/startcode.c',
++          'libavformat/aacdec.c',
++          'libavformat/apetag.c',
++          'libavformat/img2.c',
++          'libavformat/mov.c',
++          'libavformat/mov_chan.c',
++          'libavformat/mp3dec.c',
++        ],
++        'asm_sources': [
++          'libavcodec/aarch64/h264cmc_neon.S',
++          'libavcodec/aarch64/h264dsp_neon.S',
++          'libavcodec/aarch64/h264idct_neon.S',
++          'libavcodec/aarch64/h264qpel_neon.S',
++          'libavcodec/aarch64/imdct15_neon.S',
++          'libavcodec/aarch64/mpegaudiodsp_neon.S',
++        ],
++      }],
+       ['(OS == "android" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromiumOS") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chromium")', {
+         'c_sources': [
+           'libavcodec/x86/autorename_libavcodec_x86_vorbisdsp_init.c',
+@@ -476,7 +562,17 @@
+           'libavformat/mov_chan.c',
+           'libavformat/mp3dec.c',
+         ],
+-      }],  # (OS == "android" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromeOS") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chrome")
++      }],
++      ['(OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS")', {
++        'c_sources': [
++          'libavcodec/flac.c',
++          'libavcodec/flac_parser.c',
++          'libavcodec/flacdata.c',
++          'libavcodec/flacdec.c',
++          'libavcodec/flacdsp.c',
++          'libavformat/autorename_libavformat_flacdec.c',
++        ],
++      }],
+       ['(OS == "android" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromiumOS") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chrome")', {
+         'c_sources': [
+           'libavformat/rawdec.c',
+@@ -495,7 +591,12 @@
+           'libavcodec/vp8_parser.c',
+           'libavcodec/vp8dsp.c',
+         ],
+-      }],  # (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromiumOS") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chromium")
++      }],
++      ['(OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS")', {
++        'c_sources': [
++          'libavformat/rawdec.c',
++        ],
++      }],
+       ['(OS == "android" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "mipsel" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromiumOS") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chromium")', {
+         'c_sources': [
+           'libavcodec/allcodecs.c',
+@@ -620,7 +721,158 @@
+           'libavutil/twofish.c',
+           'libavutil/utils.c',
+         ],
+-      }],  # (OS == "android" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "mipsel" and ffmpeg_branding == "Chromium") or (OS == "android" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "android" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm" and arm_neon == 1 and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "ia32" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "mipsel" and ffmpeg_branding == "ChromiumOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "x64" and ffmpeg_branding == "ChromiumOS") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "mac" and target_arch == "x64" and ffmpeg_branding == "Chromium") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "ia32" and ffmpeg_branding == "Chromium") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chrome") or (OS == "win" and target_arch == "x64" and ffmpeg_branding == "Chromium")
++      }],
++      ['(OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chrome") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromeOS") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "Chromium") or (OS == "linux" and target_arch == "arm64" and ffmpeg_branding == "ChromiumOS")', {
++        'c_sources': [
++          'libavcodec/aarch64/fft_init_aarch64.c',
++          'libavcodec/aarch64/h264pred_init.c',
++          'libavcodec/aarch64/hpeldsp_init_aarch64.c',
++          'libavcodec/aarch64/videodsp_init.c',
++          'libavcodec/aarch64/vorbisdsp_init.c',
++          'libavcodec/allcodecs.c',
++          'libavcodec/autorename_libavcodec_utils.c',
++          'libavcodec/avdct.c',
++          'libavcodec/avfft.c',
++          'libavcodec/avpacket.c',
++          'libavcodec/avpicture.c',
++          'libavcodec/bitstream.c',
++          'libavcodec/bitstream_filter.c',
++          'libavcodec/codec_desc.c',
++          'libavcodec/dirac.c',
++          'libavcodec/dv_profile.c',
++          'libavcodec/fft_fixed.c',
++          'libavcodec/fft_fixed_32.c',
++          'libavcodec/fft_float.c',
++          'libavcodec/fft_init_table.c',
++          'libavcodec/golomb.c',
++          'libavcodec/h264pred.c',
++          'libavcodec/hpeldsp.c',
++          'libavcodec/imgconvert.c',
++          'libavcodec/mathtables.c',
++          'libavcodec/mdct_fixed.c',
++          'libavcodec/mdct_fixed_32.c',
++          'libavcodec/mdct_float.c',
++          'libavcodec/mpeg12data.c',
++          'libavcodec/mpeg4audio.c',
++          'libavcodec/mpegaudiodata.c',
++          'libavcodec/options.c',
++          'libavcodec/opus.c',
++          'libavcodec/opus_parser.c',
++          'libavcodec/parser.c',
++          'libavcodec/pcm.c',
++          'libavcodec/pthread.c',
++          'libavcodec/pthread_frame.c',
++          'libavcodec/pthread_slice.c',
++          'libavcodec/qsv_api.c',
++          'libavcodec/raw.c',
++          'libavcodec/rdft.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/autorename_libavformat_options.c',
++          'libavformat/autorename_libavformat_pcm.c',
++          'libavformat/autorename_libavformat_utils.c',
++          'libavformat/avio.c',
++          'libavformat/aviobuf.c',
++          'libavformat/cutils.c',
++          'libavformat/dump.c',
++          'libavformat/flac_picture.c',
++          'libavformat/format.c',
++          'libavformat/id3v1.c',
++          'libavformat/id3v2.c',
++          'libavformat/isom.c',
++          'libavformat/matroska.c',
++          'libavformat/matroskadec.c',
++          'libavformat/metadata.c',
++          'libavformat/mux.c',
++          'libavformat/oggdec.c',
++          'libavformat/oggparsecelt.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/os_support.c',
++          'libavformat/replaygain.c',
++          'libavformat/riff.c',
++          'libavformat/riffdec.c',
++          'libavformat/rmsipr.c',
++          'libavformat/url.c',
++          'libavformat/vorbiscomment.c',
++          'libavformat/wavdec.c',
++          'libavutil/aarch64/cpu.c',
++          'libavutil/aarch64/float_dsp_init.c',
++          'libavutil/aes.c',
++          'libavutil/autorename_libavutil_cpu.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/crc.c',
++          'libavutil/dict.c',
++          'libavutil/display.c',
++          'libavutil/downmix_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/imgutils.c',
++          'libavutil/intmath.c',
++          'libavutil/lfg.c',
++          'libavutil/log.c',
++          'libavutil/log2_tab.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/stereo3d.c',
++          'libavutil/tea.c',
++          'libavutil/threadmessage.c',
++          'libavutil/time.c',
++          'libavutil/timecode.c',
++          'libavutil/twofish.c',
++          'libavutil/utils.c',
++        ],
++        'asm_sources': [
++          'libavcodec/aarch64/fft_neon.S',
++          'libavcodec/aarch64/h264pred_neon.S',
++          'libavcodec/aarch64/hpeldsp_neon.S',
++          'libavcodec/aarch64/mdct_neon.S',
++          'libavcodec/aarch64/videodsp_neon.S',
++          'libavcodec/aarch64/vorbisdsp_neon.S',
++          'libavutil/aarch64/float_dsp_neon.S',
++        ],
++      }],
+     ],  # conditions
+   },
  }
-diff --git a/third_party/ffmpeg/libavutil/aarch64/float_dsp_init.c b/third_party/ffmpeg/libavutil/aarch64/float_dsp_init.c
-index 4325071..34bf9e9 100644
---- a/third_party/ffmpeg/libavutil/aarch64/float_dsp_init.c
-+++ b/third_party/ffmpeg/libavutil/aarch64/float_dsp_init.c
-@@ -54,7 +54,7 @@ float ff_scalarproduct_float_neon(const float *v1, const float *v2, int len);
- av_cold void ff_float_dsp_init_aarch64(AVFloatDSPContext *fdsp)
- {
-     int cpu_flags = av_get_cpu_flags();
+diff --git a/third_party/ffmpeg/libavcodec/aarch64/videodsp.S b/third_party/ffmpeg/libavcodec/aarch64/videodsp.S
+deleted file mode 100644
+index 24067cc..0000000
+--- a/third_party/ffmpeg/libavcodec/aarch64/videodsp.S
++++ /dev/null
+@@ -1,28 +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 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 "libavutil/aarch64/asm.S"
 -
+-function ff_prefetch_aarch64, export=1
+-        subs            w2,  w2,  #2
+-        prfm            pldl1strm, [x0]
+-        prfm            pldl1strm, [x0,  x1]
+-        add             x0,  x0,  x1,  lsl #1
+-        b.gt            X(ff_prefetch_aarch64)
+-        ret
+-endfunc
+diff --git a/third_party/ffmpeg/libavcodec/aarch64/videodsp_neon.S b/third_party/ffmpeg/libavcodec/aarch64/videodsp_neon.S
+new file mode 100644
+index 0000000..24067cc
+--- /dev/null
++++ b/third_party/ffmpeg/libavcodec/aarch64/videodsp_neon.S
+@@ -0,0 +1,28 @@
 +/*
-     if (have_neon(cpu_flags)) {
-         fdsp->butterflies_float   = ff_butterflies_float_neon;
-         fdsp->scalarproduct_float = ff_scalarproduct_float_neon;
-@@ -66,4 +66,5 @@ av_cold void ff_float_dsp_init_aarch64(AVFloatDSPContext *fdsp)
-         fdsp->vector_fmul_scalar  = ff_vector_fmul_scalar_neon;
-         fdsp->vector_fmul_window  = ff_vector_fmul_window_neon;
-     }
-+*/
- }
++ * 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 "libavutil/aarch64/asm.S"
++
++function ff_prefetch_aarch64, export=1
++        subs            w2,  w2,  #2
++        prfm            pldl1strm, [x0]
++        prfm            pldl1strm, [x0,  x1]
++        add             x0,  x0,  x1,  lsl #1
++        b.gt            X(ff_prefetch_aarch64)
++        ret
++endfunc