[ffmpeg] add opus support

This CL integrates third_party/opus with ffmpeg and turns on opus
decoding for x64 and arm64 builds.

TEST: Integration with fuchsia mediaplayer has tests that work with
      this change (local ffmpeg build)

Change-Id: I8f34cefc94e4376bff75997b097afc68be7c0888
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/ffmpeg/+/383497
Reviewed-by: Austin Foxley <afoxley@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 4fc264b..a7d14048 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -158,7 +158,9 @@
   cflags = []
   ldflags = []
   libs = []
-  deps = []
+  deps = [
+    "//third_party/opus",
+  ]
 
   configs += [
     ":ffmpeg_warnings",
diff --git a/README.fuchsia b/README.fuchsia
index c2c81f2..9ef4359 100644
--- a/README.fuchsia
+++ b/README.fuchsia
@@ -74,12 +74,10 @@
   # Note: upstream/master automatically tracks upstream.
 
   # Make sure your path is set up to use the right yasm and clang. yasm needs
-  # to be installed, and clang is in prebuild/third_party/clang/bin.
+  # to be installed, and clang is in prebuilt/third_party/clang/linux-x64/bin.
 
-  # Make sure the two sysroot you will need is available, namely
+  # Make sure that sysroot is available, namely
   # ../../prebuilt/third_party/sysroot/linux
-  # The x64 version will be present on x64 linux hosts. The arm64 version
-  # can be obtained using cipd install.
 
   # Create a new branch based off of master.
   git checkout origin/master -b my_new_branch
diff --git a/configure b/configure
index 85d5dd5..fd8e8cb 100755
--- a/configure
+++ b/configure
@@ -6109,14 +6109,15 @@
 enabled libopenjpeg       && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version ||
                                { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
 enabled libopenmpt        && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
-enabled libopus           && {
-    enabled libopus_decoder && {
-        require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
-    }
-    enabled libopus_encoder && {
-        require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
-    }
-}
+# Fuchsia uses a built in copy of libopus that is not visible to pkg-config.
+# enabled libopus           && {
+#     enabled libopus_decoder && {
+#         require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
+#     }
+#     enabled libopus_encoder && {
+#         require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
+#     }
+# }
 enabled libpulse          && require_pkg_config libpulse libpulse pulse/pulseaudio.h pa_context_new
 enabled librsvg           && require_pkg_config librsvg librsvg-2.0 librsvg-2.0/librsvg/rsvg.h rsvg_handle_render_cairo
 enabled librtmp           && require_pkg_config librtmp librtmp librtmp/rtmp.h RTMP_Socket
diff --git a/ffmpeg_generated.gni b/ffmpeg_generated.gni
index 78dd7d1..b2238a0 100644
--- a/ffmpeg_generated.gni
+++ b/ffmpeg_generated.gni
@@ -1,4 +1,4 @@
-# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Copyright 2020 The Fuchsia Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
@@ -50,6 +50,8 @@
   "libavcodec/hpeldsp.c",
   "libavcodec/imgconvert.c",
   "libavcodec/jni.c",
+  "libavcodec/libopus.c",
+  "libavcodec/libopusdec.c",
   "libavcodec/mathtables.c",
   "libavcodec/mdct_fixed.c",
   "libavcodec/mdct_fixed_32.c",
diff --git a/fuchsia/config/default/arm64/config.h b/fuchsia/config/default/arm64/config.h
index 2dc7048..3c62ee6 100644
--- a/fuchsia/config/default/arm64/config.h
+++ b/fuchsia/config/default/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-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cross-prefix=/usr/bin/x86_64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --disable-linux-perf --disable-error-resilience"
+#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/dalesat/fuchsia/third_party/opus/include --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cross-prefix=/usr/bin/x86_64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --disable-linux-perf --disable-error-resilience"
 #define FFMPEG_LICENSE "LGPL version 2.1 or later"
 #define CONFIG_THIS_YEAR 2018
 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
 #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
-#define CC_IDENT "Fuchsia clang version 10.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project fce11c6904c888e6d39f71e03806a540852dec41) (based on LLVM 10.0.0svn)"
+#define CC_IDENT "Fuchsia clang version 11.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project 6e00e3fcb082c3f19309ebc6f184ab326eec3328)"
 #define av_restrict restrict
 #define EXTERN_PREFIX ""
 #define EXTERN_ASM 
@@ -459,7 +459,7 @@
 #define CONFIG_LIBOPENH264 0
 #define CONFIG_LIBOPENJPEG 0
 #define CONFIG_LIBOPENMPT 0
-#define CONFIG_LIBOPUS 0
+#define CONFIG_LIBOPUS 1
 #define CONFIG_LIBPULSE 0
 #define CONFIG_LIBRSVG 0
 #define CONFIG_LIBRTMP 0
@@ -1184,7 +1184,7 @@
 #define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
 #define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
 #define CONFIG_LIBOPENJPEG_DECODER 0
-#define CONFIG_LIBOPUS_DECODER 0
+#define CONFIG_LIBOPUS_DECODER 1
 #define CONFIG_LIBRSVG_DECODER 0
 #define CONFIG_LIBSPEEX_DECODER 0
 #define CONFIG_LIBVORBIS_DECODER 0
diff --git a/fuchsia/config/default/arm64/libavcodec/codec_list.c b/fuchsia/config/default/arm64/libavcodec/codec_list.c
index da1e4e9..6c53695 100644
--- a/fuchsia/config/default/arm64/libavcodec/codec_list.c
+++ b/fuchsia/config/default/arm64/libavcodec/codec_list.c
@@ -16,4 +16,5 @@
     &ff_pcm_s24le_decoder,
     &ff_pcm_s32le_decoder,
     &ff_pcm_u8_decoder,
+    &ff_libopus_decoder,
     NULL };
diff --git a/fuchsia/config/default/arm64/libavutil/ffversion.h b/fuchsia/config/default/arm64/libavutil/ffversion.h
index b2dcb3a..4585957 100644
--- a/fuchsia/config/default/arm64/libavutil/ffversion.h
+++ b/fuchsia/config/default/arm64/libavutil/ffversion.h
@@ -1,5 +1,5 @@
 /* Automatically generated by version.sh, do not manually edit! */
 #ifndef AVUTIL_FFVERSION_H
 #define AVUTIL_FFVERSION_H
-#define FFMPEG_VERSION "N-92362-ge807a23f51"
+#define FFMPEG_VERSION "N-92369-g2e9f4ad959"
 #endif /* AVUTIL_FFVERSION_H */
diff --git a/fuchsia/config/default/x64/config.asm b/fuchsia/config/default/x64/config.asm
index 935ab8f..af8a4be 100644
--- a/fuchsia/config/default/x64/config.asm
+++ b/fuchsia/config/default/x64/config.asm
@@ -444,7 +444,7 @@
 %define CONFIG_LIBOPENH264 0
 %define CONFIG_LIBOPENJPEG 0
 %define CONFIG_LIBOPENMPT 0
-%define CONFIG_LIBOPUS 0
+%define CONFIG_LIBOPUS 1
 %define CONFIG_LIBPULSE 0
 %define CONFIG_LIBRSVG 0
 %define CONFIG_LIBRTMP 0
@@ -1169,7 +1169,7 @@
 %define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
 %define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
 %define CONFIG_LIBOPENJPEG_DECODER 0
-%define CONFIG_LIBOPUS_DECODER 0
+%define CONFIG_LIBOPUS_DECODER 1
 %define CONFIG_LIBRSVG_DECODER 0
 %define CONFIG_LIBSPEEX_DECODER 0
 %define CONFIG_LIBVORBIS_DECODER 0
diff --git a/fuchsia/config/default/x64/config.h b/fuchsia/config/default/x64/config.h
index ba2816c..51ed698 100644
--- a/fuchsia/config/default/x64/config.h
+++ b/fuchsia/config/default/x64/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-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-decoder=vp9 --enable-parser=vp9 --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-ldflags='-fuse-ld=lld' --disable-error-resilience"
+#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/dalesat/fuchsia/third_party/opus/include --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-decoder=vp9 --enable-parser=vp9 --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-ldflags='-fuse-ld=lld' --disable-error-resilience"
 #define FFMPEG_LICENSE "LGPL version 2.1 or later"
 #define CONFIG_THIS_YEAR 2018
 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
 #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
-#define CC_IDENT "Fuchsia clang version 10.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project cea8882254f97ae82867e25e736959d1cfa31896) (based on LLVM 10.0.0svn)"
+#define CC_IDENT "Fuchsia clang version 11.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project 6e00e3fcb082c3f19309ebc6f184ab326eec3328)"
 #define av_restrict restrict
 #define EXTERN_PREFIX ""
 #define EXTERN_ASM 
@@ -459,7 +459,7 @@
 #define CONFIG_LIBOPENH264 0
 #define CONFIG_LIBOPENJPEG 0
 #define CONFIG_LIBOPENMPT 0
-#define CONFIG_LIBOPUS 0
+#define CONFIG_LIBOPUS 1
 #define CONFIG_LIBPULSE 0
 #define CONFIG_LIBRSVG 0
 #define CONFIG_LIBRTMP 0
@@ -1184,7 +1184,7 @@
 #define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
 #define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
 #define CONFIG_LIBOPENJPEG_DECODER 0
-#define CONFIG_LIBOPUS_DECODER 0
+#define CONFIG_LIBOPUS_DECODER 1
 #define CONFIG_LIBRSVG_DECODER 0
 #define CONFIG_LIBSPEEX_DECODER 0
 #define CONFIG_LIBVORBIS_DECODER 0
diff --git a/fuchsia/config/default/x64/libavcodec/codec_list.c b/fuchsia/config/default/x64/libavcodec/codec_list.c
index e54e1a7..8e4d5e8 100644
--- a/fuchsia/config/default/x64/libavcodec/codec_list.c
+++ b/fuchsia/config/default/x64/libavcodec/codec_list.c
@@ -17,4 +17,5 @@
     &ff_pcm_s24le_decoder,
     &ff_pcm_s32le_decoder,
     &ff_pcm_u8_decoder,
+    &ff_libopus_decoder,
     NULL };
diff --git a/fuchsia/config/default/x64/libavutil/ffversion.h b/fuchsia/config/default/x64/libavutil/ffversion.h
index b2dcb3a..4585957 100644
--- a/fuchsia/config/default/x64/libavutil/ffversion.h
+++ b/fuchsia/config/default/x64/libavutil/ffversion.h
@@ -1,5 +1,5 @@
 /* Automatically generated by version.sh, do not manually edit! */
 #ifndef AVUTIL_FFVERSION_H
 #define AVUTIL_FFVERSION_H
-#define FFMPEG_VERSION "N-92362-ge807a23f51"
+#define FFMPEG_VERSION "N-92369-g2e9f4ad959"
 #endif /* AVUTIL_FFVERSION_H */
diff --git a/fuchsia/config/max/arm64/config.h b/fuchsia/config/max/arm64/config.h
index 85321fd..5c2c827 100644
--- a/fuchsia/config/max/arm64/config.h
+++ b/fuchsia/config/max/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-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cross-prefix=/usr/bin/x86_64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --disable-linux-perf --enable-decoder='aac,aac_latm,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,aac_latm,h264,mpegaudio' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-demuxer=gsm --enable-parser=gsm"
+#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/dalesat/fuchsia/third_party/opus/include --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cross-prefix=/usr/bin/x86_64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --disable-linux-perf --enable-decoder='aac,aac_latm,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,aac_latm,h264,mpegaudio' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-demuxer=gsm --enable-parser=gsm"
 #define FFMPEG_LICENSE "LGPL version 2.1 or later"
 #define CONFIG_THIS_YEAR 2018
 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
 #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
-#define CC_IDENT "Fuchsia clang version 10.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project fce11c6904c888e6d39f71e03806a540852dec41) (based on LLVM 10.0.0svn)"
+#define CC_IDENT "Fuchsia clang version 11.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project 6e00e3fcb082c3f19309ebc6f184ab326eec3328)"
 #define av_restrict restrict
 #define EXTERN_PREFIX ""
 #define EXTERN_ASM 
@@ -459,7 +459,7 @@
 #define CONFIG_LIBOPENH264 0
 #define CONFIG_LIBOPENJPEG 0
 #define CONFIG_LIBOPENMPT 0
-#define CONFIG_LIBOPUS 0
+#define CONFIG_LIBOPUS 1
 #define CONFIG_LIBPULSE 0
 #define CONFIG_LIBRSVG 0
 #define CONFIG_LIBRTMP 0
@@ -1184,7 +1184,7 @@
 #define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
 #define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
 #define CONFIG_LIBOPENJPEG_DECODER 0
-#define CONFIG_LIBOPUS_DECODER 0
+#define CONFIG_LIBOPUS_DECODER 1
 #define CONFIG_LIBRSVG_DECODER 0
 #define CONFIG_LIBSPEEX_DECODER 0
 #define CONFIG_LIBVORBIS_DECODER 0
diff --git a/fuchsia/config/max/arm64/libavcodec/codec_list.c b/fuchsia/config/max/arm64/libavcodec/codec_list.c
index 25a919c..2051e92 100644
--- a/fuchsia/config/max/arm64/libavcodec/codec_list.c
+++ b/fuchsia/config/max/arm64/libavcodec/codec_list.c
@@ -24,4 +24,5 @@
     &ff_pcm_s24le_decoder,
     &ff_pcm_s32le_decoder,
     &ff_pcm_u8_decoder,
+    &ff_libopus_decoder,
     NULL };
diff --git a/fuchsia/config/max/arm64/libavutil/ffversion.h b/fuchsia/config/max/arm64/libavutil/ffversion.h
index b2dcb3a..4585957 100644
--- a/fuchsia/config/max/arm64/libavutil/ffversion.h
+++ b/fuchsia/config/max/arm64/libavutil/ffversion.h
@@ -1,5 +1,5 @@
 /* Automatically generated by version.sh, do not manually edit! */
 #ifndef AVUTIL_FFVERSION_H
 #define AVUTIL_FFVERSION_H
-#define FFMPEG_VERSION "N-92362-ge807a23f51"
+#define FFMPEG_VERSION "N-92369-g2e9f4ad959"
 #endif /* AVUTIL_FFVERSION_H */
diff --git a/fuchsia/config/max/x64/config.asm b/fuchsia/config/max/x64/config.asm
index 14e0cc8..c675951 100644
--- a/fuchsia/config/max/x64/config.asm
+++ b/fuchsia/config/max/x64/config.asm
@@ -444,7 +444,7 @@
 %define CONFIG_LIBOPENH264 0
 %define CONFIG_LIBOPENJPEG 0
 %define CONFIG_LIBOPENMPT 0
-%define CONFIG_LIBOPUS 0
+%define CONFIG_LIBOPUS 1
 %define CONFIG_LIBPULSE 0
 %define CONFIG_LIBRSVG 0
 %define CONFIG_LIBRTMP 0
@@ -1169,7 +1169,7 @@
 %define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
 %define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
 %define CONFIG_LIBOPENJPEG_DECODER 0
-%define CONFIG_LIBOPUS_DECODER 0
+%define CONFIG_LIBOPUS_DECODER 1
 %define CONFIG_LIBRSVG_DECODER 0
 %define CONFIG_LIBSPEEX_DECODER 0
 %define CONFIG_LIBVORBIS_DECODER 0
diff --git a/fuchsia/config/max/x64/config.h b/fuchsia/config/max/x64/config.h
index 3000f8b..a5b5c94 100644
--- a/fuchsia/config/max/x64/config.h
+++ b/fuchsia/config/max/x64/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-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-decoder=vp9 --enable-parser=vp9 --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,aac_latm,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,aac_latm,h264,mpegaudio' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-demuxer=gsm --enable-parser=gsm"
+#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-decoder='theora,vp8,sbc,aptx' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/dalesat/fuchsia/third_party/opus/include --enable-parser='vp3,vp8' --optflags='\"-O2\"' --enable-pic --x86asmexe=yasm --enable-pic --enable-lto --cc=clang --cxx=clang++ --ld=clang --enable-decoder=vp9 --enable-parser=vp9 --sysroot=/usr/local/google/home/dalesat/fuchsia/third_party/ffmpeg/../../prebuilt/third_party/sysroot/linux --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,aac_latm,h264,mp3' --enable-demuxer='aac,mp3,mov' --enable-parser='aac,aac_latm,h264,mpegaudio' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-demuxer=gsm --enable-parser=gsm"
 #define FFMPEG_LICENSE "LGPL version 2.1 or later"
 #define CONFIG_THIS_YEAR 2018
 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
 #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
-#define CC_IDENT "Fuchsia clang version 10.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project cea8882254f97ae82867e25e736959d1cfa31896) (based on LLVM 10.0.0svn)"
+#define CC_IDENT "Fuchsia clang version 11.0.0 (https://fuchsia.googlesource.com/a/third_party/llvm-project 6e00e3fcb082c3f19309ebc6f184ab326eec3328)"
 #define av_restrict restrict
 #define EXTERN_PREFIX ""
 #define EXTERN_ASM 
@@ -459,7 +459,7 @@
 #define CONFIG_LIBOPENH264 0
 #define CONFIG_LIBOPENJPEG 0
 #define CONFIG_LIBOPENMPT 0
-#define CONFIG_LIBOPUS 0
+#define CONFIG_LIBOPUS 1
 #define CONFIG_LIBPULSE 0
 #define CONFIG_LIBRSVG 0
 #define CONFIG_LIBRTMP 0
@@ -1184,7 +1184,7 @@
 #define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
 #define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
 #define CONFIG_LIBOPENJPEG_DECODER 0
-#define CONFIG_LIBOPUS_DECODER 0
+#define CONFIG_LIBOPUS_DECODER 1
 #define CONFIG_LIBRSVG_DECODER 0
 #define CONFIG_LIBSPEEX_DECODER 0
 #define CONFIG_LIBVORBIS_DECODER 0
diff --git a/fuchsia/config/max/x64/libavcodec/codec_list.c b/fuchsia/config/max/x64/libavcodec/codec_list.c
index 86c0fd7..97fbca7 100644
--- a/fuchsia/config/max/x64/libavcodec/codec_list.c
+++ b/fuchsia/config/max/x64/libavcodec/codec_list.c
@@ -25,4 +25,5 @@
     &ff_pcm_s24le_decoder,
     &ff_pcm_s32le_decoder,
     &ff_pcm_u8_decoder,
+    &ff_libopus_decoder,
     NULL };
diff --git a/fuchsia/config/max/x64/libavutil/ffversion.h b/fuchsia/config/max/x64/libavutil/ffversion.h
index b2dcb3a..4585957 100644
--- a/fuchsia/config/max/x64/libavutil/ffversion.h
+++ b/fuchsia/config/max/x64/libavutil/ffversion.h
@@ -1,5 +1,5 @@
 /* Automatically generated by version.sh, do not manually edit! */
 #ifndef AVUTIL_FFVERSION_H
 #define AVUTIL_FFVERSION_H
-#define FFMPEG_VERSION "N-92362-ge807a23f51"
+#define FFMPEG_VERSION "N-92369-g2e9f4ad959"
 #endif /* AVUTIL_FFVERSION_H */
diff --git a/fuchsia/scripts/build_ffmpeg.py b/fuchsia/scripts/build_ffmpeg.py
index 29a9830..145f3f9 100755
--- a/fuchsia/scripts/build_ffmpeg.py
+++ b/fuchsia/scripts/build_ffmpeg.py
@@ -19,6 +19,7 @@
 
 SCRIPTS_DIR = os.path.abspath(os.path.dirname(__file__))
 FFMPEG_DIR = os.path.abspath(os.path.join(SCRIPTS_DIR, '..', '..'))
+FUCHSIA_DIR = os.path.abspath(os.path.join(FFMPEG_DIR, '..', '..'))
 
 
 # These profiles select different levels of format support. The 'default'
@@ -143,7 +144,7 @@
       '--enable-fft',
       '--enable-rdft',
       '--enable-static',
-
+      '--enable-libopus',
       # Disable features.
       '--disable-debug',
       '--disable-bzlib',
@@ -166,12 +167,15 @@
       '--disable-autodetect',
 
       # Common codecs.
-      '--enable-decoder=vorbis,flac',
+      '--enable-decoder=vorbis,libopus,flac',
       '--enable-decoder=pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3',
       '--enable-decoder=pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw',
       '--enable-decoder=theora,vp8,sbc,aptx',
       '--enable-demuxer=ogg,matroska,wav,flac,mp3,mov',
       '--enable-parser=opus,vorbis,flac,mpegaudio',
+      # Setup include path so Fuchsia's libopus can be used.
+      '--extra-cflags=-I' + os.path.join(FUCHSIA_DIR,
+                                         'third_party/opus/include'),
       '--enable-parser=vp3,vp8',
 
       '--optflags="-O2"',