summaryrefslogtreecommitdiff
path: root/chromium/third_party/ffmpeg
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-15 10:20:33 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-15 10:28:57 +0000
commitd17ea114e5ef69ad5d5d7413280a13e6428098aa (patch)
tree2c01a75df69f30d27b1432467cfe7c1467a498da /chromium/third_party/ffmpeg
parent8c5c43c7b138c9b4b0bf56d946e61d3bbc111bec (diff)
downloadqtwebengine-chromium-d17ea114e5ef69ad5d5d7413280a13e6428098aa.tar.gz
BASELINE: Update Chromium to 67.0.3396.47
Change-Id: Idcb1341782e417561a2473eeecc82642dafda5b7 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'chromium/third_party/ffmpeg')
-rwxr-xr-xchromium/third_party/ffmpeg/BUILD.gn8
-rw-r--r--chromium/third_party/ffmpeg/CREDITS.chromium108
-rw-r--r--chromium/third_party/ffmpeg/Changelog15
-rw-r--r--chromium/third_party/ffmpeg/MAINTAINERS7
-rw-r--r--chromium/third_party/ffmpeg/Makefile5
-rw-r--r--chromium/third_party/ffmpeg/OWNERS10
-rw-r--r--chromium/third_party/ffmpeg/README.chromium2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavcodec/codec_list.c16
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavcodec/parser_list.c7
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/codec_list.c16
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/parser_list.c7
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavcodec/codec_list.c16
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavcodec/parser_list.c7
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavcodec/codec_list.c16
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavcodec/parser_list.c7
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavcodec/codec_list.c16
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavcodec/parser_list.c7
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavcodec/codec_list.c16
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavcodec/parser_list.c7
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavcodec/codec_list.c20
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavcodec/parser_list.c10
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavformat/demuxer_list.c9
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavcodec/codec_list.c25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavcodec/parser_list.c13
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavformat/demuxer_list.c11
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavcodec/codec_list.c25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavcodec/parser_list.c13
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavformat/demuxer_list.c11
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavcodec/codec_list.c25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavcodec/parser_list.c13
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavformat/demuxer_list.c11
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavcodec/codec_list.c25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavcodec/parser_list.c13
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavformat/demuxer_list.c11
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavcodec/codec_list.c25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavcodec/parser_list.c13
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavformat/demuxer_list.c11
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavcodec/codec_list.c25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavcodec/parser_list.c13
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavformat/demuxer_list.c11
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavcodec/codec_list.c25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavcodec/parser_list.c13
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavformat/demuxer_list.c11
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavcodec/codec_list.c25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavcodec/parser_list.c13
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavformat/demuxer_list.c11
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavcodec/codec_list.c15
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavcodec/parser_list.c6
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavcodec/codec_list.c15
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavcodec/parser_list.c6
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavcodec/codec_list.c15
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavcodec/parser_list.c6
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavcodec/codec_list.c15
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavcodec/parser_list.c6
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavcodec/codec_list.c15
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavcodec/parser_list.c6
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavcodec/codec_list.c15
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavcodec/parser_list.c6
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/config.h29
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h31
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavutil/ffversion.h2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavformat/muxer_list.c2
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm25
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h27
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavcodec/codec_list.c18
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavcodec/parser_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavformat/demuxer_list.c8
-rw-r--r--chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavformat/muxer_list.c2
-rwxr-xr-xchromium/third_party/ffmpeg/chromium/ffmpeg.sigs2
-rw-r--r--chromium/third_party/ffmpeg/chromium/patches/README28
-rwxr-xr-xchromium/third_party/ffmpeg/chromium/scripts/build_ffmpeg.py8
-rwxr-xr-xchromium/third_party/ffmpeg/chromium/scripts/copy_config.sh2
-rwxr-xr-xchromium/third_party/ffmpeg/chromium/scripts/generate_gn.py4
-rw-r--r--chromium/third_party/ffmpeg/compat/cuda/dynlink_cuda.h98
-rw-r--r--chromium/third_party/ffmpeg/compat/cuda/dynlink_cuviddec.h886
-rw-r--r--chromium/third_party/ffmpeg/compat/cuda/dynlink_loader.h273
-rw-r--r--chromium/third_party/ffmpeg/compat/cuda/dynlink_nvcuvid.h356
-rw-r--r--chromium/third_party/ffmpeg/compat/nvenc/nvEncodeAPI.h3324
-rwxr-xr-xchromium/third_party/ffmpeg/configure167
-rw-r--r--chromium/third_party/ffmpeg/doc/APIchanges62
-rw-r--r--chromium/third_party/ffmpeg/doc/bitstream_filters.texi14
-rw-r--r--chromium/third_party/ffmpeg/doc/codecs.texi8
-rw-r--r--chromium/third_party/ffmpeg/doc/encoders.texi10
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/Makefile1
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/avio_dir_cmd.c2
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/avio_reading.c3
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/decode_audio.c3
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/decode_video.c2
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/demuxing_decoding.c3
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/encode_audio.c3
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/encode_video.c2
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/extract_mvs.c2
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/filtering_audio.c1
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/filtering_video.c1
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/http_multiclient.c1
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/hw_decode.c2
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/metadata.c1
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/muxing.c3
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/qsvdec.c2
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/remuxing.c2
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/transcode_aac.c9
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/transcoding.c1
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/vaapi_encode.c2
-rw-r--r--chromium/third_party/ffmpeg/doc/examples/vaapi_transcode.c304
-rw-r--r--chromium/third_party/ffmpeg/doc/ffmpeg.texi13
-rw-r--r--chromium/third_party/ffmpeg/doc/filters.texi84
-rw-r--r--chromium/third_party/ffmpeg/doc/general.texi30
-rw-r--r--chromium/third_party/ffmpeg/doc/indevs.texi40
-rw-r--r--chromium/third_party/ffmpeg/doc/muxers.texi40
-rw-r--r--chromium/third_party/ffmpeg/doc/protocols.texi3
-rw-r--r--chromium/third_party/ffmpeg/ffmpeg_options.gni25
-rw-r--r--chromium/third_party/ffmpeg/fftools/cmdutils.c2
-rw-r--r--chromium/third_party/ffmpeg/fftools/ffmpeg.c98
-rw-r--r--chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c10
-rw-r--r--chromium/third_party/ffmpeg/fftools/ffplay.c6
-rw-r--r--chromium/third_party/ffmpeg/fftools/ffprobe.c8
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/Makefile17
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/aacdec.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/aacdec_template.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/aacsbr_fixed.c9
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/aarch64/sbrdsp_neon.S2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/allcodecs.c1472
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/aptx.c419
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/arm/Makefile3
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_armv6.S245
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_init_arm.c105
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_neon.S714
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/avcodec.h65
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/avpacket.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/bintext.c7
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/bitstream_filter.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/bitstream_filters.c29
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cavsdec.c5
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs.c179
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs.h51
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs_h264.h33
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs_h2645.c470
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs_h264_syntax_template.c48
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs_h265.h2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs_internal.h9
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.c96
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.h5
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2_syntax_template.c5
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/chomp_bsf.c12
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/codec2utils.c80
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/codec2utils.h82
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/codec_desc.c1076
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/dca_core_bsf.c14
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/decode.c29
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/dirac_dwt.h4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c10
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/diracdec.c8
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/dxtory.c16
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/dxva2.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/exr.c98
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c27
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/ffv1dec.c32
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/ffv1dec_template.c9
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/ffv1enc.c39
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/ffv1enc_template.c16
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/g2meet.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/get_bits.h1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/h264_metadata_bsf.c116
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/h264_parse.c11
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/h264_parser.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/h264_slice.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/h264dec.c3
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/h265_metadata_bsf.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/hevc_cabac.c11
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/hevc_parser.c21
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/hevc_ps.c5
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/hevcdec.c17
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/huffyuvdec.c3
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/hwaccels.h2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/indeo5.c1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/internal.h6
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c18
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/jpeg2000dwt.c8
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/libcodec2.c213
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/libopusdec.c39
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/libopusenc.c14
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/librsvgdec.c6
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.c15
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.h5
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/me_cmp.c50
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/me_cmp.h4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mediacodec.c6
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mediacodec_wrapper.c46
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mediacodecdec.c291
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c163
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h21
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mjpegdec.c95
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mjpegdec.h13
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mlp_parser.c94
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/movsub_bsf.c28
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpeg12dec.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpeg12enc.c12
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpeg2_metadata_bsf.c3
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c13
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpegvideo.h7
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpegvideo_enc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpegvideo_motion.c30
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpegvideo_parser.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/mpegvideoencdsp.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/msmpeg4dec.c3
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/nuv.c14
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/nvdec.c1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/nvdec_mjpeg.c86
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/nvenc.c68
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/nvenc.h4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/options_table.h2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/pafvideo.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/parser.c85
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/profiles.c5
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/profiles.h1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/pthread_frame.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/qdmc.c7
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/qsv.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/qsvdec.c3
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/qsvdec_h2645.c6
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/qsvenc.c48
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/qsvenc.h2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/qsvenc_h264.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/remove_extradata_bsf.c18
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/rscc.c6
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbc.c271
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbc.h118
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbc_parser.c122
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbcdec.c379
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbcdec_data.c127
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbcdec_data.h44
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbcdsp.c387
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbcdsp.h86
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbcdsp_data.c329
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbcdsp_data.h55
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/sbcenc.c361
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/scpr.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/smc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/smvjpegdec.c1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/snowenc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/thread.h1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/trace_headers_bsf.c32
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/truemotion2rt.c3
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/utils.c112
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/utvideodec.c27
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/utvideoenc.c20
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/v4l2_context.c4
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vaapi_decode.c154
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vaapi_decode.h2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vaapi_encode.c22
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h264.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h265.c23
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vaapi_encode_mpeg2.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vaapi_mjpeg.c159
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c165
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vc1.c95
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vc1.h6
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vc2enc.c140
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/version.h5
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/videotoolbox.c68
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vorbisdec.c1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vp3.c7
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vp8.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/vt_internal.h1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/wavpack.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/wmalosslessdec.c1
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/wmaprodec.c2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/wmavoice.c7
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/x86/Makefile2
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/x86/h264_idct.asm6
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp.asm43
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp_init.c7
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/x86/sbcdsp.asm168
-rw-r--r--chromium/third_party/ffmpeg/libavcodec/x86/sbcdsp_init.c51
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/Makefile1
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/alldevices.c182
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/alsa.c4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/android_camera.c871
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/avdevice.c46
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/avdevice.h28
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/avfoundation.m2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/bktr.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/caca.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp29
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/decklink_enc.cpp4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/dshow.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/fbdev_dec.c4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/fbdev_enc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/gdigrab.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/iec61883.c8
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/jack.c6
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/lavfi.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/libcdio.c6
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/libndi_newtek_dec.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/libndi_newtek_enc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/openal-dec.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/opengl_enc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/oss_dec.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/oss_enc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/pulse_audio_dec.c4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/pulse_audio_enc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/sdl2.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/sndio_dec.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/sndio_enc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/v4l2.c16
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/v4l2enc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/version.h8
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/vfwcap.c4
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/xcbgrab.c8
-rw-r--r--chromium/third_party/ffmpeg/libavdevice/xv.c2
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/Makefile2
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/af_alimiter.c5
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/af_drmeter.c233
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/af_join.c3
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/af_loudnorm.c5
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/allfilters.c1
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/avf_avectorscope.c2
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/avf_concat.c14
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/avfilter.c23
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/avfilter.h16
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/drawutils.c2
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/framerate.h74
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/internal.h16
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.c40
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.h3
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/version.h4
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_crop.c1
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_deinterlace_vaapi.c2
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c1
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_fps.c362
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_framerate.c192
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_hwmap.c7
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_hwupload.c3
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_misc_vaapi.c70
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_overlay.c1
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_procamp_vaapi.c77
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_scale_qsv.c26
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_scale_vaapi.c2
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_transpose.c58
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/vf_vaguedenoiser.c4
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/x86/Makefile2
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/x86/vf_blend.asm298
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/x86/vf_blend_init.c147
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/x86/vf_framerate.asm134
-rw-r--r--chromium/third_party/ffmpeg/libavfilter/x86/vf_framerate_init.c42
-rw-r--r--chromium/third_party/ffmpeg/libavformat/Makefile16
-rw-r--r--chromium/third_party/ffmpeg/libavformat/aacdec.c45
-rw-r--r--chromium/third_party/ffmpeg/libavformat/allformats.c913
-rw-r--r--chromium/third_party/ffmpeg/libavformat/aptxdec.c58
-rw-r--r--chromium/third_party/ffmpeg/libavformat/avformat.h57
-rw-r--r--chromium/third_party/ffmpeg/libavformat/avidec.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/aviobuf.c50
-rw-r--r--chromium/third_party/ffmpeg/libavformat/bintext.c49
-rw-r--r--chromium/third_party/ffmpeg/libavformat/codec2.c285
-rw-r--r--chromium/third_party/ffmpeg/libavformat/concatdec.c23
-rw-r--r--chromium/third_party/ffmpeg/libavformat/dashdec.c28
-rw-r--r--chromium/third_party/ffmpeg/libavformat/dashenc.c138
-rw-r--r--chromium/third_party/ffmpeg/libavformat/dump.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/fifo.c8
-rw-r--r--chromium/third_party/ffmpeg/libavformat/fifo_test.c152
-rw-r--r--chromium/third_party/ffmpeg/libavformat/flvdec.c6
-rw-r--r--chromium/third_party/ffmpeg/libavformat/flvenc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/format.c85
-rw-r--r--chromium/third_party/ffmpeg/libavformat/gxfenc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/hdsenc.c24
-rw-r--r--chromium/third_party/ffmpeg/libavformat/hevc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/hls.c42
-rw-r--r--chromium/third_party/ffmpeg/libavformat/hlsenc.c426
-rw-r--r--chromium/third_party/ffmpeg/libavformat/hlsplaylist.c5
-rw-r--r--chromium/third_party/ffmpeg/libavformat/hlsplaylist.h2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/http.c8
-rw-r--r--chromium/third_party/ffmpeg/libavformat/id3v2.c74
-rw-r--r--chromium/third_party/ffmpeg/libavformat/id3v2.h15
-rw-r--r--chromium/third_party/ffmpeg/libavformat/id3v2enc.c60
-rw-r--r--chromium/third_party/ffmpeg/libavformat/img2dec.c10
-rw-r--r--chromium/third_party/ffmpeg/libavformat/img2enc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/internal.h42
-rw-r--r--chromium/third_party/ffmpeg/libavformat/isom.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/isom.h1
-rw-r--r--chromium/third_party/ffmpeg/libavformat/matroskadec.c16
-rw-r--r--chromium/third_party/ffmpeg/libavformat/matroskaenc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mlvdec.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mov.c84
-rw-r--r--chromium/third_party/ffmpeg/libavformat/movenc.c25
-rw-r--r--chromium/third_party/ffmpeg/libavformat/movenc.h1
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mpeg.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mpegenc.c40
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mpegts.c40
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mpegtsenc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mux.c21
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mxfdec.c290
-rw-r--r--chromium/third_party/ffmpeg/libavformat/mxg.c17
-rw-r--r--chromium/third_party/ffmpeg/libavformat/oggdec.c5
-rw-r--r--chromium/third_party/ffmpeg/libavformat/oggparsedaala.c6
-rw-r--r--chromium/third_party/ffmpeg/libavformat/oggparseflac.c1
-rw-r--r--chromium/third_party/ffmpeg/libavformat/oggparseogm.c5
-rw-r--r--chromium/third_party/ffmpeg/libavformat/oggparsetheora.c6
-rw-r--r--chromium/third_party/ffmpeg/libavformat/oggparsevorbis.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/options.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rawenc.c39
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rdt.c11
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rdt.h7
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtmpproto.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec.c144
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec.h31
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_ac3.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_amr.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_asf.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_dv.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_formats.h84
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_g726.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_h261.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_h263.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_h263_rfc2190.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_h264.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_hevc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_ilbc.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_jpeg.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_latm.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_mpa_robust.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg12.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg4.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_mpegts.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_qcelp.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_qdm2.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_rfc4175.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_svq3.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_vc2hq.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_vp8.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_vp9.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtpdec_xiph.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtsp.c38
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtsp.h2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtspdec.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/rtspenc.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/sapdec.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/sapenc.c10
-rw-r--r--chromium/third_party/ffmpeg/libavformat/sbcdec.c33
-rw-r--r--chromium/third_party/ffmpeg/libavformat/sdp.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/segment.c40
-rw-r--r--chromium/third_party/ffmpeg/libavformat/smoothstreamingenc.c12
-rw-r--r--chromium/third_party/ffmpeg/libavformat/tee.c4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/tls.h4
-rw-r--r--chromium/third_party/ffmpeg/libavformat/tls_libtls.c2
-rw-r--r--chromium/third_party/ffmpeg/libavformat/utils.c60
-rw-r--r--chromium/third_party/ffmpeg/libavformat/version.h11
-rw-r--r--chromium/third_party/ffmpeg/libavformat/webm_chunk.c10
-rw-r--r--chromium/third_party/ffmpeg/libavutil/aarch64/cpu.h1
-rw-r--r--chromium/third_party/ffmpeg/libavutil/aes_ctr.c6
-rw-r--r--chromium/third_party/ffmpeg/libavutil/aes_ctr.h7
-rw-r--r--chromium/third_party/ffmpeg/libavutil/arm/cpu.h1
-rw-r--r--chromium/third_party/ffmpeg/libavutil/common.h4
-rw-r--r--chromium/third_party/ffmpeg/libavutil/cpu_internal.h2
-rw-r--r--chromium/third_party/ffmpeg/libavutil/crc.c26
-rw-r--r--chromium/third_party/ffmpeg/libavutil/crc.h1
-rw-r--r--chromium/third_party/ffmpeg/libavutil/frame.c32
-rw-r--r--chromium/third_party/ffmpeg/libavutil/frame.h16
-rw-r--r--chromium/third_party/ffmpeg/libavutil/hash.c4
-rw-r--r--chromium/third_party/ffmpeg/libavutil/hash.h6
-rw-r--r--chromium/third_party/ffmpeg/libavutil/hwcontext.c4
-rw-r--r--chromium/third_party/ffmpeg/libavutil/hwcontext_qsv.c1
-rw-r--r--chromium/third_party/ffmpeg/libavutil/hwcontext_vaapi.c7
-rw-r--r--chromium/third_party/ffmpeg/libavutil/intreadwrite.h2
-rw-r--r--chromium/third_party/ffmpeg/libavutil/murmur3.c4
-rw-r--r--chromium/third_party/ffmpeg/libavutil/murmur3.h6
-rw-r--r--chromium/third_party/ffmpeg/libavutil/opt.h18
-rw-r--r--chromium/third_party/ffmpeg/libavutil/parseutils.c14
-rw-r--r--chromium/third_party/ffmpeg/libavutil/ppc/cpu.h1
-rw-r--r--chromium/third_party/ffmpeg/libavutil/ripemd.c4
-rw-r--r--chromium/third_party/ffmpeg/libavutil/ripemd.h4
-rw-r--r--chromium/third_party/ffmpeg/libavutil/timecode.c2
-rw-r--r--chromium/third_party/ffmpeg/libavutil/version.h2
-rw-r--r--chromium/third_party/ffmpeg/libavutil/x86/cpu.h1
-rw-r--r--chromium/third_party/ffmpeg/libswresample/rematrix.c6
-rw-r--r--chromium/third_party/ffmpeg/libswscale/output.c31
-rw-r--r--chromium/third_party/ffmpeg/libswscale/swscale_internal.h11
-rw-r--r--chromium/third_party/ffmpeg/libswscale/swscale_unscaled.c42
-rw-r--r--chromium/third_party/ffmpeg/libswscale/utils.c4
-rw-r--r--chromium/third_party/ffmpeg/libswscale/version.h2
-rw-r--r--chromium/third_party/ffmpeg/tools/uncoded_frame.c2
682 files changed, 17882 insertions, 9773 deletions
diff --git a/chromium/third_party/ffmpeg/BUILD.gn b/chromium/third_party/ffmpeg/BUILD.gn
index ff091116342..5439b396935 100755
--- a/chromium/third_party/ffmpeg/BUILD.gn
+++ b/chromium/third_party/ffmpeg/BUILD.gn
@@ -225,14 +225,14 @@ target(link_target_type, "ffmpeg_internal") {
}
if (ffmpeg_use_atomics_fallback) {
- if (is_posix) {
+ if (is_posix || is_fuchsia) {
include_dirs += [ "compat/atomics/gcc" ]
} else if (is_win) {
include_dirs += [ "compat/atomics/win32" ]
}
}
- if (is_posix) {
+ if (is_posix || is_fuchsia) {
# Remove default stack frames config so we can force -fomit-frame-pointer.
configs -= [ "//build/config/compiler:default_stack_frames" ]
@@ -270,7 +270,7 @@ target(link_target_type, "ffmpeg_internal") {
}
}
- if (is_posix && !is_mac) {
+ if (is_fuchsia || (is_posix && !is_mac)) {
defines += [
"_ISOC99_SOURCE",
"_LARGEFILE_SOURCE",
@@ -393,7 +393,7 @@ if (is_component_ffmpeg) {
# So we can append below and assume they're defined.
ldflags = []
- if (is_posix && !is_mac) {
+ if (is_fuchsia || (is_posix && !is_mac)) {
# Fixes warnings PIC relocation when building as component.
ldflags += [
"-Wl,-Bsymbolic",
diff --git a/chromium/third_party/ffmpeg/CREDITS.chromium b/chromium/third_party/ffmpeg/CREDITS.chromium
index 6a9cd5fcd79..3aeb90e06c3 100644
--- a/chromium/third_party/ffmpeg/CREDITS.chromium
+++ b/chromium/third_party/ffmpeg/CREDITS.chromium
@@ -428,55 +428,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
********************************************************************************
-libavformat/oggparsetheora.c
-
-Copyright (C) 2005 Matthieu CASTET, Alex Beregszaszi
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use, copy,
-modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
-********************************************************************************
-
-libswresample/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/mips/acelp_filters_mips.c
+libavcodec/mips/mpegaudiodsp_mips_float.c
Copyright (c) 2012
MIPS Technologies, Inc., California.
@@ -505,9 +457,9 @@ 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.
-Author: Nedeljko Babic (nbabic@mips.com)
+Author: Bojan Zivkovic (bojan@mips.com)
-various filters for ACELP-based codecs optimized for MIPS
+MPEG Audio decoder optimized for MIPS floating-point architecture
This file is part of FFmpeg.
@@ -527,7 +479,29 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
********************************************************************************
-libavcodec/mips/mpegaudiodsp_mips_float.c
+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/mips/acelp_filters_mips.c
Copyright (c) 2012
MIPS Technologies, Inc., California.
@@ -556,9 +530,9 @@ 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.
-Author: Bojan Zivkovic (bojan@mips.com)
+Author: Nedeljko Babic (nbabic@mips.com)
-MPEG Audio decoder optimized for MIPS floating-point architecture
+various filters for ACELP-based codecs optimized for MIPS
This file is part of FFmpeg.
@@ -578,6 +552,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
********************************************************************************
+libavformat/oggparsetheora.c
+
+Copyright (C) 2005 Matthieu CASTET, Alex Beregszaszi
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
libavcodec/mips/acelp_vectors_mips.c
Copyright (c) 2012
diff --git a/chromium/third_party/ffmpeg/Changelog b/chromium/third_party/ffmpeg/Changelog
index 7a73447a6b5..c1b9df46bc7 100644
--- a/chromium/third_party/ffmpeg/Changelog
+++ b/chromium/third_party/ffmpeg/Changelog
@@ -11,9 +11,9 @@ version <next>:
- TiVo ty/ty+ demuxer
- Intel QSV-accelerated MJPEG encoding
- PCE support for extended channel layouts in the AAC encoder
-- native aptX encoder and decoder
-- Raw aptX muxer and demuxer
-- NVIDIA NVDEC-accelerated H.264, HEVC, MPEG-1/2/4, VC1, VP8/9 hwaccel decoding
+- native aptX and aptX HD encoder and decoder
+- Raw aptX and aptX HD muxer and demuxer
+- NVIDIA NVDEC-accelerated H.264, HEVC, MJPEG, MPEG-1/2/4, VC1, VP8/9 hwaccel decoding
- Intel QSV-accelerated overlay filter
- mcompand audio filter
- acontrast audio filter
@@ -21,7 +21,7 @@ version <next>:
- video mix filter
- video normalize filter
- audio lv2 wrapper filter
-- VAAPI VP8 decoding
+- VAAPI MJPEG and VP8 decoding
- AMD AMF H.264 and HEVC encoders
- video fillborders filter
- video setrange filter
@@ -39,6 +39,13 @@ version <next>:
- Removed the ffmenc and ffmdec muxer and demuxer
- VideoToolbox HEVC encoder and hwaccel
- VAAPI-accelerated ProcAmp (color balance), denoise and sharpness filters
+- Add android_camera indev
+- codec2 en/decoding via libcodec2
+- muxer/demuxer for raw codec2 files and .c2 files
+- Moved nvidia codec headers into an external repository.
+ They can be found at http://git.videolan.org/?p=ffmpeg/nv-codec-headers.git
+- native SBC encoder and decoder
+- drmeter audio filter
version 3.4:
diff --git a/chromium/third_party/ffmpeg/MAINTAINERS b/chromium/third_party/ffmpeg/MAINTAINERS
index d0de26c4f70..3c54ad6781f 100644
--- a/chromium/third_party/ffmpeg/MAINTAINERS
+++ b/chromium/third_party/ffmpeg/MAINTAINERS
@@ -139,6 +139,7 @@ Codecs:
aacenc*, aaccoder.c Rostislav Pehlivanov
alacenc.c Jaikrishnan Menon
alsdec.c Thilo Borgmann, Umair Khan
+ aptx.c Aurelien Jacobs
ass* Aurelien Jacobs
asv* Michael Niedermayer
atrac3plus* Maxim Poliakovski
@@ -187,6 +188,7 @@ Codecs:
jvdec.c Peter Ross
lcl*.c Roberto Togni, Reimar Doeffinger
libcelt_dec.c Nicolas George
+ libcodec2.c Tomas Härdin
libdirac* David Conrad
libgsm.c Michel Bardiaux
libkvazaar.c Arttu Ylä-Outinen
@@ -266,7 +268,7 @@ Hardware acceleration:
crystalhd.c Philip Langdale
dxva2* Hendrik Leppkes, Laurent Aimar, Steve Lhomme
d3d11va* Steve Lhomme
- mediacodec* Matthieu Bouron
+ mediacodec* Matthieu Bouron, Aman Gupta
vaapi* Gwenole Beauchesne
vaapi_encode* Mark Thompson
vdpau* Philip Langdale, Carl Eugen Hoyos
@@ -280,6 +282,7 @@ libavdevice
avfoundation.m Thilo Borgmann
+ android_camera.c Felix Matouschek
decklink* Marton Balint
dshow.c Roger Pack (CC rogerdpack@gmail.com)
fbdev_enc.c Lukasz Marek
@@ -393,8 +396,10 @@ Muxers/Demuxers:
brstm.c Paul B Mahol
caf* Peter Ross
cdxl.c Paul B Mahol
+ codec2.c Tomas Härdin
crc.c Michael Niedermayer
dashdec.c Steven Liu
+ dashenc.c Karthick Jeyapal
daud.c Reimar Doeffinger
dss.c Oleksij Rempel
dtsdec.c foo86
diff --git a/chromium/third_party/ffmpeg/Makefile b/chromium/third_party/ffmpeg/Makefile
index 9defddebfda..bb93b69f891 100644
--- a/chromium/third_party/ffmpeg/Makefile
+++ b/chromium/third_party/ffmpeg/Makefile
@@ -142,7 +142,10 @@ distclean:: clean
$(RM) .version avversion.h config.asm config.h mapfile \
ffbuild/.config ffbuild/config.* libavutil/avconfig.h \
version.h libavutil/ffversion.h libavcodec/codec_names.h \
- libavcodec/bsf_list.c libavformat/protocol_list.c
+ libavcodec/bsf_list.c libavformat/protocol_list.c \
+ libavcodec/codec_list.c libavcodec/parser_list.c \
+ libavformat/muxer_list.c libavformat/demuxer_list.c \
+ libavdevice/indev_list.c libavdevice/outdev_list.c
ifeq ($(SRC_LINK),src)
$(RM) src
endif
diff --git a/chromium/third_party/ffmpeg/OWNERS b/chromium/third_party/ffmpeg/OWNERS
index e4d3f676fcf..d05744dee7f 100644
--- a/chromium/third_party/ffmpeg/OWNERS
+++ b/chromium/third_party/ffmpeg/OWNERS
@@ -1,2 +1,10 @@
# COMPONENT: Internals>Media>FFmpeg
-file://../../media/OWNERS
+chcunningham@chromium.org
+dalecurtis@chromium.org
+hubbe@chromium.org
+jrummell@chromium.org
+liberato@chromium.org
+sandersd@chromium.org
+tguilbert@chromium.org
+wolenetz@chromium.org
+xhwang@chromium.org
diff --git a/chromium/third_party/ffmpeg/README.chromium b/chromium/third_party/ffmpeg/README.chromium
index 89e9a0e9dd1..ba5ecadfefe 100644
--- a/chromium/third_party/ffmpeg/README.chromium
+++ b/chromium/third_party/ffmpeg/README.chromium
@@ -3,7 +3,7 @@ URL: http://ffmpeg.org/
License: LGPL 2.1
License File: CREDITS.chromium
Upstream Git: git://source.ffmpeg.org/ffmpeg.git
-Last Upstream Merge: 2e96f5278095d44f090a4d89507e62d27cccf3b9, Jan 20 2018
+Last Upstream Merge: 9c249110ea974ce213840fde5ee5a3d842fa088d, Mar 12 2018
This file documents the layout of the Chromium copy of FFmpeg, some common
tasks, and how to create the build files and related configurations.
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/config.h
index 7754902f43b..8b585dab1b6 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-16/arch-arm --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/arm-linux-androideabi --extra-cflags='--target=arm-linux-androideabi' --extra-ldflags='--target=arm-linux-androideabi' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-neon --extra-cflags='-mtune=generic-armv7-a' --extra-cflags='-mfloat-abi=softfp' --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-16/arch-arm --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/arm-linux-androideabi --extra-cflags='--target=arm-linux-androideabi' --extra-ldflags='--target=arm-linux-androideabi' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-neon --extra-cflags='-mtune=generic-armv7-a' --extra-cflags='-mfloat-abi=softfp' --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavcodec/codec_list.c
new file mode 100644
index 00000000000..4c1c44c96ca
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavcodec/codec_list.c
@@ -0,0 +1,16 @@
+static const AVCodec * const codec_list[] = {
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavcodec/parser_list.c
new file mode 100644
index 00000000000..a2c3bc93aae
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavcodec/parser_list.c
@@ -0,0 +1,7 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h
index d1700b54efb..3d617c6feb1 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-21/arch-arm64 --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/aarch64-linux-android --extra-cflags='--target=aarch64-linux-android' --extra-ldflags='--target=aarch64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-21/arch-arm64 --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/aarch64-linux-android --extra-cflags='--target=aarch64-linux-android' --extra-ldflags='--target=aarch64-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..4c1c44c96ca
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/codec_list.c
@@ -0,0 +1,16 @@
+static const AVCodec * const codec_list[] = {
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..a2c3bc93aae
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavcodec/parser_list.c
@@ -0,0 +1,7 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/config.h
index 3695e4286f8..e584b9a4817 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-16/arch-x86 --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/i686-linux-android --extra-cflags='--target=i686-linux-android' --extra-ldflags='--target=i686-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/x86-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --disable-x86asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-16/arch-x86 --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/i686-linux-android --extra-cflags='--target=i686-linux-android' --extra-ldflags='--target=i686-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/x86-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --disable-x86asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavcodec/codec_list.c
new file mode 100644
index 00000000000..4c1c44c96ca
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavcodec/codec_list.c
@@ -0,0 +1,16 @@
+static const AVCodec * const codec_list[] = {
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavcodec/parser_list.c
new file mode 100644
index 00000000000..a2c3bc93aae
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavcodec/parser_list.c
@@ -0,0 +1,7 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/config.h
index 678671c9e85..112efdb8fb2 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-21/arch-mips64 --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/mips64el-linux-android --extra-cflags='--target=mips64el-linux-android' --extra-ldflags='--target=mips64el-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-mips64r6 --extra-cflags='-mcpu=mips64r6' --disable-mips64r2 --enable-msa --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-21/arch-mips64 --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/mips64el-linux-android --extra-cflags='--target=mips64el-linux-android' --extra-ldflags='--target=mips64el-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-mips64r6 --extra-cflags='-mcpu=mips64r6' --disable-mips64r2 --enable-msa --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavcodec/codec_list.c
new file mode 100644
index 00000000000..4c1c44c96ca
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavcodec/codec_list.c
@@ -0,0 +1,16 @@
+static const AVCodec * const codec_list[] = {
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavcodec/parser_list.c
new file mode 100644
index 00000000000..a2c3bc93aae
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavcodec/parser_list.c
@@ -0,0 +1,7 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/config.h
index f8ebac071b5..6f7f6001488 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-16/arch-mips --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/mipsel-linux-android --extra-cflags='--target=mipsel-linux-android' --extra-ldflags='--target=mipsel-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-16/arch-mips --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/mipsel-linux-android --extra-cflags='--target=mipsel-linux-android' --extra-ldflags='--target=mipsel-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavcodec/codec_list.c
new file mode 100644
index 00000000000..4c1c44c96ca
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavcodec/codec_list.c
@@ -0,0 +1,16 @@
+static const AVCodec * const codec_list[] = {
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavcodec/parser_list.c
new file mode 100644
index 00000000000..a2c3bc93aae
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavcodec/parser_list.c
@@ -0,0 +1,7 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm
index 951288a0dd5..a305dc83e49 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.h
index 403770677d0..d6702cbe69a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-21/arch-x86_64 --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/x86_64-linux-android --extra-cflags='--target=x86_64-linux-android' --extra-ldflags='--target=x86_64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=x86_64 --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-21/arch-x86_64 --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/x86_64-linux-android --extra-cflags='--target=x86_64-linux-android' --extra-ldflags='--target=x86_64-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=x86_64 --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..4c1c44c96ca
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavcodec/codec_list.c
@@ -0,0 +1,16 @@
+static const AVCodec * const codec_list[] = {
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..a2c3bc93aae
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavcodec/parser_list.c
@@ -0,0 +1,7 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/config.h
index 7d9b0e44066..5b0b893cef8 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/config.h
index 5b4ca229def..b40b369faba 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h
index bd521eaf107..5aa91d39689 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h
index e04877f9fbd..1421c1017e9 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h
+++ b/chromium/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm
index bc9a4f6f925..f51e01f8b27 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm
@@ -214,7 +214,7 @@
%define HAVE_TERMIOS_H 1
%define HAVE_UDPLITE_H 0
%define HAVE_UNISTD_H 1
-%define HAVE_VALGRIND_VALGRIND_H 1
+%define HAVE_VALGRIND_VALGRIND_H 0
%define HAVE_WINDOWS_H 0
%define HAVE_WINSOCK2_H 0
%define HAVE_INTRINSICS_NEON 0
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.h
index e1ba41e0fc8..8dfb06e130a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/config.h
index 514dc49ed6e..9be3db7d30f 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/config.h
index 13d4bedba74..bc32a884aa5 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -474,7 +476,7 @@
#define CONFIG_MEDIACODEC 0
#define CONFIG_OPENAL 0
#define CONFIG_OPENGL 0
-#define CONFIG_ALSA 0
+#define CONFIG_ALSA 1
#define CONFIG_APPKIT 0
#define CONFIG_AVFOUNDATION 0
#define CONFIG_BZLIB 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm
index c699a5bf46e..08f3709c55a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm
@@ -214,7 +214,7 @@
%define HAVE_TERMIOS_H 1
%define HAVE_UDPLITE_H 0
%define HAVE_UNISTD_H 1
-%define HAVE_VALGRIND_VALGRIND_H 1
+%define HAVE_VALGRIND_VALGRIND_H 0
%define HAVE_WINDOWS_H 0
%define HAVE_WINSOCK2_H 0
%define HAVE_INTRINSICS_NEON 0
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.h
index 6fa303560ba..8f8469c7bb8 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm
index a375c8d0b80..0da4d137e2a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h
index 7ae0d4f4d26..c111585e66b 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h
@@ -1,7 +1,7 @@
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define FFMPEG_CONFIG_H
-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/Users/xhwang/workspace/chrome/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\0-O2\0' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-libs=-lopus --arch=x86_64 --extra-cflags=-m64 --extra-ldflags=-m64 --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/Users/wolenetz/src/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\0-O2\0' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-libs=-lopus --arch=x86_64 --extra-cflags=-m64 --extra-ldflags=-m64 --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
#define CONFIG_THIS_YEAR 2018
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavutil/ffversion.h
index 830cc96911f..055bdd8d5e0 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "git-2018-03-13-309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm
index 1ddc665818c..ecf4c4e0182 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h
index 673e73085d1..d832bcac909 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h
@@ -1,7 +1,7 @@
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define FFMPEG_CONFIG_H
-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/cygdrive/c/src/chrome/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/cygdrive/c/src/chrome/src/third_party/ffmpeg/chromium/include/win --cc='cygwin-wrapper cl' --ld='cygwin-wrapper link' --nm='cygwin-wrapper dumpbin -symbols' --ar='cygwin-wrapper lib' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/cygdrive/d/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/cygdrive/d/chromium/src/third_party/ffmpeg/chromium/include/win --cc='cygwin-wrapper cl' --ld='cygwin-wrapper link' --nm='cygwin-wrapper dumpbin -symbols' --ar='cygwin-wrapper lib' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
#define CONFIG_THIS_YEAR 2018
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm
index 947e27ff424..7fcf463c3cc 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h
index c62a7436044..5432c8146e5 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h
@@ -1,7 +1,7 @@
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define FFMPEG_CONFIG_H
-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/cygdrive/c/src/chrome/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/cygdrive/c/src/chrome/src/third_party/ffmpeg/chromium/include/win --cc='cygwin-wrapper cl' --ld='cygwin-wrapper link' --nm='cygwin-wrapper dumpbin -symbols' --ar='cygwin-wrapper lib' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/cygdrive/d/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/cygdrive/d/chromium/src/third_party/ffmpeg/chromium/include/win --cc='cygwin-wrapper cl' --ld='cygwin-wrapper link' --nm='cygwin-wrapper dumpbin -symbols' --ar='cygwin-wrapper lib' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'"
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
#define CONFIG_THIS_YEAR 2018
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..49f757b2d86
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavcodec/codec_list.c
@@ -0,0 +1,20 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h264_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..19d670aa24b
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavcodec/parser_list.c
@@ -0,0 +1,10 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_h264_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..920b22bfa7d
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavformat/demuxer_list.c
@@ -0,0 +1,9 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/config.h
index aa9b61bd1c9..258a77f3bad 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/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 --enable-libopus --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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-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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..8f4b18388c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavcodec/codec_list.c
@@ -0,0 +1,25 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h263_decoder,
+ &ff_h264_decoder,
+ &ff_mpeg4_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_amrnb_decoder,
+ &ff_amrwb_decoder,
+ &ff_flac_decoder,
+ &ff_gsm_ms_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..ecd24e12bce
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavcodec/parser_list.c
@@ -0,0 +1,13 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_gsm_parser,
+ &ff_h263_parser,
+ &ff_h264_parser,
+ &ff_mpeg4video_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..0c96cf1ff7e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavformat/demuxer_list.c
@@ -0,0 +1,11 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_amr_demuxer,
+ &ff_avi_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/config.h
index df4a3f3fbdc..155a0048982 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/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 --enable-libopus --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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-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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavcodec/codec_list.c
new file mode 100644
index 00000000000..8f4b18388c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavcodec/codec_list.c
@@ -0,0 +1,25 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h263_decoder,
+ &ff_h264_decoder,
+ &ff_mpeg4_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_amrnb_decoder,
+ &ff_amrwb_decoder,
+ &ff_flac_decoder,
+ &ff_gsm_ms_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavcodec/parser_list.c
new file mode 100644
index 00000000000..ecd24e12bce
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavcodec/parser_list.c
@@ -0,0 +1,13 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_gsm_parser,
+ &ff_h263_parser,
+ &ff_h264_parser,
+ &ff_mpeg4video_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..0c96cf1ff7e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavformat/demuxer_list.c
@@ -0,0 +1,11 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_amr_demuxer,
+ &ff_avi_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/config.h
index c2cffa84b25..9ba3b60841a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/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 --enable-libopus --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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-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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavcodec/codec_list.c
new file mode 100644
index 00000000000..8f4b18388c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavcodec/codec_list.c
@@ -0,0 +1,25 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h263_decoder,
+ &ff_h264_decoder,
+ &ff_mpeg4_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_amrnb_decoder,
+ &ff_amrwb_decoder,
+ &ff_flac_decoder,
+ &ff_gsm_ms_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavcodec/parser_list.c
new file mode 100644
index 00000000000..ecd24e12bce
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavcodec/parser_list.c
@@ -0,0 +1,13 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_gsm_parser,
+ &ff_h263_parser,
+ &ff_h264_parser,
+ &ff_mpeg4video_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..0c96cf1ff7e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavformat/demuxer_list.c
@@ -0,0 +1,11 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_amr_demuxer,
+ &ff_avi_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h
index 3eea67a5d98..8d72927a874 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h
+++ b/chromium/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 --enable-libopus --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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-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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..8f4b18388c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavcodec/codec_list.c
@@ -0,0 +1,25 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h263_decoder,
+ &ff_h264_decoder,
+ &ff_mpeg4_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_amrnb_decoder,
+ &ff_amrwb_decoder,
+ &ff_flac_decoder,
+ &ff_gsm_ms_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..ecd24e12bce
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavcodec/parser_list.c
@@ -0,0 +1,13 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_gsm_parser,
+ &ff_h263_parser,
+ &ff_h264_parser,
+ &ff_mpeg4video_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..0c96cf1ff7e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavformat/demuxer_list.c
@@ -0,0 +1,11 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_amr_demuxer,
+ &ff_avi_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm
index 8cb21d212a3..1d5a36bfbc2 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm
@@ -214,7 +214,7 @@
%define HAVE_TERMIOS_H 1
%define HAVE_UDPLITE_H 0
%define HAVE_UNISTD_H 1
-%define HAVE_VALGRIND_VALGRIND_H 1
+%define HAVE_VALGRIND_VALGRIND_H 0
%define HAVE_WINDOWS_H 0
%define HAVE_WINSOCK2_H 0
%define HAVE_INTRINSICS_NEON 0
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 1
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.h
index 0b0d3e82fe4..4ccdc9e9188 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/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 --enable-libopus --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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-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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavcodec/codec_list.c
new file mode 100644
index 00000000000..8f4b18388c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavcodec/codec_list.c
@@ -0,0 +1,25 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h263_decoder,
+ &ff_h264_decoder,
+ &ff_mpeg4_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_amrnb_decoder,
+ &ff_amrwb_decoder,
+ &ff_flac_decoder,
+ &ff_gsm_ms_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavcodec/parser_list.c
new file mode 100644
index 00000000000..ecd24e12bce
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavcodec/parser_list.c
@@ -0,0 +1,13 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_gsm_parser,
+ &ff_h263_parser,
+ &ff_h264_parser,
+ &ff_mpeg4video_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..0c96cf1ff7e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavformat/demuxer_list.c
@@ -0,0 +1,11 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_amr_demuxer,
+ &ff_avi_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/config.h
index 153738f9e9f..8fc17bd8527 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/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 --enable-libopus --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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-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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavcodec/codec_list.c
new file mode 100644
index 00000000000..8f4b18388c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavcodec/codec_list.c
@@ -0,0 +1,25 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h263_decoder,
+ &ff_h264_decoder,
+ &ff_mpeg4_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_amrnb_decoder,
+ &ff_amrwb_decoder,
+ &ff_flac_decoder,
+ &ff_gsm_ms_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavcodec/parser_list.c
new file mode 100644
index 00000000000..ecd24e12bce
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavcodec/parser_list.c
@@ -0,0 +1,13 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_gsm_parser,
+ &ff_h263_parser,
+ &ff_h264_parser,
+ &ff_mpeg4video_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..0c96cf1ff7e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavformat/demuxer_list.c
@@ -0,0 +1,11 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_amr_demuxer,
+ &ff_avi_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/config.h
index 28ab50fa949..389f79e2e40 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/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 --enable-libopus --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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-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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -474,7 +476,7 @@
#define CONFIG_MEDIACODEC 0
#define CONFIG_OPENAL 0
#define CONFIG_OPENGL 0
-#define CONFIG_ALSA 0
+#define CONFIG_ALSA 1
#define CONFIG_APPKIT 0
#define CONFIG_AVFOUNDATION 0
#define CONFIG_BZLIB 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavcodec/codec_list.c
new file mode 100644
index 00000000000..8f4b18388c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavcodec/codec_list.c
@@ -0,0 +1,25 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h263_decoder,
+ &ff_h264_decoder,
+ &ff_mpeg4_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_amrnb_decoder,
+ &ff_amrwb_decoder,
+ &ff_flac_decoder,
+ &ff_gsm_ms_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavcodec/parser_list.c
new file mode 100644
index 00000000000..ecd24e12bce
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavcodec/parser_list.c
@@ -0,0 +1,13 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_gsm_parser,
+ &ff_h263_parser,
+ &ff_h264_parser,
+ &ff_mpeg4video_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..0c96cf1ff7e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavformat/demuxer_list.c
@@ -0,0 +1,11 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_amr_demuxer,
+ &ff_avi_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm
index 5dd32ee7306..25f82633803 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm
@@ -214,7 +214,7 @@
%define HAVE_TERMIOS_H 1
%define HAVE_UDPLITE_H 0
%define HAVE_UNISTD_H 1
-%define HAVE_VALGRIND_VALGRIND_H 1
+%define HAVE_VALGRIND_VALGRIND_H 0
%define HAVE_WINDOWS_H 0
%define HAVE_WINSOCK2_H 0
%define HAVE_INTRINSICS_NEON 0
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 1
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.h
index 4b7be1d2c69..e069bf5f039 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/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 --enable-libopus --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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-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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..8f4b18388c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavcodec/codec_list.c
@@ -0,0 +1,25 @@
+static const AVCodec * const codec_list[] = {
+ &ff_h263_decoder,
+ &ff_h264_decoder,
+ &ff_mpeg4_decoder,
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_aac_decoder,
+ &ff_amrnb_decoder,
+ &ff_amrwb_decoder,
+ &ff_flac_decoder,
+ &ff_gsm_ms_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..ecd24e12bce
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavcodec/parser_list.c
@@ -0,0 +1,13 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_aac_parser,
+ &ff_flac_parser,
+ &ff_gsm_parser,
+ &ff_h263_parser,
+ &ff_h264_parser,
+ &ff_mpeg4video_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..0c96cf1ff7e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavformat/demuxer_list.c
@@ -0,0 +1,11 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_aac_demuxer,
+ &ff_amr_demuxer,
+ &ff_avi_demuxer,
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/config.h
index e4d8c099bef..ae5a432d94a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-16/arch-arm --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/arm-linux-androideabi --extra-cflags='--target=arm-linux-androideabi' --extra-ldflags='--target=arm-linux-androideabi' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-neon --extra-cflags='-mtune=generic-armv7-a' --extra-cflags='-mfloat-abi=softfp' --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-16/arch-arm --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/arm-linux-androideabi --extra-cflags='--target=arm-linux-androideabi' --extra-ldflags='--target=arm-linux-androideabi' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-neon --extra-cflags='-mtune=generic-armv7-a' --extra-cflags='-mfloat-abi=softfp' --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavcodec/codec_list.c
new file mode 100644
index 00000000000..894ef578af9
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavcodec/codec_list.c
@@ -0,0 +1,15 @@
+static const AVCodec * const codec_list[] = {
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavcodec/parser_list.c
new file mode 100644
index 00000000000..13427ced194
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavcodec/parser_list.c
@@ -0,0 +1,6 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/config.h
index ddb235f874f..a817f5416ff 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-21/arch-arm64 --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/aarch64-linux-android --extra-cflags='--target=aarch64-linux-android' --extra-ldflags='--target=aarch64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-21/arch-arm64 --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/aarch64-linux-android --extra-cflags='--target=aarch64-linux-android' --extra-ldflags='--target=aarch64-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..894ef578af9
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavcodec/codec_list.c
@@ -0,0 +1,15 @@
+static const AVCodec * const codec_list[] = {
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..13427ced194
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavcodec/parser_list.c
@@ -0,0 +1,6 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/config.h
index fdf858c0034..c77e6ab7382 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-16/arch-x86 --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/i686-linux-android --extra-cflags='--target=i686-linux-android' --extra-ldflags='--target=i686-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/x86-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --disable-x86asm --enable-pic --cc=clang --cxx=clang++ --ld=clang"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-16/arch-x86 --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/i686-linux-android --extra-cflags='--target=i686-linux-android' --extra-ldflags='--target=i686-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/x86-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --disable-x86asm --enable-pic --cc=clang --cxx=clang++ --ld=clang"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavcodec/codec_list.c
new file mode 100644
index 00000000000..894ef578af9
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavcodec/codec_list.c
@@ -0,0 +1,15 @@
+static const AVCodec * const codec_list[] = {
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavcodec/parser_list.c
new file mode 100644
index 00000000000..13427ced194
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavcodec/parser_list.c
@@ -0,0 +1,6 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/config.h
index b70f40e01d8..16c2170bfe1 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-21/arch-mips64 --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/mips64el-linux-android --extra-cflags='--target=mips64el-linux-android' --extra-ldflags='--target=mips64el-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-mips64r6 --extra-cflags='-mcpu=mips64r6' --disable-mips64r2 --enable-msa --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-21/arch-mips64 --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/mips64el-linux-android --extra-cflags='--target=mips64el-linux-android' --extra-ldflags='--target=mips64el-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-mips64r6 --extra-cflags='-mcpu=mips64r6' --disable-mips64r2 --enable-msa --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavcodec/codec_list.c
new file mode 100644
index 00000000000..894ef578af9
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavcodec/codec_list.c
@@ -0,0 +1,15 @@
+static const AVCodec * const codec_list[] = {
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavcodec/parser_list.c
new file mode 100644
index 00000000000..13427ced194
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavcodec/parser_list.c
@@ -0,0 +1,6 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/config.h
index c1ba5f24171..f43ae005ca6 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-16/arch-mips --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/mipsel-linux-android --extra-cflags='--target=mipsel-linux-android' --extra-ldflags='--target=mipsel-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-16/arch-mips --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/mipsel-linux-android --extra-cflags='--target=mipsel-linux-android' --extra-ldflags='--target=mipsel-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavcodec/codec_list.c
new file mode 100644
index 00000000000..894ef578af9
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavcodec/codec_list.c
@@ -0,0 +1,15 @@
+static const AVCodec * const codec_list[] = {
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavcodec/parser_list.c
new file mode 100644
index 00000000000..13427ced194
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavcodec/parser_list.c
@@ -0,0 +1,6 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm
index cb11f6e029f..49673fb2129 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.h
index cb70f2e8dd7..3e91b6e4c2c 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/workspace/clank/src/third_party/android_ndk/platforms/android-21/arch-x86_64 --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/workspace/clank/src/third_party/android_ndk/sysroot/usr/include/x86_64-linux-android --extra-cflags='--target=x86_64-linux-android' --extra-ldflags='--target=x86_64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/workspace/clank/src/third_party/android_ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=x86_64 --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/ssd/trunk_blink_tot/src/third_party/android_ndk/platforms/android-21/arch-x86_64 --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/android_ndk/sysroot/usr/include/x86_64-linux-android --extra-cflags='--target=x86_64-linux-android' --extra-ldflags='--target=x86_64-linux-android' --extra-ldflags='--gcc-toolchain=/ssd/trunk_blink_tot/src/third_party/android_ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=x86_64 --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..894ef578af9
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavcodec/codec_list.c
@@ -0,0 +1,15 @@
+static const AVCodec * const codec_list[] = {
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..13427ced194
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavcodec/parser_list.c
@@ -0,0 +1,6 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavutil/ffversion.h
index 830cc96911f..efb1b5b1a9a 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "N-91125-g309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/config.h
index c207904c1b9..b67e099a183 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h
index 808fcd3a729..e27a44e39a7 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h
index c84c095a9db..73603ec48ce 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h
index c047acecaea..ff292928ba0 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h
+++ b/chromium/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm
index b5eaf130ca8..6a5067a27df 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm
@@ -214,7 +214,7 @@
%define HAVE_TERMIOS_H 1
%define HAVE_UDPLITE_H 0
%define HAVE_UNISTD_H 1
-%define HAVE_VALGRIND_VALGRIND_H 1
+%define HAVE_VALGRIND_VALGRIND_H 0
%define HAVE_WINDOWS_H 0
%define HAVE_WINSOCK2_H 0
%define HAVE_INTRINSICS_NEON 0
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h
index 913f3a2d09c..8600242f842 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/config.h
index 806697d1775..3f066ead5d9 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/config.h
index 5008900e06e..9b500e1c3e6 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/workspace/chrome2/src/build/linux/debian_stretch_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/ssd/trunk_blink_tot/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -474,7 +476,7 @@
#define CONFIG_MEDIACODEC 0
#define CONFIG_OPENAL 0
#define CONFIG_OPENGL 0
-#define CONFIG_ALSA 0
+#define CONFIG_ALSA 1
#define CONFIG_APPKIT 0
#define CONFIG_AVFOUNDATION 0
#define CONFIG_BZLIB 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm
index ea90c406eb3..87386af1009 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm
@@ -214,7 +214,7 @@
%define HAVE_TERMIOS_H 1
%define HAVE_UDPLITE_H 0
%define HAVE_UNISTD_H 1
-%define HAVE_VALGRIND_VALGRIND_H 1
+%define HAVE_VALGRIND_VALGRIND_H 0
%define HAVE_WINDOWS_H 0
%define HAVE_WINSOCK2_H 0
%define HAVE_INTRINSICS_NEON 0
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h
index b4c8215f0ab..f153972005f 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/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 --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/workspace/chrome2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'"
#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 "clang version 6.0.0 (trunk 321529)"
+#define CC_IDENT "clang version 7.0.0 (trunk 325667)"
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
@@ -229,7 +229,7 @@
#define HAVE_TERMIOS_H 1
#define HAVE_UDPLITE_H 0
#define HAVE_UNISTD_H 1
-#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */
+#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 0 -- forced to 0. See https://crbug.com/590440 */
#define HAVE_WINDOWS_H 0
#define HAVE_WINSOCK2_H 0
#define HAVE_INTRINSICS_NEON 0
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavutil/ffversion.h
index 045c2470b9a..f00f198e134 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/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-90669-gb2b304dba8"
+#define FFMPEG_VERSION "N-91124-g1d669bcae9"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm
index e329735bce3..7cf75ea8886 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h
index 7c4b08a4a1c..345f29cc0b1 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h
@@ -1,7 +1,7 @@
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define FFMPEG_CONFIG_H
-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/Users/xhwang/workspace/chrome/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\0-O2\0' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-libs=-lopus --arch=x86_64 --extra-cflags=-m64 --extra-ldflags=-m64"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/Users/wolenetz/src/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\0-O2\0' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-libs=-lopus --arch=x86_64 --extra-cflags=-m64 --extra-ldflags=-m64"
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
#define CONFIG_THIS_YEAR 2018
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavutil/ffversion.h
index 830cc96911f..055bdd8d5e0 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavutil/ffversion.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/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 "git-2018-01-25-b2b304dba8"
+#define FFMPEG_VERSION "git-2018-03-13-309b7ad6b1"
#endif /* AVUTIL_FFVERSION_H */
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm
index 55598617c7d..7bfcc842a2c 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h
index a34b4e63e80..61557a8ace2 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h
@@ -1,7 +1,7 @@
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define FFMPEG_CONFIG_H
-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/cygdrive/c/src/chrome/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/cygdrive/c/src/chrome/src/third_party/ffmpeg/chromium/include/win --cc='cygwin-wrapper cl' --ld='cygwin-wrapper link' --nm='cygwin-wrapper dumpbin -symbols' --ar='cygwin-wrapper lib'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/cygdrive/d/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/cygdrive/d/chromium/src/third_party/ffmpeg/chromium/include/win --cc='cygwin-wrapper cl' --ld='cygwin-wrapper link' --nm='cygwin-wrapper dumpbin -symbols' --ar='cygwin-wrapper lib'"
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
#define CONFIG_THIS_YEAR 2018
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm
index 7e8e7d6d003..f170cb0c032 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm
@@ -382,7 +382,8 @@
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
%define CONFIG_TRANSCODING_EXAMPLE 0
-%define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
%define CONFIG_AVISYNTH 0
%define CONFIG_FREI0R 0
%define CONFIG_LIBCDIO 0
@@ -414,6 +415,7 @@
%define CONFIG_LIBBS2B 0
%define CONFIG_LIBCACA 0
%define CONFIG_LIBCELT 0
+%define CONFIG_LIBCODEC2 0
%define CONFIG_LIBDC1394 0
%define CONFIG_LIBDRM 0
%define CONFIG_LIBFLITE 0
@@ -489,6 +491,7 @@
%define CONFIG_CUVID 0
%define CONFIG_D3D11VA 0
%define CONFIG_DXVA2 0
+%define CONFIG_FFNVCODEC 0
%define CONFIG_NVDEC 0
%define CONFIG_NVENC 0
%define CONFIG_VAAPI 0
@@ -934,6 +937,7 @@
%define CONFIG_AMRWB_DECODER 0
%define CONFIG_APE_DECODER 0
%define CONFIG_APTX_DECODER 0
+%define CONFIG_APTX_HD_DECODER 0
%define CONFIG_ATRAC1_DECODER 0
%define CONFIG_ATRAC3_DECODER 0
%define CONFIG_ATRAC3AL_DECODER 0
@@ -989,6 +993,7 @@
%define CONFIG_RA_144_DECODER 0
%define CONFIG_RA_288_DECODER 0
%define CONFIG_RALF_DECODER 0
+%define CONFIG_SBC_DECODER 0
%define CONFIG_SHORTEN_DECODER 0
%define CONFIG_SIPR_DECODER 0
%define CONFIG_SMACKAUD_DECODER 0
@@ -1127,6 +1132,7 @@
%define CONFIG_QDMC_AT_DECODER 0
%define CONFIG_QDM2_AT_DECODER 0
%define CONFIG_LIBCELT_DECODER 0
+%define CONFIG_LIBCODEC2_DECODER 0
%define CONFIG_LIBFDK_AAC_DECODER 0
%define CONFIG_LIBGSM_DECODER 0
%define CONFIG_LIBGSM_MS_DECODER 0
@@ -1244,6 +1250,7 @@
%define CONFIG_AC3_FIXED_ENCODER 0
%define CONFIG_ALAC_ENCODER 0
%define CONFIG_APTX_ENCODER 0
+%define CONFIG_APTX_HD_ENCODER 0
%define CONFIG_DCA_ENCODER 0
%define CONFIG_EAC3_ENCODER 0
%define CONFIG_FLAC_ENCODER 0
@@ -1254,6 +1261,7 @@
%define CONFIG_NELLYMOSER_ENCODER 0
%define CONFIG_OPUS_ENCODER 0
%define CONFIG_RA_144_ENCODER 0
+%define CONFIG_SBC_ENCODER 0
%define CONFIG_SONIC_ENCODER 0
%define CONFIG_SONIC_LS_ENCODER 0
%define CONFIG_TRUEHD_ENCODER 0
@@ -1315,6 +1323,7 @@
%define CONFIG_ILBC_AT_ENCODER 0
%define CONFIG_PCM_ALAW_AT_ENCODER 0
%define CONFIG_PCM_MULAW_AT_ENCODER 0
+%define CONFIG_LIBCODEC2_ENCODER 0
%define CONFIG_LIBFDK_AAC_ENCODER 0
%define CONFIG_LIBGSM_ENCODER 0
%define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1383,6 +1392,8 @@
%define CONFIG_HEVC_VAAPI_HWACCEL 0
%define CONFIG_HEVC_VDPAU_HWACCEL 0
%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+%define CONFIG_MJPEG_NVDEC_HWACCEL 0
+%define CONFIG_MJPEG_VAAPI_HWACCEL 0
%define CONFIG_MPEG1_NVDEC_HWACCEL 0
%define CONFIG_MPEG1_VDPAU_HWACCEL 0
%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1450,6 +1461,7 @@
%define CONFIG_PNM_PARSER 0
%define CONFIG_RV30_PARSER 0
%define CONFIG_RV40_PARSER 0
+%define CONFIG_SBC_PARSER 0
%define CONFIG_SIPR_PARSER 0
%define CONFIG_TAK_PARSER 0
%define CONFIG_VC1_PARSER 0
@@ -1459,6 +1471,7 @@
%define CONFIG_VP9_PARSER 0
%define CONFIG_XMA_PARSER 0
%define CONFIG_ALSA_INDEV 0
+%define CONFIG_ANDROID_CAMERA_INDEV 0
%define CONFIG_AVFOUNDATION_INDEV 0
%define CONFIG_BKTR_INDEV 0
%define CONFIG_DECKLINK_INDEV 0
@@ -1550,6 +1563,7 @@
%define CONFIG_CROSSFEED_FILTER 0
%define CONFIG_CRYSTALIZER_FILTER 0
%define CONFIG_DCSHIFT_FILTER 0
+%define CONFIG_DRMETER_FILTER 0
%define CONFIG_DYNAUDNORM_FILTER 0
%define CONFIG_EARWAX_FILTER 0
%define CONFIG_EBUR128_FILTER 0
@@ -1875,6 +1889,7 @@
%define CONFIG_APE_DEMUXER 0
%define CONFIG_APNG_DEMUXER 0
%define CONFIG_APTX_DEMUXER 0
+%define CONFIG_APTX_HD_DEMUXER 0
%define CONFIG_AQTITLE_DEMUXER 0
%define CONFIG_ASF_DEMUXER 0
%define CONFIG_ASF_O_DEMUXER 0
@@ -1900,6 +1915,8 @@
%define CONFIG_CDG_DEMUXER 0
%define CONFIG_CDXL_DEMUXER 0
%define CONFIG_CINE_DEMUXER 0
+%define CONFIG_CODEC2_DEMUXER 0
+%define CONFIG_CODEC2RAW_DEMUXER 0
%define CONFIG_CONCAT_DEMUXER 0
%define CONFIG_DASH_DEMUXER 0
%define CONFIG_DATA_DEMUXER 0
@@ -2049,6 +2066,7 @@
%define CONFIG_S337M_DEMUXER 0
%define CONFIG_SAMI_DEMUXER 0
%define CONFIG_SAP_DEMUXER 0
+%define CONFIG_SBC_DEMUXER 0
%define CONFIG_SBG_DEMUXER 0
%define CONFIG_SCC_DEMUXER 0
%define CONFIG_SDP_DEMUXER 0
@@ -2148,6 +2166,7 @@
%define CONFIG_AMR_MUXER 0
%define CONFIG_APNG_MUXER 0
%define CONFIG_APTX_MUXER 0
+%define CONFIG_APTX_HD_MUXER 0
%define CONFIG_ASF_MUXER 0
%define CONFIG_ASS_MUXER 0
%define CONFIG_AST_MUXER 0
@@ -2158,6 +2177,8 @@
%define CONFIG_BIT_MUXER 0
%define CONFIG_CAF_MUXER 0
%define CONFIG_CAVSVIDEO_MUXER 0
+%define CONFIG_CODEC2_MUXER 0
+%define CONFIG_CODEC2RAW_MUXER 0
%define CONFIG_CRC_MUXER 0
%define CONFIG_DASH_MUXER 0
%define CONFIG_DATA_MUXER 0
@@ -2170,6 +2191,7 @@
%define CONFIG_F4V_MUXER 0
%define CONFIG_FFMETADATA_MUXER 0
%define CONFIG_FIFO_MUXER 0
+%define CONFIG_FIFO_TEST_MUXER 0
%define CONFIG_FILMSTRIP_MUXER 0
%define CONFIG_FITS_MUXER 0
%define CONFIG_FLAC_MUXER 0
@@ -2262,6 +2284,7 @@
%define CONFIG_RTP_MPEGTS_MUXER 0
%define CONFIG_RTSP_MUXER 0
%define CONFIG_SAP_MUXER 0
+%define CONFIG_SBC_MUXER 0
%define CONFIG_SCC_MUXER 0
%define CONFIG_SEGMENT_MUXER 0
%define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h
index 753680ee527..ddc43e2eb56 100644
--- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h
@@ -1,7 +1,7 @@
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define FFMPEG_CONFIG_H
-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/cygdrive/c/src/chrome/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/cygdrive/c/src/chrome/src/third_party/ffmpeg/chromium/include/win --cc='cygwin-wrapper cl' --ld='cygwin-wrapper link' --nm='cygwin-wrapper dumpbin -symbols' --ar='cygwin-wrapper lib'"
+#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-bzlib --disable-error-resilience --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-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/cygdrive/d/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/cygdrive/d/chromium/src/third_party/ffmpeg/chromium/include/win --cc='cygwin-wrapper cl' --ld='cygwin-wrapper link' --nm='cygwin-wrapper dumpbin -symbols' --ar='cygwin-wrapper lib'"
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
#define CONFIG_THIS_YEAR 2018
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
@@ -397,7 +397,8 @@
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
#define CONFIG_TRANSCODING_EXAMPLE 0
-#define CONFIG_VAAPI_ENCODE_EXAMPLE 1
+#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
+#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
#define CONFIG_AVISYNTH 0
#define CONFIG_FREI0R 0
#define CONFIG_LIBCDIO 0
@@ -429,6 +430,7 @@
#define CONFIG_LIBBS2B 0
#define CONFIG_LIBCACA 0
#define CONFIG_LIBCELT 0
+#define CONFIG_LIBCODEC2 0
#define CONFIG_LIBDC1394 0
#define CONFIG_LIBDRM 0
#define CONFIG_LIBFLITE 0
@@ -504,6 +506,7 @@
#define CONFIG_CUVID 0
#define CONFIG_D3D11VA 0
#define CONFIG_DXVA2 0
+#define CONFIG_FFNVCODEC 0
#define CONFIG_NVDEC 0
#define CONFIG_NVENC 0
#define CONFIG_VAAPI 0
@@ -949,6 +952,7 @@
#define CONFIG_AMRWB_DECODER 0
#define CONFIG_APE_DECODER 0
#define CONFIG_APTX_DECODER 0
+#define CONFIG_APTX_HD_DECODER 0
#define CONFIG_ATRAC1_DECODER 0
#define CONFIG_ATRAC3_DECODER 0
#define CONFIG_ATRAC3AL_DECODER 0
@@ -1004,6 +1008,7 @@
#define CONFIG_RA_144_DECODER 0
#define CONFIG_RA_288_DECODER 0
#define CONFIG_RALF_DECODER 0
+#define CONFIG_SBC_DECODER 0
#define CONFIG_SHORTEN_DECODER 0
#define CONFIG_SIPR_DECODER 0
#define CONFIG_SMACKAUD_DECODER 0
@@ -1142,6 +1147,7 @@
#define CONFIG_QDMC_AT_DECODER 0
#define CONFIG_QDM2_AT_DECODER 0
#define CONFIG_LIBCELT_DECODER 0
+#define CONFIG_LIBCODEC2_DECODER 0
#define CONFIG_LIBFDK_AAC_DECODER 0
#define CONFIG_LIBGSM_DECODER 0
#define CONFIG_LIBGSM_MS_DECODER 0
@@ -1259,6 +1265,7 @@
#define CONFIG_AC3_FIXED_ENCODER 0
#define CONFIG_ALAC_ENCODER 0
#define CONFIG_APTX_ENCODER 0
+#define CONFIG_APTX_HD_ENCODER 0
#define CONFIG_DCA_ENCODER 0
#define CONFIG_EAC3_ENCODER 0
#define CONFIG_FLAC_ENCODER 0
@@ -1269,6 +1276,7 @@
#define CONFIG_NELLYMOSER_ENCODER 0
#define CONFIG_OPUS_ENCODER 0
#define CONFIG_RA_144_ENCODER 0
+#define CONFIG_SBC_ENCODER 0
#define CONFIG_SONIC_ENCODER 0
#define CONFIG_SONIC_LS_ENCODER 0
#define CONFIG_TRUEHD_ENCODER 0
@@ -1330,6 +1338,7 @@
#define CONFIG_ILBC_AT_ENCODER 0
#define CONFIG_PCM_ALAW_AT_ENCODER 0
#define CONFIG_PCM_MULAW_AT_ENCODER 0
+#define CONFIG_LIBCODEC2_ENCODER 0
#define CONFIG_LIBFDK_AAC_ENCODER 0
#define CONFIG_LIBGSM_ENCODER 0
#define CONFIG_LIBGSM_MS_ENCODER 0
@@ -1398,6 +1407,8 @@
#define CONFIG_HEVC_VAAPI_HWACCEL 0
#define CONFIG_HEVC_VDPAU_HWACCEL 0
#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
+#define CONFIG_MJPEG_NVDEC_HWACCEL 0
+#define CONFIG_MJPEG_VAAPI_HWACCEL 0
#define CONFIG_MPEG1_NVDEC_HWACCEL 0
#define CONFIG_MPEG1_VDPAU_HWACCEL 0
#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
@@ -1465,6 +1476,7 @@
#define CONFIG_PNM_PARSER 0
#define CONFIG_RV30_PARSER 0
#define CONFIG_RV40_PARSER 0
+#define CONFIG_SBC_PARSER 0
#define CONFIG_SIPR_PARSER 0
#define CONFIG_TAK_PARSER 0
#define CONFIG_VC1_PARSER 0
@@ -1474,6 +1486,7 @@
#define CONFIG_VP9_PARSER 0
#define CONFIG_XMA_PARSER 0
#define CONFIG_ALSA_INDEV 0
+#define CONFIG_ANDROID_CAMERA_INDEV 0
#define CONFIG_AVFOUNDATION_INDEV 0
#define CONFIG_BKTR_INDEV 0
#define CONFIG_DECKLINK_INDEV 0
@@ -1565,6 +1578,7 @@
#define CONFIG_CROSSFEED_FILTER 0
#define CONFIG_CRYSTALIZER_FILTER 0
#define CONFIG_DCSHIFT_FILTER 0
+#define CONFIG_DRMETER_FILTER 0
#define CONFIG_DYNAUDNORM_FILTER 0
#define CONFIG_EARWAX_FILTER 0
#define CONFIG_EBUR128_FILTER 0
@@ -1890,6 +1904,7 @@
#define CONFIG_APE_DEMUXER 0
#define CONFIG_APNG_DEMUXER 0
#define CONFIG_APTX_DEMUXER 0
+#define CONFIG_APTX_HD_DEMUXER 0
#define CONFIG_AQTITLE_DEMUXER 0
#define CONFIG_ASF_DEMUXER 0
#define CONFIG_ASF_O_DEMUXER 0
@@ -1915,6 +1930,8 @@
#define CONFIG_CDG_DEMUXER 0
#define CONFIG_CDXL_DEMUXER 0
#define CONFIG_CINE_DEMUXER 0
+#define CONFIG_CODEC2_DEMUXER 0
+#define CONFIG_CODEC2RAW_DEMUXER 0
#define CONFIG_CONCAT_DEMUXER 0
#define CONFIG_DASH_DEMUXER 0
#define CONFIG_DATA_DEMUXER 0
@@ -2064,6 +2081,7 @@
#define CONFIG_S337M_DEMUXER 0
#define CONFIG_SAMI_DEMUXER 0
#define CONFIG_SAP_DEMUXER 0
+#define CONFIG_SBC_DEMUXER 0
#define CONFIG_SBG_DEMUXER 0
#define CONFIG_SCC_DEMUXER 0
#define CONFIG_SDP_DEMUXER 0
@@ -2163,6 +2181,7 @@
#define CONFIG_AMR_MUXER 0
#define CONFIG_APNG_MUXER 0
#define CONFIG_APTX_MUXER 0
+#define CONFIG_APTX_HD_MUXER 0
#define CONFIG_ASF_MUXER 0
#define CONFIG_ASS_MUXER 0
#define CONFIG_AST_MUXER 0
@@ -2173,6 +2192,8 @@
#define CONFIG_BIT_MUXER 0
#define CONFIG_CAF_MUXER 0
#define CONFIG_CAVSVIDEO_MUXER 0
+#define CONFIG_CODEC2_MUXER 0
+#define CONFIG_CODEC2RAW_MUXER 0
#define CONFIG_CRC_MUXER 0
#define CONFIG_DASH_MUXER 0
#define CONFIG_DATA_MUXER 0
@@ -2185,6 +2206,7 @@
#define CONFIG_F4V_MUXER 0
#define CONFIG_FFMETADATA_MUXER 0
#define CONFIG_FIFO_MUXER 0
+#define CONFIG_FIFO_TEST_MUXER 0
#define CONFIG_FILMSTRIP_MUXER 0
#define CONFIG_FITS_MUXER 0
#define CONFIG_FLAC_MUXER 0
@@ -2277,6 +2299,7 @@
#define CONFIG_RTP_MPEGTS_MUXER 0
#define CONFIG_RTSP_MUXER 0
#define CONFIG_SAP_MUXER 0
+#define CONFIG_SBC_MUXER 0
#define CONFIG_SCC_MUXER 0
#define CONFIG_SEGMENT_MUXER 0
#define CONFIG_STREAM_SEGMENT_MUXER 0
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavcodec/codec_list.c
new file mode 100644
index 00000000000..9407bd2775e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavcodec/codec_list.c
@@ -0,0 +1,18 @@
+static const AVCodec * const codec_list[] = {
+ &ff_theora_decoder,
+ &ff_vp3_decoder,
+ &ff_vp8_decoder,
+ &ff_flac_decoder,
+ &ff_mp3_decoder,
+ &ff_vorbis_decoder,
+ &ff_pcm_alaw_decoder,
+ &ff_pcm_f32le_decoder,
+ &ff_pcm_mulaw_decoder,
+ &ff_pcm_s16be_decoder,
+ &ff_pcm_s16le_decoder,
+ &ff_pcm_s24be_decoder,
+ &ff_pcm_s24le_decoder,
+ &ff_pcm_s32le_decoder,
+ &ff_pcm_u8_decoder,
+ &ff_libopus_decoder,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavcodec/parser_list.c
new file mode 100644
index 00000000000..4c59b89cdf8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavcodec/parser_list.c
@@ -0,0 +1,8 @@
+static const AVCodecParser * const parser_list[] = {
+ &ff_flac_parser,
+ &ff_mpegaudio_parser,
+ &ff_opus_parser,
+ &ff_vorbis_parser,
+ &ff_vp3_parser,
+ &ff_vp8_parser,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavformat/demuxer_list.c
new file mode 100644
index 00000000000..1908ba19e77
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavformat/demuxer_list.c
@@ -0,0 +1,8 @@
+static const AVInputFormat * const demuxer_list[] = {
+ &ff_flac_demuxer,
+ &ff_matroska_demuxer,
+ &ff_mov_demuxer,
+ &ff_mp3_demuxer,
+ &ff_ogg_demuxer,
+ &ff_wav_demuxer,
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavformat/muxer_list.c
new file mode 100644
index 00000000000..f36d9499c6f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavformat/muxer_list.c
@@ -0,0 +1,2 @@
+static const AVOutputFormat * const muxer_list[] = {
+ NULL };
diff --git a/chromium/third_party/ffmpeg/chromium/ffmpeg.sigs b/chromium/third_party/ffmpeg/chromium/ffmpeg.sigs
index 004dea45acd..6df4b5564fe 100755
--- a/chromium/third_party/ffmpeg/chromium/ffmpeg.sigs
+++ b/chromium/third_party/ffmpeg/chromium/ffmpeg.sigs
@@ -37,7 +37,6 @@ void avformat_close_input(AVFormatContext **s);
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);
int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);
int av_read_frame(AVFormatContext *s, AVPacket *pkt);
-void av_register_all(void);
int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags);
AVFormatContext *avformat_alloc_context(void);
void avformat_free_context(AVFormatContext *s);
@@ -61,6 +60,7 @@ int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *lo
AVBufferRef *av_buffer_create(uint8_t *data, int size, AVFreeOperation free, void *opaque, int flags);
void *av_buffer_get_opaque(const AVBufferRef *buf);
int av_get_cpu_flags(void);
+void av_force_cpu_flags(int flags);
void av_max_alloc(size_t max);
int av_strerror(int errnum, char *errbuf, size_t errbuf_size);
AVFrame *av_frame_clone(const AVFrame *src);
diff --git a/chromium/third_party/ffmpeg/chromium/patches/README b/chromium/third_party/ffmpeg/chromium/patches/README
index 5300579cfc1..ff2b1dd078b 100644
--- a/chromium/third_party/ffmpeg/chromium/patches/README
+++ b/chromium/third_party/ffmpeg/chromium/patches/README
@@ -89,32 +89,14 @@ Current patches:
Removes CELT, DIRAC, DAALA, and SPEEX support form the ogg parser. We don't
support these codecs and the parsers have bugs. http://crbug.com/654612
- libavformat/mov.c
- find_prev_closest_index(): It's possible *ctts_index == ctts_count. Thus add
- a check to prevent access violation. https://crbug.com/804097
-
- libavcodec/h264_cavlc.c
- When ff_h264_decode_mb_cavlc() failed due to wrong sl->qscale values, e.g.
- dquant out of range, set the qscale to be a valid value before returning -1
- and exiting the function. The qscale value can be used later, e.g. in loop
- filter and keeping an invalid qscale could cause trouble.
- https://crbug.com/806122
-
- libavformat/mov.c
- mov_read_stts(): Fix stts memory allocation (use i + 1 instead of i).
- https://crbug.com/801821
-
- libavcodec/h264_cabac.c
- decode_cabac_residual_internal(): Limit the value of |j| to avoid integer
- overflow. https://crbug.com/806580
-
libavcodec/mpegaudio_parser.c
mpegaudio_parse(): Drop trailing garbage on flush. Submitted upstream, so
should be present for M67 ffmpeg roll. http://crbug.com/794782
- libavformat/mov.c
- mov_read_trun(): Fix memset size on ctts_data. https://crbug.com/812567
+ libavformat/oggparseflac.c
+ flac_header(): Free extradata before reallocating. https://crbug.com/789835
libavformat/mov.c
- mov_build_index(): Initialize the allocated new ctts_data when constructing
- the normalized 1-1 version. https://crbug.com/816787
+ Check STSC and remove invalid entries. Applied from a patch currently in
+ upstream review at https://patchwork.ffmpeg.org/patch/8051/
+ See https://crbug.com/822547, https://crbug.com/822666, https://crbug.com/823009.
diff --git a/chromium/third_party/ffmpeg/chromium/scripts/build_ffmpeg.py b/chromium/third_party/ffmpeg/chromium/scripts/build_ffmpeg.py
index 384b73e7dfe..eaee3623fc6 100755
--- a/chromium/third_party/ffmpeg/chromium/scripts/build_ffmpeg.py
+++ b/chromium/third_party/ffmpeg/chromium/scripts/build_ffmpeg.py
@@ -534,7 +534,7 @@ def ConfigureAndBuild(target_arch, target_os, host_os, host_arch, parallel_jobs,
'--extra-cflags=--target=arm-linux-gnueabihf',
'--extra-ldflags=--target=arm-linux-gnueabihf',
'--sysroot=' + os.path.join(
- CHROMIUM_ROOT_DIR, 'build/linux/debian_stretch_arm-sysroot'),
+ CHROMIUM_ROOT_DIR, 'build/linux/debian_sid_arm-sysroot'),
'--extra-cflags=-mtune=cortex-a8',
# NOTE: we don't need softfp for this hardware.
'--extra-cflags=-mfloat-abi=hard',
@@ -561,7 +561,7 @@ def ConfigureAndBuild(target_arch, target_os, host_os, host_arch, parallel_jobs,
'--extra-cflags=--target=aarch64-linux-gnu',
'--extra-ldflags=--target=aarch64-linux-gnu',
'--sysroot=' + os.path.join(
- CHROMIUM_ROOT_DIR, 'build/linux/debian_stretch_arm64-sysroot'),
+ CHROMIUM_ROOT_DIR, 'build/linux/debian_sid_arm64-sysroot'),
])
configure_flags['Common'].extend([
'--arch=aarch64',
@@ -589,7 +589,7 @@ def ConfigureAndBuild(target_arch, target_os, host_os, host_arch, parallel_jobs,
'--enable-cross-compile',
'--target-os=linux',
'--sysroot=' + os.path.join(
- CHROMIUM_ROOT_DIR, 'build/linux/debian_stretch_mips-sysroot'),
+ CHROMIUM_ROOT_DIR, 'build/linux/debian_sid_mips-sysroot'),
'--extra-cflags=--target=mipsel-linux-gnu',
'--extra-ldflags=--target=mipsel-linux-gnu',
])
@@ -616,7 +616,7 @@ def ConfigureAndBuild(target_arch, target_os, host_os, host_arch, parallel_jobs,
'--enable-cross-compile',
'--target-os=linux',
'--sysroot=' + os.path.join(
- CHROMIUM_ROOT_DIR, 'build/linux/debian_stretch_mips64el-sysroot'),
+ CHROMIUM_ROOT_DIR, 'build/linux/debian_sid_mips64el-sysroot'),
'--enable-mips64r2',
'--disable-mips64r6',
'--disable-msa',
diff --git a/chromium/third_party/ffmpeg/chromium/scripts/copy_config.sh b/chromium/third_party/ffmpeg/chromium/scripts/copy_config.sh
index beb5863326a..0e5159d6f40 100755
--- a/chromium/third_party/ffmpeg/chromium/scripts/copy_config.sh
+++ b/chromium/third_party/ffmpeg/chromium/scripts/copy_config.sh
@@ -13,7 +13,7 @@ for os in android linux linux-noasm mac win; do
for arch in arm arm-neon arm64 ia32 x64 mipsel mips64el; do
# Don't waste time on non-existent configs, if no config.h then skip.
[ ! -e "build.$arch.$os/$target/config.h" ] && continue
- for f in config.h config.asm libavutil/avconfig.h libavutil/ffversion.h libavcodec/bsf_list.c libavformat/protocol_list.c; do
+ for f in config.h config.asm libavutil/avconfig.h libavutil/ffversion.h libavcodec/bsf_list.c libavcodec/codec_list.c libavcodec/parser_list.c libavformat/demuxer_list.c libavformat/muxer_list.c libavformat/protocol_list.c; do
FROM="build.$arch.$os/$target/$f"
TO="chromium/config/$target/$os/$arch/$f"
if [ "$(dirname $f)" != "" ]; then mkdir -p $(dirname $TO); fi
diff --git a/chromium/third_party/ffmpeg/chromium/scripts/generate_gn.py b/chromium/third_party/ffmpeg/chromium/scripts/generate_gn.py
index 5df1eab5d11..9651c4b5421 100755
--- a/chromium/third_party/ffmpeg/chromium/scripts/generate_gn.py
+++ b/chromium/third_party/ffmpeg/chromium/scripts/generate_gn.py
@@ -614,6 +614,10 @@ IGNORED_INCLUDE_FILES = [
# Chromium generated files
'config.h',
os.path.join('libavcodec', 'bsf_list.c'),
+ os.path.join('libavcodec', 'codec_list.c'),
+ os.path.join('libavcodec', 'parser_list.c'),
+ os.path.join('libavformat', 'demuxer_list.c'),
+ os.path.join('libavformat', 'muxer_list.c'),
os.path.join('libavformat', 'protocol_list.c'),
os.path.join('libavutil', 'avconfig.h'),
os.path.join('libavutil', 'ffversion.h'),
diff --git a/chromium/third_party/ffmpeg/compat/cuda/dynlink_cuda.h b/chromium/third_party/ffmpeg/compat/cuda/dynlink_cuda.h
deleted file mode 100644
index 3a13611ce64..00000000000
--- a/chromium/third_party/ffmpeg/compat/cuda/dynlink_cuda.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * This copyright notice applies to this header file only:
- *
- * Copyright (c) 2016
- *
- * 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.
- */
-
-#if !defined(AV_COMPAT_DYNLINK_CUDA_H) && !defined(CUDA_VERSION)
-#define AV_COMPAT_DYNLINK_CUDA_H
-
-#include <stddef.h>
-
-#define CUDA_VERSION 7050
-
-#if defined(_WIN32) || defined(__CYGWIN__)
-#define CUDAAPI __stdcall
-#else
-#define CUDAAPI
-#endif
-
-#define CU_CTX_SCHED_BLOCKING_SYNC 4
-
-typedef int CUdevice;
-typedef void* CUarray;
-typedef void* CUcontext;
-typedef void* CUstream;
-#if defined(__x86_64) || defined(AMD64) || defined(_M_AMD64)
-typedef unsigned long long CUdeviceptr;
-#else
-typedef unsigned int CUdeviceptr;
-#endif
-
-typedef enum cudaError_enum {
- CUDA_SUCCESS = 0
-} CUresult;
-
-typedef enum CUmemorytype_enum {
- CU_MEMORYTYPE_HOST = 1,
- CU_MEMORYTYPE_DEVICE = 2
-} CUmemorytype;
-
-typedef struct CUDA_MEMCPY2D_st {
- size_t srcXInBytes;
- size_t srcY;
- CUmemorytype srcMemoryType;
- const void *srcHost;
- CUdeviceptr srcDevice;
- CUarray srcArray;
- size_t srcPitch;
-
- size_t dstXInBytes;
- size_t dstY;
- CUmemorytype dstMemoryType;
- void *dstHost;
- CUdeviceptr dstDevice;
- CUarray dstArray;
- size_t dstPitch;
-
- size_t WidthInBytes;
- size_t Height;
-} CUDA_MEMCPY2D;
-
-typedef CUresult CUDAAPI tcuInit(unsigned int Flags);
-typedef CUresult CUDAAPI tcuDeviceGetCount(int *count);
-typedef CUresult CUDAAPI tcuDeviceGet(CUdevice *device, int ordinal);
-typedef CUresult CUDAAPI tcuDeviceGetName(char *name, int len, CUdevice dev);
-typedef CUresult CUDAAPI tcuDeviceComputeCapability(int *major, int *minor, CUdevice dev);
-typedef CUresult CUDAAPI tcuCtxCreate_v2(CUcontext *pctx, unsigned int flags, CUdevice dev);
-typedef CUresult CUDAAPI tcuCtxPushCurrent_v2(CUcontext *pctx);
-typedef CUresult CUDAAPI tcuCtxPopCurrent_v2(CUcontext *pctx);
-typedef CUresult CUDAAPI tcuCtxDestroy_v2(CUcontext ctx);
-typedef CUresult CUDAAPI tcuMemAlloc_v2(CUdeviceptr *dptr, size_t bytesize);
-typedef CUresult CUDAAPI tcuMemFree_v2(CUdeviceptr dptr);
-typedef CUresult CUDAAPI tcuMemcpy2D_v2(const CUDA_MEMCPY2D *pcopy);
-typedef CUresult CUDAAPI tcuGetErrorName(CUresult error, const char** pstr);
-typedef CUresult CUDAAPI tcuGetErrorString(CUresult error, const char** pstr);
-
-#endif
diff --git a/chromium/third_party/ffmpeg/compat/cuda/dynlink_cuviddec.h b/chromium/third_party/ffmpeg/compat/cuda/dynlink_cuviddec.h
deleted file mode 100644
index 4af78a186ba..00000000000
--- a/chromium/third_party/ffmpeg/compat/cuda/dynlink_cuviddec.h
+++ /dev/null
@@ -1,886 +0,0 @@
-/*
- * This copyright notice applies to this header file only:
- *
- * Copyright (c) 2010-2017 NVIDIA Corporation
- *
- * 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.
- */
-
-/*****************************************************************************************************/
-//! \file cuviddec.h
-//! NVDECODE API provides video decoding interface to NVIDIA GPU devices.
-//! \date 2015-2017
-//! This file contains constants, structure definitions and function prototypes used for decoding.
-/*****************************************************************************************************/
-
-#if !defined(__CUDA_VIDEO_H__)
-#define __CUDA_VIDEO_H__
-
-#if defined(_WIN64) || defined(__LP64__) || defined(__x86_64) || defined(AMD64) || defined(_M_AMD64)
-#if (CUDA_VERSION >= 3020) && (!defined(CUDA_FORCE_API_VERSION) || (CUDA_FORCE_API_VERSION >= 3020))
-#define __CUVID_DEVPTR64
-#endif
-#endif
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-#if defined(__CYGWIN__)
-typedef unsigned int tcu_ulong;
-#else
-typedef unsigned long tcu_ulong;
-#endif
-
-typedef void *CUvideodecoder;
-typedef struct _CUcontextlock_st *CUvideoctxlock;
-
-/*********************************************************************************/
-//! \enum cudaVideoCodec
-//! Video codec enums
-//! These enums are used in CUVIDDECODECREATEINFO and CUVIDDECODECAPS structures
-/*********************************************************************************/
-typedef enum cudaVideoCodec_enum {
- cudaVideoCodec_MPEG1=0, /**< MPEG1 */
- cudaVideoCodec_MPEG2, /**< MPEG2 */
- cudaVideoCodec_MPEG4, /**< MPEG4 */
- cudaVideoCodec_VC1, /**< VC1 */
- cudaVideoCodec_H264, /**< H264 */
- cudaVideoCodec_JPEG, /**< JPEG */
- cudaVideoCodec_H264_SVC, /**< H264-SVC */
- cudaVideoCodec_H264_MVC, /**< H264-MVC */
- cudaVideoCodec_HEVC, /**< HEVC */
- cudaVideoCodec_VP8, /**< VP8 */
- cudaVideoCodec_VP9, /**< VP9 */
- cudaVideoCodec_NumCodecs, /**< Max codecs */
- // Uncompressed YUV
- cudaVideoCodec_YUV420 = (('I'<<24)|('Y'<<16)|('U'<<8)|('V')), /**< Y,U,V (4:2:0) */
- cudaVideoCodec_YV12 = (('Y'<<24)|('V'<<16)|('1'<<8)|('2')), /**< Y,V,U (4:2:0) */
- cudaVideoCodec_NV12 = (('N'<<24)|('V'<<16)|('1'<<8)|('2')), /**< Y,UV (4:2:0) */
- cudaVideoCodec_YUYV = (('Y'<<24)|('U'<<16)|('Y'<<8)|('V')), /**< YUYV/YUY2 (4:2:2) */
- cudaVideoCodec_UYVY = (('U'<<24)|('Y'<<16)|('V'<<8)|('Y')) /**< UYVY (4:2:2) */
-} cudaVideoCodec;
-
-/*********************************************************************************/
-//! \enum cudaVideoSurfaceFormat
-//! Video surface format enums used for output format of decoded output
-//! These enums are used in CUVIDDECODECREATEINFO structure
-/*********************************************************************************/
-typedef enum cudaVideoSurfaceFormat_enum {
- cudaVideoSurfaceFormat_NV12=0, /**< NV12 format */
- cudaVideoSurfaceFormat_P016=1 /**< 16 bit semiplaner format. Can be used for 10 bit(6LSB bits 0),
- 12 bit (4LSB bits 0) */
-} cudaVideoSurfaceFormat;
-
-/******************************************************************************************************************/
-//! \enum cudaVideoDeinterlaceMode
-//! Deinterlacing mode enums
-//! These enums are used in CUVIDDECODECREATEINFO structure
-//! Use cudaVideoDeinterlaceMode_Weave for progressive content and for content that doesn't need deinterlacing
-//! cudaVideoDeinterlaceMode_Adaptive needs more video memory than other DImodes
-/******************************************************************************************************************/
-typedef enum cudaVideoDeinterlaceMode_enum {
- cudaVideoDeinterlaceMode_Weave=0, /**< Weave both fields (no deinterlacing) */
- cudaVideoDeinterlaceMode_Bob, /**< Drop one field */
- cudaVideoDeinterlaceMode_Adaptive /**< Adaptive deinterlacing */
-} cudaVideoDeinterlaceMode;
-
-/**************************************************************************************************************/
-//! \enum cudaVideoChromaFormat
-//! Chroma format enums
-//! These enums are used in CUVIDDECODECREATEINFO and CUVIDDECODECAPS structures
-//! JPEG supports Monochrome, YUV 4:2:0, YUV 4:2:2 and YUV 4:4:4 chroma formats.
-//! H264, HEVC, VP9, VP8, VC1, MPEG1, MPEG2 and MPEG4 support YUV 4:2:0 chroma format only.
-/**************************************************************************************************************/
-typedef enum cudaVideoChromaFormat_enum {
- cudaVideoChromaFormat_Monochrome=0, /**< MonoChrome */
- cudaVideoChromaFormat_420, /**< YUV 4:2:0 */
- cudaVideoChromaFormat_422, /**< YUV 4:2:2 */
- cudaVideoChromaFormat_444 /**< YUV 4:4:4 */
-} cudaVideoChromaFormat;
-
-/*************************************************************************************************************/
-//! \enum cudaVideoCreateFlags
-//! Decoder flag enums to select preferred decode path
-//! cudaVideoCreate_Default and cudaVideoCreate_PreferCUVID are most optimized, use these whenever possible
-/*************************************************************************************************************/
-typedef enum cudaVideoCreateFlags_enum {
- cudaVideoCreate_Default = 0x00, /**< Default operation mode: use dedicated video engines */
- cudaVideoCreate_PreferCUDA = 0x01, /**< Use CUDA-based decoder (requires valid vidLock object for multi-threading) */
- cudaVideoCreate_PreferDXVA = 0x02, /**< Go through DXVA internally if possible (requires D3D9 interop) */
- cudaVideoCreate_PreferCUVID = 0x04 /**< Use dedicated video engines directly */
-} cudaVideoCreateFlags;
-
-
-/**************************************************************************************************************/
-//! \struct CUVIDDECODECAPS;
-//! This structure is used in cuvidGetDecoderCaps API
-/**************************************************************************************************************/
-typedef struct _CUVIDDECODECAPS
-{
- cudaVideoCodec eCodecType; /**< IN: cudaVideoCodec_XXX */
- cudaVideoChromaFormat eChromaFormat; /**< IN: cudaVideoChromaFormat_XXX */
- unsigned int nBitDepthMinus8; /**< IN: The Value "BitDepth minus 8" */
- unsigned int reserved1[3]; /**< Reserved for future use - set to zero */
-
- unsigned char bIsSupported; /**< OUT: 1 if codec supported, 0 if not supported */
- unsigned char reserved2[3]; /**< Reserved for future use - set to zero */
- unsigned int nMaxWidth; /**< OUT: Max supported coded width in pixels */
- unsigned int nMaxHeight; /**< OUT: Max supported coded height in pixels */
- unsigned int nMaxMBCount; /**< OUT: Max supported macroblock count
- CodedWidth*CodedHeight/256 must be <= nMaxMBCount */
- unsigned short nMinWidth; /**< OUT: Min supported coded width in pixels */
- unsigned short nMinHeight; /**< OUT: Min supported coded height in pixels */
- unsigned int reserved3[11]; /**< Reserved for future use - set to zero */
-} CUVIDDECODECAPS;
-
-/**************************************************************************************************************/
-//! \struct CUVIDDECODECREATEINFO
-//! This structure is used in cuvidCreateDecoder API
-/**************************************************************************************************************/
-typedef struct _CUVIDDECODECREATEINFO
-{
- tcu_ulong ulWidth; /**< IN: Coded sequence width in pixels */
- tcu_ulong ulHeight; /**< IN: Coded sequence height in pixels */
- tcu_ulong ulNumDecodeSurfaces; /**< IN: Maximum number of internal decode surfaces */
- cudaVideoCodec CodecType; /**< IN: cudaVideoCodec_XXX */
- cudaVideoChromaFormat ChromaFormat; /**< IN: cudaVideoChromaFormat_XXX */
- tcu_ulong ulCreationFlags; /**< IN: Decoder creation flags (cudaVideoCreateFlags_XXX) */
- tcu_ulong bitDepthMinus8; /**< IN: The value "BitDepth minus 8" */
- tcu_ulong ulIntraDecodeOnly; /**< IN: Set 1 only if video has all intra frames (default value is 0). This will
- optimize video memory for Intra frames only decoding. The support is limited
- to specific codecs(H264 rightnow), the flag will be ignored for codecs which
- are not supported. However decoding might fail if the flag is enabled in case
- of supported codecs for regular bit streams having P and/or B frames. */
- tcu_ulong Reserved1[3]; /**< Reserved for future use - set to zero */
- /**
- * IN: area of the frame that should be displayed
- */
- struct {
- short left;
- short top;
- short right;
- short bottom;
- } display_area;
-
- cudaVideoSurfaceFormat OutputFormat; /**< IN: cudaVideoSurfaceFormat_XXX */
- cudaVideoDeinterlaceMode DeinterlaceMode; /**< IN: cudaVideoDeinterlaceMode_XXX */
- tcu_ulong ulTargetWidth; /**< IN: Post-processed output width (Should be aligned to 2) */
- tcu_ulong ulTargetHeight; /**< IN: Post-processed output height (Should be aligbed to 2) */
- tcu_ulong ulNumOutputSurfaces; /**< IN: Maximum number of output surfaces simultaneously mapped */
- CUvideoctxlock vidLock; /**< IN: If non-NULL, context lock used for synchronizing ownership of
- the cuda context. Needed for cudaVideoCreate_PreferCUDA decode */
- /**
- * IN: target rectangle in the output frame (for aspect ratio conversion)
- * if a null rectangle is specified, {0,0,ulTargetWidth,ulTargetHeight} will be used
- */
- struct {
- short left;
- short top;
- short right;
- short bottom;
- } target_rect;
- tcu_ulong Reserved2[5]; /**< Reserved for future use - set to zero */
-} CUVIDDECODECREATEINFO;
-
-/*********************************************************/
-//! \struct CUVIDH264DPBENTRY
-//! H.264 DPB entry
-//! This structure is used in CUVIDH264PICPARAMS structure
-/*********************************************************/
-typedef struct _CUVIDH264DPBENTRY
-{
- int PicIdx; /**< picture index of reference frame */
- int FrameIdx; /**< frame_num(short-term) or LongTermFrameIdx(long-term) */
- int is_long_term; /**< 0=short term reference, 1=long term reference */
- int not_existing; /**< non-existing reference frame (corresponding PicIdx should be set to -1) */
- int used_for_reference; /**< 0=unused, 1=top_field, 2=bottom_field, 3=both_fields */
- int FieldOrderCnt[2]; /**< field order count of top and bottom fields */
-} CUVIDH264DPBENTRY;
-
-/************************************************************/
-//! \struct CUVIDH264MVCEXT
-//! H.264 MVC picture parameters ext
-//! This structure is used in CUVIDH264PICPARAMS structure
-/************************************************************/
-typedef struct _CUVIDH264MVCEXT
-{
- int num_views_minus1; /**< Max number of coded views minus 1 in video : Range - 0 to 1023 */
- int view_id; /**< view identifier */
- unsigned char inter_view_flag; /**< 1 if used for inter-view prediction, 0 if not */
- unsigned char num_inter_view_refs_l0; /**< number of inter-view ref pics in RefPicList0 */
- unsigned char num_inter_view_refs_l1; /**< number of inter-view ref pics in RefPicList1 */
- unsigned char MVCReserved8Bits; /**< Reserved bits */
- int InterViewRefsL0[16]; /**< view id of the i-th view component for inter-view prediction in RefPicList0 */
- int InterViewRefsL1[16]; /**< view id of the i-th view component for inter-view prediction in RefPicList1 */
-} CUVIDH264MVCEXT;
-
-/*********************************************************/
-//! \struct CUVIDH264SVCEXT
-//! H.264 SVC picture parameters ext
-//! This structure is used in CUVIDH264PICPARAMS structure
-/*********************************************************/
-typedef struct _CUVIDH264SVCEXT
-{
- unsigned char profile_idc;
- unsigned char level_idc;
- unsigned char DQId;
- unsigned char DQIdMax;
- unsigned char disable_inter_layer_deblocking_filter_idc;
- unsigned char ref_layer_chroma_phase_y_plus1;
- signed char inter_layer_slice_alpha_c0_offset_div2;
- signed char inter_layer_slice_beta_offset_div2;
-
- unsigned short DPBEntryValidFlag;
- unsigned char inter_layer_deblocking_filter_control_present_flag;
- unsigned char extended_spatial_scalability_idc;
- unsigned char adaptive_tcoeff_level_prediction_flag;
- unsigned char slice_header_restriction_flag;
- unsigned char chroma_phase_x_plus1_flag;
- unsigned char chroma_phase_y_plus1;
-
- unsigned char tcoeff_level_prediction_flag;
- unsigned char constrained_intra_resampling_flag;
- unsigned char ref_layer_chroma_phase_x_plus1_flag;
- unsigned char store_ref_base_pic_flag;
- unsigned char Reserved8BitsA;
- unsigned char Reserved8BitsB;
-
- short scaled_ref_layer_left_offset;
- short scaled_ref_layer_top_offset;
- short scaled_ref_layer_right_offset;
- short scaled_ref_layer_bottom_offset;
- unsigned short Reserved16Bits;
- struct _CUVIDPICPARAMS *pNextLayer; /**< Points to the picparams for the next layer to be decoded.
- Linked list ends at the target layer. */
- int bRefBaseLayer; /**< whether to store ref base pic */
-} CUVIDH264SVCEXT;
-
-/******************************************************/
-//! \struct CUVIDH264PICPARAMS
-//! H.264 picture parameters
-//! This structure is used in CUVIDPICPARAMS structure
-/******************************************************/
-typedef struct _CUVIDH264PICPARAMS
-{
- // SPS
- int log2_max_frame_num_minus4;
- int pic_order_cnt_type;
- int log2_max_pic_order_cnt_lsb_minus4;
- int delta_pic_order_always_zero_flag;
- int frame_mbs_only_flag;
- int direct_8x8_inference_flag;
- int num_ref_frames; // NOTE: shall meet level 4.1 restrictions
- unsigned char residual_colour_transform_flag;
- unsigned char bit_depth_luma_minus8; // Must be 0 (only 8-bit supported)
- unsigned char bit_depth_chroma_minus8; // Must be 0 (only 8-bit supported)
- unsigned char qpprime_y_zero_transform_bypass_flag;
- // PPS
- int entropy_coding_mode_flag;
- int pic_order_present_flag;
- int num_ref_idx_l0_active_minus1;
- int num_ref_idx_l1_active_minus1;
- int weighted_pred_flag;
- int weighted_bipred_idc;
- int pic_init_qp_minus26;
- int deblocking_filter_control_present_flag;
- int redundant_pic_cnt_present_flag;
- int transform_8x8_mode_flag;
- int MbaffFrameFlag;
- int constrained_intra_pred_flag;
- int chroma_qp_index_offset;
- int second_chroma_qp_index_offset;
- int ref_pic_flag;
- int frame_num;
- int CurrFieldOrderCnt[2];
- // DPB
- CUVIDH264DPBENTRY dpb[16]; // List of reference frames within the DPB
- // Quantization Matrices (raster-order)
- unsigned char WeightScale4x4[6][16];
- unsigned char WeightScale8x8[2][64];
- // FMO/ASO
- unsigned char fmo_aso_enable;
- unsigned char num_slice_groups_minus1;
- unsigned char slice_group_map_type;
- signed char pic_init_qs_minus26;
- unsigned int slice_group_change_rate_minus1;
- union
- {
- unsigned long long slice_group_map_addr;
- const unsigned char *pMb2SliceGroupMap;
- } fmo;
- unsigned int Reserved[12];
- // SVC/MVC
- union
- {
- CUVIDH264MVCEXT mvcext;
- CUVIDH264SVCEXT svcext;
- };
-} CUVIDH264PICPARAMS;
-
-
-/********************************************************/
-//! \struct CUVIDMPEG2PICPARAMS
-//! MPEG-2 picture parameters
-//! This structure is used in CUVIDPICPARAMS structure
-/********************************************************/
-typedef struct _CUVIDMPEG2PICPARAMS
-{
- int ForwardRefIdx; // Picture index of forward reference (P/B-frames)
- int BackwardRefIdx; // Picture index of backward reference (B-frames)
- int picture_coding_type;
- int full_pel_forward_vector;
- int full_pel_backward_vector;
- int f_code[2][2];
- int intra_dc_precision;
- int frame_pred_frame_dct;
- int concealment_motion_vectors;
- int q_scale_type;
- int intra_vlc_format;
- int alternate_scan;
- int top_field_first;
- // Quantization matrices (raster order)
- unsigned char QuantMatrixIntra[64];
- unsigned char QuantMatrixInter[64];
-} CUVIDMPEG2PICPARAMS;
-
-// MPEG-4 has VOP types instead of Picture types
-#define I_VOP 0
-#define P_VOP 1
-#define B_VOP 2
-#define S_VOP 3
-
-/*******************************************************/
-//! \struct CUVIDMPEG4PICPARAMS
-//! MPEG-4 picture parameters
-//! This structure is used in CUVIDPICPARAMS structure
-/*******************************************************/
-typedef struct _CUVIDMPEG4PICPARAMS
-{
- int ForwardRefIdx; // Picture index of forward reference (P/B-frames)
- int BackwardRefIdx; // Picture index of backward reference (B-frames)
- // VOL
- int video_object_layer_width;
- int video_object_layer_height;
- int vop_time_increment_bitcount;
- int top_field_first;
- int resync_marker_disable;
- int quant_type;
- int quarter_sample;
- int short_video_header;
- int divx_flags;
- // VOP
- int vop_coding_type;
- int vop_coded;
- int vop_rounding_type;
- int alternate_vertical_scan_flag;
- int interlaced;
- int vop_fcode_forward;
- int vop_fcode_backward;
- int trd[2];
- int trb[2];
- // Quantization matrices (raster order)
- unsigned char QuantMatrixIntra[64];
- unsigned char QuantMatrixInter[64];
- int gmc_enabled;
-} CUVIDMPEG4PICPARAMS;
-
-/********************************************************/
-//! \struct CUVIDVC1PICPARAMS
-//! VC1 picture parameters
-//! This structure is used in CUVIDPICPARAMS structure
-/********************************************************/
-typedef struct _CUVIDVC1PICPARAMS
-{
- int ForwardRefIdx; /**< Picture index of forward reference (P/B-frames) */
- int BackwardRefIdx; /**< Picture index of backward reference (B-frames) */
- int FrameWidth; /**< Actual frame width */
- int FrameHeight; /**< Actual frame height */
- // PICTURE
- int intra_pic_flag; /**< Set to 1 for I,BI frames */
- int ref_pic_flag; /**< Set to 1 for I,P frames */
- int progressive_fcm; /**< Progressive frame */
- // SEQUENCE
- int profile;
- int postprocflag;
- int pulldown;
- int interlace;
- int tfcntrflag;
- int finterpflag;
- int psf;
- int multires;
- int syncmarker;
- int rangered;
- int maxbframes;
- // ENTRYPOINT
- int panscan_flag;
- int refdist_flag;
- int extended_mv;
- int dquant;
- int vstransform;
- int loopfilter;
- int fastuvmc;
- int overlap;
- int quantizer;
- int extended_dmv;
- int range_mapy_flag;
- int range_mapy;
- int range_mapuv_flag;
- int range_mapuv;
- int rangeredfrm; // range reduction state
-} CUVIDVC1PICPARAMS;
-
-/***********************************************************/
-//! \struct CUVIDJPEGPICPARAMS
-//! JPEG picture parameters
-//! This structure is used in CUVIDPICPARAMS structure
-/***********************************************************/
-typedef struct _CUVIDJPEGPICPARAMS
-{
- int Reserved;
-} CUVIDJPEGPICPARAMS;
-
-
-/*******************************************************/
-//! \struct CUVIDHEVCPICPARAMS
-//! HEVC picture parameters
-//! This structure is used in CUVIDPICPARAMS structure
-/*******************************************************/
-typedef struct _CUVIDHEVCPICPARAMS
-{
- // sps
- int pic_width_in_luma_samples;
- int pic_height_in_luma_samples;
- unsigned char log2_min_luma_coding_block_size_minus3;
- unsigned char log2_diff_max_min_luma_coding_block_size;
- unsigned char log2_min_transform_block_size_minus2;
- unsigned char log2_diff_max_min_transform_block_size;
- unsigned char pcm_enabled_flag;
- unsigned char log2_min_pcm_luma_coding_block_size_minus3;
- unsigned char log2_diff_max_min_pcm_luma_coding_block_size;
- unsigned char pcm_sample_bit_depth_luma_minus1;
-
- unsigned char pcm_sample_bit_depth_chroma_minus1;
- unsigned char pcm_loop_filter_disabled_flag;
- unsigned char strong_intra_smoothing_enabled_flag;
- unsigned char max_transform_hierarchy_depth_intra;
- unsigned char max_transform_hierarchy_depth_inter;
- unsigned char amp_enabled_flag;
- unsigned char separate_colour_plane_flag;
- unsigned char log2_max_pic_order_cnt_lsb_minus4;
-
- unsigned char num_short_term_ref_pic_sets;
- unsigned char long_term_ref_pics_present_flag;
- unsigned char num_long_term_ref_pics_sps;
- unsigned char sps_temporal_mvp_enabled_flag;
- unsigned char sample_adaptive_offset_enabled_flag;
- unsigned char scaling_list_enable_flag;
- unsigned char IrapPicFlag;
- unsigned char IdrPicFlag;
-
- unsigned char bit_depth_luma_minus8;
- unsigned char bit_depth_chroma_minus8;
- unsigned char reserved1[14];
-
- // pps
- unsigned char dependent_slice_segments_enabled_flag;
- unsigned char slice_segment_header_extension_present_flag;
- unsigned char sign_data_hiding_enabled_flag;
- unsigned char cu_qp_delta_enabled_flag;
- unsigned char diff_cu_qp_delta_depth;
- signed char init_qp_minus26;
- signed char pps_cb_qp_offset;
- signed char pps_cr_qp_offset;
-
- unsigned char constrained_intra_pred_flag;
- unsigned char weighted_pred_flag;
- unsigned char weighted_bipred_flag;
- unsigned char transform_skip_enabled_flag;
- unsigned char transquant_bypass_enabled_flag;
- unsigned char entropy_coding_sync_enabled_flag;
- unsigned char log2_parallel_merge_level_minus2;
- unsigned char num_extra_slice_header_bits;
-
- unsigned char loop_filter_across_tiles_enabled_flag;
- unsigned char loop_filter_across_slices_enabled_flag;
- unsigned char output_flag_present_flag;
- unsigned char num_ref_idx_l0_default_active_minus1;
- unsigned char num_ref_idx_l1_default_active_minus1;
- unsigned char lists_modification_present_flag;
- unsigned char cabac_init_present_flag;
- unsigned char pps_slice_chroma_qp_offsets_present_flag;
-
- unsigned char deblocking_filter_override_enabled_flag;
- unsigned char pps_deblocking_filter_disabled_flag;
- signed char pps_beta_offset_div2;
- signed char pps_tc_offset_div2;
- unsigned char tiles_enabled_flag;
- unsigned char uniform_spacing_flag;
- unsigned char num_tile_columns_minus1;
- unsigned char num_tile_rows_minus1;
-
- unsigned short column_width_minus1[21];
- unsigned short row_height_minus1[21];
- unsigned int reserved3[15];
-
- // RefPicSets
- int NumBitsForShortTermRPSInSlice;
- int NumDeltaPocsOfRefRpsIdx;
- int NumPocTotalCurr;
- int NumPocStCurrBefore;
- int NumPocStCurrAfter;
- int NumPocLtCurr;
- int CurrPicOrderCntVal;
- int RefPicIdx[16]; // [refpic] Indices of valid reference pictures (-1 if unused for reference)
- int PicOrderCntVal[16]; // [refpic]
- unsigned char IsLongTerm[16]; // [refpic] 0=not a long-term reference, 1=long-term reference
- unsigned char RefPicSetStCurrBefore[8]; // [0..NumPocStCurrBefore-1] -> refpic (0..15)
- unsigned char RefPicSetStCurrAfter[8]; // [0..NumPocStCurrAfter-1] -> refpic (0..15)
- unsigned char RefPicSetLtCurr[8]; // [0..NumPocLtCurr-1] -> refpic (0..15)
- unsigned char RefPicSetInterLayer0[8];
- unsigned char RefPicSetInterLayer1[8];
- unsigned int reserved4[12];
-
- // scaling lists (diag order)
- unsigned char ScalingList4x4[6][16]; // [matrixId][i]
- unsigned char ScalingList8x8[6][64]; // [matrixId][i]
- unsigned char ScalingList16x16[6][64]; // [matrixId][i]
- unsigned char ScalingList32x32[2][64]; // [matrixId][i]
- unsigned char ScalingListDCCoeff16x16[6]; // [matrixId]
- unsigned char ScalingListDCCoeff32x32[2]; // [matrixId]
-} CUVIDHEVCPICPARAMS;
-
-
-/***********************************************************/
-//! \struct CUVIDVP8PICPARAMS
-//! VP8 picture parameters
-//! This structure is used in CUVIDPICPARAMS structure
-/***********************************************************/
-typedef struct _CUVIDVP8PICPARAMS
-{
- int width;
- int height;
- unsigned int first_partition_size;
- //Frame Indexes
- unsigned char LastRefIdx;
- unsigned char GoldenRefIdx;
- unsigned char AltRefIdx;
- union {
- struct {
- unsigned char frame_type : 1; /**< 0 = KEYFRAME, 1 = INTERFRAME */
- unsigned char version : 3;
- unsigned char show_frame : 1;
- unsigned char update_mb_segmentation_data : 1; /**< Must be 0 if segmentation is not enabled */
- unsigned char Reserved2Bits : 2;
- };
- unsigned char wFrameTagFlags;
- };
- unsigned char Reserved1[4];
- unsigned int Reserved2[3];
-} CUVIDVP8PICPARAMS;
-
-/***********************************************************/
-//! \struct CUVIDVP9PICPARAMS
-//! VP9 picture parameters
-//! This structure is used in CUVIDPICPARAMS structure
-/***********************************************************/
-typedef struct _CUVIDVP9PICPARAMS
-{
- unsigned int width;
- unsigned int height;
-
- //Frame Indices
- unsigned char LastRefIdx;
- unsigned char GoldenRefIdx;
- unsigned char AltRefIdx;
- unsigned char colorSpace;
-
- unsigned short profile : 3;
- unsigned short frameContextIdx : 2;
- unsigned short frameType : 1;
- unsigned short showFrame : 1;
- unsigned short errorResilient : 1;
- unsigned short frameParallelDecoding : 1;
- unsigned short subSamplingX : 1;
- unsigned short subSamplingY : 1;
- unsigned short intraOnly : 1;
- unsigned short allow_high_precision_mv : 1;
- unsigned short refreshEntropyProbs : 1;
- unsigned short reserved2Bits : 2;
-
- unsigned short reserved16Bits;
-
- unsigned char refFrameSignBias[4];
-
- unsigned char bitDepthMinus8Luma;
- unsigned char bitDepthMinus8Chroma;
- unsigned char loopFilterLevel;
- unsigned char loopFilterSharpness;
-
- unsigned char modeRefLfEnabled;
- unsigned char log2_tile_columns;
- unsigned char log2_tile_rows;
-
- unsigned char segmentEnabled : 1;
- unsigned char segmentMapUpdate : 1;
- unsigned char segmentMapTemporalUpdate : 1;
- unsigned char segmentFeatureMode : 1;
- unsigned char reserved4Bits : 4;
-
-
- unsigned char segmentFeatureEnable[8][4];
- short segmentFeatureData[8][4];
- unsigned char mb_segment_tree_probs[7];
- unsigned char segment_pred_probs[3];
- unsigned char reservedSegment16Bits[2];
-
- int qpYAc;
- int qpYDc;
- int qpChDc;
- int qpChAc;
-
- unsigned int activeRefIdx[3];
- unsigned int resetFrameContext;
- unsigned int mcomp_filter_type;
- unsigned int mbRefLfDelta[4];
- unsigned int mbModeLfDelta[2];
- unsigned int frameTagSize;
- unsigned int offsetToDctParts;
- unsigned int reserved128Bits[4];
-
-} CUVIDVP9PICPARAMS;
-
-
-/******************************************************************************************/
-//! \struct CUVIDPICPARAMS
-//! Picture parameters for decoding
-//! This structure is used in cuvidDecodePicture API
-//! IN for cuvidDecodePicture
-/******************************************************************************************/
-typedef struct _CUVIDPICPARAMS
-{
- int PicWidthInMbs; /**< IN: Coded frame size in macroblocks */
- int FrameHeightInMbs; /**< IN: Coded frame height in macroblocks */
- int CurrPicIdx; /**< IN: Output index of the current picture */
- int field_pic_flag; /**< IN: 0=frame picture, 1=field picture */
- int bottom_field_flag; /**< IN: 0=top field, 1=bottom field (ignored if field_pic_flag=0) */
- int second_field; /**< IN: Second field of a complementary field pair */
- // Bitstream data
- unsigned int nBitstreamDataLen; /**< IN: Number of bytes in bitstream data buffer */
- const unsigned char *pBitstreamData; /**< IN: Ptr to bitstream data for this picture (slice-layer) */
- unsigned int nNumSlices; /**< IN: Number of slices in this picture */
- const unsigned int *pSliceDataOffsets; /**< IN: nNumSlices entries, contains offset of each slice within
- the bitstream data buffer */
- int ref_pic_flag; /**< IN: This picture is a reference picture */
- int intra_pic_flag; /**< IN: This picture is entirely intra coded */
- unsigned int Reserved[30]; /**< Reserved for future use */
- // IN: Codec-specific data
- union {
- CUVIDMPEG2PICPARAMS mpeg2; /**< Also used for MPEG-1 */
- CUVIDH264PICPARAMS h264;
- CUVIDVC1PICPARAMS vc1;
- CUVIDMPEG4PICPARAMS mpeg4;
- CUVIDJPEGPICPARAMS jpeg;
- CUVIDHEVCPICPARAMS hevc;
- CUVIDVP8PICPARAMS vp8;
- CUVIDVP9PICPARAMS vp9;
- unsigned int CodecReserved[1024];
- } CodecSpecific;
-} CUVIDPICPARAMS;
-
-
-/******************************************************/
-//! \struct CUVIDPROCPARAMS
-//! Picture parameters for postprocessing
-//! This structure is used in cuvidMapVideoFrame API
-/******************************************************/
-typedef struct _CUVIDPROCPARAMS
-{
- int progressive_frame; /**< IN: Input is progressive (deinterlace_mode will be ignored) */
- int second_field; /**< IN: Output the second field (ignored if deinterlace mode is Weave) */
- int top_field_first; /**< IN: Input frame is top field first (1st field is top, 2nd field is bottom) */
- int unpaired_field; /**< IN: Input only contains one field (2nd field is invalid) */
- // The fields below are used for raw YUV input
- unsigned int reserved_flags; /**< Reserved for future use (set to zero) */
- unsigned int reserved_zero; /**< Reserved (set to zero) */
- unsigned long long raw_input_dptr; /**< IN: Input CUdeviceptr for raw YUV extensions */
- unsigned int raw_input_pitch; /**< IN: pitch in bytes of raw YUV input (should be aligned appropriately) */
- unsigned int raw_input_format; /**< IN: Input YUV format (cudaVideoCodec_enum) */
- unsigned long long raw_output_dptr; /**< IN: Output CUdeviceptr for raw YUV extensions */
- unsigned int raw_output_pitch; /**< IN: pitch in bytes of raw YUV output (should be aligned appropriately) */
- unsigned int Reserved1; /**< Reserved for future use (set to zero) */
- CUstream output_stream; /**< IN: stream object used by cuvidMapVideoFrame */
- unsigned int Reserved[46]; /**< Reserved for future use (set to zero) */
- void *Reserved2[2]; /**< Reserved for future use (set to zero) */
-} CUVIDPROCPARAMS;
-
-
-/***********************************************************************************************************/
-//! VIDEO_DECODER
-//!
-//! In order to minimize decode latencies, there should be always at least 2 pictures in the decode
-//! queue at any time, in order to make sure that all decode engines are always busy.
-//!
-//! Overall data flow:
-//! - cuvidGetDecoderCaps(...)
-//! - cuvidCreateDecoder(...)
-//! - For each picture:
-//! + cuvidDecodePicture(N)
-//! + cuvidMapVideoFrame(N-4)
-//! + do some processing in cuda
-//! + cuvidUnmapVideoFrame(N-4)
-//! + cuvidDecodePicture(N+1)
-//! + cuvidMapVideoFrame(N-3)
-//! + ...
-//! - cuvidDestroyDecoder(...)
-//!
-//! NOTE:
-//! - When the cuda context is created from a D3D device, the D3D device must also be created
-//! with the D3DCREATE_MULTITHREADED flag.
-//! - There is a limit to how many pictures can be mapped simultaneously (ulNumOutputSurfaces)
-//! - cuvidDecodePicture may block the calling thread if there are too many pictures pending
-//! in the decode queue
-/***********************************************************************************************************/
-
-
-/**********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidGetDecoderCaps(CUVIDDECODECAPS *pdc)
-//! Queries decode capabilities of NVDEC-HW based on CodecType, ChromaFormat and BitDepthMinus8 parameters.
-//! 1. Application fills IN parameters CodecType, ChromaFormat and BitDepthMinus8 of CUVIDDECODECAPS structure
-//! 2. On calling cuvidGetDecoderCaps, driver fills OUT parameters if the IN parameters are supported
-//! If IN parameters passed to the driver are not supported by NVDEC-HW, then all OUT params are set to 0.
-//! E.g. on Geforce GTX 960:
-//! App fills - eCodecType = cudaVideoCodec_H264; eChromaFormat = cudaVideoChromaFormat_420; nBitDepthMinus8 = 0;
-//! Given IN parameters are supported, hence driver fills: bIsSupported = 1; nMinWidth = 48; nMinHeight = 16;
-//! nMaxWidth = 4096; nMaxHeight = 4096; nMaxMBCount = 65536;
-//! CodedWidth*CodedHeight/256 must be less than or equal to nMaxMBCount
-/**********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidGetDecoderCaps(CUVIDDECODECAPS *pdc);
-
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidCreateDecoder(CUvideodecoder *phDecoder, CUVIDDECODECREATEINFO *pdci)
-//! Create the decoder object based on pdci. A handle to the created decoder is returned
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidCreateDecoder(CUvideodecoder *phDecoder, CUVIDDECODECREATEINFO *pdci);
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidDestroyDecoder(CUvideodecoder hDecoder)
-//! Destroy the decoder object.
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidDestroyDecoder(CUvideodecoder hDecoder);
-
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidDecodePicture(CUvideodecoder hDecoder, CUVIDPICPARAMS *pPicParams)
-//! Decode a single picture (field or frame)
-//! Kicks off HW decoding
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidDecodePicture(CUvideodecoder hDecoder, CUVIDPICPARAMS *pPicParams);
-
-
-#if !defined(__CUVID_DEVPTR64) || defined(__CUVID_INTERNAL)
-/************************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidMapVideoFrame(CUvideodecoder hDecoder, int nPicIdx, unsigned int *pDevPtr,
-//! unsigned int *pPitch, CUVIDPROCPARAMS *pVPP);
-//! Post-process and map video frame corresponding to nPicIdx for use in cuda. Returns cuda device pointer and associated
-//! pitch of the video frame
-/************************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidMapVideoFrame(CUvideodecoder hDecoder, int nPicIdx,
- unsigned int *pDevPtr, unsigned int *pPitch,
- CUVIDPROCPARAMS *pVPP);
-
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidUnmapVideoFrame(CUvideodecoder hDecoder, unsigned int DevPtr)
-//! Unmap a previously mapped video frame
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidUnmapVideoFrame(CUvideodecoder hDecoder, unsigned int DevPtr);
-#endif
-
-#if defined(_WIN64) || defined(__LP64__) || defined(__x86_64) || defined(AMD64) || defined(_M_AMD64)
-/************************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidMapVideoFrame64(CUvideodecoder hDecoder, int nPicIdx, unsigned long long *pDevPtr,
-//! unsigned int *pPitch, CUVIDPROCPARAMS *pVPP);
-//! Post-process and map video frame corresponding to nPicIdx for use in cuda. Returns cuda device pointer and associated
-//! pitch of the video frame
-/************************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidMapVideoFrame64(CUvideodecoder hDecoder, int nPicIdx, unsigned long long *pDevPtr,
- unsigned int *pPitch, CUVIDPROCPARAMS *pVPP);
-
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidUnmapVideoFrame64(CUvideodecoder hDecoder, unsigned long long DevPtr);
-//! Unmap a previously mapped video frame
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidUnmapVideoFrame64(CUvideodecoder hDecoder, unsigned long long DevPtr);
-
-#if defined(__CUVID_DEVPTR64) && !defined(__CUVID_INTERNAL)
-#define tcuvidMapVideoFrame tcuvidMapVideoFrame64
-#define tcuvidUnmapVideoFrame tcuvidUnmapVideoFrame64
-#endif
-#endif
-
-
-
-/********************************************************************************************************************/
-//!
-//! Context-locking: to facilitate multi-threaded implementations, the following 4 functions
-//! provide a simple mutex-style host synchronization. If a non-NULL context is specified
-//! in CUVIDDECODECREATEINFO, the codec library will acquire the mutex associated with the given
-//! context before making any cuda calls.
-//! A multi-threaded application could create a lock associated with a context handle so that
-//! multiple threads can safely share the same cuda context:
-//! - use cuCtxPopCurrent immediately after context creation in order to create a 'floating' context
-//! that can be passed to cuvidCtxLockCreate.
-//! - When using a floating context, all cuda calls should only be made within a cuvidCtxLock/cuvidCtxUnlock section.
-//!
-//! NOTE: This is a safer alternative to cuCtxPushCurrent and cuCtxPopCurrent, and is not related to video
-//! decoder in any way (implemented as a critical section associated with cuCtx{Push|Pop}Current calls).
-/********************************************************************************************************************/
-
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidCtxLockCreate(CUvideoctxlock *pLock, CUcontext ctx)
-//! This API is used to create CtxLock object
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidCtxLockCreate(CUvideoctxlock *pLock, CUcontext ctx);
-
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidCtxLockDestroy(CUvideoctxlock lck)
-//! This API is used to free CtxLock object
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidCtxLockDestroy(CUvideoctxlock lck);
-
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidCtxLock(CUvideoctxlock lck, unsigned int reserved_flags)
-//! This API is used to acquire ctxlock
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidCtxLock(CUvideoctxlock lck, unsigned int reserved_flags);
-
-/********************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidCtxUnlock(CUvideoctxlock lck, unsigned int reserved_flags)
-//! This API is used to release ctxlock
-/********************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidCtxUnlock(CUvideoctxlock lck, unsigned int reserved_flags);
-
-/**********************************************************************************************/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-#endif // __CUDA_VIDEO_H__
diff --git a/chromium/third_party/ffmpeg/compat/cuda/dynlink_loader.h b/chromium/third_party/ffmpeg/compat/cuda/dynlink_loader.h
index fa43782c9ac..9f93465088e 100644
--- a/chromium/third_party/ffmpeg/compat/cuda/dynlink_loader.h
+++ b/chromium/third_party/ffmpeg/compat/cuda/dynlink_loader.h
@@ -1,268 +1,33 @@
/*
- * This copyright notice applies to this header file only:
+ * This file is part of FFmpeg.
*
- * Copyright (c) 2016
+ * 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.
*
- * 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:
+ * 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.
*
- * 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.
+ * 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
*/
#ifndef AV_COMPAT_CUDA_DYNLINK_LOADER_H
#define AV_COMPAT_CUDA_DYNLINK_LOADER_H
-#include "compat/cuda/dynlink_cuda.h"
-#include "compat/cuda/dynlink_nvcuvid.h"
-#include "compat/nvenc/nvEncodeAPI.h"
-#include "compat/w32dlfcn.h"
-
#include "libavutil/log.h"
-#include "libavutil/error.h"
-
-#if defined(_WIN32)
-# define LIB_HANDLE HMODULE
-#else
-# define LIB_HANDLE void*
-#endif
-
-#if defined(_WIN32) || defined(__CYGWIN__)
-# define CUDA_LIBNAME "nvcuda.dll"
-# define NVCUVID_LIBNAME "nvcuvid.dll"
-# if ARCH_X86_64
-# define NVENC_LIBNAME "nvEncodeAPI64.dll"
-# else
-# define NVENC_LIBNAME "nvEncodeAPI.dll"
-# endif
-#else
-# define CUDA_LIBNAME "libcuda.so.1"
-# define NVCUVID_LIBNAME "libnvcuvid.so.1"
-# define NVENC_LIBNAME "libnvidia-encode.so.1"
-#endif
-
-#define LOAD_LIBRARY(l, path) \
- do { \
- if (!((l) = dlopen(path, RTLD_LAZY))) { \
- av_log(logctx, AV_LOG_ERROR, "Cannot load %s\n", path); \
- ret = AVERROR_UNKNOWN; \
- goto error; \
- } \
- av_log(logctx, AV_LOG_TRACE, "Loaded lib: %s\n", path); \
- } while (0)
-
-#define LOAD_SYMBOL(fun, tp, symbol) \
- do { \
- if (!((f->fun) = (tp*)dlsym(f->lib, symbol))) { \
- av_log(logctx, AV_LOG_ERROR, "Cannot load %s\n", symbol); \
- ret = AVERROR_UNKNOWN; \
- goto error; \
- } \
- av_log(logctx, AV_LOG_TRACE, "Loaded sym: %s\n", symbol); \
- } while (0)
-
-#define LOAD_SYMBOL_OPT(fun, tp, symbol) \
- do { \
- if (!((f->fun) = (tp*)dlsym(f->lib, symbol))) { \
- av_log(logctx, AV_LOG_DEBUG, "Cannot load optional %s\n", symbol); \
- } else { \
- av_log(logctx, AV_LOG_TRACE, "Loaded sym: %s\n", symbol); \
- } \
- } while (0)
-
-#define GENERIC_LOAD_FUNC_PREAMBLE(T, n, N) \
- T *f; \
- int ret; \
- \
- n##_free_functions(functions); \
- \
- f = *functions = av_mallocz(sizeof(*f)); \
- if (!f) \
- return AVERROR(ENOMEM); \
- \
- LOAD_LIBRARY(f->lib, N);
-
-#define GENERIC_LOAD_FUNC_FINALE(n) \
- return 0; \
-error: \
- n##_free_functions(functions); \
- return ret;
-
-#define GENERIC_FREE_FUNC() \
- if (!functions) \
- return; \
- if (*functions && (*functions)->lib) \
- dlclose((*functions)->lib); \
- av_freep(functions);
-
-#ifdef AV_COMPAT_DYNLINK_CUDA_H
-typedef struct CudaFunctions {
- tcuInit *cuInit;
- tcuDeviceGetCount *cuDeviceGetCount;
- tcuDeviceGet *cuDeviceGet;
- tcuDeviceGetName *cuDeviceGetName;
- tcuDeviceComputeCapability *cuDeviceComputeCapability;
- tcuCtxCreate_v2 *cuCtxCreate;
- tcuCtxPushCurrent_v2 *cuCtxPushCurrent;
- tcuCtxPopCurrent_v2 *cuCtxPopCurrent;
- tcuCtxDestroy_v2 *cuCtxDestroy;
- tcuMemAlloc_v2 *cuMemAlloc;
- tcuMemFree_v2 *cuMemFree;
- tcuMemcpy2D_v2 *cuMemcpy2D;
- tcuGetErrorName *cuGetErrorName;
- tcuGetErrorString *cuGetErrorString;
-
- LIB_HANDLE lib;
-} CudaFunctions;
-#else
-typedef struct CudaFunctions CudaFunctions;
-#endif
-
-typedef struct CuvidFunctions {
- tcuvidGetDecoderCaps *cuvidGetDecoderCaps;
- tcuvidCreateDecoder *cuvidCreateDecoder;
- tcuvidDestroyDecoder *cuvidDestroyDecoder;
- tcuvidDecodePicture *cuvidDecodePicture;
- tcuvidMapVideoFrame *cuvidMapVideoFrame;
- tcuvidUnmapVideoFrame *cuvidUnmapVideoFrame;
- tcuvidCtxLockCreate *cuvidCtxLockCreate;
- tcuvidCtxLockDestroy *cuvidCtxLockDestroy;
- tcuvidCtxLock *cuvidCtxLock;
- tcuvidCtxUnlock *cuvidCtxUnlock;
-
- tcuvidCreateVideoSource *cuvidCreateVideoSource;
- tcuvidCreateVideoSourceW *cuvidCreateVideoSourceW;
- tcuvidDestroyVideoSource *cuvidDestroyVideoSource;
- tcuvidSetVideoSourceState *cuvidSetVideoSourceState;
- tcuvidGetVideoSourceState *cuvidGetVideoSourceState;
- tcuvidGetSourceVideoFormat *cuvidGetSourceVideoFormat;
- tcuvidGetSourceAudioFormat *cuvidGetSourceAudioFormat;
- tcuvidCreateVideoParser *cuvidCreateVideoParser;
- tcuvidParseVideoData *cuvidParseVideoData;
- tcuvidDestroyVideoParser *cuvidDestroyVideoParser;
-
- LIB_HANDLE lib;
-} CuvidFunctions;
-
-typedef NVENCSTATUS NVENCAPI tNvEncodeAPICreateInstance(NV_ENCODE_API_FUNCTION_LIST *functionList);
-typedef NVENCSTATUS NVENCAPI tNvEncodeAPIGetMaxSupportedVersion(uint32_t* version);
-
-typedef struct NvencFunctions {
- tNvEncodeAPICreateInstance *NvEncodeAPICreateInstance;
- tNvEncodeAPIGetMaxSupportedVersion *NvEncodeAPIGetMaxSupportedVersion;
-
- LIB_HANDLE lib;
-} NvencFunctions;
-
-#ifdef AV_COMPAT_DYNLINK_CUDA_H
-static inline void cuda_free_functions(CudaFunctions **functions)
-{
- GENERIC_FREE_FUNC();
-}
-#endif
-
-static inline void cuvid_free_functions(CuvidFunctions **functions)
-{
- GENERIC_FREE_FUNC();
-}
-
-static inline void nvenc_free_functions(NvencFunctions **functions)
-{
- GENERIC_FREE_FUNC();
-}
-
-#ifdef AV_COMPAT_DYNLINK_CUDA_H
-static inline int cuda_load_functions(CudaFunctions **functions, void *logctx)
-{
- GENERIC_LOAD_FUNC_PREAMBLE(CudaFunctions, cuda, CUDA_LIBNAME);
-
- LOAD_SYMBOL(cuInit, tcuInit, "cuInit");
- LOAD_SYMBOL(cuDeviceGetCount, tcuDeviceGetCount, "cuDeviceGetCount");
- LOAD_SYMBOL(cuDeviceGet, tcuDeviceGet, "cuDeviceGet");
- LOAD_SYMBOL(cuDeviceGetName, tcuDeviceGetName, "cuDeviceGetName");
- LOAD_SYMBOL(cuDeviceComputeCapability, tcuDeviceComputeCapability, "cuDeviceComputeCapability");
- LOAD_SYMBOL(cuCtxCreate, tcuCtxCreate_v2, "cuCtxCreate_v2");
- LOAD_SYMBOL(cuCtxPushCurrent, tcuCtxPushCurrent_v2, "cuCtxPushCurrent_v2");
- LOAD_SYMBOL(cuCtxPopCurrent, tcuCtxPopCurrent_v2, "cuCtxPopCurrent_v2");
- LOAD_SYMBOL(cuCtxDestroy, tcuCtxDestroy_v2, "cuCtxDestroy_v2");
- LOAD_SYMBOL(cuMemAlloc, tcuMemAlloc_v2, "cuMemAlloc_v2");
- LOAD_SYMBOL(cuMemFree, tcuMemFree_v2, "cuMemFree_v2");
- LOAD_SYMBOL(cuMemcpy2D, tcuMemcpy2D_v2, "cuMemcpy2D_v2");
- LOAD_SYMBOL(cuGetErrorName, tcuGetErrorName, "cuGetErrorName");
- LOAD_SYMBOL(cuGetErrorString, tcuGetErrorString, "cuGetErrorString");
-
- GENERIC_LOAD_FUNC_FINALE(cuda);
-}
-#endif
-
-static inline int cuvid_load_functions(CuvidFunctions **functions, void *logctx)
-{
- GENERIC_LOAD_FUNC_PREAMBLE(CuvidFunctions, cuvid, NVCUVID_LIBNAME);
-
- LOAD_SYMBOL_OPT(cuvidGetDecoderCaps, tcuvidGetDecoderCaps, "cuvidGetDecoderCaps");
- LOAD_SYMBOL(cuvidCreateDecoder, tcuvidCreateDecoder, "cuvidCreateDecoder");
- LOAD_SYMBOL(cuvidDestroyDecoder, tcuvidDestroyDecoder, "cuvidDestroyDecoder");
- LOAD_SYMBOL(cuvidDecodePicture, tcuvidDecodePicture, "cuvidDecodePicture");
-#ifdef __CUVID_DEVPTR64
- LOAD_SYMBOL(cuvidMapVideoFrame, tcuvidMapVideoFrame, "cuvidMapVideoFrame64");
- LOAD_SYMBOL(cuvidUnmapVideoFrame, tcuvidUnmapVideoFrame, "cuvidUnmapVideoFrame64");
-#else
- LOAD_SYMBOL(cuvidMapVideoFrame, tcuvidMapVideoFrame, "cuvidMapVideoFrame");
- LOAD_SYMBOL(cuvidUnmapVideoFrame, tcuvidUnmapVideoFrame, "cuvidUnmapVideoFrame");
-#endif
- LOAD_SYMBOL(cuvidCtxLockCreate, tcuvidCtxLockCreate, "cuvidCtxLockCreate");
- LOAD_SYMBOL(cuvidCtxLockDestroy, tcuvidCtxLockDestroy, "cuvidCtxLockDestroy");
- LOAD_SYMBOL(cuvidCtxLock, tcuvidCtxLock, "cuvidCtxLock");
- LOAD_SYMBOL(cuvidCtxUnlock, tcuvidCtxUnlock, "cuvidCtxUnlock");
-
- LOAD_SYMBOL(cuvidCreateVideoSource, tcuvidCreateVideoSource, "cuvidCreateVideoSource");
- LOAD_SYMBOL(cuvidCreateVideoSourceW, tcuvidCreateVideoSourceW, "cuvidCreateVideoSourceW");
- LOAD_SYMBOL(cuvidDestroyVideoSource, tcuvidDestroyVideoSource, "cuvidDestroyVideoSource");
- LOAD_SYMBOL(cuvidSetVideoSourceState, tcuvidSetVideoSourceState, "cuvidSetVideoSourceState");
- LOAD_SYMBOL(cuvidGetVideoSourceState, tcuvidGetVideoSourceState, "cuvidGetVideoSourceState");
- LOAD_SYMBOL(cuvidGetSourceVideoFormat, tcuvidGetSourceVideoFormat, "cuvidGetSourceVideoFormat");
- LOAD_SYMBOL(cuvidGetSourceAudioFormat, tcuvidGetSourceAudioFormat, "cuvidGetSourceAudioFormat");
- LOAD_SYMBOL(cuvidCreateVideoParser, tcuvidCreateVideoParser, "cuvidCreateVideoParser");
- LOAD_SYMBOL(cuvidParseVideoData, tcuvidParseVideoData, "cuvidParseVideoData");
- LOAD_SYMBOL(cuvidDestroyVideoParser, tcuvidDestroyVideoParser, "cuvidDestroyVideoParser");
-
- GENERIC_LOAD_FUNC_FINALE(cuvid);
-}
-
-static inline int nvenc_load_functions(NvencFunctions **functions, void *logctx)
-{
- GENERIC_LOAD_FUNC_PREAMBLE(NvencFunctions, nvenc, NVENC_LIBNAME);
-
- LOAD_SYMBOL(NvEncodeAPICreateInstance, tNvEncodeAPICreateInstance, "NvEncodeAPICreateInstance");
- LOAD_SYMBOL(NvEncodeAPIGetMaxSupportedVersion, tNvEncodeAPIGetMaxSupportedVersion, "NvEncodeAPIGetMaxSupportedVersion");
+#include "compat/w32dlfcn.h"
- GENERIC_LOAD_FUNC_FINALE(nvenc);
-}
+#define FFNV_LOAD_FUNC(path) dlopen((path), RTLD_LAZY)
+#define FFNV_SYM_FUNC(lib, sym) dlsym((lib), (sym))
+#define FFNV_FREE_FUNC(lib) dlclose(lib)
+#define FFNV_LOG_FUNC(logctx, msg, ...) av_log(logctx, AV_LOG_ERROR, msg, __VA_ARGS__)
+#define FFNV_DEBUG_LOG_FUNC(logctx, msg, ...) av_log(logctx, AV_LOG_DEBUG, msg, __VA_ARGS__)
-#undef GENERIC_LOAD_FUNC_PREAMBLE
-#undef LOAD_LIBRARY
-#undef LOAD_SYMBOL
-#undef GENERIC_LOAD_FUNC_FINALE
-#undef GENERIC_FREE_FUNC
-#undef CUDA_LIBNAME
-#undef NVCUVID_LIBNAME
-#undef NVENC_LIBNAME
-#undef LIB_HANDLE
+#include <ffnvcodec/dynlink_loader.h>
#endif
-
diff --git a/chromium/third_party/ffmpeg/compat/cuda/dynlink_nvcuvid.h b/chromium/third_party/ffmpeg/compat/cuda/dynlink_nvcuvid.h
deleted file mode 100644
index 87294248e5a..00000000000
--- a/chromium/third_party/ffmpeg/compat/cuda/dynlink_nvcuvid.h
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * This copyright notice applies to this header file only:
- *
- * Copyright (c) 2010-2017 NVIDIA Corporation
- *
- * 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.
- */
-
-/********************************************************************************************************************/
-//! \file nvcuvid.h
-//! NVDECODE API provides video decoding interface to NVIDIA GPU devices.
-//! \date 2015-2017
-//! This file contains the interface constants, structure definitions and function prototypes.
-/********************************************************************************************************************/
-
-#if !defined(__NVCUVID_H__)
-#define __NVCUVID_H__
-
-#include "compat/cuda/dynlink_cuviddec.h"
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*********************************
-** Initialization
-*********************************/
-CUresult CUDAAPI cuvidInit(unsigned int Flags);
-
-/***********************************************/
-//!
-//! High-level helper APIs for video sources
-//!
-/***********************************************/
-
-typedef void *CUvideosource;
-typedef void *CUvideoparser;
-typedef long long CUvideotimestamp;
-
-
-/************************************************************************/
-//! \enum cudaVideoState
-//! Video source state enums
-//! Used in cuvidSetVideoSourceState and cuvidGetVideoSourceState APIs
-/************************************************************************/
-typedef enum {
- cudaVideoState_Error = -1, /**< Error state (invalid source) */
- cudaVideoState_Stopped = 0, /**< Source is stopped (or reached end-of-stream) */
- cudaVideoState_Started = 1 /**< Source is running and delivering data */
-} cudaVideoState;
-
-/************************************************************************/
-//! \enum cudaAudioCodec
-//! Audio compression enums
-//! Used in CUAUDIOFORMAT structure
-/************************************************************************/
-typedef enum {
- cudaAudioCodec_MPEG1=0, /**< MPEG-1 Audio */
- cudaAudioCodec_MPEG2, /**< MPEG-2 Audio */
- cudaAudioCodec_MP3, /**< MPEG-1 Layer III Audio */
- cudaAudioCodec_AC3, /**< Dolby Digital (AC3) Audio */
- cudaAudioCodec_LPCM, /**< PCM Audio */
- cudaAudioCodec_AAC, /**< AAC Audio */
-} cudaAudioCodec;
-
-/************************************************************************************************/
-//! \ingroup STRUCTS
-//! \struct CUVIDEOFORMAT
-//! Video format
-//! Used in cuvidGetSourceVideoFormat API
-/************************************************************************************************/
-typedef struct
-{
- cudaVideoCodec codec; /**< OUT: Compression format */
- /**
- * OUT: frame rate = numerator / denominator (for example: 30000/1001)
- */
- struct {
- /**< OUT: frame rate numerator (0 = unspecified or variable frame rate) */
- unsigned int numerator;
- /**< OUT: frame rate denominator (0 = unspecified or variable frame rate) */
- unsigned int denominator;
- } frame_rate;
- unsigned char progressive_sequence; /**< OUT: 0=interlaced, 1=progressive */
- unsigned char bit_depth_luma_minus8; /**< OUT: high bit depth luma. E.g, 2 for 10-bitdepth, 4 for 12-bitdepth */
- unsigned char bit_depth_chroma_minus8; /**< OUT: high bit depth chroma. E.g, 2 for 10-bitdepth, 4 for 12-bitdepth */
- unsigned char reserved1; /**< Reserved for future use */
- unsigned int coded_width; /**< OUT: coded frame width in pixels */
- unsigned int coded_height; /**< OUT: coded frame height in pixels */
- /**
- * area of the frame that should be displayed
- * typical example:
- * coded_width = 1920, coded_height = 1088
- * display_area = { 0,0,1920,1080 }
- */
- struct {
- int left; /**< OUT: left position of display rect */
- int top; /**< OUT: top position of display rect */
- int right; /**< OUT: right position of display rect */
- int bottom; /**< OUT: bottom position of display rect */
- } display_area;
- cudaVideoChromaFormat chroma_format; /**< OUT: Chroma format */
- unsigned int bitrate; /**< OUT: video bitrate (bps, 0=unknown) */
- /**
- * OUT: Display Aspect Ratio = x:y (4:3, 16:9, etc)
- */
- struct {
- int x;
- int y;
- } display_aspect_ratio;
- /**
- * Video Signal Description
- * Refer section E.2.1 (VUI parameters semantics) of H264 spec file
- */
- struct {
- unsigned char video_format : 3; /**< OUT: 0-Component, 1-PAL, 2-NTSC, 3-SECAM, 4-MAC, 5-Unspecified */
- unsigned char video_full_range_flag : 1; /**< OUT: indicates the black level and luma and chroma range */
- unsigned char reserved_zero_bits : 4; /**< Reserved bits */
- unsigned char color_primaries; /**< OUT: chromaticity coordinates of source primaries */
- unsigned char transfer_characteristics; /**< OUT: opto-electronic transfer characteristic of the source picture */
- unsigned char matrix_coefficients; /**< OUT: used in deriving luma and chroma signals from RGB primaries */
- } video_signal_description;
- unsigned int seqhdr_data_length; /**< OUT: Additional bytes following (CUVIDEOFORMATEX) */
-} CUVIDEOFORMAT;
-
-/****************************************************************/
-//! \ingroup STRUCTS
-//! \struct CUVIDEOFORMATEX
-//! Video format including raw sequence header information
-//! Used in cuvidGetSourceVideoFormat API
-/****************************************************************/
-typedef struct
-{
- CUVIDEOFORMAT format; /**< OUT: CUVIDEOFORMAT structure */
- unsigned char raw_seqhdr_data[1024]; /**< OUT: Sequence header data */
-} CUVIDEOFORMATEX;
-
-/****************************************************************/
-//! \ingroup STRUCTS
-//! \struct CUAUDIOFORMAT
-//! Audio formats
-//! Used in cuvidGetSourceAudioFormat API
-/****************************************************************/
-typedef struct
-{
- cudaAudioCodec codec; /**< OUT: Compression format */
- unsigned int channels; /**< OUT: number of audio channels */
- unsigned int samplespersec; /**< OUT: sampling frequency */
- unsigned int bitrate; /**< OUT: For uncompressed, can also be used to determine bits per sample */
- unsigned int reserved1; /**< Reserved for future use */
- unsigned int reserved2; /**< Reserved for future use */
-} CUAUDIOFORMAT;
-
-
-/***************************************************************/
-//! \enum CUvideopacketflags
-//! Data packet flags
-//! Used in CUVIDSOURCEDATAPACKET structure
-/***************************************************************/
-typedef enum {
- CUVID_PKT_ENDOFSTREAM = 0x01, /**< Set when this is the last packet for this stream */
- CUVID_PKT_TIMESTAMP = 0x02, /**< Timestamp is valid */
- CUVID_PKT_DISCONTINUITY = 0x04, /**< Set when a discontinuity has to be signalled */
- CUVID_PKT_ENDOFPICTURE = 0x08, /**< Set when the packet contains exactly one frame */
-} CUvideopacketflags;
-
-/*****************************************************************************/
-//! \ingroup STRUCTS
-//! \struct CUVIDSOURCEDATAPACKET
-//! Data Packet
-//! Used in cuvidParseVideoData API
-//! IN for cuvidParseVideoData
-/*****************************************************************************/
-typedef struct _CUVIDSOURCEDATAPACKET
-{
- tcu_ulong flags; /**< IN: Combination of CUVID_PKT_XXX flags */
- tcu_ulong payload_size; /**< IN: number of bytes in the payload (may be zero if EOS flag is set) */
- const unsigned char *payload; /**< IN: Pointer to packet payload data (may be NULL if EOS flag is set) */
- CUvideotimestamp timestamp; /**< IN: Presentation time stamp (10MHz clock), only valid if
- CUVID_PKT_TIMESTAMP flag is set */
-} CUVIDSOURCEDATAPACKET;
-
-// Callback for packet delivery
-typedef int (CUDAAPI *PFNVIDSOURCECALLBACK)(void *, CUVIDSOURCEDATAPACKET *);
-
-/**************************************************************************************************************************/
-//! \ingroup STRUCTS
-//! \struct CUVIDSOURCEPARAMS
-//! Describes parameters needed in cuvidCreateVideoSource API
-//! NVDECODE API is intended for HW accelerated video decoding so CUvideosource doesn't have audio demuxer for all supported
-//! containers. It's recommended to clients to use their own or third party demuxer if audio support is needed.
-/**************************************************************************************************************************/
-typedef struct _CUVIDSOURCEPARAMS
-{
- unsigned int ulClockRate; /**< IN: Time stamp units in Hz (0=default=10000000Hz) */
- unsigned int uReserved1[7]; /**< Reserved for future use - set to zero */
- void *pUserData; /**< IN: User private data passed in to the data handlers */
- PFNVIDSOURCECALLBACK pfnVideoDataHandler; /**< IN: Called to deliver video packets */
- PFNVIDSOURCECALLBACK pfnAudioDataHandler; /**< IN: Called to deliver audio packets. */
- void *pvReserved2[8]; /**< Reserved for future use - set to NULL */
-} CUVIDSOURCEPARAMS;
-
-
-/**********************************************/
-//! \ingroup ENUMS
-//! \enum CUvideosourceformat_flags
-//! CUvideosourceformat_flags
-//! Used in cuvidGetSourceVideoFormat API
-/**********************************************/
-typedef enum {
- CUVID_FMT_EXTFORMATINFO = 0x100 /**< Return extended format structure (CUVIDEOFORMATEX) */
-} CUvideosourceformat_flags;
-
-#if !defined(__APPLE__)
-/**************************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidCreateVideoSource(CUvideosource *pObj, const char *pszFileName, CUVIDSOURCEPARAMS *pParams)
-//! Create CUvideosource object. CUvideosource spawns demultiplexer thread that provides two callbacks:
-//! pfnVideoDataHandler() and pfnAudioDataHandler()
-//! NVDECODE API is intended for HW accelerated video decoding so CUvideosource doesn't have audio demuxer for all supported
-//! containers. It's recommended to clients to use their own or third party demuxer if audio support is needed.
-/**************************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidCreateVideoSource(CUvideosource *pObj, const char *pszFileName, CUVIDSOURCEPARAMS *pParams);
-
-/****************************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidCreateVideoSourceW(CUvideosource *pObj, const wchar_t *pwszFileName, CUVIDSOURCEPARAMS *pParams)
-//! Create video source object and initialize
-/****************************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidCreateVideoSourceW(CUvideosource *pObj, const wchar_t *pwszFileName, CUVIDSOURCEPARAMS *pParams);
-
-/*********************************************************************/
-//! \fn CUresult CUDAAPI cuvidDestroyVideoSource(CUvideosource obj)
-//! Destroy video source
-/*********************************************************************/
-typedef CUresult CUDAAPI tcuvidDestroyVideoSource(CUvideosource obj);
-
-/******************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidSetVideoSourceState(CUvideosource obj, cudaVideoState state)
-//! Set video source state
-/******************************************************************************************/
-typedef CUresult CUDAAPI tcuvidSetVideoSourceState(CUvideosource obj, cudaVideoState state);
-
-/******************************************************************************************/
-//! \fn cudaVideoState CUDAAPI cuvidGetVideoSourceState(CUvideosource obj)
-//! Get video source state
-/******************************************************************************************/
-typedef cudaVideoState CUDAAPI tcuvidGetVideoSourceState(CUvideosource obj);
-
-/****************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidGetSourceVideoFormat(CUvideosource obj, CUVIDEOFORMAT *pvidfmt, unsigned int flags)
-//! Gets details of video stream in pvidfmt
-/****************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidGetSourceVideoFormat(CUvideosource obj, CUVIDEOFORMAT *pvidfmt, unsigned int flags);
-
-/****************************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidGetSourceAudioFormat(CUvideosource obj, CUAUDIOFORMAT *paudfmt, unsigned int flags)
-//! Get audio source format
-//! NVDECODE API is intended for HW accelarated video decoding so CUvideosource doesn't have audio demuxer for all suppported
-//! containers. It's recommended to clients to use their own or third party demuxer if audio support is needed.
-/****************************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidGetSourceAudioFormat(CUvideosource obj, CUAUDIOFORMAT *paudfmt, unsigned int flags);
-
-#endif
-/**********************************************************************************/
-//! \ingroup STRUCTS
-//! \struct CUVIDPARSERDISPINFO
-//! Used in cuvidParseVideoData API with PFNVIDDISPLAYCALLBACK pfnDisplayPicture
-/**********************************************************************************/
-typedef struct _CUVIDPARSERDISPINFO
-{
- int picture_index; /**< OUT: Index of the current picture */
- int progressive_frame; /**< OUT: 1 if progressive frame; 0 otherwise */
- int top_field_first; /**< OUT: 1 if top field is displayed first; 0 otherwise */
- int repeat_first_field; /**< OUT: Number of additional fields (1=ivtc, 2=frame doubling, 4=frame tripling,
- -1=unpaired field) */
- CUvideotimestamp timestamp; /**< OUT: Presentation time stamp */
-} CUVIDPARSERDISPINFO;
-
-/***********************************************************************************************************************/
-//! Parser callbacks
-//! The parser will call these synchronously from within cuvidParseVideoData(), whenever a picture is ready to
-//! be decoded and/or displayed. First argument in functions is "void *pUserData" member of structure CUVIDSOURCEPARAMS
-/***********************************************************************************************************************/
-typedef int (CUDAAPI *PFNVIDSEQUENCECALLBACK)(void *, CUVIDEOFORMAT *);
-typedef int (CUDAAPI *PFNVIDDECODECALLBACK)(void *, CUVIDPICPARAMS *);
-typedef int (CUDAAPI *PFNVIDDISPLAYCALLBACK)(void *, CUVIDPARSERDISPINFO *);
-
-/**************************************/
-//! \ingroup STRUCTS
-//! \struct CUVIDPARSERPARAMS
-//! Used in cuvidCreateVideoParser API
-/**************************************/
-typedef struct _CUVIDPARSERPARAMS
-{
- cudaVideoCodec CodecType; /**< IN: cudaVideoCodec_XXX */
- unsigned int ulMaxNumDecodeSurfaces; /**< IN: Max # of decode surfaces (parser will cycle through these) */
- unsigned int ulClockRate; /**< IN: Timestamp units in Hz (0=default=10000000Hz) */
- unsigned int ulErrorThreshold; /**< IN: % Error threshold (0-100) for calling pfnDecodePicture (100=always
- IN: call pfnDecodePicture even if picture bitstream is fully corrupted) */
- unsigned int ulMaxDisplayDelay; /**< IN: Max display queue delay (improves pipelining of decode with display)
- 0=no delay (recommended values: 2..4) */
- unsigned int uReserved1[5]; /**< IN: Reserved for future use - set to 0 */
- void *pUserData; /**< IN: User data for callbacks */
- PFNVIDSEQUENCECALLBACK pfnSequenceCallback; /**< IN: Called before decoding frames and/or whenever there is a fmt change */
- PFNVIDDECODECALLBACK pfnDecodePicture; /**< IN: Called when a picture is ready to be decoded (decode order) */
- PFNVIDDISPLAYCALLBACK pfnDisplayPicture; /**< IN: Called whenever a picture is ready to be displayed (display order) */
- void *pvReserved2[7]; /**< Reserved for future use - set to NULL */
- CUVIDEOFORMATEX *pExtVideoInfo; /**< IN: [Optional] sequence header data from system layer */
-} CUVIDPARSERPARAMS;
-
-/************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidCreateVideoParser(CUvideoparser *pObj, CUVIDPARSERPARAMS *pParams)
-//! Create video parser object and initialize
-/************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidCreateVideoParser(CUvideoparser *pObj, CUVIDPARSERPARAMS *pParams);
-
-/************************************************************************************************/
-//! \fn CUresult CUDAAPI cuvidParseVideoData(CUvideoparser obj, CUVIDSOURCEDATAPACKET *pPacket)
-//! Parse the video data from source data packet in pPacket
-//! Extracts parameter sets like SPS, PPS, bitstream etc. from pPacket and
-//! calls back pfnDecodePicture with CUVIDPICPARAMS data for kicking of HW decoding
-/************************************************************************************************/
-typedef CUresult CUDAAPI tcuvidParseVideoData(CUvideoparser obj, CUVIDSOURCEDATAPACKET *pPacket);
-
-/*******************************************************************/
-//! \fn CUresult CUDAAPI cuvidDestroyVideoParser(CUvideoparser obj)
-/*******************************************************************/
-typedef CUresult CUDAAPI tcuvidDestroyVideoParser(CUvideoparser obj);
-
-/**********************************************************************************************/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-#endif // __NVCUVID_H__
-
-
diff --git a/chromium/third_party/ffmpeg/compat/nvenc/nvEncodeAPI.h b/chromium/third_party/ffmpeg/compat/nvenc/nvEncodeAPI.h
deleted file mode 100644
index e662880f4d9..00000000000
--- a/chromium/third_party/ffmpeg/compat/nvenc/nvEncodeAPI.h
+++ /dev/null
@@ -1,3324 +0,0 @@
-/*
- * This copyright notice applies to this header file only:
- *
- * Copyright (c) 2010-2017 NVIDIA Corporation
- *
- * 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.
- */
-
-/**
- * \file nvEncodeAPI.h
- * NVIDIA GPUs - beginning with the Kepler generation - contain a hardware-based encoder
- * (referred to as NVENC) which provides fully-accelerated hardware-based video encoding.
- * NvEncodeAPI provides the interface for NVIDIA video encoder (NVENC).
- * \date 2011-2017
- * This file contains the interface constants, structure definitions and function prototypes.
- */
-
-#ifndef _NV_ENCODEAPI_H_
-#define _NV_ENCODEAPI_H_
-
-#include <stdlib.h>
-
-#ifdef _WIN32
-#include <windows.h>
-#endif
-
-#ifdef _MSC_VER
-#ifndef _STDINT
-typedef __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-typedef signed char int8_t;
-typedef unsigned char uint8_t;
-typedef short int16_t;
-typedef unsigned short uint16_t;
-#endif
-#else
-#include <stdint.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \addtogroup ENCODER_STRUCTURE NvEncodeAPI Data structures
- * @{
- */
-
-#if defined(_WIN32) || defined(__CYGWIN__)
-#define NVENCAPI __stdcall
-#else
-#define NVENCAPI
-#endif
-
-#ifdef _WIN32
-typedef RECT NVENC_RECT;
-#else
-// =========================================================================================
-#if !defined(GUID) && !defined(GUID_DEFINED)
-/*!
- * \struct GUID
- * Abstracts the GUID structure for non-windows platforms.
- */
-// =========================================================================================
-typedef struct
-{
- uint32_t Data1; /**< [in]: Specifies the first 8 hexadecimal digits of the GUID. */
- uint16_t Data2; /**< [in]: Specifies the first group of 4 hexadecimal digits. */
- uint16_t Data3; /**< [in]: Specifies the second group of 4 hexadecimal digits. */
- uint8_t Data4[8]; /**< [in]: Array of 8 bytes. The first 2 bytes contain the third group of 4 hexadecimal digits.
- The remaining 6 bytes contain the final 12 hexadecimal digits. */
-} GUID;
-#endif // GUID
-
-/**
- * \struct _NVENC_RECT
- * Defines a Rectangle. Used in ::NV_ENC_PREPROCESS_FRAME.
- */
-typedef struct _NVENC_RECT
-{
- uint32_t left; /**< [in]: X coordinate of the upper left corner of rectangular area to be specified. */
- uint32_t top; /**< [in]: Y coordinate of the upper left corner of the rectangular area to be specified. */
- uint32_t right; /**< [in]: X coordinate of the bottom right corner of the rectangular area to be specified. */
- uint32_t bottom; /**< [in]: Y coordinate of the bottom right corner of the rectangular area to be specified. */
-} NVENC_RECT;
-
-#endif // _WIN32
-
-/** @} */ /* End of GUID and NVENC_RECT structure grouping*/
-
-typedef void* NV_ENC_INPUT_PTR; /**< NVENCODE API input buffer */
-typedef void* NV_ENC_OUTPUT_PTR; /**< NVENCODE API output buffer*/
-typedef void* NV_ENC_REGISTERED_PTR; /**< A Resource that has been registered with NVENCODE API*/
-
-#define NVENCAPI_MAJOR_VERSION 8
-#define NVENCAPI_MINOR_VERSION 0
-
-#define NVENCAPI_VERSION (NVENCAPI_MAJOR_VERSION | (NVENCAPI_MINOR_VERSION << 24))
-
-/**
- * Macro to generate per-structure version for use with API.
- */
-#define NVENCAPI_STRUCT_VERSION(ver) ((uint32_t)NVENCAPI_VERSION | ((ver)<<16) | (0x7 << 28))
-
-
-#define NVENC_INFINITE_GOPLENGTH 0xffffffff
-
-#define NV_MAX_SEQ_HDR_LEN (512)
-
-// =========================================================================================
-// Encode Codec GUIDS supported by the NvEncodeAPI interface.
-// =========================================================================================
-
-// {6BC82762-4E63-4ca4-AA85-1E50F321F6BF}
-static const GUID NV_ENC_CODEC_H264_GUID =
-{ 0x6bc82762, 0x4e63, 0x4ca4, { 0xaa, 0x85, 0x1e, 0x50, 0xf3, 0x21, 0xf6, 0xbf } };
-
-// {790CDC88-4522-4d7b-9425-BDA9975F7603}
-static const GUID NV_ENC_CODEC_HEVC_GUID =
-{ 0x790cdc88, 0x4522, 0x4d7b, { 0x94, 0x25, 0xbd, 0xa9, 0x97, 0x5f, 0x76, 0x3 } };
-
-
-
-// =========================================================================================
-// * Encode Profile GUIDS supported by the NvEncodeAPI interface.
-// =========================================================================================
-
-// {BFD6F8E7-233C-4341-8B3E-4818523803F4}
-static const GUID NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID =
-{ 0xbfd6f8e7, 0x233c, 0x4341, { 0x8b, 0x3e, 0x48, 0x18, 0x52, 0x38, 0x3, 0xf4 } };
-
-// {0727BCAA-78C4-4c83-8C2F-EF3DFF267C6A}
-static const GUID NV_ENC_H264_PROFILE_BASELINE_GUID =
-{ 0x727bcaa, 0x78c4, 0x4c83, { 0x8c, 0x2f, 0xef, 0x3d, 0xff, 0x26, 0x7c, 0x6a } };
-
-// {60B5C1D4-67FE-4790-94D5-C4726D7B6E6D}
-static const GUID NV_ENC_H264_PROFILE_MAIN_GUID =
-{ 0x60b5c1d4, 0x67fe, 0x4790, { 0x94, 0xd5, 0xc4, 0x72, 0x6d, 0x7b, 0x6e, 0x6d } };
-
-// {E7CBC309-4F7A-4b89-AF2A-D537C92BE310}
-static const GUID NV_ENC_H264_PROFILE_HIGH_GUID =
-{ 0xe7cbc309, 0x4f7a, 0x4b89, { 0xaf, 0x2a, 0xd5, 0x37, 0xc9, 0x2b, 0xe3, 0x10 } };
-
-// {7AC663CB-A598-4960-B844-339B261A7D52}
-static const GUID NV_ENC_H264_PROFILE_HIGH_444_GUID =
-{ 0x7ac663cb, 0xa598, 0x4960, { 0xb8, 0x44, 0x33, 0x9b, 0x26, 0x1a, 0x7d, 0x52 } };
-
-// {40847BF5-33F7-4601-9084-E8FE3C1DB8B7}
-static const GUID NV_ENC_H264_PROFILE_STEREO_GUID =
-{ 0x40847bf5, 0x33f7, 0x4601, { 0x90, 0x84, 0xe8, 0xfe, 0x3c, 0x1d, 0xb8, 0xb7 } };
-
-// {CE788D20-AAA9-4318-92BB-AC7E858C8D36}
-static const GUID NV_ENC_H264_PROFILE_SVC_TEMPORAL_SCALABILTY =
-{ 0xce788d20, 0xaaa9, 0x4318, { 0x92, 0xbb, 0xac, 0x7e, 0x85, 0x8c, 0x8d, 0x36 } };
-
-// {B405AFAC-F32B-417B-89C4-9ABEED3E5978}
-static const GUID NV_ENC_H264_PROFILE_PROGRESSIVE_HIGH_GUID =
-{ 0xb405afac, 0xf32b, 0x417b, { 0x89, 0xc4, 0x9a, 0xbe, 0xed, 0x3e, 0x59, 0x78 } };
-
-// {AEC1BD87-E85B-48f2-84C3-98BCA6285072}
-static const GUID NV_ENC_H264_PROFILE_CONSTRAINED_HIGH_GUID =
-{ 0xaec1bd87, 0xe85b, 0x48f2, { 0x84, 0xc3, 0x98, 0xbc, 0xa6, 0x28, 0x50, 0x72 } };
-
-// {B514C39A-B55B-40fa-878F-F1253B4DFDEC}
-static const GUID NV_ENC_HEVC_PROFILE_MAIN_GUID =
-{ 0xb514c39a, 0xb55b, 0x40fa, { 0x87, 0x8f, 0xf1, 0x25, 0x3b, 0x4d, 0xfd, 0xec } };
-
-// {fa4d2b6c-3a5b-411a-8018-0a3f5e3c9be5}
-static const GUID NV_ENC_HEVC_PROFILE_MAIN10_GUID =
-{ 0xfa4d2b6c, 0x3a5b, 0x411a, { 0x80, 0x18, 0x0a, 0x3f, 0x5e, 0x3c, 0x9b, 0xe5 } };
-
-// For HEVC Main 444 8 bit and HEVC Main 444 10 bit profiles only
-// {51ec32b5-1b4c-453c-9cbd-b616bd621341}
-static const GUID NV_ENC_HEVC_PROFILE_FREXT_GUID =
-{ 0x51ec32b5, 0x1b4c, 0x453c, { 0x9c, 0xbd, 0xb6, 0x16, 0xbd, 0x62, 0x13, 0x41 } };
-
-// =========================================================================================
-// * Preset GUIDS supported by the NvEncodeAPI interface.
-// =========================================================================================
-// {B2DFB705-4EBD-4C49-9B5F-24A777D3E587}
-static const GUID NV_ENC_PRESET_DEFAULT_GUID =
-{ 0xb2dfb705, 0x4ebd, 0x4c49, { 0x9b, 0x5f, 0x24, 0xa7, 0x77, 0xd3, 0xe5, 0x87 } };
-
-// {60E4C59F-E846-4484-A56D-CD45BE9FDDF6}
-static const GUID NV_ENC_PRESET_HP_GUID =
-{ 0x60e4c59f, 0xe846, 0x4484, { 0xa5, 0x6d, 0xcd, 0x45, 0xbe, 0x9f, 0xdd, 0xf6 } };
-
-// {34DBA71D-A77B-4B8F-9C3E-B6D5DA24C012}
-static const GUID NV_ENC_PRESET_HQ_GUID =
-{ 0x34dba71d, 0xa77b, 0x4b8f, { 0x9c, 0x3e, 0xb6, 0xd5, 0xda, 0x24, 0xc0, 0x12 } };
-
-// {82E3E450-BDBB-4e40-989C-82A90DF9EF32}
-static const GUID NV_ENC_PRESET_BD_GUID =
-{ 0x82e3e450, 0xbdbb, 0x4e40, { 0x98, 0x9c, 0x82, 0xa9, 0xd, 0xf9, 0xef, 0x32 } };
-
-// {49DF21C5-6DFA-4feb-9787-6ACC9EFFB726}
-static const GUID NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID =
-{ 0x49df21c5, 0x6dfa, 0x4feb, { 0x97, 0x87, 0x6a, 0xcc, 0x9e, 0xff, 0xb7, 0x26 } };
-
-// {C5F733B9-EA97-4cf9-BEC2-BF78A74FD105}
-static const GUID NV_ENC_PRESET_LOW_LATENCY_HQ_GUID =
-{ 0xc5f733b9, 0xea97, 0x4cf9, { 0xbe, 0xc2, 0xbf, 0x78, 0xa7, 0x4f, 0xd1, 0x5 } };
-
-// {67082A44-4BAD-48FA-98EA-93056D150A58}
-static const GUID NV_ENC_PRESET_LOW_LATENCY_HP_GUID =
-{ 0x67082a44, 0x4bad, 0x48fa, { 0x98, 0xea, 0x93, 0x5, 0x6d, 0x15, 0xa, 0x58 } };
-
-// {D5BFB716-C604-44e7-9BB8-DEA5510FC3AC}
-static const GUID NV_ENC_PRESET_LOSSLESS_DEFAULT_GUID =
-{ 0xd5bfb716, 0xc604, 0x44e7, { 0x9b, 0xb8, 0xde, 0xa5, 0x51, 0xf, 0xc3, 0xac } };
-
-// {149998E7-2364-411d-82EF-179888093409}
-static const GUID NV_ENC_PRESET_LOSSLESS_HP_GUID =
-{ 0x149998e7, 0x2364, 0x411d, { 0x82, 0xef, 0x17, 0x98, 0x88, 0x9, 0x34, 0x9 } };
-
-/**
- * \addtogroup ENCODER_STRUCTURE NvEncodeAPI Data structures
- * @{
- */
-
-/**
- * Input frame encode modes
- */
-typedef enum _NV_ENC_PARAMS_FRAME_FIELD_MODE
-{
- NV_ENC_PARAMS_FRAME_FIELD_MODE_FRAME = 0x01, /**< Frame mode */
- NV_ENC_PARAMS_FRAME_FIELD_MODE_FIELD = 0x02, /**< Field mode */
- NV_ENC_PARAMS_FRAME_FIELD_MODE_MBAFF = 0x03 /**< MB adaptive frame/field */
-} NV_ENC_PARAMS_FRAME_FIELD_MODE;
-
-/**
- * Rate Control Modes
- */
-typedef enum _NV_ENC_PARAMS_RC_MODE
-{
- NV_ENC_PARAMS_RC_CONSTQP = 0x0, /**< Constant QP mode */
- NV_ENC_PARAMS_RC_VBR = 0x1, /**< Variable bitrate mode */
- NV_ENC_PARAMS_RC_CBR = 0x2, /**< Constant bitrate mode */
- NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ = 0x8, /**< low-delay CBR, high quality */
- NV_ENC_PARAMS_RC_CBR_HQ = 0x10, /**< CBR, high quality (slower) */
- NV_ENC_PARAMS_RC_VBR_HQ = 0x20 /**< VBR, high quality (slower) */
-} NV_ENC_PARAMS_RC_MODE;
-
-#define NV_ENC_PARAMS_RC_VBR_MINQP (NV_ENC_PARAMS_RC_MODE)0x4 /**< Deprecated */
-#define NV_ENC_PARAMS_RC_2_PASS_QUALITY NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ /**< Deprecated */
-#define NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP NV_ENC_PARAMS_RC_CBR_HQ /**< Deprecated */
-#define NV_ENC_PARAMS_RC_2_PASS_VBR NV_ENC_PARAMS_RC_VBR_HQ /**< Deprecated */
-#define NV_ENC_PARAMS_RC_CBR2 NV_ENC_PARAMS_RC_CBR /**< Deprecated */
-
-/**
- * Input picture structure
- */
-typedef enum _NV_ENC_PIC_STRUCT
-{
- NV_ENC_PIC_STRUCT_FRAME = 0x01, /**< Progressive frame */
- NV_ENC_PIC_STRUCT_FIELD_TOP_BOTTOM = 0x02, /**< Field encoding top field first */
- NV_ENC_PIC_STRUCT_FIELD_BOTTOM_TOP = 0x03 /**< Field encoding bottom field first */
-} NV_ENC_PIC_STRUCT;
-
-/**
- * Input picture type
- */
-typedef enum _NV_ENC_PIC_TYPE
-{
- NV_ENC_PIC_TYPE_P = 0x0, /**< Forward predicted */
- NV_ENC_PIC_TYPE_B = 0x01, /**< Bi-directionally predicted picture */
- NV_ENC_PIC_TYPE_I = 0x02, /**< Intra predicted picture */
- NV_ENC_PIC_TYPE_IDR = 0x03, /**< IDR picture */
- NV_ENC_PIC_TYPE_BI = 0x04, /**< Bi-directionally predicted with only Intra MBs */
- NV_ENC_PIC_TYPE_SKIPPED = 0x05, /**< Picture is skipped */
- NV_ENC_PIC_TYPE_INTRA_REFRESH = 0x06, /**< First picture in intra refresh cycle */
- NV_ENC_PIC_TYPE_UNKNOWN = 0xFF /**< Picture type unknown */
-} NV_ENC_PIC_TYPE;
-
-/**
- * Motion vector precisions
- */
-typedef enum _NV_ENC_MV_PRECISION
-{
- NV_ENC_MV_PRECISION_DEFAULT = 0x0, /**<Driver selects QuarterPel motion vector precision by default*/
- NV_ENC_MV_PRECISION_FULL_PEL = 0x01, /**< FullPel motion vector precision */
- NV_ENC_MV_PRECISION_HALF_PEL = 0x02, /**< HalfPel motion vector precision */
- NV_ENC_MV_PRECISION_QUARTER_PEL = 0x03 /**< QuarterPel motion vector precision */
-} NV_ENC_MV_PRECISION;
-
-
-/**
- * Input buffer formats
- */
-typedef enum _NV_ENC_BUFFER_FORMAT
-{
- NV_ENC_BUFFER_FORMAT_UNDEFINED = 0x00000000, /**< Undefined buffer format */
-
- NV_ENC_BUFFER_FORMAT_NV12 = 0x00000001, /**< Semi-Planar YUV [Y plane followed by interleaved UV plane] */
- NV_ENC_BUFFER_FORMAT_YV12 = 0x00000010, /**< Planar YUV [Y plane followed by V and U planes] */
- NV_ENC_BUFFER_FORMAT_IYUV = 0x00000100, /**< Planar YUV [Y plane followed by U and V planes] */
- NV_ENC_BUFFER_FORMAT_YUV444 = 0x00001000, /**< Planar YUV [Y plane followed by U and V planes] */
- NV_ENC_BUFFER_FORMAT_YUV420_10BIT = 0x00010000, /**< 10 bit Semi-Planar YUV [Y plane followed by interleaved UV plane]. Each pixel of size 2 bytes. Most Significant 10 bits contain pixel data. */
- NV_ENC_BUFFER_FORMAT_YUV444_10BIT = 0x00100000, /**< 10 bit Planar YUV444 [Y plane followed by U and V planes]. Each pixel of size 2 bytes. Most Significant 10 bits contain pixel data. */
- NV_ENC_BUFFER_FORMAT_ARGB = 0x01000000, /**< 8 bit Packed A8R8G8B8. This is a word-ordered format
- where a pixel is represented by a 32-bit word with B
- in the lowest 8 bits, G in the next 8 bits, R in the
- 8 bits after that and A in the highest 8 bits. */
- NV_ENC_BUFFER_FORMAT_ARGB10 = 0x02000000, /**< 10 bit Packed A2R10G10B10. This is a word-ordered format
- where a pixel is represented by a 32-bit word with B
- in the lowest 10 bits, G in the next 10 bits, R in the
- 10 bits after that and A in the highest 2 bits. */
- NV_ENC_BUFFER_FORMAT_AYUV = 0x04000000, /**< 8 bit Packed A8Y8U8V8. This is a word-ordered format
- where a pixel is represented by a 32-bit word with V
- in the lowest 8 bits, U in the next 8 bits, Y in the
- 8 bits after that and A in the highest 8 bits. */
- NV_ENC_BUFFER_FORMAT_ABGR = 0x10000000, /**< 8 bit Packed A8B8G8R8. This is a word-ordered format
- where a pixel is represented by a 32-bit word with R
- in the lowest 8 bits, G in the next 8 bits, B in the
- 8 bits after that and A in the highest 8 bits. */
- NV_ENC_BUFFER_FORMAT_ABGR10 = 0x20000000, /**< 10 bit Packed A2B10G10R10. This is a word-ordered format
- where a pixel is represented by a 32-bit word with R
- in the lowest 10 bits, G in the next 10 bits, B in the
- 10 bits after that and A in the highest 2 bits. */
-} NV_ENC_BUFFER_FORMAT;
-
-#define NV_ENC_BUFFER_FORMAT_NV12_PL NV_ENC_BUFFER_FORMAT_NV12
-#define NV_ENC_BUFFER_FORMAT_YV12_PL NV_ENC_BUFFER_FORMAT_YV12
-#define NV_ENC_BUFFER_FORMAT_IYUV_PL NV_ENC_BUFFER_FORMAT_IYUV
-#define NV_ENC_BUFFER_FORMAT_YUV444_PL NV_ENC_BUFFER_FORMAT_YUV444
-
-/**
- * Encoding levels
- */
-typedef enum _NV_ENC_LEVEL
-{
- NV_ENC_LEVEL_AUTOSELECT = 0,
-
- NV_ENC_LEVEL_H264_1 = 10,
- NV_ENC_LEVEL_H264_1b = 9,
- NV_ENC_LEVEL_H264_11 = 11,
- NV_ENC_LEVEL_H264_12 = 12,
- NV_ENC_LEVEL_H264_13 = 13,
- NV_ENC_LEVEL_H264_2 = 20,
- NV_ENC_LEVEL_H264_21 = 21,
- NV_ENC_LEVEL_H264_22 = 22,
- NV_ENC_LEVEL_H264_3 = 30,
- NV_ENC_LEVEL_H264_31 = 31,
- NV_ENC_LEVEL_H264_32 = 32,
- NV_ENC_LEVEL_H264_4 = 40,
- NV_ENC_LEVEL_H264_41 = 41,
- NV_ENC_LEVEL_H264_42 = 42,
- NV_ENC_LEVEL_H264_5 = 50,
- NV_ENC_LEVEL_H264_51 = 51,
- NV_ENC_LEVEL_H264_52 = 52,
-
-
- NV_ENC_LEVEL_HEVC_1 = 30,
- NV_ENC_LEVEL_HEVC_2 = 60,
- NV_ENC_LEVEL_HEVC_21 = 63,
- NV_ENC_LEVEL_HEVC_3 = 90,
- NV_ENC_LEVEL_HEVC_31 = 93,
- NV_ENC_LEVEL_HEVC_4 = 120,
- NV_ENC_LEVEL_HEVC_41 = 123,
- NV_ENC_LEVEL_HEVC_5 = 150,
- NV_ENC_LEVEL_HEVC_51 = 153,
- NV_ENC_LEVEL_HEVC_52 = 156,
- NV_ENC_LEVEL_HEVC_6 = 180,
- NV_ENC_LEVEL_HEVC_61 = 183,
- NV_ENC_LEVEL_HEVC_62 = 186,
-
- NV_ENC_TIER_HEVC_MAIN = 0,
- NV_ENC_TIER_HEVC_HIGH = 1
-} NV_ENC_LEVEL;
-
-/**
- * Error Codes
- */
-typedef enum _NVENCSTATUS
-{
- /**
- * This indicates that API call returned with no errors.
- */
- NV_ENC_SUCCESS,
-
- /**
- * This indicates that no encode capable devices were detected.
- */
- NV_ENC_ERR_NO_ENCODE_DEVICE,
-
- /**
- * This indicates that devices pass by the client is not supported.
- */
- NV_ENC_ERR_UNSUPPORTED_DEVICE,
-
- /**
- * This indicates that the encoder device supplied by the client is not
- * valid.
- */
- NV_ENC_ERR_INVALID_ENCODERDEVICE,
-
- /**
- * This indicates that device passed to the API call is invalid.
- */
- NV_ENC_ERR_INVALID_DEVICE,
-
- /**
- * This indicates that device passed to the API call is no longer available and
- * needs to be reinitialized. The clients need to destroy the current encoder
- * session by freeing the allocated input output buffers and destroying the device
- * and create a new encoding session.
- */
- NV_ENC_ERR_DEVICE_NOT_EXIST,
-
- /**
- * This indicates that one or more of the pointers passed to the API call
- * is invalid.
- */
- NV_ENC_ERR_INVALID_PTR,
-
- /**
- * This indicates that completion event passed in ::NvEncEncodePicture() call
- * is invalid.
- */
- NV_ENC_ERR_INVALID_EVENT,
-
- /**
- * This indicates that one or more of the parameter passed to the API call
- * is invalid.
- */
- NV_ENC_ERR_INVALID_PARAM,
-
- /**
- * This indicates that an API call was made in wrong sequence/order.
- */
- NV_ENC_ERR_INVALID_CALL,
-
- /**
- * This indicates that the API call failed because it was unable to allocate
- * enough memory to perform the requested operation.
- */
- NV_ENC_ERR_OUT_OF_MEMORY,
-
- /**
- * This indicates that the encoder has not been initialized with
- * ::NvEncInitializeEncoder() or that initialization has failed.
- * The client cannot allocate input or output buffers or do any encoding
- * related operation before successfully initializing the encoder.
- */
- NV_ENC_ERR_ENCODER_NOT_INITIALIZED,
-
- /**
- * This indicates that an unsupported parameter was passed by the client.
- */
- NV_ENC_ERR_UNSUPPORTED_PARAM,
-
- /**
- * This indicates that the ::NvEncLockBitstream() failed to lock the output
- * buffer. This happens when the client makes a non blocking lock call to
- * access the output bitstream by passing NV_ENC_LOCK_BITSTREAM::doNotWait flag.
- * This is not a fatal error and client should retry the same operation after
- * few milliseconds.
- */
- NV_ENC_ERR_LOCK_BUSY,
-
- /**
- * This indicates that the size of the user buffer passed by the client is
- * insufficient for the requested operation.
- */
- NV_ENC_ERR_NOT_ENOUGH_BUFFER,
-
- /**
- * This indicates that an invalid struct version was used by the client.
- */
- NV_ENC_ERR_INVALID_VERSION,
-
- /**
- * This indicates that ::NvEncMapInputResource() API failed to map the client
- * provided input resource.
- */
- NV_ENC_ERR_MAP_FAILED,
-
- /**
- * This indicates encode driver requires more input buffers to produce an output
- * bitstream. If this error is returned from ::NvEncEncodePicture() API, this
- * is not a fatal error. If the client is encoding with B frames then,
- * ::NvEncEncodePicture() API might be buffering the input frame for re-ordering.
- *
- * A client operating in synchronous mode cannot call ::NvEncLockBitstream()
- * API on the output bitstream buffer if ::NvEncEncodePicture() returned the
- * ::NV_ENC_ERR_NEED_MORE_INPUT error code.
- * The client must continue providing input frames until encode driver returns
- * ::NV_ENC_SUCCESS. After receiving ::NV_ENC_SUCCESS status the client can call
- * ::NvEncLockBitstream() API on the output buffers in the same order in which
- * it has called ::NvEncEncodePicture().
- */
- NV_ENC_ERR_NEED_MORE_INPUT,
-
- /**
- * This indicates that the HW encoder is busy encoding and is unable to encode
- * the input. The client should call ::NvEncEncodePicture() again after few
- * milliseconds.
- */
- NV_ENC_ERR_ENCODER_BUSY,
-
- /**
- * This indicates that the completion event passed in ::NvEncEncodePicture()
- * API has not been registered with encoder driver using ::NvEncRegisterAsyncEvent().
- */
- NV_ENC_ERR_EVENT_NOT_REGISTERD,
-
- /**
- * This indicates that an unknown internal error has occurred.
- */
- NV_ENC_ERR_GENERIC,
-
- /**
- * This indicates that the client is attempting to use a feature
- * that is not available for the license type for the current system.
- */
- NV_ENC_ERR_INCOMPATIBLE_CLIENT_KEY,
-
- /**
- * This indicates that the client is attempting to use a feature
- * that is not implemented for the current version.
- */
- NV_ENC_ERR_UNIMPLEMENTED,
-
- /**
- * This indicates that the ::NvEncRegisterResource API failed to register the resource.
- */
- NV_ENC_ERR_RESOURCE_REGISTER_FAILED,
-
- /**
- * This indicates that the client is attempting to unregister a resource
- * that has not been successfully registered.
- */
- NV_ENC_ERR_RESOURCE_NOT_REGISTERED,
-
- /**
- * This indicates that the client is attempting to unmap a resource
- * that has not been successfully mapped.
- */
- NV_ENC_ERR_RESOURCE_NOT_MAPPED,
-
-} NVENCSTATUS;
-
-/**
- * Encode Picture encode flags.
- */
-typedef enum _NV_ENC_PIC_FLAGS
-{
- NV_ENC_PIC_FLAG_FORCEINTRA = 0x1, /**< Encode the current picture as an Intra picture */
- NV_ENC_PIC_FLAG_FORCEIDR = 0x2, /**< Encode the current picture as an IDR picture.
- This flag is only valid when Picture type decision is taken by the Encoder
- [_NV_ENC_INITIALIZE_PARAMS::enablePTD == 1]. */
- NV_ENC_PIC_FLAG_OUTPUT_SPSPPS = 0x4, /**< Write the sequence and picture header in encoded bitstream of the current picture */
- NV_ENC_PIC_FLAG_EOS = 0x8, /**< Indicates end of the input stream */
-} NV_ENC_PIC_FLAGS;
-
-/**
- * Memory heap to allocate input and output buffers.
- */
-typedef enum _NV_ENC_MEMORY_HEAP
-{
- NV_ENC_MEMORY_HEAP_AUTOSELECT = 0, /**< Memory heap to be decided by the encoder driver based on the usage */
- NV_ENC_MEMORY_HEAP_VID = 1, /**< Memory heap is in local video memory */
- NV_ENC_MEMORY_HEAP_SYSMEM_CACHED = 2, /**< Memory heap is in cached system memory */
- NV_ENC_MEMORY_HEAP_SYSMEM_UNCACHED = 3 /**< Memory heap is in uncached system memory */
-} NV_ENC_MEMORY_HEAP;
-
-
-/**
- * H.264 entropy coding modes.
- */
-typedef enum _NV_ENC_H264_ENTROPY_CODING_MODE
-{
- NV_ENC_H264_ENTROPY_CODING_MODE_AUTOSELECT = 0x0, /**< Entropy coding mode is auto selected by the encoder driver */
- NV_ENC_H264_ENTROPY_CODING_MODE_CABAC = 0x1, /**< Entropy coding mode is CABAC */
- NV_ENC_H264_ENTROPY_CODING_MODE_CAVLC = 0x2 /**< Entropy coding mode is CAVLC */
-} NV_ENC_H264_ENTROPY_CODING_MODE;
-
-/**
- * H.264 specific Bdirect modes
- */
-typedef enum _NV_ENC_H264_BDIRECT_MODE
-{
- NV_ENC_H264_BDIRECT_MODE_AUTOSELECT = 0x0, /**< BDirect mode is auto selected by the encoder driver */
- NV_ENC_H264_BDIRECT_MODE_DISABLE = 0x1, /**< Disable BDirect mode */
- NV_ENC_H264_BDIRECT_MODE_TEMPORAL = 0x2, /**< Temporal BDirect mode */
- NV_ENC_H264_BDIRECT_MODE_SPATIAL = 0x3 /**< Spatial BDirect mode */
-} NV_ENC_H264_BDIRECT_MODE;
-
-/**
- * H.264 specific FMO usage
- */
-typedef enum _NV_ENC_H264_FMO_MODE
-{
- NV_ENC_H264_FMO_AUTOSELECT = 0x0, /**< FMO usage is auto selected by the encoder driver */
- NV_ENC_H264_FMO_ENABLE = 0x1, /**< Enable FMO */
- NV_ENC_H264_FMO_DISABLE = 0x2, /**< Disble FMO */
-} NV_ENC_H264_FMO_MODE;
-
-/**
- * H.264 specific Adaptive Transform modes
- */
-typedef enum _NV_ENC_H264_ADAPTIVE_TRANSFORM_MODE
-{
- NV_ENC_H264_ADAPTIVE_TRANSFORM_AUTOSELECT = 0x0, /**< Adaptive Transform 8x8 mode is auto selected by the encoder driver*/
- NV_ENC_H264_ADAPTIVE_TRANSFORM_DISABLE = 0x1, /**< Adaptive Transform 8x8 mode disabled */
- NV_ENC_H264_ADAPTIVE_TRANSFORM_ENABLE = 0x2, /**< Adaptive Transform 8x8 mode should be used */
-} NV_ENC_H264_ADAPTIVE_TRANSFORM_MODE;
-
-/**
- * Stereo frame packing modes.
- */
-typedef enum _NV_ENC_STEREO_PACKING_MODE
-{
- NV_ENC_STEREO_PACKING_MODE_NONE = 0x0, /**< No Stereo packing required */
- NV_ENC_STEREO_PACKING_MODE_CHECKERBOARD = 0x1, /**< Checkerboard mode for packing stereo frames */
- NV_ENC_STEREO_PACKING_MODE_COLINTERLEAVE = 0x2, /**< Column Interleave mode for packing stereo frames */
- NV_ENC_STEREO_PACKING_MODE_ROWINTERLEAVE = 0x3, /**< Row Interleave mode for packing stereo frames */
- NV_ENC_STEREO_PACKING_MODE_SIDEBYSIDE = 0x4, /**< Side-by-side mode for packing stereo frames */
- NV_ENC_STEREO_PACKING_MODE_TOPBOTTOM = 0x5, /**< Top-Bottom mode for packing stereo frames */
- NV_ENC_STEREO_PACKING_MODE_FRAMESEQ = 0x6 /**< Frame Sequential mode for packing stereo frames */
-} NV_ENC_STEREO_PACKING_MODE;
-
-/**
- * Input Resource type
- */
-typedef enum _NV_ENC_INPUT_RESOURCE_TYPE
-{
- NV_ENC_INPUT_RESOURCE_TYPE_DIRECTX = 0x0, /**< input resource type is a directx9 surface*/
- NV_ENC_INPUT_RESOURCE_TYPE_CUDADEVICEPTR = 0x1, /**< input resource type is a cuda device pointer surface*/
- NV_ENC_INPUT_RESOURCE_TYPE_CUDAARRAY = 0x2, /**< input resource type is a cuda array surface */
- NV_ENC_INPUT_RESOURCE_TYPE_OPENGL_TEX = 0x3 /**< input resource type is an OpenGL texture */
-} NV_ENC_INPUT_RESOURCE_TYPE;
-
-/**
- * Encoder Device type
- */
-typedef enum _NV_ENC_DEVICE_TYPE
-{
- NV_ENC_DEVICE_TYPE_DIRECTX = 0x0, /**< encode device type is a directx9 device */
- NV_ENC_DEVICE_TYPE_CUDA = 0x1, /**< encode device type is a cuda device */
- NV_ENC_DEVICE_TYPE_OPENGL = 0x2 /**< encode device type is an OpenGL device.
- Use of this device type is supported only on Linux */
-} NV_ENC_DEVICE_TYPE;
-
-/**
- * Encoder capabilities enumeration.
- */
-typedef enum _NV_ENC_CAPS
-{
- /**
- * Maximum number of B-Frames supported.
- */
- NV_ENC_CAPS_NUM_MAX_BFRAMES,
-
- /**
- * Rate control modes supported.
- * \n The API return value is a bitmask of the values in NV_ENC_PARAMS_RC_MODE.
- */
- NV_ENC_CAPS_SUPPORTED_RATECONTROL_MODES,
-
- /**
- * Indicates HW support for field mode encoding.
- * \n 0 : Interlaced mode encoding is not supported.
- * \n 1 : Interlaced field mode encoding is supported.
- * \n 2 : Interlaced frame encoding and field mode encoding are both supported.
- */
- NV_ENC_CAPS_SUPPORT_FIELD_ENCODING,
-
- /**
- * Indicates HW support for monochrome mode encoding.
- * \n 0 : Monochrome mode not supported.
- * \n 1 : Monochrome mode supported.
- */
- NV_ENC_CAPS_SUPPORT_MONOCHROME,
-
- /**
- * Indicates HW support for FMO.
- * \n 0 : FMO not supported.
- * \n 1 : FMO supported.
- */
- NV_ENC_CAPS_SUPPORT_FMO,
-
- /**
- * Indicates HW capability for Quarter pel motion estimation.
- * \n 0 : QuarterPel Motion Estimation not supported.
- * \n 1 : QuarterPel Motion Estimation supported.
- */
- NV_ENC_CAPS_SUPPORT_QPELMV,
-
- /**
- * H.264 specific. Indicates HW support for BDirect modes.
- * \n 0 : BDirect mode encoding not supported.
- * \n 1 : BDirect mode encoding supported.
- */
- NV_ENC_CAPS_SUPPORT_BDIRECT_MODE,
-
- /**
- * H264 specific. Indicates HW support for CABAC entropy coding mode.
- * \n 0 : CABAC entropy coding not supported.
- * \n 1 : CABAC entropy coding supported.
- */
- NV_ENC_CAPS_SUPPORT_CABAC,
-
- /**
- * Indicates HW support for Adaptive Transform.
- * \n 0 : Adaptive Transform not supported.
- * \n 1 : Adaptive Transform supported.
- */
- NV_ENC_CAPS_SUPPORT_ADAPTIVE_TRANSFORM,
-
- /**
- * Reserved enum field.
- */
- NV_ENC_CAPS_SUPPORT_RESERVED,
-
- /**
- * Indicates HW support for encoding Temporal layers.
- * \n 0 : Encoding Temporal layers not supported.
- * \n 1 : Encoding Temporal layers supported.
- */
- NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS,
-
- /**
- * Indicates HW support for Hierarchical P frames.
- * \n 0 : Hierarchical P frames not supported.
- * \n 1 : Hierarchical P frames supported.
- */
- NV_ENC_CAPS_SUPPORT_HIERARCHICAL_PFRAMES,
-
- /**
- * Indicates HW support for Hierarchical B frames.
- * \n 0 : Hierarchical B frames not supported.
- * \n 1 : Hierarchical B frames supported.
- */
- NV_ENC_CAPS_SUPPORT_HIERARCHICAL_BFRAMES,
-
- /**
- * Maximum Encoding level supported (See ::NV_ENC_LEVEL for details).
- */
- NV_ENC_CAPS_LEVEL_MAX,
-
- /**
- * Minimum Encoding level supported (See ::NV_ENC_LEVEL for details).
- */
- NV_ENC_CAPS_LEVEL_MIN,
-
- /**
- * Indicates HW support for separate colour plane encoding.
- * \n 0 : Separate colour plane encoding not supported.
- * \n 1 : Separate colour plane encoding supported.
- */
- NV_ENC_CAPS_SEPARATE_COLOUR_PLANE,
-
- /**
- * Maximum output width supported.
- */
- NV_ENC_CAPS_WIDTH_MAX,
-
- /**
- * Maximum output height supported.
- */
- NV_ENC_CAPS_HEIGHT_MAX,
-
- /**
- * Indicates Temporal Scalability Support.
- * \n 0 : Temporal SVC encoding not supported.
- * \n 1 : Temporal SVC encoding supported.
- */
- NV_ENC_CAPS_SUPPORT_TEMPORAL_SVC,
-
- /**
- * Indicates Dynamic Encode Resolution Change Support.
- * Support added from NvEncodeAPI version 2.0.
- * \n 0 : Dynamic Encode Resolution Change not supported.
- * \n 1 : Dynamic Encode Resolution Change supported.
- */
- NV_ENC_CAPS_SUPPORT_DYN_RES_CHANGE,
-
- /**
- * Indicates Dynamic Encode Bitrate Change Support.
- * Support added from NvEncodeAPI version 2.0.
- * \n 0 : Dynamic Encode bitrate change not supported.
- * \n 1 : Dynamic Encode bitrate change supported.
- */
- NV_ENC_CAPS_SUPPORT_DYN_BITRATE_CHANGE,
-
- /**
- * Indicates Forcing Constant QP On The Fly Support.
- * Support added from NvEncodeAPI version 2.0.
- * \n 0 : Forcing constant QP on the fly not supported.
- * \n 1 : Forcing constant QP on the fly supported.
- */
- NV_ENC_CAPS_SUPPORT_DYN_FORCE_CONSTQP,
-
- /**
- * Indicates Dynamic rate control mode Change Support.
- * \n 0 : Dynamic rate control mode change not supported.
- * \n 1 : Dynamic rate control mode change supported.
- */
- NV_ENC_CAPS_SUPPORT_DYN_RCMODE_CHANGE,
-
- /**
- * Indicates Subframe readback support for slice-based encoding.
- * \n 0 : Subframe readback not supported.
- * \n 1 : Subframe readback supported.
- */
- NV_ENC_CAPS_SUPPORT_SUBFRAME_READBACK,
-
- /**
- * Indicates Constrained Encoding mode support.
- * Support added from NvEncodeAPI version 2.0.
- * \n 0 : Constrained encoding mode not supported.
- * \n 1 : Constarined encoding mode supported.
- * If this mode is supported client can enable this during initialisation.
- * Client can then force a picture to be coded as constrained picture where
- * each slice in a constrained picture will have constrained_intra_pred_flag set to 1
- * and disable_deblocking_filter_idc will be set to 2 and prediction vectors for inter
- * macroblocks in each slice will be restricted to the slice region.
- */
- NV_ENC_CAPS_SUPPORT_CONSTRAINED_ENCODING,
-
- /**
- * Indicates Intra Refresh Mode Support.
- * Support added from NvEncodeAPI version 2.0.
- * \n 0 : Intra Refresh Mode not supported.
- * \n 1 : Intra Refresh Mode supported.
- */
- NV_ENC_CAPS_SUPPORT_INTRA_REFRESH,
-
- /**
- * Indicates Custom VBV Bufer Size support. It can be used for capping frame size.
- * Support added from NvEncodeAPI version 2.0.
- * \n 0 : Custom VBV buffer size specification from client, not supported.
- * \n 1 : Custom VBV buffer size specification from client, supported.
- */
- NV_ENC_CAPS_SUPPORT_CUSTOM_VBV_BUF_SIZE,
-
- /**
- * Indicates Dynamic Slice Mode Support.
- * Support added from NvEncodeAPI version 2.0.
- * \n 0 : Dynamic Slice Mode not supported.
- * \n 1 : Dynamic Slice Mode supported.
- */
- NV_ENC_CAPS_SUPPORT_DYNAMIC_SLICE_MODE,
-
- /**
- * Indicates Reference Picture Invalidation Support.
- * Support added from NvEncodeAPI version 2.0.
- * \n 0 : Reference Picture Invalidation not supported.
- * \n 1 : Reference Picture Invalidation supported.
- */
- NV_ENC_CAPS_SUPPORT_REF_PIC_INVALIDATION,
-
- /**
- * Indicates support for PreProcessing.
- * The API return value is a bitmask of the values defined in ::NV_ENC_PREPROC_FLAGS
- */
- NV_ENC_CAPS_PREPROC_SUPPORT,
-
- /**
- * Indicates support Async mode.
- * \n 0 : Async Encode mode not supported.
- * \n 1 : Async Encode mode supported.
- */
- NV_ENC_CAPS_ASYNC_ENCODE_SUPPORT,
-
- /**
- * Maximum MBs per frame supported.
- */
- NV_ENC_CAPS_MB_NUM_MAX,
-
- /**
- * Maximum aggregate throughput in MBs per sec.
- */
- NV_ENC_CAPS_MB_PER_SEC_MAX,
-
- /**
- * Indicates HW support for YUV444 mode encoding.
- * \n 0 : YUV444 mode encoding not supported.
- * \n 1 : YUV444 mode encoding supported.
- */
- NV_ENC_CAPS_SUPPORT_YUV444_ENCODE,
-
- /**
- * Indicates HW support for lossless encoding.
- * \n 0 : lossless encoding not supported.
- * \n 1 : lossless encoding supported.
- */
- NV_ENC_CAPS_SUPPORT_LOSSLESS_ENCODE,
-
- /**
- * Indicates HW support for Sample Adaptive Offset.
- * \n 0 : SAO not supported.
- * \n 1 : SAO encoding supported.
- */
- NV_ENC_CAPS_SUPPORT_SAO,
-
- /**
- * Indicates HW support for MEOnly Mode.
- * \n 0 : MEOnly Mode not supported.
- * \n 1 : MEOnly Mode supported for I and P frames.
- * \n 2 : MEOnly Mode supported for I, P and B frames.
- */
- NV_ENC_CAPS_SUPPORT_MEONLY_MODE,
-
- /**
- * Indicates HW support for lookahead encoding (enableLookahead=1).
- * \n 0 : Lookahead not supported.
- * \n 1 : Lookahead supported.
- */
- NV_ENC_CAPS_SUPPORT_LOOKAHEAD,
-
- /**
- * Indicates HW support for temporal AQ encoding (enableTemporalAQ=1).
- * \n 0 : Temporal AQ not supported.
- * \n 1 : Temporal AQ supported.
- */
- NV_ENC_CAPS_SUPPORT_TEMPORAL_AQ,
- /**
- * Indicates HW support for 10 bit encoding.
- * \n 0 : 10 bit encoding not supported.
- * \n 1 : 10 bit encoding supported.
- */
- NV_ENC_CAPS_SUPPORT_10BIT_ENCODE,
- /**
- * Maximum number of Long Term Reference frames supported
- */
- NV_ENC_CAPS_NUM_MAX_LTR_FRAMES,
-
- /**
- * Indicates HW support for Weighted Predicition.
- * \n 0 : Weighted Predicition not supported.
- * \n 1 : Weighted Predicition supported.
- */
- NV_ENC_CAPS_SUPPORT_WEIGHTED_PREDICTION,
-
- /**
- * Reserved - Not to be used by clients.
- */
- NV_ENC_CAPS_EXPOSED_COUNT
-} NV_ENC_CAPS;
-
-/**
- * HEVC CU SIZE
- */
-typedef enum _NV_ENC_HEVC_CUSIZE
-{
- NV_ENC_HEVC_CUSIZE_AUTOSELECT = 0,
- NV_ENC_HEVC_CUSIZE_8x8 = 1,
- NV_ENC_HEVC_CUSIZE_16x16 = 2,
- NV_ENC_HEVC_CUSIZE_32x32 = 3,
- NV_ENC_HEVC_CUSIZE_64x64 = 4,
-}NV_ENC_HEVC_CUSIZE;
-
-/**
- * Input struct for querying Encoding capabilities.
- */
-typedef struct _NV_ENC_CAPS_PARAM
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_CAPS_PARAM_VER */
- NV_ENC_CAPS capsToQuery; /**< [in]: Specifies the encode capability to be queried. Client should pass a member for ::NV_ENC_CAPS enum. */
- uint32_t reserved[62]; /**< [in]: Reserved and must be set to 0 */
-} NV_ENC_CAPS_PARAM;
-
-/** NV_ENC_CAPS_PARAM struct version. */
-#define NV_ENC_CAPS_PARAM_VER NVENCAPI_STRUCT_VERSION(1)
-
-
-/**
- * Creation parameters for input buffer.
- */
-typedef struct _NV_ENC_CREATE_INPUT_BUFFER
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_CREATE_INPUT_BUFFER_VER */
- uint32_t width; /**< [in]: Input buffer width */
- uint32_t height; /**< [in]: Input buffer width */
- NV_ENC_MEMORY_HEAP memoryHeap; /**< [in]: Deprecated. Do not use */
- NV_ENC_BUFFER_FORMAT bufferFmt; /**< [in]: Input buffer format */
- uint32_t reserved; /**< [in]: Reserved and must be set to 0 */
- NV_ENC_INPUT_PTR inputBuffer; /**< [out]: Pointer to input buffer */
- void* pSysMemBuffer; /**< [in]: Pointer to existing sysmem buffer */
- uint32_t reserved1[57]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[63]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_CREATE_INPUT_BUFFER;
-
-/** NV_ENC_CREATE_INPUT_BUFFER struct version. */
-#define NV_ENC_CREATE_INPUT_BUFFER_VER NVENCAPI_STRUCT_VERSION(1)
-
-/**
- * Creation parameters for output bitstream buffer.
- */
-typedef struct _NV_ENC_CREATE_BITSTREAM_BUFFER
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_CREATE_BITSTREAM_BUFFER_VER */
- uint32_t size; /**< [in]: Deprecated. Do not use */
- NV_ENC_MEMORY_HEAP memoryHeap; /**< [in]: Deprecated. Do not use */
- uint32_t reserved; /**< [in]: Reserved and must be set to 0 */
- NV_ENC_OUTPUT_PTR bitstreamBuffer; /**< [out]: Pointer to the output bitstream buffer */
- void* bitstreamBufferPtr; /**< [out]: Reserved and should not be used */
- uint32_t reserved1[58]; /**< [in]: Reserved and should be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and should be set to NULL */
-} NV_ENC_CREATE_BITSTREAM_BUFFER;
-
-/** NV_ENC_CREATE_BITSTREAM_BUFFER struct version. */
-#define NV_ENC_CREATE_BITSTREAM_BUFFER_VER NVENCAPI_STRUCT_VERSION(1)
-
-/**
- * Structs needed for ME only mode.
- */
-typedef struct _NV_ENC_MVECTOR
-{
- int16_t mvx; /**< the x component of MV in qpel units */
- int16_t mvy; /**< the y component of MV in qpel units */
-} NV_ENC_MVECTOR;
-
-/**
- * Motion vector structure per macroblock for H264 motion estimation.
- */
-typedef struct _NV_ENC_H264_MV_DATA
-{
- NV_ENC_MVECTOR mv[4]; /**< up to 4 vectors for 8x8 partition */
- uint8_t mbType; /**< 0 (I), 1 (P), 2 (IPCM), 3 (B) */
- uint8_t partitionType; /**< Specifies the block partition type. 0:16x16, 1:8x8, 2:16x8, 3:8x16 */
- uint16_t reserved; /**< reserved padding for alignment */
- uint32_t mbCost;
-} NV_ENC_H264_MV_DATA;
-
-/**
- * Motion vector structure per CU for HEVC motion estimation.
- */
-typedef struct _NV_ENC_HEVC_MV_DATA
-{
- NV_ENC_MVECTOR mv[4]; /**< up to 4 vectors within a CU */
- uint8_t cuType; /**< 0 (I), 1(P), 2 (Skip) */
- uint8_t cuSize; /**< 0: 8x8, 1: 16x16, 2: 32x32, 3: 64x64 */
- uint8_t partitionMode; /**< The CU partition mode
- 0 (2Nx2N), 1 (2NxN), 2(Nx2N), 3 (NxN),
- 4 (2NxnU), 5 (2NxnD), 6(nLx2N), 7 (nRx2N) */
- uint8_t lastCUInCTB; /**< Marker to separate CUs in the current CTB from CUs in the next CTB */
-} NV_ENC_HEVC_MV_DATA;
-
-/**
- * Creation parameters for output motion vector buffer for ME only mode.
- */
-typedef struct _NV_ENC_CREATE_MV_BUFFER
-{
- uint32_t version; /**< [in]: Struct version. Must be set to NV_ENC_CREATE_MV_BUFFER_VER */
- NV_ENC_OUTPUT_PTR mvBuffer; /**< [out]: Pointer to the output motion vector buffer */
- uint32_t reserved1[255]; /**< [in]: Reserved and should be set to 0 */
- void* reserved2[63]; /**< [in]: Reserved and should be set to NULL */
-} NV_ENC_CREATE_MV_BUFFER;
-
-/** NV_ENC_CREATE_MV_BUFFER struct version*/
-#define NV_ENC_CREATE_MV_BUFFER_VER NVENCAPI_STRUCT_VERSION(1)
-
-/**
- * QP value for frames
- */
-typedef struct _NV_ENC_QP
-{
- uint32_t qpInterP;
- uint32_t qpInterB;
- uint32_t qpIntra;
-} NV_ENC_QP;
-
-/**
- * Rate Control Configuration Paramters
- */
- typedef struct _NV_ENC_RC_PARAMS
- {
- uint32_t version;
- NV_ENC_PARAMS_RC_MODE rateControlMode; /**< [in]: Specifies the rate control mode. Check support for various rate control modes using ::NV_ENC_CAPS_SUPPORTED_RATECONTROL_MODES caps. */
- NV_ENC_QP constQP; /**< [in]: Specifies the initial QP to be used for encoding, these values would be used for all frames if in Constant QP mode. */
- uint32_t averageBitRate; /**< [in]: Specifies the average bitrate(in bits/sec) used for encoding. */
- uint32_t maxBitRate; /**< [in]: Specifies the maximum bitrate for the encoded output. This is used for VBR and ignored for CBR mode. */
- uint32_t vbvBufferSize; /**< [in]: Specifies the VBV(HRD) buffer size. in bits. Set 0 to use the default VBV buffer size. */
- uint32_t vbvInitialDelay; /**< [in]: Specifies the VBV(HRD) initial delay in bits. Set 0 to use the default VBV initial delay .*/
- uint32_t enableMinQP :1; /**< [in]: Set this to 1 if minimum QP used for rate control. */
- uint32_t enableMaxQP :1; /**< [in]: Set this to 1 if maximum QP used for rate control. */
- uint32_t enableInitialRCQP :1; /**< [in]: Set this to 1 if user suppplied initial QP is used for rate control. */
- uint32_t enableAQ :1; /**< [in]: Set this to 1 to enable adaptive quantization (Spatial). */
- uint32_t enableExtQPDeltaMap :1; /**< [in]: Set this to 1 to enable additional QP modifier for each MB supplied by client though signed byte array pointed to by NV_ENC_PIC_PARAMS::qpDeltaMap (Not Supported when AQ(Spatial/Temporal) is enabled) */
- uint32_t enableLookahead :1; /**< [in]: Set this to 1 to enable lookahead with depth <lookaheadDepth> (if lookahead is enabled, input frames must remain available to the encoder until encode completion) */
- uint32_t disableIadapt :1; /**< [in]: Set this to 1 to disable adaptive I-frame insertion at scene cuts (only has an effect when lookahead is enabled) */
- uint32_t disableBadapt :1; /**< [in]: Set this to 1 to disable adaptive B-frame decision (only has an effect when lookahead is enabled) */
- uint32_t enableTemporalAQ :1; /**< [in]: Set this to 1 to enable temporal AQ for H.264 */
- uint32_t zeroReorderDelay :1; /**< [in]: Set this to 1 to indicate zero latency operation (no reordering delay, num_reorder_frames=0) */
- uint32_t enableNonRefP :1; /**< [in]: Set this to 1 to enable automatic insertion of non-reference P-frames (no effect if enablePTD=0) */
- uint32_t strictGOPTarget :1; /**< [in]: Set this to 1 to minimize GOP-to-GOP rate fluctuations */
- uint32_t aqStrength :4; /**< [in]: When AQ (Spatial) is enabled (i.e. NV_ENC_RC_PARAMS::enableAQ is set), this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive). If not set, strength is autoselected by driver. */
- uint32_t reservedBitFields :16; /**< [in]: Reserved bitfields and must be set to 0 */
- NV_ENC_QP minQP; /**< [in]: Specifies the minimum QP used for rate control. Client must set NV_ENC_CONFIG::enableMinQP to 1. */
- NV_ENC_QP maxQP; /**< [in]: Specifies the maximum QP used for rate control. Client must set NV_ENC_CONFIG::enableMaxQP to 1. */
- NV_ENC_QP initialRCQP; /**< [in]: Specifies the initial QP used for rate control. Client must set NV_ENC_CONFIG::enableInitialRCQP to 1. */
- uint32_t temporallayerIdxMask; /**< [in]: Specifies the temporal layers (as a bitmask) whose QPs have changed. Valid max bitmask is [2^NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS - 1] */
- uint8_t temporalLayerQP[8]; /**< [in]: Specifies the temporal layer QPs used for rate control. Temporal layer index is used as as the array index */
- uint8_t targetQuality; /**< [in]: Target CQ (Constant Quality) level for VBR mode (range 0-51 with 0-automatic) */
- uint8_t targetQualityLSB; /**< [in]: Fractional part of target quality (as 8.8 fixed point format) */
- uint16_t lookaheadDepth; /**< [in]: Maximum depth of lookahead with range 0-32 (only used if enableLookahead=1) */
- uint32_t reserved[9];
- } NV_ENC_RC_PARAMS;
-
-/** macro for constructing the version field of ::_NV_ENC_RC_PARAMS */
-#define NV_ENC_RC_PARAMS_VER NVENCAPI_STRUCT_VERSION(1)
-
-
-
-/**
- * \struct _NV_ENC_CONFIG_H264_VUI_PARAMETERS
- * H264 Video Usability Info parameters
- */
-typedef struct _NV_ENC_CONFIG_H264_VUI_PARAMETERS
-{
- uint32_t overscanInfoPresentFlag; /**< [in]: if set to 1 , it specifies that the overscanInfo is present */
- uint32_t overscanInfo; /**< [in]: Specifies the overscan info(as defined in Annex E of the ITU-T Specification). */
- uint32_t videoSignalTypePresentFlag; /**< [in]: If set to 1, it specifies that the videoFormat, videoFullRangeFlag and colourDescriptionPresentFlag are present. */
- uint32_t videoFormat; /**< [in]: Specifies the source video format(as defined in Annex E of the ITU-T Specification).*/
- uint32_t videoFullRangeFlag; /**< [in]: Specifies the output range of the luma and chroma samples(as defined in Annex E of the ITU-T Specification). */
- uint32_t colourDescriptionPresentFlag; /**< [in]: If set to 1, it specifies that the colourPrimaries, transferCharacteristics and colourMatrix are present. */
- uint32_t colourPrimaries; /**< [in]: Specifies color primaries for converting to RGB(as defined in Annex E of the ITU-T Specification) */
- uint32_t transferCharacteristics; /**< [in]: Specifies the opto-electronic transfer characteristics to use (as defined in Annex E of the ITU-T Specification) */
- uint32_t colourMatrix; /**< [in]: Specifies the matrix coefficients used in deriving the luma and chroma from the RGB primaries (as defined in Annex E of the ITU-T Specification). */
- uint32_t chromaSampleLocationFlag; /**< [in]: if set to 1 , it specifies that the chromaSampleLocationTop and chromaSampleLocationBot are present.*/
- uint32_t chromaSampleLocationTop; /**< [in]: Specifies the chroma sample location for top field(as defined in Annex E of the ITU-T Specification) */
- uint32_t chromaSampleLocationBot; /**< [in]: Specifies the chroma sample location for bottom field(as defined in Annex E of the ITU-T Specification) */
- uint32_t bitstreamRestrictionFlag; /**< [in]: if set to 1, it specifies the bitstream restriction parameters are present in the bitstream.*/
- uint32_t reserved[15];
-}NV_ENC_CONFIG_H264_VUI_PARAMETERS;
-
-typedef NV_ENC_CONFIG_H264_VUI_PARAMETERS NV_ENC_CONFIG_HEVC_VUI_PARAMETERS;
-
-/**
- * \struct _NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE
- * External motion vector hint counts per block type.
- * H264 supports multiple hint while HEVC supports one hint for each valid candidate.
- */
-typedef struct _NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE
-{
- uint32_t numCandsPerBlk16x16 : 4; /**< [in]: Supported for H264,HEVC.It Specifies the number of candidates per 16x16 block. */
- uint32_t numCandsPerBlk16x8 : 4; /**< [in]: Supported for H264 only.Specifies the number of candidates per 16x8 block. */
- uint32_t numCandsPerBlk8x16 : 4; /**< [in]: Supported for H264 only.Specifies the number of candidates per 8x16 block. */
- uint32_t numCandsPerBlk8x8 : 4; /**< [in]: Supported for H264,HEVC.Specifies the number of candidates per 8x8 block. */
- uint32_t reserved : 16; /**< [in]: Reserved for padding. */
- uint32_t reserved1[3]; /**< [in]: Reserved for future use. */
-} NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE;
-
-
-/**
- * \struct _NVENC_EXTERNAL_ME_HINT
- * External Motion Vector hint structure.
- */
-typedef struct _NVENC_EXTERNAL_ME_HINT
-{
- int32_t mvx : 12; /**< [in]: Specifies the x component of integer pixel MV (relative to current MB) S12.0. */
- int32_t mvy : 10; /**< [in]: Specifies the y component of integer pixel MV (relative to current MB) S10.0 .*/
- int32_t refidx : 5; /**< [in]: Specifies the reference index (31=invalid). Current we support only 1 reference frame per direction for external hints, so \p refidx must be 0. */
- int32_t dir : 1; /**< [in]: Specifies the direction of motion estimation . 0=L0 1=L1.*/
- int32_t partType : 2; /**< [in]: Specifies the block partition type.0=16x16 1=16x8 2=8x16 3=8x8 (blocks in partition must be consecutive).*/
- int32_t lastofPart : 1; /**< [in]: Set to 1 for the last MV of (sub) partition */
- int32_t lastOfMB : 1; /**< [in]: Set to 1 for the last MV of macroblock. */
-} NVENC_EXTERNAL_ME_HINT;
-
-
-/**
- * \struct _NV_ENC_CONFIG_H264
- * H264 encoder configuration parameters
- */
-typedef struct _NV_ENC_CONFIG_H264
-{
- uint32_t enableTemporalSVC :1; /**< [in]: Set to 1 to enable SVC temporal*/
- uint32_t enableStereoMVC :1; /**< [in]: Set to 1 to enable stereo MVC*/
- uint32_t hierarchicalPFrames :1; /**< [in]: Set to 1 to enable hierarchical PFrames */
- uint32_t hierarchicalBFrames :1; /**< [in]: Set to 1 to enable hierarchical BFrames */
- uint32_t outputBufferingPeriodSEI :1; /**< [in]: Set to 1 to write SEI buffering period syntax in the bitstream */
- uint32_t outputPictureTimingSEI :1; /**< [in]: Set to 1 to write SEI picture timing syntax in the bitstream. When set for following rateControlMode : NV_ENC_PARAMS_RC_CBR, NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ,
- NV_ENC_PARAMS_RC_CBR_HQ, filler data is inserted if needed to achieve hrd bitrate */
- uint32_t outputAUD :1; /**< [in]: Set to 1 to write access unit delimiter syntax in bitstream */
- uint32_t disableSPSPPS :1; /**< [in]: Set to 1 to disable writing of Sequence and Picture parameter info in bitstream */
- uint32_t outputFramePackingSEI :1; /**< [in]: Set to 1 to enable writing of frame packing arrangement SEI messages to bitstream */
- uint32_t outputRecoveryPointSEI :1; /**< [in]: Set to 1 to enable writing of recovery point SEI message */
- uint32_t enableIntraRefresh :1; /**< [in]: Set to 1 to enable gradual decoder refresh or intra refresh. If the GOP structure uses B frames this will be ignored */
- uint32_t enableConstrainedEncoding :1; /**< [in]: Set this to 1 to enable constrainedFrame encoding where each slice in the constarined picture is independent of other slices
- Check support for constrained encoding using ::NV_ENC_CAPS_SUPPORT_CONSTRAINED_ENCODING caps. */
- uint32_t repeatSPSPPS :1; /**< [in]: Set to 1 to enable writing of Sequence and Picture parameter for every IDR frame */
- uint32_t enableVFR :1; /**< [in]: Set to 1 to enable variable frame rate. */
- uint32_t enableLTR :1; /**< [in]: Set to 1 to enable LTR (Long Term Reference) frame support. LTR can be used in two modes: "LTR Trust" mode and "LTR Per Picture" mode.
- LTR Trust mode: In this mode, ltrNumFrames pictures after IDR are automatically marked as LTR. This mode is enabled by setting ltrTrustMode = 1.
- Use of LTR Trust mode is strongly discouraged as this mode may be deprecated in future.
- LTR Per Picture mode: In this mode, client can control whether the current picture should be marked as LTR. Enable this mode by setting
- ltrTrustMode = 0 and ltrMarkFrame = 1 for the picture to be marked as LTR. This is the preferred mode
- for using LTR.
- Note that LTRs are not supported if encoding session is configured with B-frames */
- uint32_t qpPrimeYZeroTransformBypassFlag :1; /**< [in]: To enable lossless encode set this to 1, set QP to 0 and RC_mode to NV_ENC_PARAMS_RC_CONSTQP and profile to HIGH_444_PREDICTIVE_PROFILE.
- Check support for lossless encoding using ::NV_ENC_CAPS_SUPPORT_LOSSLESS_ENCODE caps. */
- uint32_t useConstrainedIntraPred :1; /**< [in]: Set 1 to enable constrained intra prediction. */
- uint32_t reservedBitFields :15; /**< [in]: Reserved bitfields and must be set to 0 */
- uint32_t level; /**< [in]: Specifies the encoding level. Client is recommended to set this to NV_ENC_LEVEL_AUTOSELECT in order to enable the NvEncodeAPI interface to select the correct level. */
- uint32_t idrPeriod; /**< [in]: Specifies the IDR interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG.Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */
- uint32_t separateColourPlaneFlag; /**< [in]: Set to 1 to enable 4:4:4 separate colour planes */
- uint32_t disableDeblockingFilterIDC; /**< [in]: Specifies the deblocking filter mode. Permissible value range: [0,2] */
- uint32_t numTemporalLayers; /**< [in]: Specifies max temporal layers to be used for hierarchical coding. Valid value range is [1,::NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS] */
- uint32_t spsId; /**< [in]: Specifies the SPS id of the sequence header */
- uint32_t ppsId; /**< [in]: Specifies the PPS id of the picture header */
- NV_ENC_H264_ADAPTIVE_TRANSFORM_MODE adaptiveTransformMode; /**< [in]: Specifies the AdaptiveTransform Mode. Check support for AdaptiveTransform mode using ::NV_ENC_CAPS_SUPPORT_ADAPTIVE_TRANSFORM caps. */
- NV_ENC_H264_FMO_MODE fmoMode; /**< [in]: Specified the FMO Mode. Check support for FMO using ::NV_ENC_CAPS_SUPPORT_FMO caps. */
- NV_ENC_H264_BDIRECT_MODE bdirectMode; /**< [in]: Specifies the BDirect mode. Check support for BDirect mode using ::NV_ENC_CAPS_SUPPORT_BDIRECT_MODE caps.*/
- NV_ENC_H264_ENTROPY_CODING_MODE entropyCodingMode; /**< [in]: Specifies the entropy coding mode. Check support for CABAC mode using ::NV_ENC_CAPS_SUPPORT_CABAC caps. */
- NV_ENC_STEREO_PACKING_MODE stereoMode; /**< [in]: Specifies the stereo frame packing mode which is to be signalled in frame packing arrangement SEI */
- uint32_t intraRefreshPeriod; /**< [in]: Specifies the interval between successive intra refresh if enableIntrarefresh is set. Requires enableIntraRefresh to be set.
- Will be disabled if NV_ENC_CONFIG::gopLength is not set to NVENC_INFINITE_GOPLENGTH. */
- uint32_t intraRefreshCnt; /**< [in]: Specifies the length of intra refresh in number of frames for periodic intra refresh. This value should be smaller than intraRefreshPeriod */
- uint32_t maxNumRefFrames; /**< [in]: Specifies the DPB size used for encoding. Setting it to 0 will let driver use the default dpb size.
- The low latency application which wants to invalidate reference frame as an error resilience tool
- is recommended to use a large DPB size so that the encoder can keep old reference frames which can be used if recent
- frames are invalidated. */
- uint32_t sliceMode; /**< [in]: This parameter in conjunction with sliceModeData specifies the way in which the picture is divided into slices
- sliceMode = 0 MB based slices, sliceMode = 1 Byte based slices, sliceMode = 2 MB row based slices, sliceMode = 3, numSlices in Picture
- When forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode setting
- When sliceMode == 0 and sliceModeData == 0 whole picture will be coded with one slice */
- uint32_t sliceModeData; /**< [in]: Specifies the parameter needed for sliceMode. For:
- sliceMode = 0, sliceModeData specifies # of MBs in each slice (except last slice)
- sliceMode = 1, sliceModeData specifies maximum # of bytes in each slice (except last slice)
- sliceMode = 2, sliceModeData specifies # of MB rows in each slice (except last slice)
- sliceMode = 3, sliceModeData specifies number of slices in the picture. Driver will divide picture into slices optimally */
- NV_ENC_CONFIG_H264_VUI_PARAMETERS h264VUIParameters; /**< [in]: Specifies the H264 video usability info pamameters */
- uint32_t ltrNumFrames; /**< [in]: Specifies the number of LTR frames. This parameter has different meaning in two LTR modes.
- In "LTR Trust" mode (ltrTrustMode = 1), encoder will mark the first ltrNumFrames base layer reference frames within each IDR interval as LTR.
- In "LTR Per Picture" mode (ltrTrustMode = 0 and ltrMarkFrame = 1), ltrNumFrames specifies maximum number of LTR frames in DPB. */
- uint32_t ltrTrustMode; /**< [in]: Specifies the LTR operating mode. See comments near NV_ENC_CONFIG_H264::enableLTR for description of the two modes.
- Set to 1 to use "LTR Trust" mode of LTR operation. Clients are discouraged to use "LTR Trust" mode as this mode may
- be deprecated in future releases.
- Set to 0 when using "LTR Per Picture" mode of LTR operation. */
- uint32_t chromaFormatIDC; /**< [in]: Specifies the chroma format. Should be set to 1 for yuv420 input, 3 for yuv444 input.
- Check support for YUV444 encoding using ::NV_ENC_CAPS_SUPPORT_YUV444_ENCODE caps.*/
- uint32_t maxTemporalLayers; /**< [in]: Specifies the max temporal layer used for hierarchical coding. */
- uint32_t reserved1[270]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_CONFIG_H264;
-
-
-/**
- * \struct _NV_ENC_CONFIG_HEVC
- * HEVC encoder configuration parameters to be set during initialization.
- */
-typedef struct _NV_ENC_CONFIG_HEVC
-{
- uint32_t level; /**< [in]: Specifies the level of the encoded bitstream.*/
- uint32_t tier; /**< [in]: Specifies the level tier of the encoded bitstream.*/
- NV_ENC_HEVC_CUSIZE minCUSize; /**< [in]: Specifies the minimum size of luma coding unit.*/
- NV_ENC_HEVC_CUSIZE maxCUSize; /**< [in]: Specifies the maximum size of luma coding unit. Currently NVENC SDK only supports maxCUSize equal to NV_ENC_HEVC_CUSIZE_32x32.*/
- uint32_t useConstrainedIntraPred :1; /**< [in]: Set 1 to enable constrained intra prediction. */
- uint32_t disableDeblockAcrossSliceBoundary :1; /**< [in]: Set 1 to disable in loop filtering across slice boundary.*/
- uint32_t outputBufferingPeriodSEI :1; /**< [in]: Set 1 to write SEI buffering period syntax in the bitstream */
- uint32_t outputPictureTimingSEI :1; /**< [in]: Set 1 to write SEI picture timing syntax in the bitstream */
- uint32_t outputAUD :1; /**< [in]: Set 1 to write Access Unit Delimiter syntax. */
- uint32_t enableLTR :1; /**< [in]: Set to 1 to enable LTR (Long Term Reference) frame support. LTR can be used in two modes: "LTR Trust" mode and "LTR Per Picture" mode.
- LTR Trust mode: In this mode, ltrNumFrames pictures after IDR are automatically marked as LTR. This mode is enabled by setting ltrTrustMode = 1.
- Use of LTR Trust mode is strongly discouraged as this mode may be deprecated in future releases.
- LTR Per Picture mode: In this mode, client can control whether the current picture should be marked as LTR. Enable this mode by setting
- ltrTrustMode = 0 and ltrMarkFrame = 1 for the picture to be marked as LTR. This is the preferred mode
- for using LTR.
- Note that LTRs are not supported if encoding session is configured with B-frames */
- uint32_t disableSPSPPS :1; /**< [in]: Set 1 to disable VPS,SPS and PPS signalling in the bitstream. */
- uint32_t repeatSPSPPS :1; /**< [in]: Set 1 to output VPS,SPS and PPS for every IDR frame.*/
- uint32_t enableIntraRefresh :1; /**< [in]: Set 1 to enable gradual decoder refresh or intra refresh. If the GOP structure uses B frames this will be ignored */
- uint32_t chromaFormatIDC :2; /**< [in]: Specifies the chroma format. Should be set to 1 for yuv420 input, 3 for yuv444 input.*/
- uint32_t pixelBitDepthMinus8 :3; /**< [in]: Specifies pixel bit depth minus 8. Should be set to 0 for 8 bit input, 2 for 10 bit input.*/
- uint32_t reserved :18; /**< [in]: Reserved bitfields.*/
- uint32_t idrPeriod; /**< [in]: Specifies the IDR interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG.Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */
- uint32_t intraRefreshPeriod; /**< [in]: Specifies the interval between successive intra refresh if enableIntrarefresh is set. Requires enableIntraRefresh to be set.
- Will be disabled if NV_ENC_CONFIG::gopLength is not set to NVENC_INFINITE_GOPLENGTH. */
- uint32_t intraRefreshCnt; /**< [in]: Specifies the length of intra refresh in number of frames for periodic intra refresh. This value should be smaller than intraRefreshPeriod */
- uint32_t maxNumRefFramesInDPB; /**< [in]: Specifies the maximum number of references frames in the DPB.*/
- uint32_t ltrNumFrames; /**< [in]: This parameter has different meaning in two LTR modes.
- In "LTR Trust" mode (ltrTrustMode = 1), encoder will mark the first ltrNumFrames base layer reference frames within each IDR interval as LTR.
- In "LTR Per Picture" mode (ltrTrustMode = 0 and ltrMarkFrame = 1), ltrNumFrames specifies maximum number of LTR frames in DPB. */
- uint32_t vpsId; /**< [in]: Specifies the VPS id of the video parameter set */
- uint32_t spsId; /**< [in]: Specifies the SPS id of the sequence header */
- uint32_t ppsId; /**< [in]: Specifies the PPS id of the picture header */
- uint32_t sliceMode; /**< [in]: This parameter in conjunction with sliceModeData specifies the way in which the picture is divided into slices
- sliceMode = 0 CTU based slices, sliceMode = 1 Byte based slices, sliceMode = 2 CTU row based slices, sliceMode = 3, numSlices in Picture
- When sliceMode == 0 and sliceModeData == 0 whole picture will be coded with one slice */
- uint32_t sliceModeData; /**< [in]: Specifies the parameter needed for sliceMode. For:
- sliceMode = 0, sliceModeData specifies # of CTUs in each slice (except last slice)
- sliceMode = 1, sliceModeData specifies maximum # of bytes in each slice (except last slice)
- sliceMode = 2, sliceModeData specifies # of CTU rows in each slice (except last slice)
- sliceMode = 3, sliceModeData specifies number of slices in the picture. Driver will divide picture into slices optimally */
- uint32_t maxTemporalLayersMinus1; /**< [in]: Specifies the max temporal layer used for hierarchical coding. */
- NV_ENC_CONFIG_HEVC_VUI_PARAMETERS hevcVUIParameters; /**< [in]: Specifies the HEVC video usability info pamameters */
- uint32_t ltrTrustMode; /**< [in]: Specifies the LTR operating mode. See comments near NV_ENC_CONFIG_HEVC::enableLTR for description of the two modes.
- Set to 1 to use "LTR Trust" mode of LTR operation. Clients are discouraged to use "LTR Trust" mode as this mode may
- be deprecated in future releases.
- Set to 0 when using "LTR Per Picture" mode of LTR operation. */
- uint32_t reserved1[217]; /**< [in]: Reserved and must be set to 0.*/
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_CONFIG_HEVC;
-
-/**
- * \struct _NV_ENC_CONFIG_H264_MEONLY
- * H264 encoder configuration parameters for ME only Mode
- *
- */
-typedef struct _NV_ENC_CONFIG_H264_MEONLY
-{
- uint32_t disablePartition16x16 :1; /**< [in]: Disable MotionEstimation on 16x16 blocks*/
- uint32_t disablePartition8x16 :1; /**< [in]: Disable MotionEstimation on 8x16 blocks*/
- uint32_t disablePartition16x8 :1; /**< [in]: Disable MotionEstimation on 16x8 blocks*/
- uint32_t disablePartition8x8 :1; /**< [in]: Disable MotionEstimation on 8x8 blocks*/
- uint32_t disableIntraSearch :1; /**< [in]: Disable Intra search during MotionEstimation*/
- uint32_t bStereoEnable :1; /**< [in]: Enable Stereo Mode for Motion Estimation where each view is independently executed*/
- uint32_t reserved :26; /**< [in]: Reserved and must be set to 0 */
- uint32_t reserved1 [255]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_CONFIG_H264_MEONLY;
-
-
-/**
- * \struct _NV_ENC_CONFIG_HEVC_MEONLY
- * HEVC encoder configuration parameters for ME only Mode
- *
- */
-typedef struct _NV_ENC_CONFIG_HEVC_MEONLY
-{
- uint32_t reserved [256]; /**< [in]: Reserved and must be set to 0 */
- void* reserved1[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_CONFIG_HEVC_MEONLY;
-
-/**
- * \struct _NV_ENC_CODEC_CONFIG
- * Codec-specific encoder configuration parameters to be set during initialization.
- */
-typedef union _NV_ENC_CODEC_CONFIG
-{
- NV_ENC_CONFIG_H264 h264Config; /**< [in]: Specifies the H.264-specific encoder configuration. */
- NV_ENC_CONFIG_HEVC hevcConfig; /**< [in]: Specifies the HEVC-specific encoder configuration. */
- NV_ENC_CONFIG_H264_MEONLY h264MeOnlyConfig; /**< [in]: Specifies the H.264-specific ME only encoder configuration. */
- NV_ENC_CONFIG_HEVC_MEONLY hevcMeOnlyConfig; /**< [in]: Specifies the HEVC-specific ME only encoder configuration. */
- uint32_t reserved[320]; /**< [in]: Reserved and must be set to 0 */
-} NV_ENC_CODEC_CONFIG;
-
-
-/**
- * \struct _NV_ENC_CONFIG
- * Encoder configuration parameters to be set during initialization.
- */
-typedef struct _NV_ENC_CONFIG
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_CONFIG_VER. */
- GUID profileGUID; /**< [in]: Specifies the codec profile guid. If client specifies \p NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID the NvEncodeAPI interface will select the appropriate codec profile. */
- uint32_t gopLength; /**< [in]: Specifies the number of pictures in one GOP. Low latency application client can set goplength to NVENC_INFINITE_GOPLENGTH so that keyframes are not inserted automatically. */
- int32_t frameIntervalP; /**< [in]: Specifies the GOP pattern as follows: \p frameIntervalP = 0: I, 1: IPP, 2: IBP, 3: IBBP If goplength is set to NVENC_INFINITE_GOPLENGTH \p frameIntervalP should be set to 1. */
- uint32_t monoChromeEncoding; /**< [in]: Set this to 1 to enable monochrome encoding for this session. */
- NV_ENC_PARAMS_FRAME_FIELD_MODE frameFieldMode; /**< [in]: Specifies the frame/field mode.
- Check support for field encoding using ::NV_ENC_CAPS_SUPPORT_FIELD_ENCODING caps.
- Using a frameFieldMode other than NV_ENC_PARAMS_FRAME_FIELD_MODE_FRAME for RGB input is not supported. */
- NV_ENC_MV_PRECISION mvPrecision; /**< [in]: Specifies the desired motion vector prediction precision. */
- NV_ENC_RC_PARAMS rcParams; /**< [in]: Specifies the rate control parameters for the current encoding session. */
- NV_ENC_CODEC_CONFIG encodeCodecConfig; /**< [in]: Specifies the codec specific config parameters through this union. */
- uint32_t reserved [278]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_CONFIG;
-
-/** macro for constructing the version field of ::_NV_ENC_CONFIG */
-#define NV_ENC_CONFIG_VER (NVENCAPI_STRUCT_VERSION(6) | ( 1<<31 ))
-
-
-/**
- * \struct _NV_ENC_INITIALIZE_PARAMS
- * Encode Session Initialization parameters.
- */
-typedef struct _NV_ENC_INITIALIZE_PARAMS
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_INITIALIZE_PARAMS_VER. */
- GUID encodeGUID; /**< [in]: Specifies the Encode GUID for which the encoder is being created. ::NvEncInitializeEncoder() API will fail if this is not set, or set to unsupported value. */
- GUID presetGUID; /**< [in]: Specifies the preset for encoding. If the preset GUID is set then , the preset configuration will be applied before any other parameter. */
- uint32_t encodeWidth; /**< [in]: Specifies the encode width. If not set ::NvEncInitializeEncoder() API will fail. */
- uint32_t encodeHeight; /**< [in]: Specifies the encode height. If not set ::NvEncInitializeEncoder() API will fail. */
- uint32_t darWidth; /**< [in]: Specifies the display aspect ratio Width. */
- uint32_t darHeight; /**< [in]: Specifies the display aspect ratio height. */
- uint32_t frameRateNum; /**< [in]: Specifies the numerator for frame rate used for encoding in frames per second ( Frame rate = frameRateNum / frameRateDen ). */
- uint32_t frameRateDen; /**< [in]: Specifies the denominator for frame rate used for encoding in frames per second ( Frame rate = frameRateNum / frameRateDen ). */
- uint32_t enableEncodeAsync; /**< [in]: Set this to 1 to enable asynchronous mode and is expected to use events to get picture completion notification. */
- uint32_t enablePTD; /**< [in]: Set this to 1 to enable the Picture Type Decision is be taken by the NvEncodeAPI interface. */
- uint32_t reportSliceOffsets :1; /**< [in]: Set this to 1 to enable reporting slice offsets in ::_NV_ENC_LOCK_BITSTREAM. NV_ENC_INITIALIZE_PARAMS::enableEncodeAsync must be set to 0 to use this feature. Client must set this to 0 if NV_ENC_CONFIG_H264::sliceMode is 1 on Kepler GPUs */
- uint32_t enableSubFrameWrite :1; /**< [in]: Set this to 1 to write out available bitstream to memory at subframe intervals */
- uint32_t enableExternalMEHints :1; /**< [in]: Set to 1 to enable external ME hints for the current frame. For NV_ENC_INITIALIZE_PARAMS::enablePTD=1 with B frames, programming L1 hints is optional for B frames since Client doesn't know internal GOP structure.
- NV_ENC_PIC_PARAMS::meHintRefPicDist should preferably be set with enablePTD=1. */
- uint32_t enableMEOnlyMode :1; /**< [in]: Set to 1 to enable ME Only Mode .*/
- uint32_t enableWeightedPrediction :1; /**< [in]: Set this to 1 to enable weighted prediction. Not supported if encode session is configured for B-Frames( 'frameIntervalP' in NV_ENC_CONFIG is greater than 1).*/
- uint32_t reservedBitFields :27; /**< [in]: Reserved bitfields and must be set to 0 */
- uint32_t privDataSize; /**< [in]: Reserved private data buffer size and must be set to 0 */
- void* privData; /**< [in]: Reserved private data buffer and must be set to NULL */
- NV_ENC_CONFIG* encodeConfig; /**< [in]: Specifies the advanced codec specific structure. If client has sent a valid codec config structure, it will override parameters set by the NV_ENC_INITIALIZE_PARAMS::presetGUID parameter. If set to NULL the NvEncodeAPI interface will use the NV_ENC_INITIALIZE_PARAMS::presetGUID to set the codec specific parameters.
- Client can also optionally query the NvEncodeAPI interface to get codec specific parameters for a presetGUID using ::NvEncGetEncodePresetConfig() API. It can then modify (if required) some of the codec config parameters and send down a custom config structure as part of ::_NV_ENC_INITIALIZE_PARAMS.
- Even in this case client is recommended to pass the same preset guid it has used in ::NvEncGetEncodePresetConfig() API to query the config structure; as NV_ENC_INITIALIZE_PARAMS::presetGUID. This will not override the custom config structure but will be used to determine other Encoder HW specific parameters not exposed in the API. */
- uint32_t maxEncodeWidth; /**< [in]: Maximum encode width to be used for current Encode session.
- Client should allocate output buffers according to this dimension for dynamic resolution change. If set to 0, Encoder will not allow dynamic resolution change. */
- uint32_t maxEncodeHeight; /**< [in]: Maximum encode height to be allowed for current Encode session.
- Client should allocate output buffers according to this dimension for dynamic resolution change. If set to 0, Encode will not allow dynamic resolution change. */
- NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE maxMEHintCountsPerBlock[2]; /**< [in]: If Client wants to pass external motion vectors in NV_ENC_PIC_PARAMS::meExternalHints buffer it must specify the maximum number of hint candidates per block per direction for the encode session.
- The NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[0] is for L0 predictors and NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[1] is for L1 predictors.
- This client must also set NV_ENC_INITIALIZE_PARAMS::enableExternalMEHints to 1. */
- uint32_t reserved [289]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_INITIALIZE_PARAMS;
-
-/** macro for constructing the version field of ::_NV_ENC_INITIALIZE_PARAMS */
-#define NV_ENC_INITIALIZE_PARAMS_VER (NVENCAPI_STRUCT_VERSION(5) | ( 1<<31 ))
-
-
-/**
- * \struct _NV_ENC_RECONFIGURE_PARAMS
- * Encode Session Reconfigured parameters.
- */
-typedef struct _NV_ENC_RECONFIGURE_PARAMS
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_RECONFIGURE_PARAMS_VER. */
- NV_ENC_INITIALIZE_PARAMS reInitEncodeParams; /**< [in]: Encoder session re-initialization parameters. */
- uint32_t resetEncoder :1; /**< [in]: This resets the rate control states and other internal encoder states. This should be used only with an IDR frame.
- If NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1, encoder will force the frame type to IDR */
- uint32_t forceIDR :1; /**< [in]: Encode the current picture as an IDR picture. This flag is only valid when Picture type decision is taken by the Encoder
- [_NV_ENC_INITIALIZE_PARAMS::enablePTD == 1]. */
- uint32_t reserved :30;
-
-}NV_ENC_RECONFIGURE_PARAMS;
-
-/** macro for constructing the version field of ::_NV_ENC_RECONFIGURE_PARAMS */
-#define NV_ENC_RECONFIGURE_PARAMS_VER (NVENCAPI_STRUCT_VERSION(1) | ( 1<<31 ))
-
-/**
- * \struct _NV_ENC_PRESET_CONFIG
- * Encoder preset config
- */
-typedef struct _NV_ENC_PRESET_CONFIG
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_PRESET_CONFIG_VER. */
- NV_ENC_CONFIG presetCfg; /**< [out]: preset config returned by the Nvidia Video Encoder interface. */
- uint32_t reserved1[255]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-}NV_ENC_PRESET_CONFIG;
-
-/** macro for constructing the version field of ::_NV_ENC_PRESET_CONFIG */
-#define NV_ENC_PRESET_CONFIG_VER (NVENCAPI_STRUCT_VERSION(4) | ( 1<<31 ))
-
-
-/**
- * \struct _NV_ENC_SEI_PAYLOAD
- * User SEI message
- */
-typedef struct _NV_ENC_SEI_PAYLOAD
-{
- uint32_t payloadSize; /**< [in] SEI payload size in bytes. SEI payload must be byte aligned, as described in Annex D */
- uint32_t payloadType; /**< [in] SEI payload types and syntax can be found in Annex D of the H.264 Specification. */
- uint8_t *payload; /**< [in] pointer to user data */
-} NV_ENC_SEI_PAYLOAD;
-
-#define NV_ENC_H264_SEI_PAYLOAD NV_ENC_SEI_PAYLOAD
-
-/**
- * \struct _NV_ENC_PIC_PARAMS_H264
- * H264 specific enc pic params. sent on a per frame basis.
- */
-typedef struct _NV_ENC_PIC_PARAMS_H264
-{
- uint32_t displayPOCSyntax; /**< [in]: Specifies the display POC syntax This is required to be set if client is handling the picture type decision. */
- uint32_t reserved3; /**< [in]: Reserved and must be set to 0 */
- uint32_t refPicFlag; /**< [in]: Set to 1 for a reference picture. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */
- uint32_t colourPlaneId; /**< [in]: Specifies the colour plane ID associated with the current input. */
- uint32_t forceIntraRefreshWithFrameCnt; /**< [in]: Forces an intra refresh with duration equal to intraRefreshFrameCnt.
- When outputRecoveryPointSEI is set this is value is used for recovery_frame_cnt in recovery point SEI message
- forceIntraRefreshWithFrameCnt cannot be used if B frames are used in the GOP structure specified */
- uint32_t constrainedFrame :1; /**< [in]: Set to 1 if client wants to encode this frame with each slice completely independent of other slices in the frame.
- NV_ENC_INITIALIZE_PARAMS::enableConstrainedEncoding should be set to 1 */
- uint32_t sliceModeDataUpdate :1; /**< [in]: Set to 1 if client wants to change the sliceModeData field to specify new sliceSize Parameter
- When forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode setting */
- uint32_t ltrMarkFrame :1; /**< [in]: Set to 1 if client wants to mark this frame as LTR */
- uint32_t ltrUseFrames :1; /**< [in]: Set to 1 if client allows encoding this frame using the LTR frames specified in ltrFrameBitmap */
- uint32_t reservedBitFields :28; /**< [in]: Reserved bit fields and must be set to 0 */
- uint8_t* sliceTypeData; /**< [in]: Deprecated. */
- uint32_t sliceTypeArrayCnt; /**< [in]: Deprecated. */
- uint32_t seiPayloadArrayCnt; /**< [in]: Specifies the number of elements allocated in seiPayloadArray array. */
- NV_ENC_SEI_PAYLOAD* seiPayloadArray; /**< [in]: Array of SEI payloads which will be inserted for this frame. */
- uint32_t sliceMode; /**< [in]: This parameter in conjunction with sliceModeData specifies the way in which the picture is divided into slices
- sliceMode = 0 MB based slices, sliceMode = 1 Byte based slices, sliceMode = 2 MB row based slices, sliceMode = 3, numSlices in Picture
- When forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode setting
- When sliceMode == 0 and sliceModeData == 0 whole picture will be coded with one slice */
- uint32_t sliceModeData; /**< [in]: Specifies the parameter needed for sliceMode. For:
- sliceMode = 0, sliceModeData specifies # of MBs in each slice (except last slice)
- sliceMode = 1, sliceModeData specifies maximum # of bytes in each slice (except last slice)
- sliceMode = 2, sliceModeData specifies # of MB rows in each slice (except last slice)
- sliceMode = 3, sliceModeData specifies number of slices in the picture. Driver will divide picture into slices optimally */
- uint32_t ltrMarkFrameIdx; /**< [in]: Specifies the long term referenceframe index to use for marking this frame as LTR.*/
- uint32_t ltrUseFrameBitmap; /**< [in]: Specifies the the associated bitmap of LTR frame indices to use when encoding this frame. */
- uint32_t ltrUsageMode; /**< [in]: Not supported. Reserved for future use and must be set to 0. */
- uint32_t reserved [243]; /**< [in]: Reserved and must be set to 0. */
- void* reserved2[62]; /**< [in]: Reserved and must be set to NULL. */
-} NV_ENC_PIC_PARAMS_H264;
-
-/**
- * \struct _NV_ENC_PIC_PARAMS_HEVC
- * HEVC specific enc pic params. sent on a per frame basis.
- */
-typedef struct _NV_ENC_PIC_PARAMS_HEVC
-{
- uint32_t displayPOCSyntax; /**< [in]: Specifies the display POC syntax This is required to be set if client is handling the picture type decision. */
- uint32_t refPicFlag; /**< [in]: Set to 1 for a reference picture. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */
- uint32_t temporalId; /**< [in]: Specifies the temporal id of the picture */
- uint32_t forceIntraRefreshWithFrameCnt; /**< [in]: Forces an intra refresh with duration equal to intraRefreshFrameCnt.
- When outputRecoveryPointSEI is set this is value is used for recovery_frame_cnt in recovery point SEI message
- forceIntraRefreshWithFrameCnt cannot be used if B frames are used in the GOP structure specified */
- uint32_t constrainedFrame :1; /**< [in]: Set to 1 if client wants to encode this frame with each slice completely independent of other slices in the frame.
- NV_ENC_INITIALIZE_PARAMS::enableConstrainedEncoding should be set to 1 */
- uint32_t sliceModeDataUpdate :1; /**< [in]: Set to 1 if client wants to change the sliceModeData field to specify new sliceSize Parameter
- When forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode setting */
- uint32_t ltrMarkFrame :1; /**< [in]: Set to 1 if client wants to mark this frame as LTR */
- uint32_t ltrUseFrames :1; /**< [in]: Set to 1 if client allows encoding this frame using the LTR frames specified in ltrFrameBitmap */
- uint32_t reservedBitFields :28; /**< [in]: Reserved bit fields and must be set to 0 */
- uint8_t* sliceTypeData; /**< [in]: Array which specifies the slice type used to force intra slice for a particular slice. Currently supported only for NV_ENC_CONFIG_H264::sliceMode == 3.
- Client should allocate array of size sliceModeData where sliceModeData is specified in field of ::_NV_ENC_CONFIG_H264
- Array element with index n corresponds to nth slice. To force a particular slice to intra client should set corresponding array element to NV_ENC_SLICE_TYPE_I
- all other array elements should be set to NV_ENC_SLICE_TYPE_DEFAULT */
- uint32_t sliceTypeArrayCnt; /**< [in]: Client should set this to the number of elements allocated in sliceTypeData array. If sliceTypeData is NULL then this should be set to 0 */
- uint32_t sliceMode; /**< [in]: This parameter in conjunction with sliceModeData specifies the way in which the picture is divided into slices
- sliceMode = 0 CTU based slices, sliceMode = 1 Byte based slices, sliceMode = 2 CTU row based slices, sliceMode = 3, numSlices in Picture
- When forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode setting
- When sliceMode == 0 and sliceModeData == 0 whole picture will be coded with one slice */
- uint32_t sliceModeData; /**< [in]: Specifies the parameter needed for sliceMode. For:
- sliceMode = 0, sliceModeData specifies # of CTUs in each slice (except last slice)
- sliceMode = 1, sliceModeData specifies maximum # of bytes in each slice (except last slice)
- sliceMode = 2, sliceModeData specifies # of CTU rows in each slice (except last slice)
- sliceMode = 3, sliceModeData specifies number of slices in the picture. Driver will divide picture into slices optimally */
- uint32_t ltrMarkFrameIdx; /**< [in]: Specifies the long term reference frame index to use for marking this frame as LTR.*/
- uint32_t ltrUseFrameBitmap; /**< [in]: Specifies the associated bitmap of LTR frame indices to use when encoding this frame. */
- uint32_t ltrUsageMode; /**< [in]: Not supported. Reserved for future use and must be set to 0. */
- uint32_t seiPayloadArrayCnt; /**< [in]: Specifies the number of elements allocated in seiPayloadArray array. */
- uint32_t reserved; /**< [in]: Reserved and must be set to 0. */
- NV_ENC_SEI_PAYLOAD* seiPayloadArray; /**< [in]: Array of SEI payloads which will be inserted for this frame. */
- uint32_t reserved2 [244]; /**< [in]: Reserved and must be set to 0. */
- void* reserved3[61]; /**< [in]: Reserved and must be set to NULL. */
-} NV_ENC_PIC_PARAMS_HEVC;
-
-
-/**
- * Codec specific per-picture encoding parameters.
- */
-typedef union _NV_ENC_CODEC_PIC_PARAMS
-{
- NV_ENC_PIC_PARAMS_H264 h264PicParams; /**< [in]: H264 encode picture params. */
- NV_ENC_PIC_PARAMS_HEVC hevcPicParams; /**< [in]: HEVC encode picture params. */
- uint32_t reserved[256]; /**< [in]: Reserved and must be set to 0. */
-} NV_ENC_CODEC_PIC_PARAMS;
-
-/**
- * \struct _NV_ENC_PIC_PARAMS
- * Encoding parameters that need to be sent on a per frame basis.
- */
-typedef struct _NV_ENC_PIC_PARAMS
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_PIC_PARAMS_VER. */
- uint32_t inputWidth; /**< [in]: Specifies the input buffer width */
- uint32_t inputHeight; /**< [in]: Specifies the input buffer height */
- uint32_t inputPitch; /**< [in]: Specifies the input buffer pitch. If pitch value is not known, set this to inputWidth. */
- uint32_t encodePicFlags; /**< [in]: Specifies bit-wise OR`ed encode pic flags. See ::NV_ENC_PIC_FLAGS enum. */
- uint32_t frameIdx; /**< [in]: Specifies the frame index associated with the input frame [optional]. */
- uint64_t inputTimeStamp; /**< [in]: Specifies presentation timestamp associated with the input picture. */
- uint64_t inputDuration; /**< [in]: Specifies duration of the input picture */
- NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Specifies the input buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs.*/
- NV_ENC_OUTPUT_PTR outputBitstream; /**< [in]: Specifies the pointer to output buffer. Client should use a pointer obtained from ::NvEncCreateBitstreamBuffer() API. */
- void* completionEvent; /**< [in]: Specifies an event to be signalled on completion of encoding of this Frame [only if operating in Asynchronous mode]. Each output buffer should be associated with a distinct event pointer. */
- NV_ENC_BUFFER_FORMAT bufferFmt; /**< [in]: Specifies the input buffer format. */
- NV_ENC_PIC_STRUCT pictureStruct; /**< [in]: Specifies structure of the input picture. */
- NV_ENC_PIC_TYPE pictureType; /**< [in]: Specifies input picture type. Client required to be set explicitly by the client if the client has not set NV_ENC_INITALIZE_PARAMS::enablePTD to 1 while calling NvInitializeEncoder. */
- NV_ENC_CODEC_PIC_PARAMS codecPicParams; /**< [in]: Specifies the codec specific per-picture encoding parameters. */
- NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE meHintCountsPerBlock[2]; /**< [in]: Specifies the number of hint candidates per block per direction for the current frame. meHintCountsPerBlock[0] is for L0 predictors and meHintCountsPerBlock[1] is for L1 predictors.
- The candidate count in NV_ENC_PIC_PARAMS::meHintCountsPerBlock[lx] must never exceed NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[lx] provided during encoder intialization. */
- NVENC_EXTERNAL_ME_HINT *meExternalHints; /**< [in]: Specifies the pointer to ME external hints for the current frame. The size of ME hint buffer should be equal to number of macroblocks * the total number of candidates per macroblock.
- The total number of candidates per MB per direction = 1*meHintCountsPerBlock[Lx].numCandsPerBlk16x16 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk16x8 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk8x8
- + 4*meHintCountsPerBlock[Lx].numCandsPerBlk8x8. For frames using bidirectional ME , the total number of candidates for single macroblock is sum of total number of candidates per MB for each direction (L0 and L1) */
- uint32_t reserved1[6]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[2]; /**< [in]: Reserved and must be set to NULL */
- int8_t *qpDeltaMap; /**< [in]: Specifies the pointer to signed byte array containing QP delta value per MB in raster scan order in the current picture. This QP modifier is applied on top of the QP chosen by rate control. */
- uint32_t qpDeltaMapSize; /**< [in]: Specifies the size in bytes of qpDeltaMap surface allocated by client and pointed to by NV_ENC_PIC_PARAMS::qpDeltaMap. Surface (array) should be picWidthInMbs * picHeightInMbs */
- uint32_t reservedBitFields; /**< [in]: Reserved bitfields and must be set to 0 */
- uint16_t meHintRefPicDist[2]; /**< [in]: Specifies temporal distance for reference picture (NVENC_EXTERNAL_ME_HINT::refidx = 0) used during external ME with NV_ENC_INITALIZE_PARAMS::enablePTD = 1 . meHintRefPicDist[0] is for L0 hints and meHintRefPicDist[1] is for L1 hints.
- If not set, will internally infer distance of 1. Ignored for NV_ENC_INITALIZE_PARAMS::enablePTD = 0 */
- uint32_t reserved3[286]; /**< [in]: Reserved and must be set to 0 */
- void* reserved4[60]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_PIC_PARAMS;
-
-/** Macro for constructing the version field of ::_NV_ENC_PIC_PARAMS */
-#define NV_ENC_PIC_PARAMS_VER (NVENCAPI_STRUCT_VERSION(4) | ( 1<<31 ))
-
-
-/**
- * \struct _NV_ENC_MEONLY_PARAMS
- * MEOnly parameters that need to be sent on a per motion estimation basis.
- * NV_ENC_MEONLY_PARAMS::meExternalHints is supported for H264 only.
- */
-typedef struct _NV_ENC_MEONLY_PARAMS
-{
- uint32_t version; /**< [in]: Struct version. Must be set to NV_ENC_MEONLY_PARAMS_VER.*/
- uint32_t inputWidth; /**< [in]: Specifies the input buffer width */
- uint32_t inputHeight; /**< [in]: Specifies the input buffer height */
- NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Specifies the input buffer pointer. Client must use a pointer obtained from NvEncCreateInputBuffer() or NvEncMapInputResource() APIs. */
- NV_ENC_INPUT_PTR referenceFrame; /**< [in]: Specifies the reference frame pointer */
- NV_ENC_OUTPUT_PTR mvBuffer; /**< [in]: Specifies the pointer to motion vector data buffer allocated by NvEncCreateMVBuffer. Client must lock mvBuffer using ::NvEncLockBitstream() API to get the motion vector data. */
- NV_ENC_BUFFER_FORMAT bufferFmt; /**< [in]: Specifies the input buffer format. */
- void* completionEvent; /**< [in]: Specifies an event to be signalled on completion of motion estimation
- of this Frame [only if operating in Asynchronous mode].
- Each output buffer should be associated with a distinct event pointer. */
- uint32_t viewID; /**< [in]: Specifies left,right viewID if NV_ENC_CONFIG_H264_MEONLY::bStereoEnable is set.
- viewID can be 0,1 if bStereoEnable is set, 0 otherwise. */
- NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE
- meHintCountsPerBlock[2]; /**< [in]: Specifies the number of hint candidates per block for the current frame. meHintCountsPerBlock[0] is for L0 predictors.
- The candidate count in NV_ENC_PIC_PARAMS::meHintCountsPerBlock[lx] must never exceed NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[lx] provided during encoder intialization. */
- NVENC_EXTERNAL_ME_HINT *meExternalHints; /**< [in]: Specifies the pointer to ME external hints for the current frame. The size of ME hint buffer should be equal to number of macroblocks * the total number of candidates per macroblock.
- The total number of candidates per MB per direction = 1*meHintCountsPerBlock[Lx].numCandsPerBlk16x16 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk16x8 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk8x8
- + 4*meHintCountsPerBlock[Lx].numCandsPerBlk8x8. For frames using bidirectional ME , the total number of candidates for single macroblock is sum of total number of candidates per MB for each direction (L0 and L1) */
- uint32_t reserved1[243]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[59]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_MEONLY_PARAMS;
-
-/** NV_ENC_MEONLY_PARAMS struct version*/
-#define NV_ENC_MEONLY_PARAMS_VER NVENCAPI_STRUCT_VERSION(3)
-
-
-/**
- * \struct _NV_ENC_LOCK_BITSTREAM
- * Bitstream buffer lock parameters.
- */
-typedef struct _NV_ENC_LOCK_BITSTREAM
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_LOCK_BITSTREAM_VER. */
- uint32_t doNotWait :1; /**< [in]: If this flag is set, the NvEncodeAPI interface will return buffer pointer even if operation is not completed. If not set, the call will block until operation completes. */
- uint32_t ltrFrame :1; /**< [out]: Flag indicating this frame is marked as LTR frame */
- uint32_t reservedBitFields :30; /**< [in]: Reserved bit fields and must be set to 0 */
- void* outputBitstream; /**< [in]: Pointer to the bitstream buffer being locked. */
- uint32_t* sliceOffsets; /**< [in,out]: Array which receives the slice offsets. This is not supported if NV_ENC_CONFIG_H264::sliceMode is 1 on Kepler GPUs. Array size must be equal to size of frame in MBs. */
- uint32_t frameIdx; /**< [out]: Frame no. for which the bitstream is being retrieved. */
- uint32_t hwEncodeStatus; /**< [out]: The NvEncodeAPI interface status for the locked picture. */
- uint32_t numSlices; /**< [out]: Number of slices in the encoded picture. Will be reported only if NV_ENC_INITIALIZE_PARAMS::reportSliceOffsets set to 1. */
- uint32_t bitstreamSizeInBytes; /**< [out]: Actual number of bytes generated and copied to the memory pointed by bitstreamBufferPtr. */
- uint64_t outputTimeStamp; /**< [out]: Presentation timestamp associated with the encoded output. */
- uint64_t outputDuration; /**< [out]: Presentation duration associates with the encoded output. */
- void* bitstreamBufferPtr; /**< [out]: Pointer to the generated output bitstream.
- For MEOnly mode _NV_ENC_LOCK_BITSTREAM::bitstreamBufferPtr should be typecast to
- NV_ENC_H264_MV_DATA/NV_ENC_HEVC_MV_DATA pointer respectively for H264/HEVC */
- NV_ENC_PIC_TYPE pictureType; /**< [out]: Picture type of the encoded picture. */
- NV_ENC_PIC_STRUCT pictureStruct; /**< [out]: Structure of the generated output picture. */
- uint32_t frameAvgQP; /**< [out]: Average QP of the frame. */
- uint32_t frameSatd; /**< [out]: Total SATD cost for whole frame. */
- uint32_t ltrFrameIdx; /**< [out]: Frame index associated with this LTR frame. */
- uint32_t ltrFrameBitmap; /**< [out]: Bitmap of LTR frames indices which were used for encoding this frame. Value of 0 if no LTR frames were used. */
- uint32_t reserved [236]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_LOCK_BITSTREAM;
-
-/** Macro for constructing the version field of ::_NV_ENC_LOCK_BITSTREAM */
-#define NV_ENC_LOCK_BITSTREAM_VER NVENCAPI_STRUCT_VERSION(1)
-
-
-/**
- * \struct _NV_ENC_LOCK_INPUT_BUFFER
- * Uncompressed Input Buffer lock parameters.
- */
-typedef struct _NV_ENC_LOCK_INPUT_BUFFER
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_LOCK_INPUT_BUFFER_VER. */
- uint32_t doNotWait :1; /**< [in]: Set to 1 to make ::NvEncLockInputBuffer() a unblocking call. If the encoding is not completed, driver will return ::NV_ENC_ERR_ENCODER_BUSY error code. */
- uint32_t reservedBitFields :31; /**< [in]: Reserved bitfields and must be set to 0 */
- NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Pointer to the input buffer to be locked, client should pass the pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource API. */
- void* bufferDataPtr; /**< [out]: Pointed to the locked input buffer data. Client can only access input buffer using the \p bufferDataPtr. */
- uint32_t pitch; /**< [out]: Pitch of the locked input buffer. */
- uint32_t reserved1[251]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_LOCK_INPUT_BUFFER;
-
-/** Macro for constructing the version field of ::_NV_ENC_LOCK_INPUT_BUFFER */
-#define NV_ENC_LOCK_INPUT_BUFFER_VER NVENCAPI_STRUCT_VERSION(1)
-
-
-/**
- * \struct _NV_ENC_MAP_INPUT_RESOURCE
- * Map an input resource to a Nvidia Encoder Input Buffer
- */
-typedef struct _NV_ENC_MAP_INPUT_RESOURCE
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_MAP_INPUT_RESOURCE_VER. */
- uint32_t subResourceIndex; /**< [in]: Deprecated. Do not use. */
- void* inputResource; /**< [in]: Deprecated. Do not use. */
- NV_ENC_REGISTERED_PTR registeredResource; /**< [in]: The Registered resource handle obtained by calling NvEncRegisterInputResource. */
- NV_ENC_INPUT_PTR mappedResource; /**< [out]: Mapped pointer corresponding to the registeredResource. This pointer must be used in NV_ENC_PIC_PARAMS::inputBuffer parameter in ::NvEncEncodePicture() API. */
- NV_ENC_BUFFER_FORMAT mappedBufferFmt; /**< [out]: Buffer format of the outputResource. This buffer format must be used in NV_ENC_PIC_PARAMS::bufferFmt if client using the above mapped resource pointer. */
- uint32_t reserved1[251]; /**< [in]: Reserved and must be set to 0. */
- void* reserved2[63]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_MAP_INPUT_RESOURCE;
-
-/** Macro for constructing the version field of ::_NV_ENC_MAP_INPUT_RESOURCE */
-#define NV_ENC_MAP_INPUT_RESOURCE_VER NVENCAPI_STRUCT_VERSION(4)
-
-/**
- * \struct _NV_ENC_INPUT_RESOURCE_OPENGL_TEX
- * NV_ENC_REGISTER_RESOURCE::resourceToRegister must be a pointer to a variable of this type,
- * when NV_ENC_REGISTER_RESOURCE::resourceType is NV_ENC_INPUT_RESOURCE_TYPE_OPENGL_TEX
- */
-typedef struct _NV_ENC_INPUT_RESOURCE_OPENGL_TEX
-{
- uint32_t texture; /**< [in]: The name of the texture to be used. */
- uint32_t target; /**< [in]: Accepted values are GL_TEXTURE_RECTANGLE and GL_TEXTURE_2D. */
-} NV_ENC_INPUT_RESOURCE_OPENGL_TEX;
-
-/**
- * \struct _NV_ENC_REGISTER_RESOURCE
- * Register a resource for future use with the Nvidia Video Encoder Interface.
- */
-typedef struct _NV_ENC_REGISTER_RESOURCE
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_REGISTER_RESOURCE_VER. */
- NV_ENC_INPUT_RESOURCE_TYPE resourceType; /**< [in]: Specifies the type of resource to be registered.
- Supported values are
- ::NV_ENC_INPUT_RESOURCE_TYPE_DIRECTX,
- ::NV_ENC_INPUT_RESOURCE_TYPE_CUDADEVICEPTR,
- ::NV_ENC_INPUT_RESOURCE_TYPE_OPENGL_TEX */
- uint32_t width; /**< [in]: Input buffer Width. */
- uint32_t height; /**< [in]: Input buffer Height. */
- uint32_t pitch; /**< [in]: Input buffer Pitch. */
- uint32_t subResourceIndex; /**< [in]: Subresource Index of the DirectX resource to be registered. Should be set to 0 for other interfaces. */
- void* resourceToRegister; /**< [in]: Handle to the resource that is being registered. */
- NV_ENC_REGISTERED_PTR registeredResource; /**< [out]: Registered resource handle. This should be used in future interactions with the Nvidia Video Encoder Interface. */
- NV_ENC_BUFFER_FORMAT bufferFormat; /**< [in]: Buffer format of resource to be registered. */
- uint32_t reserved1[248]; /**< [in]: Reserved and must be set to 0. */
- void* reserved2[62]; /**< [in]: Reserved and must be set to NULL. */
-} NV_ENC_REGISTER_RESOURCE;
-
-/** Macro for constructing the version field of ::_NV_ENC_REGISTER_RESOURCE */
-#define NV_ENC_REGISTER_RESOURCE_VER NVENCAPI_STRUCT_VERSION(3)
-
-/**
- * \struct _NV_ENC_STAT
- * Encode Stats structure.
- */
-typedef struct _NV_ENC_STAT
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_STAT_VER. */
- uint32_t reserved; /**< [in]: Reserved and must be set to 0 */
- NV_ENC_OUTPUT_PTR outputBitStream; /**< [out]: Specifies the pointer to output bitstream. */
- uint32_t bitStreamSize; /**< [out]: Size of generated bitstream in bytes. */
- uint32_t picType; /**< [out]: Picture type of encoded picture. See ::NV_ENC_PIC_TYPE. */
- uint32_t lastValidByteOffset; /**< [out]: Offset of last valid bytes of completed bitstream */
- uint32_t sliceOffsets[16]; /**< [out]: Offsets of each slice */
- uint32_t picIdx; /**< [out]: Picture number */
- uint32_t reserved1[233]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_STAT;
-
-/** Macro for constructing the version field of ::_NV_ENC_STAT */
-#define NV_ENC_STAT_VER NVENCAPI_STRUCT_VERSION(1)
-
-
-/**
- * \struct _NV_ENC_SEQUENCE_PARAM_PAYLOAD
- * Sequence and picture paramaters payload.
- */
-typedef struct _NV_ENC_SEQUENCE_PARAM_PAYLOAD
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_INITIALIZE_PARAMS_VER. */
- uint32_t inBufferSize; /**< [in]: Specifies the size of the spsppsBuffer provied by the client */
- uint32_t spsId; /**< [in]: Specifies the SPS id to be used in sequence header. Default value is 0. */
- uint32_t ppsId; /**< [in]: Specifies the PPS id to be used in picture header. Default value is 0. */
- void* spsppsBuffer; /**< [in]: Specifies bitstream header pointer of size NV_ENC_SEQUENCE_PARAM_PAYLOAD::inBufferSize. It is the client's responsibility to manage this memory. */
- uint32_t* outSPSPPSPayloadSize; /**< [out]: Size of the sequence and picture header in bytes written by the NvEncodeAPI interface to the SPSPPSBuffer. */
- uint32_t reserved [250]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_SEQUENCE_PARAM_PAYLOAD;
-
-/** Macro for constructing the version field of ::_NV_ENC_SEQUENCE_PARAM_PAYLOAD */
-#define NV_ENC_SEQUENCE_PARAM_PAYLOAD_VER NVENCAPI_STRUCT_VERSION(1)
-
-
-/**
- * Event registration/unregistration parameters.
- */
-typedef struct _NV_ENC_EVENT_PARAMS
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_EVENT_PARAMS_VER. */
- uint32_t reserved; /**< [in]: Reserved and must be set to 0 */
- void* completionEvent; /**< [in]: Handle to event to be registered/unregistered with the NvEncodeAPI interface. */
- uint32_t reserved1[253]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_EVENT_PARAMS;
-
-/** Macro for constructing the version field of ::_NV_ENC_EVENT_PARAMS */
-#define NV_ENC_EVENT_PARAMS_VER NVENCAPI_STRUCT_VERSION(1)
-
-/**
- * Encoder Session Creation parameters
- */
-typedef struct _NV_ENC_OPEN_ENCODE_SESSIONEX_PARAMS
-{
- uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS_VER. */
- NV_ENC_DEVICE_TYPE deviceType; /**< [in]: Specified the device Type */
- void* device; /**< [in]: Pointer to client device. */
- void* reserved; /**< [in]: Reserved and must be set to 0. */
- uint32_t apiVersion; /**< [in]: API version. Should be set to NVENCAPI_VERSION. */
- uint32_t reserved1[253]; /**< [in]: Reserved and must be set to 0 */
- void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS;
-/** Macro for constructing the version field of ::_NV_ENC_OPEN_ENCODE_SESSIONEX_PARAMS */
-#define NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS_VER NVENCAPI_STRUCT_VERSION(1)
-
-/** @} */ /* END ENCODER_STRUCTURE */
-
-
-/**
- * \addtogroup ENCODE_FUNC NvEncodeAPI Functions
- * @{
- */
-
-// NvEncOpenEncodeSession
-/**
- * \brief Opens an encoding session.
- *
- * Deprecated.
- *
- * \return
- * ::NV_ENC_ERR_INVALID_CALL\n
- *
- */
-NVENCSTATUS NVENCAPI NvEncOpenEncodeSession (void* device, uint32_t deviceType, void** encoder);
-
-// NvEncGetEncodeGuidCount
-/**
- * \brief Retrieves the number of supported encode GUIDs.
- *
- * The function returns the number of codec guids supported by the NvEncodeAPI
- * interface.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [out] encodeGUIDCount
- * Number of supported encode GUIDs.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodeGUIDCount (void* encoder, uint32_t* encodeGUIDCount);
-
-
-// NvEncGetEncodeGUIDs
-/**
- * \brief Retrieves an array of supported encoder codec GUIDs.
- *
- * The function returns an array of codec guids supported by the NvEncodeAPI interface.
- * The client must allocate an array where the NvEncodeAPI interface can
- * fill the supported guids and pass the pointer in \p *GUIDs parameter.
- * The size of the array can be determined by using ::NvEncGetEncodeGUIDCount() API.
- * The Nvidia Encoding interface returns the number of codec guids it has actually
- * filled in the guid array in the \p GUIDCount parameter.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] guidArraySize
- * Number of GUIDs to retrieved. Should be set to the number retrieved using
- * ::NvEncGetEncodeGUIDCount.
- * \param [out] GUIDs
- * Array of supported Encode GUIDs.
- * \param [out] GUIDCount
- * Number of supported Encode GUIDs.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodeGUIDs (void* encoder, GUID* GUIDs, uint32_t guidArraySize, uint32_t* GUIDCount);
-
-
-// NvEncGetEncodeProfileGuidCount
-/**
- * \brief Retrieves the number of supported profile GUIDs.
- *
- * The function returns the number of profile GUIDs supported for a given codec.
- * The client must first enumerate the codec guids supported by the NvEncodeAPI
- * interface. After determining the codec guid, it can query the NvEncodeAPI
- * interface to determine the number of profile guids supported for a particular
- * codec guid.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] encodeGUID
- * The codec guid for which the profile guids are being enumerated.
- * \param [out] encodeProfileGUIDCount
- * Number of encode profiles supported for the given encodeGUID.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodeProfileGUIDCount (void* encoder, GUID encodeGUID, uint32_t* encodeProfileGUIDCount);
-
-
-// NvEncGetEncodeProfileGUIDs
-/**
- * \brief Retrieves an array of supported encode profile GUIDs.
- *
- * The function returns an array of supported profile guids for a particular
- * codec guid. The client must allocate an array where the NvEncodeAPI interface
- * can populate the profile guids. The client can determine the array size using
- * ::NvEncGetEncodeProfileGUIDCount() API. The client must also validiate that the
- * NvEncodeAPI interface supports the GUID the client wants to pass as \p encodeGUID
- * parameter.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] encodeGUID
- * The encode guid whose profile guids are being enumerated.
- * \param [in] guidArraySize
- * Number of GUIDs to be retrieved. Should be set to the number retrieved using
- * ::NvEncGetEncodeProfileGUIDCount.
- * \param [out] profileGUIDs
- * Array of supported Encode Profile GUIDs
- * \param [out] GUIDCount
- * Number of valid encode profile GUIDs in \p profileGUIDs array.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodeProfileGUIDs (void* encoder, GUID encodeGUID, GUID* profileGUIDs, uint32_t guidArraySize, uint32_t* GUIDCount);
-
-// NvEncGetInputFormatCount
-/**
- * \brief Retrieve the number of supported Input formats.
- *
- * The function returns the number of supported input formats. The client must
- * query the NvEncodeAPI interface to determine the supported input formats
- * before creating the input surfaces.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] encodeGUID
- * Encode GUID, corresponding to which the number of supported input formats
- * is to be retrieved.
- * \param [out] inputFmtCount
- * Number of input formats supported for specified Encode GUID.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- */
-NVENCSTATUS NVENCAPI NvEncGetInputFormatCount (void* encoder, GUID encodeGUID, uint32_t* inputFmtCount);
-
-
-// NvEncGetInputFormats
-/**
- * \brief Retrieves an array of supported Input formats
- *
- * Returns an array of supported input formats The client must use the input
- * format to create input surface using ::NvEncCreateInputBuffer() API.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] encodeGUID
- * Encode GUID, corresponding to which the number of supported input formats
- * is to be retrieved.
- *\param [in] inputFmtArraySize
- * Size input format count array passed in \p inputFmts.
- *\param [out] inputFmts
- * Array of input formats supported for this Encode GUID.
- *\param [out] inputFmtCount
- * The number of valid input format types returned by the NvEncodeAPI
- * interface in \p inputFmts array.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetInputFormats (void* encoder, GUID encodeGUID, NV_ENC_BUFFER_FORMAT* inputFmts, uint32_t inputFmtArraySize, uint32_t* inputFmtCount);
-
-
-// NvEncGetEncodeCaps
-/**
- * \brief Retrieves the capability value for a specified encoder attribute.
- *
- * The function returns the capability value for a given encoder attribute. The
- * client must validate the encodeGUID using ::NvEncGetEncodeGUIDs() API before
- * calling this function. The encoder attribute being queried are enumerated in
- * ::NV_ENC_CAPS_PARAM enum.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] encodeGUID
- * Encode GUID, corresponding to which the capability attribute is to be retrieved.
- * \param [in] capsParam
- * Used to specify attribute being queried. Refer ::NV_ENC_CAPS_PARAM for more
- * details.
- * \param [out] capsVal
- * The value corresponding to the capability attribute being queried.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodeCaps (void* encoder, GUID encodeGUID, NV_ENC_CAPS_PARAM* capsParam, int* capsVal);
-
-
-// NvEncGetEncodePresetCount
-/**
- * \brief Retrieves the number of supported preset GUIDs.
- *
- * The function returns the number of preset GUIDs available for a given codec.
- * The client must validate the codec guid using ::NvEncGetEncodeGUIDs() API
- * before calling this function.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] encodeGUID
- * Encode GUID, corresponding to which the number of supported presets is to
- * be retrieved.
- * \param [out] encodePresetGUIDCount
- * Receives the number of supported preset GUIDs.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodePresetCount (void* encoder, GUID encodeGUID, uint32_t* encodePresetGUIDCount);
-
-
-// NvEncGetEncodePresetGUIDs
-/**
- * \brief Receives an array of supported encoder preset GUIDs.
- *
- * The function returns an array of encode preset guids available for a given codec.
- * The client can directly use one of the preset guids based upon the use case
- * or target device. The preset guid chosen can be directly used in
- * NV_ENC_INITIALIZE_PARAMS::presetGUID parameter to ::NvEncEncodePicture() API.
- * Alternately client can also use the preset guid to retrieve the encoding config
- * parameters being used by NvEncodeAPI interface for that given preset, using
- * ::NvEncGetEncodePresetConfig() API. It can then modify preset config parameters
- * as per its use case and send it to NvEncodeAPI interface as part of
- * NV_ENC_INITIALIZE_PARAMS::encodeConfig parameter for NvEncInitializeEncoder()
- * API.
- *
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] encodeGUID
- * Encode GUID, corresponding to which the list of supported presets is to be
- * retrieved.
- * \param [in] guidArraySize
- * Size of array of preset guids passed in \p preset GUIDs
- * \param [out] presetGUIDs
- * Array of supported Encode preset GUIDs from the NvEncodeAPI interface
- * to client.
- * \param [out] encodePresetGUIDCount
- * Receives the number of preset GUIDs returned by the NvEncodeAPI
- * interface.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodePresetGUIDs (void* encoder, GUID encodeGUID, GUID* presetGUIDs, uint32_t guidArraySize, uint32_t* encodePresetGUIDCount);
-
-
-// NvEncGetEncodePresetConfig
-/**
- * \brief Returns a preset config structure supported for given preset GUID.
- *
- * The function returns a preset config structure for a given preset guid. Before
- * using this function the client must enumerate the preset guids available for
- * a given codec. The preset config structure can be modified by the client depending
- * upon its use case and can be then used to initialize the encoder using
- * ::NvEncInitializeEncoder() API. The client can use this function only if it
- * wants to modify the NvEncodeAPI preset configuration, otherwise it can
- * directly use the preset guid.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] encodeGUID
- * Encode GUID, corresponding to which the list of supported presets is to be
- * retrieved.
- * \param [in] presetGUID
- * Preset GUID, corresponding to which the Encoding configurations is to be
- * retrieved.
- * \param [out] presetConfig
- * The requested Preset Encoder Attribute set. Refer ::_NV_ENC_CONFIG for
-* more details.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodePresetConfig (void* encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_PRESET_CONFIG* presetConfig);
-
-// NvEncInitializeEncoder
-/**
- * \brief Initialize the encoder.
- *
- * This API must be used to initialize the encoder. The initialization parameter
- * is passed using \p *createEncodeParams The client must send the following
- * fields of the _NV_ENC_INITIALIZE_PARAMS structure with a valid value.
- * - NV_ENC_INITIALIZE_PARAMS::encodeGUID
- * - NV_ENC_INITIALIZE_PARAMS::encodeWidth
- * - NV_ENC_INITIALIZE_PARAMS::encodeHeight
- *
- * The client can pass a preset guid directly to the NvEncodeAPI interface using
- * NV_ENC_INITIALIZE_PARAMS::presetGUID field. If the client doesn't pass
- * NV_ENC_INITIALIZE_PARAMS::encodeConfig structure, the codec specific parameters
- * will be selected based on the preset guid. The preset guid must have been
- * validated by the client using ::NvEncGetEncodePresetGUIDs() API.
- * If the client passes a custom ::_NV_ENC_CONFIG structure through
- * NV_ENC_INITIALIZE_PARAMS::encodeConfig , it will override the codec specific parameters
- * based on the preset guid. It is recommended that even if the client passes a custom config,
- * it should also send a preset guid. In this case, the preset guid passed by the client
- * will not override any of the custom config parameters programmed by the client,
- * it is only used as a hint by the NvEncodeAPI interface to determine certain encoder parameters
- * which are not exposed to the client.
- *
- * There are two modes of operation for the encoder namely:
- * - Asynchronous mode
- * - Synchronous mode
- *
- * The client can select asynchronous or synchronous mode by setting the \p
- * enableEncodeAsync field in ::_NV_ENC_INITIALIZE_PARAMS to 1 or 0 respectively.
- *\par Asynchronous mode of operation:
- * The Asynchronous mode can be enabled by setting NV_ENC_INITIALIZE_PARAMS::enableEncodeAsync to 1.
- * The client operating in asynchronous mode must allocate completion event object
- * for each output buffer and pass the completion event object in the
- * ::NvEncEncodePicture() API. The client can create another thread and wait on
- * the event object to be signalled by NvEncodeAPI interface on completion of the
- * encoding process for the output frame. This should unblock the main thread from
- * submitting work to the encoder. When the event is signalled the client can call
- * NvEncodeAPI interfaces to copy the bitstream data using ::NvEncLockBitstream()
- * API. This is the preferred mode of operation.
- *
- * NOTE: Asynchronous mode is not supported on Linux.
- *
- *\par Synchronous mode of operation:
- * The client can select synchronous mode by setting NV_ENC_INITIALIZE_PARAMS::enableEncodeAsync to 0.
- * The client working in synchronous mode can work in a single threaded or multi
- * threaded mode. The client need not allocate any event objects. The client can
- * only lock the bitstream data after NvEncodeAPI interface has returned
- * ::NV_ENC_SUCCESS from encode picture. The NvEncodeAPI interface can return
- * ::NV_ENC_ERR_NEED_MORE_INPUT error code from ::NvEncEncodePicture() API. The
- * client must not lock the output buffer in such case but should send the next
- * frame for encoding. The client must keep on calling ::NvEncEncodePicture() API
- * until it returns ::NV_ENC_SUCCESS. \n
- * The client must always lock the bitstream data in order in which it has submitted.
- * This is true for both asynchronous and synchronous mode.
- *
- *\par Picture type decision:
- * If the client is taking the picture type decision and it must disable the picture
- * type decision module in NvEncodeAPI by setting NV_ENC_INITIALIZE_PARAMS::enablePTD
- * to 0. In this case the client is required to send the picture in encoding
- * order to NvEncodeAPI by doing the re-ordering for B frames. \n
- * If the client doesn't want to take the picture type decision it can enable
- * picture type decision module in the NvEncodeAPI interface by setting
- * NV_ENC_INITIALIZE_PARAMS::enablePTD to 1 and send the input pictures in display
- * order.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] createEncodeParams
- * Refer ::_NV_ENC_INITIALIZE_PARAMS for details.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncInitializeEncoder (void* encoder, NV_ENC_INITIALIZE_PARAMS* createEncodeParams);
-
-
-// NvEncCreateInputBuffer
-/**
- * \brief Allocates Input buffer.
- *
- * This function is used to allocate an input buffer. The client must enumerate
- * the input buffer format before allocating the input buffer resources. The
- * NV_ENC_INPUT_PTR returned by the NvEncodeAPI interface in the
- * NV_ENC_CREATE_INPUT_BUFFER::inputBuffer field can be directly used in
- * ::NvEncEncodePicture() API. The number of input buffers to be allocated by the
- * client must be at least 4 more than the number of B frames being used for encoding.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] createInputBufferParams
- * Pointer to the ::NV_ENC_CREATE_INPUT_BUFFER structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncCreateInputBuffer (void* encoder, NV_ENC_CREATE_INPUT_BUFFER* createInputBufferParams);
-
-
-// NvEncDestroyInputBuffer
-/**
- * \brief Release an input buffers.
- *
- * This function is used to free an input buffer. If the client has allocated
- * any input buffer using ::NvEncCreateInputBuffer() API, it must free those
- * input buffers by calling this function. The client must release the input
- * buffers before destroying the encoder using ::NvEncDestroyEncoder() API.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] inputBuffer
- * Pointer to the input buffer to be released.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncDestroyInputBuffer (void* encoder, NV_ENC_INPUT_PTR inputBuffer);
-
-
-// NvEncCreateBitstreamBuffer
-/**
- * \brief Allocates an output bitstream buffer
- *
- * This function is used to allocate an output bitstream buffer and returns a
- * NV_ENC_OUTPUT_PTR to bitstream buffer to the client in the
- * NV_ENC_CREATE_BITSTREAM_BUFFER::bitstreamBuffer field.
- * The client can only call this function after the encoder session has been
- * initialized using ::NvEncInitializeEncoder() API. The minimum number of output
- * buffers allocated by the client must be at least 4 more than the number of B
- * B frames being used for encoding. The client can only access the output
- * bitsteam data by locking the \p bitstreamBuffer using the ::NvEncLockBitstream()
- * function.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] createBitstreamBufferParams
- * Pointer ::NV_ENC_CREATE_BITSTREAM_BUFFER for details.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncCreateBitstreamBuffer (void* encoder, NV_ENC_CREATE_BITSTREAM_BUFFER* createBitstreamBufferParams);
-
-
-// NvEncDestroyBitstreamBuffer
-/**
- * \brief Release a bitstream buffer.
- *
- * This function is used to release the output bitstream buffer allocated using
- * the ::NvEncCreateBitstreamBuffer() function. The client must release the output
- * bitstreamBuffer using this function before destroying the encoder session.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] bitstreamBuffer
- * Pointer to the bitstream buffer being released.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncDestroyBitstreamBuffer (void* encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer);
-
-// NvEncEncodePicture
-/**
- * \brief Submit an input picture for encoding.
- *
- * This function is used to submit an input picture buffer for encoding. The
- * encoding parameters are passed using \p *encodePicParams which is a pointer
- * to the ::_NV_ENC_PIC_PARAMS structure.
- *
- * If the client has set NV_ENC_INITIALIZE_PARAMS::enablePTD to 0, then it must
- * send a valid value for the following fields.
- * - NV_ENC_PIC_PARAMS::pictureType
- * - NV_ENC_PIC_PARAMS_H264::displayPOCSyntax (H264 only)
- * - NV_ENC_PIC_PARAMS_H264::frameNumSyntax(H264 only)
- * - NV_ENC_PIC_PARAMS_H264::refPicFlag(H264 only)
- *
- *
- *\par Asynchronous Encoding
- * If the client has enabled asynchronous mode of encoding by setting
- * NV_ENC_INITIALIZE_PARAMS::enableEncodeAsync to 1 in the ::NvEncInitializeEncoder()
- * API ,then the client must send a valid NV_ENC_PIC_PARAMS::completionEvent.
- * Incase of asynchronous mode of operation, client can queue the ::NvEncEncodePicture()
- * API commands from the main thread and then queue output buffers to be processed
- * to a secondary worker thread. Before the locking the output buffers in the
- * secondary thread , the client must wait on NV_ENC_PIC_PARAMS::completionEvent
- * it has queued in ::NvEncEncodePicture() API call. The client must always process
- * completion event and the output buffer in the same order in which they have been
- * submitted for encoding. The NvEncodeAPI interface is responsible for any
- * re-ordering required for B frames and will always ensure that encoded bitstream
- * data is written in the same order in which output buffer is submitted.
- *\code
- The below example shows how asynchronous encoding in case of 1 B frames
- ------------------------------------------------------------------------
- Suppose the client allocated 4 input buffers(I1,I2..), 4 output buffers(O1,O2..)
- and 4 completion events(E1, E2, ...). The NvEncodeAPI interface will need to
- keep a copy of the input buffers for re-ordering and it allocates following
- internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncodeAPI
- and the client is not responsible for the allocating or freeing the memory of
- the internal buffers.
-
- a) The client main thread will queue the following encode frame calls.
- Note the picture type is unknown to the client, the decision is being taken by
- NvEncodeAPI interface. The client should pass ::_NV_ENC_PIC_PARAMS parameter
- consisting of allocated input buffer, output buffer and output events in successive
- ::NvEncEncodePicture() API calls along with other required encode picture params.
- For example:
- 1st EncodePicture parameters - (I1, O1, E1)
- 2nd EncodePicture parameters - (I2, O2, E2)
- 3rd EncodePicture parameters - (I3, O3, E3)
-
- b) NvEncodeAPI SW will receive the following encode Commands from the client.
- The left side shows input from client in the form (Input buffer, Output Buffer,
- Output Event). The right hand side shows a possible picture type decision take by
- the NvEncodeAPI interface.
- (I1, O1, E1) ---P1 Frame
- (I2, O2, E2) ---B2 Frame
- (I3, O3, E3) ---P3 Frame
-
- c) NvEncodeAPI interface will make a copy of the input buffers to its internal
- buffersfor re-ordering. These copies are done as part of nvEncEncodePicture
- function call from the client and NvEncodeAPI interface is responsible for
- synchronization of copy operation with the actual encoding operation.
- I1 --> NvI1
- I2 --> NvI2
- I3 --> NvI3
-
- d) After returning from ::NvEncEncodePicture() call , the client must queue the output
- bitstream processing work to the secondary thread. The output bitstream processing
- for asynchronous mode consist of first waiting on completion event(E1, E2..)
- and then locking the output bitstream buffer(O1, O2..) for reading the encoded
- data. The work queued to the secondary thread by the client is in the following order
- (I1, O1, E1)
- (I2, O2, E2)
- (I3, O3, E3)
- Note they are in the same order in which client calls ::NvEncEncodePicture() API
- in \p step a).
-
- e) NvEncodeAPI interface will do the re-ordering such that Encoder HW will receive
- the following encode commands:
- (NvI1, O1, E1) ---P1 Frame
- (NvI3, O2, E2) ---P3 Frame
- (NvI2, O3, E3) ---B2 frame
-
- f) After the encoding operations are completed, the events will be signalled
- by NvEncodeAPI interface in the following order :
- (O1, E1) ---P1 Frame ,output bitstream copied to O1 and event E1 signalled.
- (O2, E2) ---P3 Frame ,output bitstream copied to O2 and event E2 signalled.
- (O3, E3) ---B2 Frame ,output bitstream copied to O3 and event E3 signalled.
-
- g) The client must lock the bitstream data using ::NvEncLockBitstream() API in
- the order O1,O2,O3 to read the encoded data, after waiting for the events
- to be signalled in the same order i.e E1, E2 and E3.The output processing is
- done in the secondary thread in the following order:
- Waits on E1, copies encoded bitstream from O1
- Waits on E2, copies encoded bitstream from O2
- Waits on E3, copies encoded bitstream from O3
-
- -Note the client will receive the events signalling and output buffer in the
- same order in which they have submitted for encoding.
- -Note the LockBitstream will have picture type field which will notify the
- output picture type to the clients.
- -Note the input, output buffer and the output completion event are free to be
- reused once NvEncodeAPI interfaced has signalled the event and the client has
- copied the data from the output buffer.
-
- * \endcode
- *
- *\par Synchronous Encoding
- * The client can enable synchronous mode of encoding by setting
- * NV_ENC_INITIALIZE_PARAMS::enableEncodeAsync to 0 in ::NvEncInitializeEncoder() API.
- * The NvEncodeAPI interface may return ::NV_ENC_ERR_NEED_MORE_INPUT error code for
- * some ::NvEncEncodePicture() API calls when NV_ENC_INITIALIZE_PARAMS::enablePTD
- * is set to 1, but the client must not treat it as a fatal error. The NvEncodeAPI
- * interface might not be able to submit an input picture buffer for encoding
- * immediately due to re-ordering for B frames. The NvEncodeAPI interface cannot
- * submit the input picture which is decided to be encoded as B frame as it waits
- * for backward reference from temporally subsequent frames. This input picture
- * is buffered internally and waits for more input picture to arrive. The client
- * must not call ::NvEncLockBitstream() API on the output buffers whose
- * ::NvEncEncodePicture() API returns ::NV_ENC_ERR_NEED_MORE_INPUT. The client must
- * wait for the NvEncodeAPI interface to return ::NV_ENC_SUCCESS before locking the
- * output bitstreams to read the encoded bitstream data. The following example
- * explains the scenario with synchronous encoding with 2 B frames.
- *\code
- The below example shows how synchronous encoding works in case of 1 B frames
- -----------------------------------------------------------------------------
- Suppose the client allocated 4 input buffers(I1,I2..), 4 output buffers(O1,O2..)
- and 4 completion events(E1, E2, ...). The NvEncodeAPI interface will need to
- keep a copy of the input buffers for re-ordering and it allocates following
- internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncodeAPI
- and the client is not responsible for the allocating or freeing the memory of
- the internal buffers.
-
- The client calls ::NvEncEncodePicture() API with input buffer I1 and output buffer O1.
- The NvEncodeAPI decides to encode I1 as P frame and submits it to encoder
- HW and returns ::NV_ENC_SUCCESS.
- The client can now read the encoded data by locking the output O1 by calling
- NvEncLockBitstream API.
-
- The client calls ::NvEncEncodePicture() API with input buffer I2 and output buffer O2.
- The NvEncodeAPI decides to encode I2 as B frame and buffers I2 by copying it
- to internal buffer and returns ::NV_ENC_ERR_NEED_MORE_INPUT.
- The error is not fatal and it notifies client that it cannot read the encoded
- data by locking the output O2 by calling ::NvEncLockBitstream() API without submitting
- more work to the NvEncodeAPI interface.
-
- The client calls ::NvEncEncodePicture() with input buffer I3 and output buffer O3.
- The NvEncodeAPI decides to encode I3 as P frame and it first submits I3 for
- encoding which will be used as backward reference frame for I2.
- The NvEncodeAPI then submits I2 for encoding and returns ::NV_ENC_SUCESS. Both
- the submission are part of the same ::NvEncEncodePicture() function call.
- The client can now read the encoded data for both the frames by locking the output
- O2 followed by O3 ,by calling ::NvEncLockBitstream() API.
-
- The client must always lock the output in the same order in which it has submitted
- to receive the encoded bitstream in correct encoding order.
-
- * \endcode
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] encodePicParams
- * Pointer to the ::_NV_ENC_PIC_PARAMS structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_ENCODER_BUSY \n
- * ::NV_ENC_ERR_NEED_MORE_INPUT \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncEncodePicture (void* encoder, NV_ENC_PIC_PARAMS* encodePicParams);
-
-
-// NvEncLockBitstream
-/**
- * \brief Lock output bitstream buffer
- *
- * This function is used to lock the bitstream buffer to read the encoded data.
- * The client can only access the encoded data by calling this function.
- * The pointer to client accessible encoded data is returned in the
- * NV_ENC_LOCK_BITSTREAM::bitstreamBufferPtr field. The size of the encoded data
- * in the output buffer is returned in the NV_ENC_LOCK_BITSTREAM::bitstreamSizeInBytes
- * The NvEncodeAPI interface also returns the output picture type and picture structure
- * of the encoded frame in NV_ENC_LOCK_BITSTREAM::pictureType and
- * NV_ENC_LOCK_BITSTREAM::pictureStruct fields respectively. If the client has
- * set NV_ENC_LOCK_BITSTREAM::doNotWait to 1, the function might return
- * ::NV_ENC_ERR_LOCK_BUSY if client is operating in synchronous mode. This is not
- * a fatal failure if NV_ENC_LOCK_BITSTREAM::doNotWait is set to 1. In the above case the client can
- * retry the function after few milliseconds.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] lockBitstreamBufferParams
- * Pointer to the ::_NV_ENC_LOCK_BITSTREAM structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_LOCK_BUSY \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncLockBitstream (void* encoder, NV_ENC_LOCK_BITSTREAM* lockBitstreamBufferParams);
-
-
-// NvEncUnlockBitstream
-/**
- * \brief Unlock the output bitstream buffer
- *
- * This function is used to unlock the output bitstream buffer after the client
- * has read the encoded data from output buffer. The client must call this function
- * to unlock the output buffer which it has previously locked using ::NvEncLockBitstream()
- * function. Using a locked bitstream buffer in ::NvEncEncodePicture() API will cause
- * the function to fail.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] bitstreamBuffer
- * bitstream buffer pointer being unlocked
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncUnlockBitstream (void* encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer);
-
-
-// NvLockInputBuffer
-/**
- * \brief Locks an input buffer
- *
- * This function is used to lock the input buffer to load the uncompressed YUV
- * pixel data into input buffer memory. The client must pass the NV_ENC_INPUT_PTR
- * it had previously allocated using ::NvEncCreateInputBuffer()in the
- * NV_ENC_LOCK_INPUT_BUFFER::inputBuffer field.
- * The NvEncodeAPI interface returns pointer to client accessible input buffer
- * memory in NV_ENC_LOCK_INPUT_BUFFER::bufferDataPtr field.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] lockInputBufferParams
- * Pointer to the ::_NV_ENC_LOCK_INPUT_BUFFER structure
- *
- * \return
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_LOCK_BUSY \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncLockInputBuffer (void* encoder, NV_ENC_LOCK_INPUT_BUFFER* lockInputBufferParams);
-
-
-// NvUnlockInputBuffer
-/**
- * \brief Unlocks the input buffer
- *
- * This function is used to unlock the input buffer memory previously locked for
- * uploading YUV pixel data. The input buffer must be unlocked before being used
- * again for encoding, otherwise NvEncodeAPI will fail the ::NvEncEncodePicture()
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] inputBuffer
- * Pointer to the input buffer that is being unlocked.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- *
- */
-NVENCSTATUS NVENCAPI NvEncUnlockInputBuffer (void* encoder, NV_ENC_INPUT_PTR inputBuffer);
-
-
-// NvEncGetEncodeStats
-/**
- * \brief Get encoding statistics.
- *
- * This function is used to retrieve the encoding statistics.
- * This API is not supported when encode device type is CUDA.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] encodeStats
- * Pointer to the ::_NV_ENC_STAT structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetEncodeStats (void* encoder, NV_ENC_STAT* encodeStats);
-
-
-// NvEncGetSequenceParams
-/**
- * \brief Get encoded sequence and picture header.
- *
- * This function can be used to retrieve the sequence and picture header out of
- * band. The client must call this function only after the encoder has been
- * initialized using ::NvEncInitializeEncoder() function. The client must
- * allocate the memory where the NvEncodeAPI interface can copy the bitstream
- * header and pass the pointer to the memory in NV_ENC_SEQUENCE_PARAM_PAYLOAD::spsppsBuffer.
- * The size of buffer is passed in the field NV_ENC_SEQUENCE_PARAM_PAYLOAD::inBufferSize.
- * The NvEncodeAPI interface will copy the bitstream header payload and returns
- * the actual size of the bitstream header in the field
- * NV_ENC_SEQUENCE_PARAM_PAYLOAD::outSPSPPSPayloadSize.
- * The client must call ::NvEncGetSequenceParams() function from the same thread which is
- * being used to call ::NvEncEncodePicture() function.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] sequenceParamPayload
- * Pointer to the ::_NV_ENC_SEQUENCE_PARAM_PAYLOAD structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncGetSequenceParams (void* encoder, NV_ENC_SEQUENCE_PARAM_PAYLOAD* sequenceParamPayload);
-
-
-// NvEncRegisterAsyncEvent
-/**
- * \brief Register event for notification to encoding completion.
- *
- * This function is used to register the completion event with NvEncodeAPI
- * interface. The event is required when the client has configured the encoder to
- * work in asynchronous mode. In this mode the client needs to send a completion
- * event with every output buffer. The NvEncodeAPI interface will signal the
- * completion of the encoding process using this event. Only after the event is
- * signalled the client can get the encoded data using ::NvEncLockBitstream() function.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] eventParams
- * Pointer to the ::_NV_ENC_EVENT_PARAMS structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncRegisterAsyncEvent (void* encoder, NV_ENC_EVENT_PARAMS* eventParams);
-
-
-// NvEncUnregisterAsyncEvent
-/**
- * \brief Unregister completion event.
- *
- * This function is used to unregister completion event which has been previously
- * registered using ::NvEncRegisterAsyncEvent() function. The client must unregister
- * all events before destroying the encoder using ::NvEncDestroyEncoder() function.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] eventParams
- * Pointer to the ::_NV_ENC_EVENT_PARAMS structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncUnregisterAsyncEvent (void* encoder, NV_ENC_EVENT_PARAMS* eventParams);
-
-
-// NvEncMapInputResource
-/**
- * \brief Map an externally created input resource pointer for encoding.
- *
- * Maps an externally allocated input resource [using and returns a NV_ENC_INPUT_PTR
- * which can be used for encoding in the ::NvEncEncodePicture() function. The
- * mapped resource is returned in the field NV_ENC_MAP_INPUT_RESOURCE::outputResourcePtr.
- * The NvEncodeAPI interface also returns the buffer format of the mapped resource
- * in the field NV_ENC_MAP_INPUT_RESOURCE::outbufferFmt.
- * This function provides synchronization guarantee that any graphics or compute
- * work submitted on the input buffer is completed before the buffer is used for encoding.
- * The client should not access any input buffer while they are mapped by the encoder.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] mapInputResParams
- * Pointer to the ::_NV_ENC_MAP_INPUT_RESOURCE structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_RESOURCE_NOT_REGISTERED \n
- * ::NV_ENC_ERR_MAP_FAILED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncMapInputResource (void* encoder, NV_ENC_MAP_INPUT_RESOURCE* mapInputResParams);
-
-
-// NvEncUnmapInputResource
-/**
- * \brief UnMaps a NV_ENC_INPUT_PTR which was mapped for encoding
- *
- *
- * UnMaps an input buffer which was previously mapped using ::NvEncMapInputResource()
- * API. The mapping created using ::NvEncMapInputResource() should be invalidated
- * using this API before the external resource is destroyed by the client. The client
- * must unmap the buffer after ::NvEncLockBitstream() API returns succuessfully for encode
- * work submitted using the mapped input buffer.
- *
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] mappedInputBuffer
- * Pointer to the NV_ENC_INPUT_PTR
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_RESOURCE_NOT_REGISTERED \n
- * ::NV_ENC_ERR_RESOURCE_NOT_MAPPED \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncUnmapInputResource (void* encoder, NV_ENC_INPUT_PTR mappedInputBuffer);
-
-// NvEncDestroyEncoder
-/**
- * \brief Destroy Encoding Session
- *
- * Destroys the encoder session previously created using ::NvEncOpenEncodeSession()
- * function. The client must flush the encoder before freeing any resources. In order
- * to flush the encoder the client must pass a NULL encode picture packet and either
- * wait for the ::NvEncEncodePicture() function to return in synchronous mode or wait
- * for the flush event to be signaled by the encoder in asynchronous mode.
- * The client must free all the input and output resources created using the
- * NvEncodeAPI interface before destroying the encoder. If the client is operating
- * in asynchronous mode, it must also unregister the completion events previously
- * registered.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncDestroyEncoder (void* encoder);
-
-// NvEncInvalidateRefFrames
-/**
- * \brief Invalidate reference frames
- *
- * Invalidates reference frame based on the time stamp provided by the client.
- * The encoder marks any reference frames or any frames which have been reconstructed
- * using the corrupt frame as invalid for motion estimation and uses older reference
- * frames for motion estimation. The encoded forces the current frame to be encoded
- * as an intra frame if no reference frames are left after invalidation process.
- * This is useful for low latency application for error resiliency. The client
- * is recommended to set NV_ENC_CONFIG_H264::maxNumRefFrames to a large value so
- * that encoder can keep a backup of older reference frames in the DPB and can use them
- * for motion estimation when the newer reference frames have been invalidated.
- * This API can be called multiple times.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] invalidRefFrameTimeStamp
- * Timestamp of the invalid reference frames which needs to be invalidated.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncInvalidateRefFrames(void* encoder, uint64_t invalidRefFrameTimeStamp);
-
-// NvEncOpenEncodeSessionEx
-/**
- * \brief Opens an encoding session.
- *
- * Opens an encoding session and returns a pointer to the encoder interface in
- * the \p **encoder parameter. The client should start encoding process by calling
- * this API first.
- * The client must pass a pointer to IDirect3DDevice9 device or CUDA context in the \p *device parameter.
- * For the OpenGL interface, \p device must be NULL. An OpenGL context must be current when
- * calling all NvEncodeAPI functions.
- * If the creation of encoder session fails, the client must call ::NvEncDestroyEncoder API
- * before exiting.
- *
- * \param [in] openSessionExParams
- * Pointer to a ::NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS structure.
- * \param [out] encoder
- * Encode Session pointer to the NvEncodeAPI interface.
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_NO_ENCODE_DEVICE \n
- * ::NV_ENC_ERR_UNSUPPORTED_DEVICE \n
- * ::NV_ENC_ERR_INVALID_DEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncOpenEncodeSessionEx (NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS *openSessionExParams, void** encoder);
-
-// NvEncRegisterResource
-/**
- * \brief Registers a resource with the Nvidia Video Encoder Interface.
- *
- * Registers a resource with the Nvidia Video Encoder Interface for book keeping.
- * The client is expected to pass the registered resource handle as well, while calling ::NvEncMapInputResource API.
- *
- * \param [in] encoder
- * Pointer to the NVEncodeAPI interface.
- *
- * \param [in] registerResParams
- * Pointer to a ::_NV_ENC_REGISTER_RESOURCE structure
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_RESOURCE_REGISTER_FAILED \n
- * ::NV_ENC_ERR_GENERIC \n
- * ::NV_ENC_ERR_UNIMPLEMENTED \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncRegisterResource (void* encoder, NV_ENC_REGISTER_RESOURCE* registerResParams);
-
-// NvEncUnregisterResource
-/**
- * \brief Unregisters a resource previously registered with the Nvidia Video Encoder Interface.
- *
- * Unregisters a resource previously registered with the Nvidia Video Encoder Interface.
- * The client is expected to unregister any resource that it has registered with the
- * Nvidia Video Encoder Interface before destroying the resource.
- *
- * \param [in] encoder
- * Pointer to the NVEncodeAPI interface.
- *
- * \param [in] registeredResource
- * The registered resource pointer that was returned in ::NvEncRegisterResource.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_RESOURCE_NOT_REGISTERED \n
- * ::NV_ENC_ERR_GENERIC \n
- * ::NV_ENC_ERR_UNIMPLEMENTED \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncUnregisterResource (void* encoder, NV_ENC_REGISTERED_PTR registeredResource);
-
-// NvEncReconfigureEncoder
-/**
- * \brief Reconfigure an existing encoding session.
- *
- * Reconfigure an existing encoding session.
- * The client should call this API to change/reconfigure the parameter passed during
- * NvEncInitializeEncoder API call.
- * Currently Reconfiguration of following are not supported.
- * Change in GOP structure.
- * Change in sync-Async mode.
- * Change in MaxWidth & MaxHeight.
- * Change in PTDmode.
- *
- * Resolution change is possible only if maxEncodeWidth & maxEncodeHeight of NV_ENC_INITIALIZE_PARAMS
- * is set while creating encoder session.
- *
- * \param [in] encoder
- * Pointer to the NVEncodeAPI interface.
- *
- * \param [in] reInitEncodeParams
- * Pointer to a ::NV_ENC_RECONFIGURE_PARAMS structure.
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_NO_ENCODE_DEVICE \n
- * ::NV_ENC_ERR_UNSUPPORTED_DEVICE \n
- * ::NV_ENC_ERR_INVALID_DEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_GENERIC \n
- *
- */
-NVENCSTATUS NVENCAPI NvEncReconfigureEncoder (void *encoder, NV_ENC_RECONFIGURE_PARAMS* reInitEncodeParams);
-
-
-
-// NvEncCreateMVBuffer
-/**
- * \brief Allocates output MV buffer for ME only mode.
- *
- * This function is used to allocate an output MV buffer. The size of the mvBuffer is
- * dependent on the frame height and width of the last ::NvEncCreateInputBuffer() call.
- * The NV_ENC_OUTPUT_PTR returned by the NvEncodeAPI interface in the
- * ::NV_ENC_CREATE_MV_BUFFER::mvBuffer field should be used in
- * ::NvEncRunMotionEstimationOnly() API.
- * Client must lock ::NV_ENC_CREATE_MV_BUFFER::mvBuffer using ::NvEncLockBitstream() API to get the motion vector data.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in,out] createMVBufferParams
- * Pointer to the ::NV_ENC_CREATE_MV_BUFFER structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_GENERIC \n
- */
-NVENCSTATUS NVENCAPI NvEncCreateMVBuffer (void* encoder, NV_ENC_CREATE_MV_BUFFER* createMVBufferParams);
-
-
-// NvEncDestroyMVBuffer
-/**
- * \brief Release an output MV buffer for ME only mode.
- *
- * This function is used to release the output MV buffer allocated using
- * the ::NvEncCreateMVBuffer() function. The client must release the output
- * mvBuffer using this function before destroying the encoder session.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] mvBuffer
- * Pointer to the mvBuffer being released.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- */
-NVENCSTATUS NVENCAPI NvEncDestroyMVBuffer (void* encoder, NV_ENC_OUTPUT_PTR mvBuffer);
-
-
-// NvEncRunMotionEstimationOnly
-/**
- * \brief Submit an input picture and reference frame for motion estimation in ME only mode.
- *
- * This function is used to submit the input frame and reference frame for motion
- * estimation. The ME parameters are passed using *meOnlyParams which is a pointer
- * to ::_NV_ENC_MEONLY_PARAMS structure.
- * Client must lock ::NV_ENC_CREATE_MV_BUFFER::mvBuffer using ::NvEncLockBitstream() API to get the motion vector data.
- * to get motion vector data.
- *
- * \param [in] encoder
- * Pointer to the NvEncodeAPI interface.
- * \param [in] meOnlyParams
- * Pointer to the ::_NV_ENC_MEONLY_PARAMS structure.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
- * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
- * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
- * ::NV_ENC_ERR_OUT_OF_MEMORY \n
- * ::NV_ENC_ERR_INVALID_PARAM \n
- * ::NV_ENC_ERR_INVALID_VERSION \n
- * ::NV_ENC_ERR_NEED_MORE_INPUT \n
- * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
- * ::NV_ENC_ERR_GENERIC \n
- */
-NVENCSTATUS NVENCAPI NvEncRunMotionEstimationOnly (void* encoder, NV_ENC_MEONLY_PARAMS* meOnlyParams);
-
-// NvEncodeAPIGetMaxSupportedVersion
-/**
- * \brief Get the largest NvEncodeAPI version supported by the driver.
- *
- * This function can be used by clients to determine if the driver supports
- * the NvEncodeAPI header the application was compiled with.
- *
- * \param [out] version
- * Pointer to the requested value. The 4 least significant bits in the returned
- * indicate the minor version and the rest of the bits indicate the major
- * version of the largest supported version.
- *
- * \return
- * ::NV_ENC_SUCCESS \n
- * ::NV_ENC_ERR_INVALID_PTR \n
- */
-NVENCSTATUS NVENCAPI NvEncodeAPIGetMaxSupportedVersion (uint32_t* version);
-
-
-/// \cond API PFN
-/*
- * Defines API function pointers
- */
-typedef NVENCSTATUS (NVENCAPI* PNVENCOPENENCODESESSION) (void* device, uint32_t deviceType, void** encoder);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEGUIDCOUNT) (void* encoder, uint32_t* encodeGUIDCount);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEGUIDS) (void* encoder, GUID* GUIDs, uint32_t guidArraySize, uint32_t* GUIDCount);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPROFILEGUIDCOUNT) (void* encoder, GUID encodeGUID, uint32_t* encodeProfileGUIDCount);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPROFILEGUIDS) (void* encoder, GUID encodeGUID, GUID* profileGUIDs, uint32_t guidArraySize, uint32_t* GUIDCount);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETINPUTFORMATCOUNT) (void* encoder, GUID encodeGUID, uint32_t* inputFmtCount);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETINPUTFORMATS) (void* encoder, GUID encodeGUID, NV_ENC_BUFFER_FORMAT* inputFmts, uint32_t inputFmtArraySize, uint32_t* inputFmtCount);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODECAPS) (void* encoder, GUID encodeGUID, NV_ENC_CAPS_PARAM* capsParam, int* capsVal);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPRESETCOUNT) (void* encoder, GUID encodeGUID, uint32_t* encodePresetGUIDCount);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPRESETGUIDS) (void* encoder, GUID encodeGUID, GUID* presetGUIDs, uint32_t guidArraySize, uint32_t* encodePresetGUIDCount);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPRESETCONFIG) (void* encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_PRESET_CONFIG* presetConfig);
-typedef NVENCSTATUS (NVENCAPI* PNVENCINITIALIZEENCODER) (void* encoder, NV_ENC_INITIALIZE_PARAMS* createEncodeParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCCREATEINPUTBUFFER) (void* encoder, NV_ENC_CREATE_INPUT_BUFFER* createInputBufferParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCDESTROYINPUTBUFFER) (void* encoder, NV_ENC_INPUT_PTR inputBuffer);
-typedef NVENCSTATUS (NVENCAPI* PNVENCCREATEBITSTREAMBUFFER) (void* encoder, NV_ENC_CREATE_BITSTREAM_BUFFER* createBitstreamBufferParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCDESTROYBITSTREAMBUFFER) (void* encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer);
-typedef NVENCSTATUS (NVENCAPI* PNVENCENCODEPICTURE) (void* encoder, NV_ENC_PIC_PARAMS* encodePicParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCLOCKBITSTREAM) (void* encoder, NV_ENC_LOCK_BITSTREAM* lockBitstreamBufferParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCUNLOCKBITSTREAM) (void* encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer);
-typedef NVENCSTATUS (NVENCAPI* PNVENCLOCKINPUTBUFFER) (void* encoder, NV_ENC_LOCK_INPUT_BUFFER* lockInputBufferParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCUNLOCKINPUTBUFFER) (void* encoder, NV_ENC_INPUT_PTR inputBuffer);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODESTATS) (void* encoder, NV_ENC_STAT* encodeStats);
-typedef NVENCSTATUS (NVENCAPI* PNVENCGETSEQUENCEPARAMS) (void* encoder, NV_ENC_SEQUENCE_PARAM_PAYLOAD* sequenceParamPayload);
-typedef NVENCSTATUS (NVENCAPI* PNVENCREGISTERASYNCEVENT) (void* encoder, NV_ENC_EVENT_PARAMS* eventParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCUNREGISTERASYNCEVENT) (void* encoder, NV_ENC_EVENT_PARAMS* eventParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCMAPINPUTRESOURCE) (void* encoder, NV_ENC_MAP_INPUT_RESOURCE* mapInputResParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCUNMAPINPUTRESOURCE) (void* encoder, NV_ENC_INPUT_PTR mappedInputBuffer);
-typedef NVENCSTATUS (NVENCAPI* PNVENCDESTROYENCODER) (void* encoder);
-typedef NVENCSTATUS (NVENCAPI* PNVENCINVALIDATEREFFRAMES) (void* encoder, uint64_t invalidRefFrameTimeStamp);
-typedef NVENCSTATUS (NVENCAPI* PNVENCOPENENCODESESSIONEX) (NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS *openSessionExParams, void** encoder);
-typedef NVENCSTATUS (NVENCAPI* PNVENCREGISTERRESOURCE) (void* encoder, NV_ENC_REGISTER_RESOURCE* registerResParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCUNREGISTERRESOURCE) (void* encoder, NV_ENC_REGISTERED_PTR registeredRes);
-typedef NVENCSTATUS (NVENCAPI* PNVENCRECONFIGUREENCODER) (void* encoder, NV_ENC_RECONFIGURE_PARAMS* reInitEncodeParams);
-
-typedef NVENCSTATUS (NVENCAPI* PNVENCCREATEMVBUFFER) (void* encoder, NV_ENC_CREATE_MV_BUFFER* createMVBufferParams);
-typedef NVENCSTATUS (NVENCAPI* PNVENCDESTROYMVBUFFER) (void* encoder, NV_ENC_OUTPUT_PTR mvBuffer);
-typedef NVENCSTATUS (NVENCAPI* PNVENCRUNMOTIONESTIMATIONONLY) (void* encoder, NV_ENC_MEONLY_PARAMS* meOnlyParams);
-
-
-/// \endcond
-
-
-/** @} */ /* END ENCODE_FUNC */
-
-/**
- * \ingroup ENCODER_STRUCTURE
- * NV_ENCODE_API_FUNCTION_LIST
- */
-typedef struct _NV_ENCODE_API_FUNCTION_LIST
-{
- uint32_t version; /**< [in]: Client should pass NV_ENCODE_API_FUNCTION_LIST_VER. */
- uint32_t reserved; /**< [in]: Reserved and should be set to 0. */
- PNVENCOPENENCODESESSION nvEncOpenEncodeSession; /**< [out]: Client should access ::NvEncOpenEncodeSession() API through this pointer. */
- PNVENCGETENCODEGUIDCOUNT nvEncGetEncodeGUIDCount; /**< [out]: Client should access ::NvEncGetEncodeGUIDCount() API through this pointer. */
- PNVENCGETENCODEPRESETCOUNT nvEncGetEncodeProfileGUIDCount; /**< [out]: Client should access ::NvEncGetEncodeProfileGUIDCount() API through this pointer.*/
- PNVENCGETENCODEPRESETGUIDS nvEncGetEncodeProfileGUIDs; /**< [out]: Client should access ::NvEncGetEncodeProfileGUIDs() API through this pointer. */
- PNVENCGETENCODEGUIDS nvEncGetEncodeGUIDs; /**< [out]: Client should access ::NvEncGetEncodeGUIDs() API through this pointer. */
- PNVENCGETINPUTFORMATCOUNT nvEncGetInputFormatCount; /**< [out]: Client should access ::NvEncGetInputFormatCount() API through this pointer. */
- PNVENCGETINPUTFORMATS nvEncGetInputFormats; /**< [out]: Client should access ::NvEncGetInputFormats() API through this pointer. */
- PNVENCGETENCODECAPS nvEncGetEncodeCaps; /**< [out]: Client should access ::NvEncGetEncodeCaps() API through this pointer. */
- PNVENCGETENCODEPRESETCOUNT nvEncGetEncodePresetCount; /**< [out]: Client should access ::NvEncGetEncodePresetCount() API through this pointer. */
- PNVENCGETENCODEPRESETGUIDS nvEncGetEncodePresetGUIDs; /**< [out]: Client should access ::NvEncGetEncodePresetGUIDs() API through this pointer. */
- PNVENCGETENCODEPRESETCONFIG nvEncGetEncodePresetConfig; /**< [out]: Client should access ::NvEncGetEncodePresetConfig() API through this pointer. */
- PNVENCINITIALIZEENCODER nvEncInitializeEncoder; /**< [out]: Client should access ::NvEncInitializeEncoder() API through this pointer. */
- PNVENCCREATEINPUTBUFFER nvEncCreateInputBuffer; /**< [out]: Client should access ::NvEncCreateInputBuffer() API through this pointer. */
- PNVENCDESTROYINPUTBUFFER nvEncDestroyInputBuffer; /**< [out]: Client should access ::NvEncDestroyInputBuffer() API through this pointer. */
- PNVENCCREATEBITSTREAMBUFFER nvEncCreateBitstreamBuffer; /**< [out]: Client should access ::NvEncCreateBitstreamBuffer() API through this pointer. */
- PNVENCDESTROYBITSTREAMBUFFER nvEncDestroyBitstreamBuffer; /**< [out]: Client should access ::NvEncDestroyBitstreamBuffer() API through this pointer. */
- PNVENCENCODEPICTURE nvEncEncodePicture; /**< [out]: Client should access ::NvEncEncodePicture() API through this pointer. */
- PNVENCLOCKBITSTREAM nvEncLockBitstream; /**< [out]: Client should access ::NvEncLockBitstream() API through this pointer. */
- PNVENCUNLOCKBITSTREAM nvEncUnlockBitstream; /**< [out]: Client should access ::NvEncUnlockBitstream() API through this pointer. */
- PNVENCLOCKINPUTBUFFER nvEncLockInputBuffer; /**< [out]: Client should access ::NvEncLockInputBuffer() API through this pointer. */
- PNVENCUNLOCKINPUTBUFFER nvEncUnlockInputBuffer; /**< [out]: Client should access ::NvEncUnlockInputBuffer() API through this pointer. */
- PNVENCGETENCODESTATS nvEncGetEncodeStats; /**< [out]: Client should access ::NvEncGetEncodeStats() API through this pointer. */
- PNVENCGETSEQUENCEPARAMS nvEncGetSequenceParams; /**< [out]: Client should access ::NvEncGetSequenceParams() API through this pointer. */
- PNVENCREGISTERASYNCEVENT nvEncRegisterAsyncEvent; /**< [out]: Client should access ::NvEncRegisterAsyncEvent() API through this pointer. */
- PNVENCUNREGISTERASYNCEVENT nvEncUnregisterAsyncEvent; /**< [out]: Client should access ::NvEncUnregisterAsyncEvent() API through this pointer. */
- PNVENCMAPINPUTRESOURCE nvEncMapInputResource; /**< [out]: Client should access ::NvEncMapInputResource() API through this pointer. */
- PNVENCUNMAPINPUTRESOURCE nvEncUnmapInputResource; /**< [out]: Client should access ::NvEncUnmapInputResource() API through this pointer. */
- PNVENCDESTROYENCODER nvEncDestroyEncoder; /**< [out]: Client should access ::NvEncDestroyEncoder() API through this pointer. */
- PNVENCINVALIDATEREFFRAMES nvEncInvalidateRefFrames; /**< [out]: Client should access ::NvEncInvalidateRefFrames() API through this pointer. */
- PNVENCOPENENCODESESSIONEX nvEncOpenEncodeSessionEx; /**< [out]: Client should access ::NvEncOpenEncodeSession() API through this pointer. */
- PNVENCREGISTERRESOURCE nvEncRegisterResource; /**< [out]: Client should access ::NvEncRegisterResource() API through this pointer. */
- PNVENCUNREGISTERRESOURCE nvEncUnregisterResource; /**< [out]: Client should access ::NvEncUnregisterResource() API through this pointer. */
- PNVENCRECONFIGUREENCODER nvEncReconfigureEncoder; /**< [out]: Client should access ::NvEncReconfigureEncoder() API through this pointer. */
- void* reserved1;
- PNVENCCREATEMVBUFFER nvEncCreateMVBuffer; /**< [out]: Client should access ::NvEncCreateMVBuffer API through this pointer. */
- PNVENCDESTROYMVBUFFER nvEncDestroyMVBuffer; /**< [out]: Client should access ::NvEncDestroyMVBuffer API through this pointer. */
- PNVENCRUNMOTIONESTIMATIONONLY nvEncRunMotionEstimationOnly; /**< [out]: Client should access ::NvEncRunMotionEstimationOnly API through this pointer. */
- void* reserved2[281]; /**< [in]: Reserved and must be set to NULL */
-} NV_ENCODE_API_FUNCTION_LIST;
-
-/** Macro for constructing the version field of ::_NV_ENCODEAPI_FUNCTION_LIST. */
-#define NV_ENCODE_API_FUNCTION_LIST_VER NVENCAPI_STRUCT_VERSION(2)
-
-// NvEncodeAPICreateInstance
-/**
- * \ingroup ENCODE_FUNC
- * Entry Point to the NvEncodeAPI interface.
- *
- * Creates an instance of the NvEncodeAPI interface, and populates the
- * pFunctionList with function pointers to the API routines implemented by the
- * NvEncodeAPI interface.
- *
- * \param [out] functionList
- *
- * \return
- * ::NV_ENC_SUCCESS
- * ::NV_ENC_ERR_INVALID_PTR
- */
-NVENCSTATUS NVENCAPI NvEncodeAPICreateInstance(NV_ENCODE_API_FUNCTION_LIST *functionList);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
-
diff --git a/chromium/third_party/ffmpeg/configure b/chromium/third_party/ffmpeg/configure
index a83581ea98a..0cad7261cd1 100755
--- a/chromium/third_party/ffmpeg/configure
+++ b/chromium/third_party/ffmpeg/configure
@@ -224,6 +224,7 @@ External library support:
--enable-libcaca enable textual display using libcaca [no]
--enable-libcelt enable CELT decoding via libcelt [no]
--enable-libcdio enable audio CD grabbing with libcdio [no]
+ --enable-libcodec2 enable codec2 en/decoding using libcodec2 [no]
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
--enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
@@ -306,11 +307,11 @@ External library support:
The following libraries provide various hardware acceleration features:
--disable-amf disable AMF video encoding code [autodetect]
--disable-audiotoolbox disable Apple AudioToolbox code [autodetect]
- --disable-cuda disable dynamically linked Nvidia CUDA code [autodetect]
--enable-cuda-sdk enable CUDA features that require the CUDA SDK [no]
--disable-cuvid disable Nvidia CUVID support [autodetect]
--disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect]
--disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect]
+ --disable-ffnvcodec disable dynamically linked Nvidia code [autodetect]
--enable-libdrm enable DRM code (Linux) [no]
--enable-libmfx enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
--enable-libnpp enable Nvidia Performance Primitives-based code [no]
@@ -568,6 +569,12 @@ add_suffix(){
for v; do echo ${v}${suffix}; done
}
+remove_suffix(){
+ suffix=$1
+ shift
+ for v; do echo ${v%$suffix}; done
+}
+
set_all(){
value=$1
shift
@@ -1526,6 +1533,7 @@ EXAMPLE_LIST="
transcode_aac_example
transcoding_example
vaapi_encode_example
+ vaapi_transcode_example
"
EXTERNAL_AUTODETECT_LIBRARY_LIST="
@@ -1596,6 +1604,7 @@ EXTERNAL_LIBRARY_LIST="
libbs2b
libcaca
libcelt
+ libcodec2
libdc1394
libdrm
libflite
@@ -1651,6 +1660,7 @@ HWACCEL_AUTODETECT_LIBRARY_LIST="
cuvid
d3d11va
dxva2
+ ffnvcodec
nvdec
nvenc
vaapi
@@ -2454,6 +2464,8 @@ apng_encoder_deps="zlib"
apng_encoder_select="llvidencdsp"
aptx_decoder_select="audio_frame_queue"
aptx_encoder_select="audio_frame_queue"
+aptx_hd_decoder_select="audio_frame_queue"
+aptx_hd_encoder_select="audio_frame_queue"
asv1_decoder_select="blockdsp bswapdsp idctdsp"
asv1_encoder_select="bswapdsp fdctdsp pixblockdsp"
asv2_decoder_select="blockdsp bswapdsp idctdsp"
@@ -2631,7 +2643,7 @@ vble_decoder_select="llviddsp"
vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp"
vc1image_decoder_select="vc1_decoder"
vorbis_decoder_select="mdct"
-vorbis_encoder_select="mdct"
+vorbis_encoder_select="audio_frame_queue mdct"
vp3_decoder_select="hpeldsp vp3dsp videodsp"
vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
@@ -2664,11 +2676,12 @@ zmbv_encoder_deps="zlib"
# hardware accelerators
crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
-cuda_deps_any="libdl LoadLibrary"
-cuvid_deps="cuda"
+cuda_deps="ffnvcodec"
+cuvid_deps="ffnvcodec"
d3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext"
dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32 user32"
-nvdec_deps="cuda"
+ffnvcodec_deps_any="libdl LoadLibrary"
+nvdec_deps="ffnvcodec"
videotoolbox_hwaccel_deps="videotoolbox pthreads"
videotoolbox_hwaccel_extralibs="-framework QuartzCore"
xvmc_deps="X11_extensions_XvMClib_h"
@@ -2705,6 +2718,10 @@ hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
hevc_vdpau_hwaccel_select="hevc_decoder"
hevc_videotoolbox_hwaccel_deps="videotoolbox"
hevc_videotoolbox_hwaccel_select="hevc_decoder"
+mjpeg_nvdec_hwaccel_deps="nvdec"
+mjpeg_nvdec_hwaccel_select="mjpeg_decoder"
+mjpeg_vaapi_hwaccel_deps="vaapi"
+mjpeg_vaapi_hwaccel_select="mjpeg_decoder"
mpeg_xvmc_hwaccel_deps="xvmc"
mpeg_xvmc_hwaccel_select="mpeg2video_decoder"
mpeg1_nvdec_hwaccel_deps="nvdec"
@@ -2782,13 +2799,13 @@ qsvvpp_select="qsv"
vaapi_encode_deps="vaapi"
v4l2_m2m_deps_any="linux_videodev2_h"
-hwupload_cuda_filter_deps="cuda"
-scale_npp_filter_deps="cuda libnpp"
+hwupload_cuda_filter_deps="ffnvcodec"
+scale_npp_filter_deps="ffnvcodec libnpp"
scale_cuda_filter_deps="cuda_sdk"
thumbnail_cuda_filter_deps="cuda_sdk"
amf_deps_any="libdl LoadLibrary"
-nvenc_deps="cuda"
+nvenc_deps="ffnvcodec"
nvenc_deps_any="libdl LoadLibrary"
nvenc_encoder_deps="nvenc"
@@ -2931,6 +2948,8 @@ h264_videotoolbox_encoder_select="videotoolbox_encoder"
hevc_videotoolbox_encoder_deps="pthreads"
hevc_videotoolbox_encoder_select="videotoolbox_encoder"
libcelt_decoder_deps="libcelt"
+libcodec2_decoder_deps="libcodec2"
+libcodec2_encoder_deps="libcodec2"
libfdk_aac_decoder_deps="libfdk_aac"
libfdk_aac_encoder_deps="libfdk_aac"
libfdk_aac_encoder_select="audio_frame_queue"
@@ -3072,6 +3091,8 @@ xmv_demuxer_select="riffdec"
xwma_demuxer_select="riffdec"
# indevs / outdevs
+android_camera_indev_deps="android camera2ndk mediandk pthreads"
+android_camera_indev_extralibs="-landroid -lcamera2ndk -lmediandk"
alsa_indev_deps="alsa"
alsa_outdev_deps="alsa"
avfoundation_indev_deps="avfoundation corevideo coremedia pthreads"
@@ -3319,7 +3340,8 @@ resampling_audio_example_deps="avutil swresample"
scaling_video_example_deps="avutil swscale"
transcode_aac_example_deps="avcodec avformat swresample"
transcoding_example_deps="avfilter avcodec avformat avutil"
-vaapi_encode_example_deps="avcodec avutil"
+vaapi_encode_example_deps="avcodec avutil h264_vaapi_encoder"
+vaapi_transcode_example_deps="avcodec avformat avutil h264_vaapi_encoder"
# EXTRALIBS_LIST
cpu_init_extralibs="pthreads_extralibs"
@@ -3337,7 +3359,7 @@ avformat_deps="avcodec avutil"
avformat_suggest="libm network zlib"
avresample_deps="avutil"
avresample_suggest="libm"
-avutil_suggest="clock_gettime cuda libm libdrm libmfx opencl user32 vaapi videotoolbox corefoundation corevideo coremedia wincrypt"
+avutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi videotoolbox corefoundation corevideo coremedia wincrypt"
postproc_deps="avutil gpl"
postproc_suggest="libm"
swresample_deps="avutil"
@@ -3523,22 +3545,27 @@ find_things(){
sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
}
-ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
-DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
-PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
-MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
-DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
-OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
-INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
find_things_extern(){
thing=$1
pattern=$2
file=$source_path/$3
- sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
+ out=${4:-$thing}
+ sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$out/p" "$file"
}
+OUTDEV_LIST=$(find_things_extern muxer AVOutputFormat libavdevice/alldevices.c outdev)
+INDEV_LIST=$(find_things_extern demuxer AVInputFormat libavdevice/alldevices.c indev)
+MUXER_LIST=$(find_things_extern muxer AVOutputFormat libavformat/allformats.c)
+DEMUXER_LIST=$(find_things_extern demuxer AVInputFormat libavformat/allformats.c)
+ENCODER_LIST=$(find_things_extern encoder AVCodec libavcodec/allcodecs.c)
+DECODER_LIST=$(find_things_extern decoder AVCodec libavcodec/allcodecs.c)
+CODEC_LIST="
+ $ENCODER_LIST
+ $DECODER_LIST
+"
+PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parser.c)
BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)
PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
@@ -3780,6 +3807,18 @@ map "die_license_disabled nonfree" $HWACCEL_LIBRARY_NONFREE_LIST
enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
+if enabled nonfree; then
+ license="nonfree and unredistributable"
+elif enabled gplv3; then
+ license="GPL version 3 or later"
+elif enabled lgplv3; then
+ license="LGPL version 3 or later"
+elif enabled gpl; then
+ license="GPL version 2 or later"
+else
+ license="LGPL version 2.1 or later"
+fi
+
enabled_all gnutls openssl &&
die "GnuTLS and OpenSSL must not be enabled at the same time."
@@ -4289,7 +4328,7 @@ probe_cc(){
_ld_path='-libpath:'
elif $_cc -nologo- 2>&1 | grep -q Microsoft; then
_type=msvc
- _ident=$($_cc 2>&1 | head -n1)
+ _ident=$($_cc 2>&1 | head -n1 | tr -d '\r')
_DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
_DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
_cflags_speed="-O2"
@@ -4837,7 +4876,7 @@ check_host_cflags $host_cflags_speed
check_64bit(){
arch32=$1
arch64=$2
- expr=$3
+ expr=${3:-'sizeof(void *) > 4'}
check_code cc "" "int test[2*($expr) - 1]" &&
subarch=$arch64 || subarch=$arch32
enable $subarch
@@ -4852,23 +4891,23 @@ case "$arch" in
enabled shared && enable_weak pic
;;
parisc)
- check_64bit parisc parisc64 'sizeof(void *) > 4'
+ check_64bit parisc parisc64
enabled shared && enable_weak pic
;;
ppc)
- check_64bit ppc ppc64 'sizeof(void *) > 4'
+ check_64bit ppc ppc64
enabled shared && enable_weak pic
;;
s390)
- check_64bit s390 s390x 'sizeof(void *) > 4'
+ check_64bit s390 s390x
enabled shared && enable_weak pic
;;
sparc)
- check_64bit sparc sparc64 'sizeof(void *) > 4'
+ check_64bit sparc sparc64
enabled shared && enable_weak pic
;;
x86)
- check_64bit x86_32 x86_64 'sizeof(void *) > 4'
+ check_64bit x86_32 x86_64
# Treat x32 as x64 for now. Note it also needs pic if shared
test "$subarch" = "x86_32" && check_cpp_condition stddef.h 'defined(__x86_64__)' &&
subarch=x86_64 && enable x86_64 && disable x86_32
@@ -4967,6 +5006,14 @@ case $target_os in
;;
mingw32*|mingw64*)
target_os=mingw32
+ LIBTARGET=i386
+ if enabled x86_64; then
+ LIBTARGET="i386:x86-64"
+ elif enabled arm; then
+ LIBTARGET="arm"
+ elif enabled aarch64; then
+ LIBTARGET="arm64"
+ fi
if enabled shared; then
# Cannot build both shared and static libs when using dllimport.
disable static
@@ -4978,7 +5025,14 @@ case $target_os in
SLIBSUF=".dll"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
- SLIB_EXTRA_CMD='cp $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
+ if check_cmd lib.exe -list; then
+ SLIB_EXTRA_CMD=-'lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
+ if enabled x86_64; then
+ LIBTARGET=x64
+ fi
+ else
+ SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
+ fi
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS=
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
@@ -4986,6 +5040,7 @@ case $target_os in
SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" AR="$(AR_CMD)" NM="$(NM_CMD)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--disable-auto-image-base $$(@:$(SLIBSUF)=.def)'
enabled x86_64 && objformat="win64" || objformat="win32"
+ dlltool="${cross_prefix}dlltool"
ranlib=:
enable dos_paths
check_ldflags -Wl,--nxcompat,--dynamicbase
@@ -5285,9 +5340,8 @@ extern_prefix=${sym%%ff_extern*}
! disabled inline_asm && check_inline_asm inline_asm '"" ::'
-_restrict=
-for restrict_keyword in restrict __restrict__ __restrict; do
- check_cc <<EOF && _restrict=$restrict_keyword && break
+for restrict_keyword in restrict __restrict__ __restrict ""; do
+ check_cc <<EOF && break
void foo(char * $restrict_keyword p);
EOF
done
@@ -5719,6 +5773,10 @@ check_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32
check_lib wincrypt "windows.h wincrypt.h" CryptGenRandom -ladvapi32
check_lib psapi "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
+check_lib android android/native_window.h ANativeWindow_acquire -landroid
+check_lib mediandk "stdint.h media/NdkImage.h" AImage_delete -lmediandk
+check_lib camera2ndk "stdbool.h stdint.h camera/NdkCameraManager.h" ACameraManager_create -lcamera2ndk
+
enabled appkit && check_apple_framework AppKit
enabled audiotoolbox && check_apple_framework AudioToolbox
enabled avfoundation && check_apple_framework AVFoundation
@@ -5760,6 +5818,11 @@ check_type "va/va.h va/va_enc_vp9.h" "VAEncPictureParameterBufferVP9"
check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
+if ! disabled ffnvcodec; then
+ check_pkg_config ffnvcodec "ffnvcodec >= 8.0.14.1" \
+ "ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" ""
+fi
+
check_cpp_condition windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" && enable winrt || disable winrt
if ! disabled w32threads && ! enabled pthreads; then
@@ -5844,6 +5907,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
{ check_lib libcelt celt/celt.h celt_decoder_create_custom -lcelt0 ||
die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
enabled libcaca && require_pkg_config libcaca caca caca.h caca_create_canvas
+enabled libcodec2 && require libcodec2 codec2/codec2.h codec2_create -lcodec2
enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new
enabled libdrm && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion
enabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
@@ -6203,16 +6267,18 @@ if enabled x86; then
mingw32*|mingw64*|win32|win64|linux|cygwin*)
;;
*)
- disable cuda cuvid nvdec nvenc
+ disable ffnvcodec cuvid nvdec nvenc
;;
esac
else
- disable cuda cuvid nvdec nvenc
+ disable ffnvcodec cuvid nvdec nvenc
fi
+enabled ffnvcodec && enable cuda
+
enabled nvenc &&
check_cc -I$source_path <<EOF || disable nvenc
-#include "compat/nvenc/nvEncodeAPI.h"
+#include <ffnvcodec/nvEncodeAPI.h>
NV_ENCODE_API_FUNCTION_LIST flist;
void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; }
int main(void) { return 0; }
@@ -6474,9 +6540,9 @@ elif enabled_any msvc icl; then
# MSVC 2013 and newer can handle it fine.
# If this declspec fails, force including stdlib.h before the restrict redefinition
# happens in config.h.
- if [ $_restrict != restrict ]; then
+ if [ $restrict_keyword != restrict ]; then
check_cc <<EOF || add_cflags -FIstdlib.h
-__declspec($_restrict) void* foo(int);
+__declspec($restrict_keyword) void *foo(int);
EOF
fi
# the new SSA optimzer in VS2015 U3 is mis-optimizing some parts of the code
@@ -6657,17 +6723,6 @@ postproc_deps="$(filter_out 'gpl' $postproc_deps)"
map 'expand_deps $v' $LIBRARY_LIST
-license="LGPL version 2.1 or later"
-if enabled nonfree; then
- license="nonfree and unredistributable"
-elif enabled gplv3; then
- license="GPL version 3 or later"
-elif enabled lgplv3; then
- license="LGPL version 3 or later"
-elif enabled gpl; then
- license="GPL version 2 or later"
-fi
-
if test "$quiet" != "yes"; then
echo "install prefix $prefix"
@@ -6877,6 +6932,7 @@ LD_O=$LD_O
X86ASM_O=$X86ASM_O
LD_LIB=$LD_LIB
LD_PATH=$LD_PATH
+DLLTOOL=$dlltool
WINDRES=$windres
DEPWINDRES=$dep_cc
DOXYGEN=$doxygen
@@ -6930,6 +6986,7 @@ LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
EXTRALIBS=$extralibs
COMPAT_OBJS=$compat_objs
INSTALL=$install
+LIBTARGET=${LIBTARGET}
SLIBNAME=${SLIBNAME}
SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
@@ -6962,7 +7019,7 @@ cat > $TMPH <<EOF
#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
#define AVCONV_DATADIR "$(eval c_escape $datadir)"
#define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
-#define av_restrict $_restrict
+#define av_restrict $restrict_keyword
#define EXTERN_PREFIX "${extern_prefix}"
#define EXTERN_ASM ${extern_prefix}
#define BUILDSUF "$build_suffix"
@@ -7027,13 +7084,29 @@ print_enabled_components(){
shift 3
echo "static const $struct_name * const $name[] = {" > $TMPH
for c in $*; do
- enabled $c && printf " &ff_%s,\n" $c >> $TMPH
+ if enabled $c; then
+ case $name in
+ indev_list)
+ c=$(add_suffix _demuxer $(remove_suffix _indev $c))
+ ;;
+ outdev_list)
+ c=$(add_suffix _muxer $(remove_suffix _outdev $c))
+ ;;
+ esac
+ printf " &ff_%s,\n" $c >> $TMPH
+ fi
done
echo " NULL };" >> $TMPH
cp_if_changed $TMPH $file
}
+print_enabled_components libavcodec/codec_list.c AVCodec codec_list $CODEC_LIST
+print_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST
print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
+print_enabled_components libavdevice/indev_list.c AVInputFormat indev_list $INDEV_LIST
+print_enabled_components libavdevice/outdev_list.c AVOutputFormat outdev_list $OUTDEV_LIST
+print_enabled_components libavformat/demuxer_list.c AVInputFormat demuxer_list $DEMUXER_LIST
+print_enabled_components libavformat/muxer_list.c AVOutputFormat muxer_list $MUXER_LIST
print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
# Settings for pkg-config files
diff --git a/chromium/third_party/ffmpeg/doc/APIchanges b/chromium/third_party/ffmpeg/doc/APIchanges
index 76993658794..395ac902dd6 100644
--- a/chromium/third_party/ffmpeg/doc/APIchanges
+++ b/chromium/third_party/ffmpeg/doc/APIchanges
@@ -15,6 +15,62 @@ libavutil: 2017-10-21
API changes, most recent first:
+2018-03-07 - xxxxxxx - lavu 56.9.100 - crc.h
+ Add AV_CRC_8_EBU crc variant.
+
+2018-03-xx - xxxxxxx - lavc 58.14.100 - mediacodec.h
+ Change the default behavior of avcodec_flush() on mediacodec
+ video decoders. To restore the previous behavior, use the new
+ delay_flush=1 option.
+
+2018-03-xx - xxxxxxx - lavu 56.8.100 - frame.h
+ Add av_frame_new_side_data_from_buf().
+
+2018-02-xx - xxxxxxx
+ Change av_ripemd_update(), av_murmur3_update() and av_hash_update() length
+ parameter type to size_t at next major bump.
+
+2018-02-xx - xxxxxxx - lavfi 7.12.100 - avfilter.h
+ Add AVFilterContext.extra_hw_frames.
+
+2018-02-xx - xxxxxxx - lavc 58.11.100 - avcodec.h
+ Add AVCodecContext.extra_hw_frames.
+
+2018-02-06 - 0fd475704e - lavd 58.1.100 - avdevice.h
+ Deprecate use of av_input_audio_device_next(), av_input_video_device_next(),
+ av_output_audio_device_next(), av_output_video_device_next().
+ Add av_indev_iterate(), and av_outdev_iterate().
+
+2018-xx-xx - xxxxxxx - lavf 58.9.100 - avformat.h
+ Deprecate use of av_register_input_format(), av_register_output_format(),
+ av_register_all(), av_iformat_next(), av_oformat_next().
+ Add av_demuxer_iterate(), and av_muxer_iterate().
+
+2018-xx-xx - xxxxxxx - lavc 58.10.100 - avcodec.h
+ Deprecate use of avcodec_register(), avcodec_register_all(),
+ av_codec_next(), av_register_codec_parser(), and av_parser_next().
+ Add av_codec_iterate() and av_parser_iterate().
+
+2018-02-xx - xxxxxxx - lavf 58.8.100 - avformat.h
+ Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
+ options. Introduce "listen_timeout" as replacement for the current "timeout"
+ option, and "user_agent" as replacement for "user-agent". Once the deprecation
+ is over, the old "timeout" option will be removed, and "stimeout" will be
+ renamed to "stimeout" (the "timeout" option will essentially change semantics).
+
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Deprecate AVFormatContext filename field which had limited length, use the
+ new dynamically allocated url field instead.
+
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Add url field to AVFormatContext and add ff_format_set_url helper function.
+
+2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
+ Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).
+
+2018-xx-xx - xxxxxxx - lavu 56.9.100 - aes_ctr.h
+ Add method to set the 16-byte IV.
+
2018-01-xx - xxxxxxx - lavf 58.5.100 - avformat.h
Explicitly make avformat_network_init() and avformat_network_deinit() optional.
If these are not called, network initialization and deinitialization is
@@ -69,14 +125,14 @@ API changes, most recent first:
2017-11-xx - xxxxxxx - lavc 58.4.100 - avcodec.h
Add AVCodecHWConfig and avcodec_get_hw_config().
-2017-11-22 - 3650cb2dfa - lavu 55.3.100 - opencl.h
+2017-11-22 - 3650cb2dfa - lavu 56.3.100 - opencl.h
Remove experimental OpenCL API (av_opencl_*).
-2017-11-22 - b25d8ef0a7 - lavu 55.2.100 - hwcontext.h hwcontext_opencl.h
+2017-11-22 - b25d8ef0a7 - lavu 56.2.100 - hwcontext.h hwcontext_opencl.h
Add AV_HWDEVICE_TYPE_OPENCL and a new installed header with
OpenCL-specific hwcontext definitions.
-2017-11-22 - a050f56c09 - lavu 55.1.100 - pixfmt.h
+2017-11-22 - a050f56c09 - lavu 56.1.100 - pixfmt.h
Add AV_PIX_FMT_OPENCL.
2017-11-11 - 48e4eda11d - lavc 58.3.100 - avcodec.h
diff --git a/chromium/third_party/ffmpeg/doc/bitstream_filters.texi b/chromium/third_party/ffmpeg/doc/bitstream_filters.texi
index 5efb8e0ee88..b7ea5493222 100644
--- a/chromium/third_party/ffmpeg/doc/bitstream_filters.texi
+++ b/chromium/third_party/ffmpeg/doc/bitstream_filters.texi
@@ -50,21 +50,22 @@ DTS-HD.
Add extradata to the beginning of the filtered packets.
+@table @option
+@item freq
The additional argument specifies which packets should be filtered.
It accepts the values:
@table @samp
-@item a
-add extradata to all key packets, but only if @var{local_header} is
-set in the @option{flags2} codec context field
-
@item k
+@item keyframe
add extradata to all key packets
@item e
+@item all
add extradata to all packets
@end table
+@end table
-If not specified it is assumed @samp{k}.
+If not specified it is assumed @samp{e}.
For example the following @command{ffmpeg} command forces a global
header (thus disabling individual packet headers) in the H.264 packets
@@ -153,6 +154,9 @@ possibly separated by hyphens, and the string can be anything.
For example, @samp{086f3693-b7b3-4f2c-9653-21492feee5b8+hello} will
insert the string ``hello'' associated with the given UUID.
+@item delete_filler
+Deletes both filler NAL units and filler SEI messages.
+
@end table
@section h264_mp4toannexb
diff --git a/chromium/third_party/ffmpeg/doc/codecs.texi b/chromium/third_party/ffmpeg/doc/codecs.texi
index 7e203743340..c9b9a1136dc 100644
--- a/chromium/third_party/ffmpeg/doc/codecs.texi
+++ b/chromium/third_party/ffmpeg/doc/codecs.texi
@@ -467,8 +467,6 @@ rate control
macroblock (MB) type
@item qp
per-block quantization parameter (QP)
-@item mv
-motion vector
@item dct_coeff
@item green_metadata
@@ -478,18 +476,12 @@ display complexity metadata for the upcoming frame, GoP or for a given duration.
@item startcode
-@item pts
-
@item er
error recognition
@item mmco
memory management control operations (H.264)
@item bugs
-@item vis_qp
-visualize quantization parameter (QP), lower QP are tinted greener
-@item vis_mb_type
-visualize block types
@item buffers
picture buffer allocations
@item thread_ops
diff --git a/chromium/third_party/ffmpeg/doc/encoders.texi b/chromium/third_party/ffmpeg/doc/encoders.texi
index 6a410a8cb64..f25d47e2720 100644
--- a/chromium/third_party/ffmpeg/doc/encoders.texi
+++ b/chromium/third_party/ffmpeg/doc/encoders.texi
@@ -981,6 +981,11 @@ Other values include 0 for mono and stereo, 1 for surround sound with masking
and LFE bandwidth optimizations, and 255 for independent streams with an
unspecified channel layout.
+@item apply_phase_inv (N.A.) (requires libopus >= 1.2)
+If set to 0, disables the use of phase inversion for intensity stereo,
+improving the quality of mono downmixes, but slightly reducing normal stereo
+quality. The default is 1 (phase inversion enabled).
+
@end table
@anchor{libshine}
@@ -2354,6 +2359,11 @@ Never write it.
@itemx always
Always write it.
@end table
+@item video_format @var{integer}
+Specifies the video_format written into the sequence display extension
+indicating the source of the video pictures. The default is @samp{unspecified},
+can be @samp{component}, @samp{pal}, @samp{ntsc}, @samp{secam} or @samp{mac}.
+For maximum compatibility, use @samp{component}.
@end table
@section png
diff --git a/chromium/third_party/ffmpeg/doc/examples/Makefile b/chromium/third_party/ffmpeg/doc/examples/Makefile
index da5af36532b..928ff306b35 100644
--- a/chromium/third_party/ffmpeg/doc/examples/Makefile
+++ b/chromium/third_party/ffmpeg/doc/examples/Makefile
@@ -20,6 +20,7 @@ EXAMPLES-$(CONFIG_SCALING_VIDEO_EXAMPLE) += scaling_video
EXAMPLES-$(CONFIG_TRANSCODE_AAC_EXAMPLE) += transcode_aac
EXAMPLES-$(CONFIG_TRANSCODING_EXAMPLE) += transcoding
EXAMPLES-$(CONFIG_VAAPI_ENCODE_EXAMPLE) += vaapi_encode
+EXAMPLES-$(CONFIG_VAAPI_TRANSCODE_EXAMPLE) += vaapi_transcode
EXAMPLES := $(EXAMPLES-yes:%=doc/examples/%$(PROGSSUF)$(EXESUF))
EXAMPLES_G := $(EXAMPLES-yes:%=doc/examples/%$(PROGSSUF)_g$(EXESUF))
diff --git a/chromium/third_party/ffmpeg/doc/examples/avio_dir_cmd.c b/chromium/third_party/ffmpeg/doc/examples/avio_dir_cmd.c
index 50c435cf8f8..0722bd9ab15 100644
--- a/chromium/third_party/ffmpeg/doc/examples/avio_dir_cmd.c
+++ b/chromium/third_party/ffmpeg/doc/examples/avio_dir_cmd.c
@@ -143,8 +143,6 @@ int main(int argc, char *argv[])
return 1;
}
- /* register codecs and formats and other lavf/lavc components*/
- av_register_all();
avformat_network_init();
op = argv[1];
diff --git a/chromium/third_party/ffmpeg/doc/examples/avio_reading.c b/chromium/third_party/ffmpeg/doc/examples/avio_reading.c
index 7860fd5e2fd..cbfeb174b8c 100644
--- a/chromium/third_party/ffmpeg/doc/examples/avio_reading.c
+++ b/chromium/third_party/ffmpeg/doc/examples/avio_reading.c
@@ -74,9 +74,6 @@ int main(int argc, char *argv[])
}
input_filename = argv[1];
- /* register codecs and formats and other lavf/lavc components*/
- av_register_all();
-
/* slurp file content into buffer */
ret = av_file_map(input_filename, &buffer, &buffer_size, 0, NULL);
if (ret < 0)
diff --git a/chromium/third_party/ffmpeg/doc/examples/decode_audio.c b/chromium/third_party/ffmpeg/doc/examples/decode_audio.c
index fb9a9af2f60..19dcafd2c82 100644
--- a/chromium/third_party/ffmpeg/doc/examples/decode_audio.c
+++ b/chromium/third_party/ffmpeg/doc/examples/decode_audio.c
@@ -94,9 +94,6 @@ int main(int argc, char **argv)
filename = argv[1];
outfilename = argv[2];
- /* register all the codecs */
- avcodec_register_all();
-
pkt = av_packet_alloc();
/* find the MPEG audio decoder */
diff --git a/chromium/third_party/ffmpeg/doc/examples/decode_video.c b/chromium/third_party/ffmpeg/doc/examples/decode_video.c
index 4377fd49e0d..5a9d43f6897 100644
--- a/chromium/third_party/ffmpeg/doc/examples/decode_video.c
+++ b/chromium/third_party/ffmpeg/doc/examples/decode_video.c
@@ -101,8 +101,6 @@ int main(int argc, char **argv)
filename = argv[1];
outfilename = argv[2];
- avcodec_register_all();
-
pkt = av_packet_alloc();
if (!pkt)
exit(1);
diff --git a/chromium/third_party/ffmpeg/doc/examples/demuxing_decoding.c b/chromium/third_party/ffmpeg/doc/examples/demuxing_decoding.c
index b1a216abb4c..69a31a89351 100644
--- a/chromium/third_party/ffmpeg/doc/examples/demuxing_decoding.c
+++ b/chromium/third_party/ffmpeg/doc/examples/demuxing_decoding.c
@@ -252,9 +252,6 @@ int main (int argc, char **argv)
video_dst_filename = argv[2];
audio_dst_filename = argv[3];
- /* register all formats and codecs */
- av_register_all();
-
/* open input file, and allocate format context */
if (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) {
fprintf(stderr, "Could not open source file %s\n", src_filename);
diff --git a/chromium/third_party/ffmpeg/doc/examples/encode_audio.c b/chromium/third_party/ffmpeg/doc/examples/encode_audio.c
index d1ef105d9da..ab3586be7fd 100644
--- a/chromium/third_party/ffmpeg/doc/examples/encode_audio.c
+++ b/chromium/third_party/ffmpeg/doc/examples/encode_audio.c
@@ -138,9 +138,6 @@ int main(int argc, char **argv)
}
filename = argv[1];
- /* register all the codecs */
- avcodec_register_all();
-
/* find the MP2 encoder */
codec = avcodec_find_encoder(AV_CODEC_ID_MP2);
if (!codec) {
diff --git a/chromium/third_party/ffmpeg/doc/examples/encode_video.c b/chromium/third_party/ffmpeg/doc/examples/encode_video.c
index 8cd13219bb5..6731b2ad19b 100644
--- a/chromium/third_party/ffmpeg/doc/examples/encode_video.c
+++ b/chromium/third_party/ffmpeg/doc/examples/encode_video.c
@@ -84,8 +84,6 @@ int main(int argc, char **argv)
filename = argv[1];
codec_name = argv[2];
- avcodec_register_all();
-
/* find the mpeg1video encoder */
codec = avcodec_find_encoder_by_name(codec_name);
if (!codec) {
diff --git a/chromium/third_party/ffmpeg/doc/examples/extract_mvs.c b/chromium/third_party/ffmpeg/doc/examples/extract_mvs.c
index 7ae934ead3d..de31ccd2b98 100644
--- a/chromium/third_party/ffmpeg/doc/examples/extract_mvs.c
+++ b/chromium/third_party/ffmpeg/doc/examples/extract_mvs.c
@@ -129,8 +129,6 @@ int main(int argc, char **argv)
}
src_filename = argv[1];
- av_register_all();
-
if (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) {
fprintf(stderr, "Could not open source file %s\n", src_filename);
exit(1);
diff --git a/chromium/third_party/ffmpeg/doc/examples/filtering_audio.c b/chromium/third_party/ffmpeg/doc/examples/filtering_audio.c
index 18d6ca275c5..73a00e814c1 100644
--- a/chromium/third_party/ffmpeg/doc/examples/filtering_audio.c
+++ b/chromium/third_party/ffmpeg/doc/examples/filtering_audio.c
@@ -228,7 +228,6 @@ int main(int argc, char **argv)
exit(1);
}
- av_register_all();
avfilter_register_all();
if ((ret = open_input_file(argv[1])) < 0)
diff --git a/chromium/third_party/ffmpeg/doc/examples/filtering_video.c b/chromium/third_party/ffmpeg/doc/examples/filtering_video.c
index 9b607ba016f..01d6644620b 100644
--- a/chromium/third_party/ffmpeg/doc/examples/filtering_video.c
+++ b/chromium/third_party/ffmpeg/doc/examples/filtering_video.c
@@ -222,7 +222,6 @@ int main(int argc, char **argv)
exit(1);
}
- av_register_all();
avfilter_register_all();
if ((ret = open_input_file(argv[1])) < 0)
diff --git a/chromium/third_party/ffmpeg/doc/examples/http_multiclient.c b/chromium/third_party/ffmpeg/doc/examples/http_multiclient.c
index e2c2201a08f..831e89c60a4 100644
--- a/chromium/third_party/ffmpeg/doc/examples/http_multiclient.c
+++ b/chromium/third_party/ffmpeg/doc/examples/http_multiclient.c
@@ -114,7 +114,6 @@ int main(int argc, char **argv)
in_uri = argv[1];
out_uri = argv[2];
- av_register_all();
avformat_network_init();
if ((ret = av_dict_set(&options, "listen", "2", 0)) < 0) {
diff --git a/chromium/third_party/ffmpeg/doc/examples/hw_decode.c b/chromium/third_party/ffmpeg/doc/examples/hw_decode.c
index 83a5808bf7f..14fe08b374f 100644
--- a/chromium/third_party/ffmpeg/doc/examples/hw_decode.c
+++ b/chromium/third_party/ffmpeg/doc/examples/hw_decode.c
@@ -163,8 +163,6 @@ int main(int argc, char *argv[])
return -1;
}
- av_register_all();
-
type = av_hwdevice_find_type_by_name(argv[1]);
if (type == AV_HWDEVICE_TYPE_NONE) {
fprintf(stderr, "Device type %s is not supported.\n", argv[1]);
diff --git a/chromium/third_party/ffmpeg/doc/examples/metadata.c b/chromium/third_party/ffmpeg/doc/examples/metadata.c
index f73c2673692..e330d077a93 100644
--- a/chromium/third_party/ffmpeg/doc/examples/metadata.c
+++ b/chromium/third_party/ffmpeg/doc/examples/metadata.c
@@ -44,7 +44,6 @@ int main (int argc, char **argv)
return 1;
}
- av_register_all();
if ((ret = avformat_open_input(&fmt_ctx, argv[1], NULL, NULL)))
return ret;
diff --git a/chromium/third_party/ffmpeg/doc/examples/muxing.c b/chromium/third_party/ffmpeg/doc/examples/muxing.c
index 6b98a3b2a0a..08da98e574a 100644
--- a/chromium/third_party/ffmpeg/doc/examples/muxing.c
+++ b/chromium/third_party/ffmpeg/doc/examples/muxing.c
@@ -564,9 +564,6 @@ int main(int argc, char **argv)
AVDictionary *opt = NULL;
int i;
- /* Initialize libavcodec, and register all codecs and formats. */
- av_register_all();
-
if (argc < 2) {
printf("usage: %s output_file\n"
"API example program to output a media file with libavformat.\n"
diff --git a/chromium/third_party/ffmpeg/doc/examples/qsvdec.c b/chromium/third_party/ffmpeg/doc/examples/qsvdec.c
index cede6153bed..7415eefca5b 100644
--- a/chromium/third_party/ffmpeg/doc/examples/qsvdec.c
+++ b/chromium/third_party/ffmpeg/doc/examples/qsvdec.c
@@ -150,8 +150,6 @@ int main(int argc, char **argv)
int ret, i;
- av_register_all();
-
if (argc < 3) {
fprintf(stderr, "Usage: %s <input file> <output file>\n", argv[0]);
return 1;
diff --git a/chromium/third_party/ffmpeg/doc/examples/remuxing.c b/chromium/third_party/ffmpeg/doc/examples/remuxing.c
index 59594181a70..9e4d1031b4a 100644
--- a/chromium/third_party/ffmpeg/doc/examples/remuxing.c
+++ b/chromium/third_party/ffmpeg/doc/examples/remuxing.c
@@ -65,8 +65,6 @@ int main(int argc, char **argv)
in_filename = argv[1];
out_filename = argv[2];
- av_register_all();
-
if ((ret = avformat_open_input(&ifmt_ctx, in_filename, 0, 0)) < 0) {
fprintf(stderr, "Could not open input file '%s'", in_filename);
goto end;
diff --git a/chromium/third_party/ffmpeg/doc/examples/transcode_aac.c b/chromium/third_party/ffmpeg/doc/examples/transcode_aac.c
index 9fd5c00d605..b19349573ac 100644
--- a/chromium/third_party/ffmpeg/doc/examples/transcode_aac.c
+++ b/chromium/third_party/ffmpeg/doc/examples/transcode_aac.c
@@ -171,8 +171,11 @@ static int open_output_file(const char *filename,
goto cleanup;
}
- av_strlcpy((*output_format_context)->filename, filename,
- sizeof((*output_format_context)->filename));
+ if (!((*output_format_context)->url = av_strdup(filename))) {
+ fprintf(stderr, "Could not allocate url.\n");
+ error = AVERROR(ENOMEM);
+ goto cleanup;
+ }
/* Find the encoder to be used by its name. */
if (!(output_codec = avcodec_find_encoder(AV_CODEC_ID_AAC))) {
@@ -750,8 +753,6 @@ int main(int argc, char **argv)
exit(1);
}
- /* Register all codecs and formats so that they can be used. */
- av_register_all();
/* Open the input file for reading. */
if (open_input_file(argv[1], &input_format_context,
&input_codec_context))
diff --git a/chromium/third_party/ffmpeg/doc/examples/transcoding.c b/chromium/third_party/ffmpeg/doc/examples/transcoding.c
index e32ab202453..ed1fd6411bf 100644
--- a/chromium/third_party/ffmpeg/doc/examples/transcoding.c
+++ b/chromium/third_party/ffmpeg/doc/examples/transcoding.c
@@ -517,7 +517,6 @@ int main(int argc, char **argv)
return 1;
}
- av_register_all();
avfilter_register_all();
if ((ret = open_input_file(argv[1])) < 0)
diff --git a/chromium/third_party/ffmpeg/doc/examples/vaapi_encode.c b/chromium/third_party/ffmpeg/doc/examples/vaapi_encode.c
index 6425b1c98c3..3bdc62bef37 100644
--- a/chromium/third_party/ffmpeg/doc/examples/vaapi_encode.c
+++ b/chromium/third_party/ffmpeg/doc/examples/vaapi_encode.c
@@ -125,8 +125,6 @@ int main(int argc, char *argv[])
goto close;
}
- avcodec_register_all();
-
err = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_VAAPI,
NULL, NULL, 0);
if (err < 0) {
diff --git a/chromium/third_party/ffmpeg/doc/examples/vaapi_transcode.c b/chromium/third_party/ffmpeg/doc/examples/vaapi_transcode.c
new file mode 100644
index 00000000000..649f48b97c3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/doc/examples/vaapi_transcode.c
@@ -0,0 +1,304 @@
+/*
+ * Video Acceleration API (video transcoding) transcode sample
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * Intel VAAPI-accelerated transcoding example.
+ *
+ * @example vaapi_transcode.c
+ * This example shows how to do VAAPI-accelerated transcoding.
+ * Usage: vaapi_transcode input_stream codec output_stream
+ * e.g: - vaapi_transcode input.mp4 h264_vaapi output_h264.mp4
+ * - vaapi_transcode input.mp4 vp9_vaapi output_vp9.ivf
+ */
+
+#include <stdio.h>
+#include <errno.h>
+
+#include <libavutil/hwcontext.h>
+#include <libavcodec/avcodec.h>
+#include <libavformat/avformat.h>
+
+static AVFormatContext *ifmt_ctx = NULL, *ofmt_ctx = NULL;
+static AVBufferRef *hw_device_ctx = NULL;
+static AVCodecContext *decoder_ctx = NULL, *encoder_ctx = NULL;
+static int video_stream = -1;
+static AVStream *ost;
+static int initialized = 0;
+
+static enum AVPixelFormat get_vaapi_format(AVCodecContext *ctx,
+ const enum AVPixelFormat *pix_fmts)
+{
+ const enum AVPixelFormat *p;
+
+ for (p = pix_fmts; *p != AV_PIX_FMT_NONE; p++) {
+ if (*p == AV_PIX_FMT_VAAPI)
+ return *p;
+ }
+
+ fprintf(stderr, "Unable to decode this file using VA-API.\n");
+ return AV_PIX_FMT_NONE;
+}
+
+static int open_input_file(const char *filename)
+{
+ int ret;
+ AVCodec *decoder = NULL;
+ AVStream *video = NULL;
+
+ if ((ret = avformat_open_input(&ifmt_ctx, filename, NULL, NULL)) < 0) {
+ fprintf(stderr, "Cannot open input file '%s', Error code: %s\n",
+ filename, av_err2str(ret));
+ return ret;
+ }
+
+ if ((ret = avformat_find_stream_info(ifmt_ctx, NULL)) < 0) {
+ fprintf(stderr, "Cannot find input stream information. Error code: %s\n",
+ av_err2str(ret));
+ return ret;
+ }
+
+ ret = av_find_best_stream(ifmt_ctx, AVMEDIA_TYPE_VIDEO, -1, -1, &decoder, 0);
+ if (ret < 0) {
+ fprintf(stderr, "Cannot find a video stream in the input file. "
+ "Error code: %s\n", av_err2str(ret));
+ return ret;
+ }
+ video_stream = ret;
+
+ if (!(decoder_ctx = avcodec_alloc_context3(decoder)))
+ return AVERROR(ENOMEM);
+
+ video = ifmt_ctx->streams[video_stream];
+ if ((ret = avcodec_parameters_to_context(decoder_ctx, video->codecpar)) < 0) {
+ fprintf(stderr, "avcodec_parameters_to_context error. Error code: %s\n",
+ av_err2str(ret));
+ return ret;
+ }
+
+ decoder_ctx->hw_device_ctx = av_buffer_ref(hw_device_ctx);
+ if (!decoder_ctx->hw_device_ctx) {
+ fprintf(stderr, "A hardware device reference create failed.\n");
+ return AVERROR(ENOMEM);
+ }
+ decoder_ctx->get_format = get_vaapi_format;
+
+ if ((ret = avcodec_open2(decoder_ctx, decoder, NULL)) < 0)
+ fprintf(stderr, "Failed to open codec for decoding. Error code: %s\n",
+ av_err2str(ret));
+
+ return ret;
+}
+
+static int encode_write(AVFrame *frame)
+{
+ int ret = 0;
+ AVPacket enc_pkt;
+
+ av_init_packet(&enc_pkt);
+ enc_pkt.data = NULL;
+ enc_pkt.size = 0;
+
+ if ((ret = avcodec_send_frame(encoder_ctx, frame)) < 0) {
+ fprintf(stderr, "Error during encoding. Error code: %s\n", av_err2str(ret));
+ goto end;
+ }
+ while (1) {
+ ret = avcodec_receive_packet(encoder_ctx, &enc_pkt);
+ if (ret)
+ break;
+
+ enc_pkt.stream_index = 0;
+ av_packet_rescale_ts(&enc_pkt, ifmt_ctx->streams[video_stream]->time_base,
+ ofmt_ctx->streams[0]->time_base);
+ ret = av_interleaved_write_frame(ofmt_ctx, &enc_pkt);
+ if (ret < 0) {
+ fprintf(stderr, "Error during writing data to output file. "
+ "Error code: %s\n", av_err2str(ret));
+ return -1;
+ }
+ }
+
+end:
+ if (ret == AVERROR_EOF)
+ return 0;
+ ret = ((ret == AVERROR(EAGAIN)) ? 0:-1);
+ return ret;
+}
+
+static int dec_enc(AVPacket *pkt, AVCodec *enc_codec)
+{
+ AVFrame *frame;
+ int ret = 0;
+
+ ret = avcodec_send_packet(decoder_ctx, pkt);
+ if (ret < 0) {
+ fprintf(stderr, "Error during decoding. Error code: %s\n", av_err2str(ret));
+ return ret;
+ }
+
+ while (ret >= 0) {
+ if (!(frame = av_frame_alloc()))
+ return AVERROR(ENOMEM);
+
+ ret = avcodec_receive_frame(decoder_ctx, frame);
+ if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
+ av_frame_free(&frame);
+ return 0;
+ } else if (ret < 0) {
+ fprintf(stderr, "Error while decoding. Error code: %s\n", av_err2str(ret));
+ goto fail;
+ }
+
+ if (!initialized) {
+ /* we need to ref hw_frames_ctx of decoder to initialize encoder's codec.
+ Only after we get a decoded frame, can we obtain its hw_frames_ctx */
+ encoder_ctx->hw_frames_ctx = av_buffer_ref(decoder_ctx->hw_frames_ctx);
+ if (!encoder_ctx->hw_frames_ctx) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+ /* set AVCodecContext Parameters for encoder, here we keep them stay
+ * the same as decoder.
+ * xxx: now the the sample can't handle resolution change case.
+ */
+ encoder_ctx->time_base = av_inv_q(decoder_ctx->framerate);
+ encoder_ctx->pix_fmt = AV_PIX_FMT_VAAPI;
+ encoder_ctx->width = decoder_ctx->width;
+ encoder_ctx->height = decoder_ctx->height;
+
+ if ((ret = avcodec_open2(encoder_ctx, enc_codec, NULL)) < 0) {
+ fprintf(stderr, "Failed to open encode codec. Error code: %s\n",
+ av_err2str(ret));
+ goto fail;
+ }
+
+ if (!(ost = avformat_new_stream(ofmt_ctx, enc_codec))) {
+ fprintf(stderr, "Failed to allocate stream for output format.\n");
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+
+ ost->time_base = encoder_ctx->time_base;
+ ret = avcodec_parameters_from_context(ost->codecpar, encoder_ctx);
+ if (ret < 0) {
+ fprintf(stderr, "Failed to copy the stream parameters. "
+ "Error code: %s\n", av_err2str(ret));
+ goto fail;
+ }
+
+ /* write the stream header */
+ if ((ret = avformat_write_header(ofmt_ctx, NULL)) < 0) {
+ fprintf(stderr, "Error while writing stream header. "
+ "Error code: %s\n", av_err2str(ret));
+ goto fail;
+ }
+
+ initialized = 1;
+ }
+
+ if ((ret = encode_write(frame)) < 0)
+ fprintf(stderr, "Error during encoding and writing.\n");
+
+fail:
+ av_frame_free(&frame);
+ if (ret < 0)
+ return ret;
+ }
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ int ret = 0;
+ AVPacket dec_pkt;
+ AVCodec *enc_codec;
+
+ if (argc != 4) {
+ fprintf(stderr, "Usage: %s <input file> <encode codec> <output file>\n"
+ "The output format is guessed according to the file extension.\n"
+ "\n", argv[0]);
+ return -1;
+ }
+
+ ret = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_VAAPI, NULL, NULL, 0);
+ if (ret < 0) {
+ fprintf(stderr, "Failed to create a VAAPI device. Error code: %s\n", av_err2str(ret));
+ return -1;
+ }
+
+ if ((ret = open_input_file(argv[1])) < 0)
+ goto end;
+
+ if (!(enc_codec = avcodec_find_encoder_by_name(argv[2]))) {
+ fprintf(stderr, "Could not find encoder '%s'\n", argv[2]);
+ ret = -1;
+ goto end;
+ }
+
+ if ((ret = (avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, argv[3]))) < 0) {
+ fprintf(stderr, "Failed to deduce output format from file extension. Error code: "
+ "%s\n", av_err2str(ret));
+ goto end;
+ }
+
+ if (!(encoder_ctx = avcodec_alloc_context3(enc_codec))) {
+ ret = AVERROR(ENOMEM);
+ goto end;
+ }
+
+ ret = avio_open(&ofmt_ctx->pb, argv[3], AVIO_FLAG_WRITE);
+ if (ret < 0) {
+ fprintf(stderr, "Cannot open output file. "
+ "Error code: %s\n", av_err2str(ret));
+ goto end;
+ }
+
+ /* read all packets and only transcoding video */
+ while (ret >= 0) {
+ if ((ret = av_read_frame(ifmt_ctx, &dec_pkt)) < 0)
+ break;
+
+ if (video_stream == dec_pkt.stream_index)
+ ret = dec_enc(&dec_pkt, enc_codec);
+
+ av_packet_unref(&dec_pkt);
+ }
+
+ /* flush decoder */
+ dec_pkt.data = NULL;
+ dec_pkt.size = 0;
+ ret = dec_enc(&dec_pkt, enc_codec);
+ av_packet_unref(&dec_pkt);
+
+ /* flush encoder */
+ ret = encode_write(NULL);
+
+ /* write the trailer for output stream */
+ av_write_trailer(ofmt_ctx);
+
+end:
+ avformat_close_input(&ifmt_ctx);
+ avformat_close_input(&ofmt_ctx);
+ avcodec_free_context(&decoder_ctx);
+ avcodec_free_context(&encoder_ctx);
+ av_buffer_unref(&hw_device_ctx);
+ return ret;
+}
diff --git a/chromium/third_party/ffmpeg/doc/ffmpeg.texi b/chromium/third_party/ffmpeg/doc/ffmpeg.texi
index 25a0707dc1b..86c6fd864cd 100644
--- a/chromium/third_party/ffmpeg/doc/ffmpeg.texi
+++ b/chromium/third_party/ffmpeg/doc/ffmpeg.texi
@@ -413,6 +413,10 @@ they do not conflict with the standard, as in:
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
@end example
+@item -dn (@emph{output})
+Disable data recording. For full manual control see the @code{-map}
+option.
+
@item -dframes @var{number} (@emph{output})
Set the number of data frames to output. This is an obsolete alias for
@code{-frames:d}, which you should use instead.
@@ -571,7 +575,8 @@ stored at container level, but not the aspect ratio stored in encoded
frames, if it exists.
@item -vn (@emph{output})
-Disable video recording.
+Disable video recording. For full manual control see the @code{-map}
+option.
@item -vcodec @var{codec} (@emph{output})
Set the video codec. This is an alias for @code{-codec:v}.
@@ -886,7 +891,8 @@ default to the number of input audio channels. For input streams
this option only makes sense for audio grabbing devices and raw demuxers
and is mapped to the corresponding demuxer options.
@item -an (@emph{output})
-Disable audio recording.
+Disable audio recording. For full manual control see the @code{-map}
+option.
@item -acodec @var{codec} (@emph{input/output})
Set the audio codec. This is an alias for @code{-codec:a}.
@item -sample_fmt[:@var{stream_specifier}] @var{sample_fmt} (@emph{output,per-stream})
@@ -921,7 +927,8 @@ stereo but not 6 channels as 5.1. The default is to always try to guess. Use
@item -scodec @var{codec} (@emph{input/output})
Set the subtitle codec. This is an alias for @code{-codec:s}.
@item -sn (@emph{output})
-Disable subtitle recording.
+Disable subtitle recording. For full manual control see the @code{-map}
+option.
@item -sbsf @var{bitstream_filter}
Deprecated, see -bsf
@end table
diff --git a/chromium/third_party/ffmpeg/doc/filters.texi b/chromium/third_party/ffmpeg/doc/filters.texi
index bd93e0ab84f..bd43a7ac6e1 100644
--- a/chromium/third_party/ffmpeg/doc/filters.texi
+++ b/chromium/third_party/ffmpeg/doc/filters.texi
@@ -1611,7 +1611,7 @@ The filter accepts the syntax
[@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
expresses a sample rate and @var{resampler_options} is a list of
@var{key}=@var{value} pairs, separated by ":". See the
-@ref{Resampler Options,,the "Resampler Options" section in the
+@ref{Resampler Options,,"Resampler Options" section in the
ffmpeg-resampler(1) manual,ffmpeg-resampler}
for the complete list of supported options.
@@ -2538,6 +2538,21 @@ Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
used to prevent clipping.
@end table
+@section drmeter
+Measure audio dynamic range.
+
+DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
+is found in transition material. And anything less that 8 have very poor dynamics
+and is very compressed.
+
+The filter accepts the following options:
+
+@table @option
+@item length
+Set window length in seconds used to split audio into segments of equal length.
+Default is 3 seconds.
+@end table
+
@section dynaudnorm
Dynamic Audio Normalizer.
@@ -7449,7 +7464,7 @@ the input width and height. It defaults to 0.
@item color, c
Specify the color of the box to write. For the general syntax of this option,
-check the "Color" section in the ffmpeg-utils manual. If the special
+check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
value @code{invert} is used, the box edge color is the same as the
video with inverted luma.
@@ -7552,7 +7567,7 @@ framed. Default to 0.
@item color, c
Specify the color of the grid. For the general syntax of this option,
-check the "Color" section in the ffmpeg-utils manual. If the special
+check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
value @code{invert} is used, the grid color is the same as the
video with inverted luma.
@@ -7648,7 +7663,7 @@ The default value of @var{boxborderw} is 0.
@item boxcolor
The color to be used for drawing box around text. For the syntax of this
-option, check the "Color" section in the ffmpeg-utils manual.
+option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
The default value of @var{boxcolor} is "white".
@@ -7662,7 +7677,7 @@ The default value of @var{borderw} is 0.
@item bordercolor
Set the color to be used for drawing border around text. For the syntax of this
-option, check the "Color" section in the ffmpeg-utils manual.
+option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
The default value of @var{bordercolor} is "black".
@@ -7683,7 +7698,7 @@ If true, check and fix text coords to avoid clipping.
@item fontcolor
The color to be used for drawing fonts. For the syntax of this option, check
-the "Color" section in the ffmpeg-utils manual.
+the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
The default value of @var{fontcolor} is "black".
@@ -7746,7 +7761,8 @@ libfreetype flags.
@item shadowcolor
The color to be used for drawing a shadow behind the drawn text. For the
-syntax of this option, check the "Color" section in the ffmpeg-utils manual.
+syntax of this option, check the @ref{color syntax,,"Color" section in the
+ffmpeg-utils manual,ffmpeg-utils}.
The default value of @var{shadowcolor} is "black".
@@ -9322,8 +9338,9 @@ A '|'-separated list of parameters to pass to the frei0r effect.
A frei0r effect parameter can be a boolean (its value is either
"y" or "n"), a double, a color (specified as
@var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
-numbers between 0.0 and 1.0, inclusive) or by a color description specified in the "Color"
-section in the ffmpeg-utils manual), a position (specified as @var{X}/@var{Y}, where
+numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
+@ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
+a position (specified as @var{X}/@var{Y}, where
@var{X} and @var{Y} are floating point numbers) and/or a string.
The number and types of parameters depend on the loaded effect. If an
@@ -11881,7 +11898,8 @@ so the input image is centered on the padded area.
@item color
Specify the color of the padded area. For the syntax of this option,
-check the "Color" section in the ffmpeg-utils manual.
+check the @ref{color syntax,,"Color" section in the ffmpeg-utils
+manual,ffmpeg-utils}.
The default value of @var{color} is "black".
@@ -13273,8 +13291,9 @@ it. Default value is 1.
@item fillcolor, c
Set the color used to fill the output area not covered by the rotated
-image. For the general syntax of this option, check the "Color" section in the
-ffmpeg-utils manual. If the special value "none" is selected then no
+image. For the general syntax of this option, check the
+@ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
+If the special value "none" is selected then no
background is printed (useful for example if the background is never shown).
Default value is "black".
@@ -13721,6 +13740,19 @@ keeping the same aspect ratio as the input:
@example
scale=w='min(500\, iw*3/2):h=-1'
@end example
+
+@item
+Make pixels square by combining scale and setsar:
+@example
+scale='trunc(ih*dar):ih',setsar=1/1
+@end example
+
+@item
+Make pixels square by combining scale and setsar,
+making sure the resulting resolution is even (required by some codecs):
+@example
+scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
+@end example
@end itemize
@subsection Commands
@@ -15143,8 +15175,8 @@ refer to the pad video filter.
@item color
Specify the color of the unused area. For the syntax of this option, check the
-"Color" section in the ffmpeg-utils manual. The default value of @var{color}
-is "black".
+@ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
+The default value of @var{color} is "black".
@item overlap
Set the number of frames to overlap when tiling several successive frames together.
@@ -17285,8 +17317,8 @@ Set frame rate, expressed as number of frames per second. Default
value is "25".
@item size, s
-Set frame size. For the syntax of this option, check the "Video
-size" section in the ffmpeg-utils manual. Default value is "640x480".
+Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
+size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
@item start_scale
Set the initial scale value. Default value is 3.0.
@@ -17485,8 +17517,8 @@ used to represent a dead cell.
@item mold_color
Set mold color, for definitely dead and moldy cells.
-For the syntax of these 3 color options, check the "Color" section in the
-ffmpeg-utils manual.
+For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
+ffmpeg-utils manual,ffmpeg-utils}.
@end table
@subsection Examples
@@ -17577,8 +17609,8 @@ coded on a @code{1/(N*N)} scale.
@item color, c
Specify the color of the source, only available in the @code{color}
-source. For the syntax of this option, check the "Color" section in the
-ffmpeg-utils manual.
+source. For the syntax of this option, check the
+@ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
@item size, s
Specify the size of the sourced video. For the syntax of this option, check the
@@ -18136,6 +18168,14 @@ do not have exactly the same duration in the first file.
@end itemize
+@subsection Commands
+
+This filter supports the following commands:
+@table @option
+@item next
+Close the current segment and step to the next one
+@end table
+
@section drawgraph, adrawgraph
Draw a graph using input video or audio metadata.
@@ -20275,8 +20315,8 @@ postfix. The default value is "0".
@item streams, s
Specifies the streams to read. Several streams can be specified,
separated by "+". The source will then have as many outputs, in the
-same order. The syntax is explained in the ``Stream specifiers''
-section in the ffmpeg manual. Two special names, "dv" and "da" specify
+same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
+section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
respectively the default (best suited) video and audio stream. Default
is "dv", or "da" if the filter is called as "amovie".
diff --git a/chromium/third_party/ffmpeg/doc/general.texi b/chromium/third_party/ffmpeg/doc/general.texi
index 3b73e31310d..c5d46d34047 100644
--- a/chromium/third_party/ffmpeg/doc/general.texi
+++ b/chromium/third_party/ffmpeg/doc/general.texi
@@ -85,6 +85,24 @@ Go to @url{http://www.twolame.org/} and follow the
instructions for installing the library.
Then pass @code{--enable-libtwolame} to configure to enable it.
+@section libcodec2 / codec2 general
+
+FFmpeg can make use of libcodec2 for codec2 encoding and decoding.
+There is currently no native decoder, so libcodec2 must be used for decoding.
+
+Go to @url{http://freedv.org/}, download "Codec 2 source archive".
+Build and install using CMake. Debian users can install the libcodec2-dev package instead.
+Once libcodec2 is installed you can pass @code{--enable-libcodec2} to configure to enable it.
+
+The easiest way to use codec2 is with .c2 files, since they contain the mode information required for decoding.
+To encode such a file, use a .c2 file extension and give the libcodec2 encoder the -mode option:
+@code{ffmpeg -i input.wav -mode 700C output.c2}.
+Playback is as simple as @code{ffplay output.c2}.
+For a list of supported modes, run @code{ffmpeg -h encoder=libcodec2}.
+Raw codec2 files are also supported.
+To make sense of them the mode in use needs to be specified as a format option:
+@code{ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav}.
+
@section libvpx
FFmpeg can make use of the libvpx library for VP8/VP9 encoding.
@@ -302,6 +320,10 @@ library:
@item BRSTM @tab @tab X
@tab Audio format used on the Nintendo Wii.
@item BWF @tab X @tab X
+@item codec2 (raw) @tab X @tab X
+ @tab Must be given -mode format option to decode correctly.
+@item codec2 (.c2 files) @tab X @tab X
+ @tab Contains header with version and mode info, simplifying playback.
@item CRI ADX @tab X @tab X
@tab Audio-only format used in console video games.
@item Discworld II BMV @tab @tab X
@@ -455,6 +477,7 @@ library:
@item raw AMR-NB @tab @tab X
@item raw AMR-WB @tab @tab X
@item raw aptX @tab X @tab X
+@item raw aptX HD @tab X @tab X
@item raw Chinese AVS video @tab X @tab X
@item raw CRI ADX @tab X @tab X
@item raw Dirac @tab X @tab X
@@ -478,6 +501,7 @@ library:
@item raw NULL @tab X @tab
@item raw video @tab X @tab X
@item raw id RoQ @tab X @tab
+@item raw SBC @tab X @tab X
@item raw Shorten @tab @tab X
@item raw TAK @tab @tab X
@item raw TrueHD @tab X @tab X
@@ -1009,6 +1033,8 @@ following image formats are supported:
@tab QuickTime fourcc 'alac'
@item aptX @tab X @tab X
@tab Used in Bluetooth A2DP
+@item aptX HD @tab X @tab X
+ @tab Used in Bluetooth A2DP
@item ATRAC1 @tab @tab X
@item ATRAC3 @tab @tab X
@item ATRAC3+ @tab @tab X
@@ -1016,6 +1042,8 @@ following image formats are supported:
@tab Used in Bink and Smacker files in many games.
@item CELT @tab @tab E
@tab decoding supported through external library libcelt
+@item codec2 @tab E @tab E
+ @tab en/decoding supported through external library libcodec2
@item Delphine Software International CIN audio @tab @tab X
@tab Codec used in Delphine Software International games.
@item Digital Speech Standard - Standard Play mode (DSS SP) @tab @tab X
@@ -1114,6 +1142,8 @@ following image formats are supported:
@tab Real low bitrate AC-3 codec
@item RealAudio Lossless @tab @tab X
@item RealAudio SIPR / ACELP.NET @tab @tab X
+@item SBC (low-complexity subband codec) @tab X @tab X
+ @tab Used in Bluetooth A2DP
@item Shorten @tab @tab X
@item Sierra VMD audio @tab @tab X
@tab Used in Sierra VMD files.
diff --git a/chromium/third_party/ffmpeg/doc/indevs.texi b/chromium/third_party/ffmpeg/doc/indevs.texi
index 0bc8e6a9b1b..6951940a93a 100644
--- a/chromium/third_party/ffmpeg/doc/indevs.texi
+++ b/chromium/third_party/ffmpeg/doc/indevs.texi
@@ -63,6 +63,46 @@ Set the number of channels. Default is 2.
@end table
+@section android_camera
+
+Android camera input device.
+
+This input devices uses the Android Camera2 NDK API which is
+available on devices with API level 24+. The availability of
+android_camera is autodetected during configuration.
+
+This device allows capturing from all cameras on an Android device,
+which are integrated into the Camera2 NDK API.
+
+The available cameras are enumerated internally and can be selected
+with the @var{camera_index} parameter. The input file string is
+discarded.
+
+Generally the back facing camera has index 0 while the front facing
+camera has index 1.
+
+@subsection Options
+
+@table @option
+
+@item video_size
+Set the video size given as a string such as 640x480 or hd720.
+Falls back to the first available configuration reported by
+Android if requested video size is not available or by default.
+
+@item framerate
+Set the video framerate.
+Falls back to the first available configuration reported by
+Android if requested framerate is not available or by default (-1).
+
+@item camera_index
+Set the index of the camera to use. Default is 0.
+
+@item input_queue_size
+Set the maximum number of frames to buffer. Default is 5.
+
+@end table
+
@section avfoundation
AVFoundation input device.
diff --git a/chromium/third_party/ffmpeg/doc/muxers.texi b/chromium/third_party/ffmpeg/doc/muxers.texi
index b060c4f3601..c156ec0c87b 100644
--- a/chromium/third_party/ffmpeg/doc/muxers.texi
+++ b/chromium/third_party/ffmpeg/doc/muxers.texi
@@ -254,6 +254,9 @@ Use persistent HTTP connections. Applicable only for HTTP output.
@item -hls_playlist @var{hls_playlist}
Generate HLS playlist files as well. The master playlist is generated with the filename master.m3u8.
One media playlist file is generated for each stream with filenames media_0.m3u8, media_1.m3u8, etc.
+@item -streaming @var{streaming}
+Enable (1) or disable (0) chunk streaming mode of output. In chunk streaming
+mode, each frame will be a moof fragment which forms a chunk.
@item -adaptation_sets @var{adaptation_sets}
Assign streams to AdaptationSets. Syntax is "id=x,streams=a,b,c id=y,streams=d,e" with x and y being the IDs
of the adaptation sets and a,b,c,d and e are the indices of the mapped streams.
@@ -901,6 +904,43 @@ and they are mapped to the two video only variant streams with audio group names
By default, a single hls variant containing all the encoded streams is created.
+@item cc_stream_map
+Map string which specifies different closed captions groups and their
+attributes. The closed captions stream groups are separated by space.
+Expected string format is like this
+"ccgroup:<group name>,instreamid:<INSTREAM-ID>,language:<language code> ....".
+'ccgroup' and 'instreamid' are mandatory attributes. 'language' is an optional
+attribute.
+The closed captions groups configured using this option are mapped to different
+variant streams by providing the same 'ccgroup' name in the
+@code{var_stream_map} string. If @code{var_stream_map} is not set, then the
+first available ccgroup in @code{cc_stream_map} is mapped to the output variant
+stream. The examples for these two use cases are given below.
+
+@example
+ffmpeg -re -i in.ts -b:v 1000k -b:a 64k -a53cc 1 -f hls \
+ -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en" \
+ -master_pl_name master.m3u8 \
+ http://example.com/live/out.m3u8
+@end example
+This example adds @code{#EXT-X-MEDIA} tag with @code{TYPE=CLOSED-CAPTIONS} in
+the master playlist with group name 'cc', langauge 'en' (english) and
+INSTREAM-ID 'CC1'. Also, it adds @code{CLOSED-CAPTIONS} attribute with group
+name 'cc' for the output variant stream.
+@example
+ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
+ -a53cc:0 1 -a53cc:1 1\
+ -map 0:v -map 0:a -map 0:v -map 0:a -f hls \
+ -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en ccgroup:cc,instreamid:CC2,language:sp" \
+ -var_stream_map "v:0,a:0,ccgroup:cc v:1,a:1,ccgroup:cc" \
+ -master_pl_name master.m3u8 \
+ http://example.com/live/out_%v.m3u8
+@end example
+This example adds two @code{#EXT-X-MEDIA} tags with @code{TYPE=CLOSED-CAPTIONS} in
+the master playlist for the INSTREAM-IDs 'CC1' and 'CC2'. Also, it adds
+@code{CLOSED-CAPTIONS} attribute with group name 'cc' for the two output variant
+streams.
+
@item master_pl_name
Create HLS master playlist with the given name.
diff --git a/chromium/third_party/ffmpeg/doc/protocols.texi b/chromium/third_party/ffmpeg/doc/protocols.texi
index 98deb73005b..c24dc745052 100644
--- a/chromium/third_party/ffmpeg/doc/protocols.texi
+++ b/chromium/third_party/ffmpeg/doc/protocols.texi
@@ -296,6 +296,9 @@ Use persistent connections if set to 1, default is 0.
@item post_data
Set custom HTTP post data.
+@item referer
+Set the Referer header. Include 'Referer: URL' header in HTTP request.
+
@item user_agent
Override the User-Agent header. If not specified the protocol will use a
string describing the libavformat build. ("Lavf/<version>")
diff --git a/chromium/third_party/ffmpeg/ffmpeg_options.gni b/chromium/third_party/ffmpeg/ffmpeg_options.gni
index dfaa1978da0..c51c213923e 100644
--- a/chromium/third_party/ffmpeg/ffmpeg_options.gni
+++ b/chromium/third_party/ffmpeg/ffmpeg_options.gni
@@ -3,19 +3,30 @@
# found in the LICENSE file.
import("//build/config/arm.gni")
-import("//build/config/features.gni")
+import("//build/config/chrome_build.gni")
+import("//build/config/chromecast_build.gni")
import("//build/config/sanitizers/sanitizers.gni")
-if (proprietary_codecs) {
- if (is_chromeos) {
- _default_ffmpeg_branding = "ChromeOS"
- } else {
- _default_ffmpeg_branding = "Chrome"
- }
+if (is_chrome_branded) {
+ _default_ffmpeg_branding = "Chrome"
} else {
_default_ffmpeg_branding = "Chromium"
}
+if (is_chromeos && is_chrome_branded) {
+ _default_ffmpeg_branding = "ChromeOS"
+}
+
+if (is_chromecast) {
+ if (is_android) {
+ _default_ffmpeg_branding = "Chrome"
+ } else {
+ # TODO(alokp): What audio codecs does Chromecast want here? Sort
+ # out and add configs if necessary. http://crbug.com/570754
+ _default_ffmpeg_branding = "ChromeOS"
+ }
+}
+
declare_args() {
# Controls whether we build the Chromium or Google Chrome version of FFmpeg.
# The Google Chrome version contains additional codecs. Typical values are
diff --git a/chromium/third_party/ffmpeg/fftools/cmdutils.c b/chromium/third_party/ffmpeg/fftools/cmdutils.c
index 6920ca07641..0c7d13c27a7 100644
--- a/chromium/third_party/ffmpeg/fftools/cmdutils.c
+++ b/chromium/third_party/ffmpeg/fftools/cmdutils.c
@@ -1603,7 +1603,7 @@ int show_bsfs(void *optctx, const char *opt, const char *arg)
void *opaque = NULL;
printf("Bitstream filters:\n");
- while ((bsf = av_bsf_next(&opaque)))
+ while ((bsf = av_bsf_iterate(&opaque)))
printf("%s\n", bsf->name);
printf("\n");
return 0;
diff --git a/chromium/third_party/ffmpeg/fftools/ffmpeg.c b/chromium/third_party/ffmpeg/fftools/ffmpeg.c
index 528849a2c66..ee7258fcd1f 100644
--- a/chromium/third_party/ffmpeg/fftools/ffmpeg.c
+++ b/chromium/third_party/ffmpeg/fftools/ffmpeg.c
@@ -406,6 +406,9 @@ void term_init(void)
#ifdef SIGXCPU
signal(SIGXCPU, sigterm_handler);
#endif
+#ifdef SIGPIPE
+ signal(SIGPIPE, SIG_IGN); /* Broken pipe (POSIX). */
+#endif
#if HAVE_SETCONSOLECTRLHANDLER
SetConsoleCtrlHandler((PHANDLER_ROUTINE) CtrlHandler, TRUE);
#endif
@@ -1560,7 +1563,7 @@ static void print_final_stats(int64_t total_size)
uint64_t total_packets = 0, total_size = 0;
av_log(NULL, AV_LOG_VERBOSE, "Input file #%d (%s):\n",
- i, f->ctx->filename);
+ i, f->ctx->url);
for (j = 0; j < f->nb_streams; j++) {
InputStream *ist = input_streams[f->ist_index + j];
@@ -1594,7 +1597,7 @@ static void print_final_stats(int64_t total_size)
uint64_t total_packets = 0, total_size = 0;
av_log(NULL, AV_LOG_VERBOSE, "Output file #%d (%s):\n",
- i, of->ctx->filename);
+ i, of->ctx->url);
for (j = 0; j < of->ctx->nb_streams; j++) {
OutputStream *ost = output_streams[of->ost_index + j];
@@ -1634,8 +1637,7 @@ static void print_final_stats(int64_t total_size)
static void print_report(int is_last_report, int64_t timer_start, int64_t cur_time)
{
- char buf[1024];
- AVBPrint buf_script;
+ AVBPrint buf, buf_script;
OutputStream *ost;
AVFormatContext *oc;
int64_t total_size;
@@ -1647,6 +1649,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
static int64_t last_time = -1;
static int qp_histogram[52];
int hours, mins, secs, us;
+ const char *hours_sign;
int ret;
float t;
@@ -1672,8 +1675,8 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
if (total_size <= 0) // FIXME improve avio_size() so it works with non seekable output too
total_size = avio_tell(oc->pb);
- buf[0] = '\0';
vid = 0;
+ av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC);
av_bprint_init(&buf_script, 0, 1);
for (i = 0; i < nb_output_streams; i++) {
float q = -1;
@@ -1683,7 +1686,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
q = ost->quality / (float) FF_QP2LAMBDA;
if (vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "q=%2.1f ", q);
+ av_bprintf(&buf, "q=%2.1f ", q);
av_bprintf(&buf_script, "stream_%d_%d_q=%.1f\n",
ost->file_index, ost->index, q);
}
@@ -1692,21 +1695,21 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
frame_number = ost->frame_number;
fps = t > 1 ? frame_number / t : 0;
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "frame=%5d fps=%3.*f q=%3.1f ",
+ av_bprintf(&buf, "frame=%5d fps=%3.*f q=%3.1f ",
frame_number, fps < 9.95, fps, q);
av_bprintf(&buf_script, "frame=%d\n", frame_number);
av_bprintf(&buf_script, "fps=%.1f\n", fps);
av_bprintf(&buf_script, "stream_%d_%d_q=%.1f\n",
ost->file_index, ost->index, q);
if (is_last_report)
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "L");
+ av_bprintf(&buf, "L");
if (qp_hist) {
int j;
int qp = lrintf(q);
if (qp >= 0 && qp < FF_ARRAY_ELEMS(qp_histogram))
qp_histogram[qp]++;
for (j = 0; j < 32; j++)
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "%X", av_log2(qp_histogram[j] + 1));
+ av_bprintf(&buf, "%X", av_log2(qp_histogram[j] + 1));
}
if ((enc->flags & AV_CODEC_FLAG_PSNR) && (ost->pict_type != AV_PICTURE_TYPE_NONE || is_last_report)) {
@@ -1715,7 +1718,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
double scale, scale_sum = 0;
double p;
char type[3] = { 'Y','U','V' };
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "PSNR=");
+ av_bprintf(&buf, "PSNR=");
for (j = 0; j < 3; j++) {
if (is_last_report) {
error = enc->error[j];
@@ -1729,12 +1732,12 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
error_sum += error;
scale_sum += scale;
p = psnr(error / scale);
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "%c:%2.2f ", type[j], p);
+ av_bprintf(&buf, "%c:%2.2f ", type[j], p);
av_bprintf(&buf_script, "stream_%d_%d_psnr_%c=%2.2f\n",
ost->file_index, ost->index, type[j] | 32, p);
}
p = psnr(error_sum / scale_sum);
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "*:%2.2f ", psnr(error_sum / scale_sum));
+ av_bprintf(&buf, "*:%2.2f ", psnr(error_sum / scale_sum));
av_bprintf(&buf_script, "stream_%d_%d_psnr_all=%2.2f\n",
ost->file_index, ost->index, p);
}
@@ -1754,57 +1757,62 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
secs %= 60;
hours = mins / 60;
mins %= 60;
+ hours_sign = (pts < 0) ? "-" : "";
bitrate = pts && total_size >= 0 ? total_size * 8 / (pts / 1000.0) : -1;
speed = t != 0.0 ? (double)pts / AV_TIME_BASE / t : -1;
- if (total_size < 0) snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),
- "size=N/A time=");
- else snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),
- "size=%8.0fkB time=", total_size / 1024.0);
- if (pts < 0)
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "-");
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),
- "%02d:%02d:%02d.%02d ", hours, mins, secs,
- (100 * us) / AV_TIME_BASE);
+ if (total_size < 0) av_bprintf(&buf, "size=N/A time=");
+ else av_bprintf(&buf, "size=%8.0fkB time=", total_size / 1024.0);
+ if (pts == AV_NOPTS_VALUE) {
+ av_bprintf(&buf, "N/A ");
+ } else {
+ av_bprintf(&buf, "%s%02d:%02d:%02d.%02d ",
+ hours_sign, hours, mins, secs, (100 * us) / AV_TIME_BASE);
+ }
if (bitrate < 0) {
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),"bitrate=N/A");
+ av_bprintf(&buf, "bitrate=N/A");
av_bprintf(&buf_script, "bitrate=N/A\n");
}else{
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),"bitrate=%6.1fkbits/s", bitrate);
+ av_bprintf(&buf, "bitrate=%6.1fkbits/s", bitrate);
av_bprintf(&buf_script, "bitrate=%6.1fkbits/s\n", bitrate);
}
if (total_size < 0) av_bprintf(&buf_script, "total_size=N/A\n");
else av_bprintf(&buf_script, "total_size=%"PRId64"\n", total_size);
- av_bprintf(&buf_script, "out_time_ms=%"PRId64"\n", pts);
- av_bprintf(&buf_script, "out_time=%02d:%02d:%02d.%06d\n",
- hours, mins, secs, us);
+ if (pts == AV_NOPTS_VALUE) {
+ av_bprintf(&buf_script, "out_time_ms=N/A\n");
+ av_bprintf(&buf_script, "out_time=N/A\n");
+ } else {
+ av_bprintf(&buf_script, "out_time_ms=%"PRId64"\n", pts);
+ av_bprintf(&buf_script, "out_time=%s%02d:%02d:%02d.%06d\n",
+ hours_sign, hours, mins, secs, us);
+ }
if (nb_frames_dup || nb_frames_drop)
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), " dup=%d drop=%d",
- nb_frames_dup, nb_frames_drop);
+ av_bprintf(&buf, " dup=%d drop=%d", nb_frames_dup, nb_frames_drop);
av_bprintf(&buf_script, "dup_frames=%d\n", nb_frames_dup);
av_bprintf(&buf_script, "drop_frames=%d\n", nb_frames_drop);
if (speed < 0) {
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf)," speed=N/A");
+ av_bprintf(&buf, " speed=N/A");
av_bprintf(&buf_script, "speed=N/A\n");
} else {
- snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf)," speed=%4.3gx", speed);
+ av_bprintf(&buf, " speed=%4.3gx", speed);
av_bprintf(&buf_script, "speed=%4.3gx\n", speed);
}
if (print_stats || is_last_report) {
const char end = is_last_report ? '\n' : '\r';
if (print_stats==1 && AV_LOG_INFO > av_log_get_level()) {
- fprintf(stderr, "%s %c", buf, end);
+ fprintf(stderr, "%s %c", buf.str, end);
} else
- av_log(NULL, AV_LOG_INFO, "%s %c", buf, end);
+ av_log(NULL, AV_LOG_INFO, "%s %c", buf.str, end);
fflush(stderr);
}
+ av_bprint_finalize(&buf, NULL);
if (progress_avio) {
av_bprintf(&buf_script, "progress=%s\n",
@@ -2102,7 +2110,7 @@ static void check_decode_result(InputStream *ist, int *got_output, int ret)
if (exit_on_error && *got_output && ist) {
if (ist->decoded_frame->decode_error_flags || (ist->decoded_frame->flags & AV_FRAME_FLAG_CORRUPT)) {
- av_log(NULL, AV_LOG_FATAL, "%s: corrupt decoded frame in stream %d\n", input_files[ist->file_index]->ctx->filename, ist->st->index);
+ av_log(NULL, AV_LOG_FATAL, "%s: corrupt decoded frame in stream %d\n", input_files[ist->file_index]->ctx->url, ist->st->index);
exit_program(1);
}
}
@@ -2172,10 +2180,7 @@ static int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame)
ret = reap_filters(1);
if (ret < 0 && ret != AVERROR_EOF) {
- char errbuf[128];
- av_strerror(ret, errbuf, sizeof(errbuf));
-
- av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", errbuf);
+ av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", av_err2str(ret));
return ret;
}
@@ -2986,7 +2991,7 @@ static int check_init_output_file(OutputFile *of, int file_index)
//assert_avoptions(of->opts);
of->header_written = 1;
- av_dump_format(of->ctx, file_index, of->ctx->filename, 1);
+ av_dump_format(of->ctx, file_index, of->ctx->url, 1);
if (sdp_filename || want_sdp)
print_sdp();
@@ -3499,7 +3504,8 @@ static int init_output_stream(OutputStream *ost, char *error, int error_len)
av_buffersink_set_frame_size(ost->filter->filter,
ost->enc_ctx->frame_size);
assert_avoptions(ost->encoder_opts);
- if (ost->enc_ctx->bit_rate && ost->enc_ctx->bit_rate < 1000)
+ if (ost->enc_ctx->bit_rate && ost->enc_ctx->bit_rate < 1000 &&
+ ost->enc_ctx->codec_id != AV_CODEC_ID_CODEC2 /* don't complain about 700 bit/s modes */)
av_log(NULL, AV_LOG_WARNING, "The bitrate parameter is set too low."
" It takes bits/s as argument, not kbits/s\n");
@@ -3589,6 +3595,7 @@ static int init_output_stream(OutputStream *ost, char *error, int error_len)
{ "clean_effects" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CLEAN_EFFECTS }, .unit = "flags" },
{ "captions" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CAPTIONS }, .unit = "flags" },
{ "descriptions" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DESCRIPTIONS }, .unit = "flags" },
+ { "dependent" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEPENDENT }, .unit = "flags" },
{ "metadata" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_METADATA }, .unit = "flags" },
{ NULL },
};
@@ -4249,7 +4256,7 @@ static int process_input(int file_index)
}
if (ret < 0) {
if (ret != AVERROR_EOF) {
- print_error(is->filename, ret);
+ print_error(is->url, ret);
if (exit_on_error)
exit_program(1);
}
@@ -4298,7 +4305,7 @@ static int process_input(int file_index)
goto discard_packet;
if (exit_on_error && (pkt.flags & AV_PKT_FLAG_CORRUPT)) {
- av_log(NULL, AV_LOG_FATAL, "%s: corrupt input packet in stream %d\n", is->filename, pkt.stream_index);
+ av_log(NULL, AV_LOG_FATAL, "%s: corrupt input packet in stream %d\n", is->url, pkt.stream_index);
exit_program(1);
}
@@ -4633,10 +4640,7 @@ static int transcode(void)
ret = transcode_step();
if (ret < 0 && ret != AVERROR_EOF) {
- char errbuf[128];
- av_strerror(ret, errbuf, sizeof(errbuf));
-
- av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", errbuf);
+ av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", av_err2str(ret));
break;
}
@@ -4665,11 +4669,11 @@ static int transcode(void)
av_log(NULL, AV_LOG_ERROR,
"Nothing was written into output file %d (%s), because "
"at least one of its streams received no packets.\n",
- i, os->filename);
+ i, os->url);
continue;
}
if ((ret = av_write_trailer(os)) < 0) {
- av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", os->filename, av_err2str(ret));
+ av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", os->url, av_err2str(ret));
if (exit_on_error)
exit_program(1);
}
diff --git a/chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c b/chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c
index 92199b3ac28..1b591d9695e 100644
--- a/chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c
+++ b/chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c
@@ -1271,7 +1271,7 @@ static int choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *o
if (type == AVMEDIA_TYPE_VIDEO || type == AVMEDIA_TYPE_AUDIO || type == AVMEDIA_TYPE_SUBTITLE) {
MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, ost->st);
if (!codec_name) {
- ost->st->codecpar->codec_id = av_guess_codec(s->oformat, NULL, s->filename,
+ ost->st->codecpar->codec_id = av_guess_codec(s->oformat, NULL, s->url,
NULL, ost->st->codecpar->codec_type);
ost->enc = avcodec_find_encoder(ost->st->codecpar->codec_id);
if (!ost->enc) {
@@ -2334,7 +2334,7 @@ loop_end:
#endif
if (!oc->nb_streams && !(oc->oformat->flags & AVFMT_NOSTREAMS)) {
- av_dump_format(oc, nb_output_files - 1, oc->filename, 1);
+ av_dump_format(oc, nb_output_files - 1, oc->url, 1);
av_log(NULL, AV_LOG_ERROR, "Output file #%d does not contain any stream\n", nb_output_files - 1);
exit_program(1);
}
@@ -2466,8 +2466,8 @@ loop_end:
/* check filename in case of an image number is expected */
if (oc->oformat->flags & AVFMT_NEEDNUMBER) {
- if (!av_filename_number_test(oc->filename)) {
- print_error(oc->filename, AVERROR(EINVAL));
+ if (!av_filename_number_test(oc->url)) {
+ print_error(oc->url, AVERROR(EINVAL));
exit_program(1);
}
}
@@ -3457,7 +3457,7 @@ const OptionDef options[] = {
{ "debug_ts", OPT_BOOL | OPT_EXPERT, { &debug_ts },
"print timestamp debugging info" },
{ "max_error_rate", HAS_ARG | OPT_FLOAT, { &max_error_rate },
- "maximum error rate", "ratio of errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success." },
+ "ratio of errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success.", "maximum error rate" },
{ "discard", OPT_STRING | HAS_ARG | OPT_SPEC |
OPT_INPUT, { .off = OFFSET(discard) },
"discard", "" },
diff --git a/chromium/third_party/ffmpeg/fftools/ffplay.c b/chromium/third_party/ffmpeg/fftools/ffplay.c
index 9bfa3e6ceab..f2028d4b13d 100644
--- a/chromium/third_party/ffmpeg/fftools/ffplay.c
+++ b/chromium/third_party/ffmpeg/fftools/ffplay.c
@@ -2712,8 +2712,8 @@ static int is_realtime(AVFormatContext *s)
)
return 1;
- if(s->pb && ( !strncmp(s->filename, "rtp:", 4)
- || !strncmp(s->filename, "udp:", 4)
+ if(s->pb && ( !strncmp(s->url, "rtp:", 4)
+ || !strncmp(s->url, "udp:", 4)
)
)
return 1;
@@ -2928,7 +2928,7 @@ static int read_thread(void *arg)
ret = avformat_seek_file(is->ic, -1, seek_min, seek_target, seek_max, is->seek_flags);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR,
- "%s: error while seeking\n", is->ic->filename);
+ "%s: error while seeking\n", is->ic->url);
} else {
if (is->audio_stream >= 0) {
packet_queue_flush(&is->audioq);
diff --git a/chromium/third_party/ffmpeg/fftools/ffprobe.c b/chromium/third_party/ffmpeg/fftools/ffprobe.c
index 0e7a771517d..967adbe30cd 100644
--- a/chromium/third_party/ffmpeg/fftools/ffprobe.c
+++ b/chromium/third_party/ffmpeg/fftools/ffprobe.c
@@ -2512,10 +2512,12 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
case AVMEDIA_TYPE_VIDEO:
print_int("width", par->width);
print_int("height", par->height);
+#if FF_API_LAVF_AVCTX
if (dec_ctx) {
print_int("coded_width", dec_ctx->coded_width);
print_int("coded_height", dec_ctx->coded_height);
}
+#endif
print_int("has_b_frames", par->video_delay);
sar = av_guess_sample_aspect_ratio(fmt_ctx, stream, NULL);
if (sar.den) {
@@ -2778,7 +2780,7 @@ static int show_format(WriterContext *w, InputFile *ifile)
int ret = 0;
writer_print_section_header(w, SECTION_ID_FORMAT);
- print_str_validate("filename", fmt_ctx->filename);
+ print_str_validate("filename", fmt_ctx->url);
print_int("nb_streams", fmt_ctx->nb_streams);
print_int("nb_programs", fmt_ctx->nb_programs);
print_str("format_name", fmt_ctx->iformat->name);
@@ -2912,6 +2914,10 @@ static int open_input_file(InputFile *ifile, const char *filename)
ist->dec_ctx->pkt_timebase = stream->time_base;
ist->dec_ctx->framerate = stream->avg_frame_rate;
+#if FF_API_LAVF_AVCTX
+ ist->dec_ctx->coded_width = stream->codec->coded_width;
+ ist->dec_ctx->coded_height = stream->codec->coded_height;
+#endif
if (avcodec_open2(ist->dec_ctx, codec, &opts) < 0) {
av_log(NULL, AV_LOG_WARNING, "Could not open codec for input stream %d\n",
diff --git a/chromium/third_party/ffmpeg/libavcodec/Makefile b/chromium/third_party/ffmpeg/libavcodec/Makefile
index cfacd6b70ce..ff6c9f8b2cf 100644
--- a/chromium/third_party/ffmpeg/libavcodec/Makefile
+++ b/chromium/third_party/ffmpeg/libavcodec/Makefile
@@ -190,6 +190,8 @@ OBJS-$(CONFIG_ANSI_DECODER) += ansi.o cga_data.o
OBJS-$(CONFIG_APE_DECODER) += apedec.o
OBJS-$(CONFIG_APTX_DECODER) += aptx.o
OBJS-$(CONFIG_APTX_ENCODER) += aptx.o
+OBJS-$(CONFIG_APTX_HD_DECODER) += aptx.o
+OBJS-$(CONFIG_APTX_HD_ENCODER) += aptx.o
OBJS-$(CONFIG_APNG_DECODER) += png.o pngdec.o pngdsp.o
OBJS-$(CONFIG_APNG_ENCODER) += png.o pngenc.o
OBJS-$(CONFIG_SSA_DECODER) += assdec.o ass.o
@@ -414,6 +416,7 @@ OBJS-$(CONFIG_MJPEG_DECODER) += mjpegdec.o
OBJS-$(CONFIG_MJPEG_ENCODER) += mjpegenc.o mjpegenc_common.o \
mjpegenc_huffman.o
OBJS-$(CONFIG_MJPEGB_DECODER) += mjpegbdec.o
+OBJS-$(CONFIG_MJPEG_CUVID_DECODER) += cuviddec.o
OBJS-$(CONFIG_MJPEG_QSV_ENCODER) += qsvenc_jpeg.o
OBJS-$(CONFIG_MJPEG_VAAPI_ENCODER) += vaapi_encode_mjpeg.o
OBJS-$(CONFIG_MLP_DECODER) += mlpdec.o mlpdsp.o
@@ -441,16 +444,19 @@ OBJS-$(CONFIG_MPC8_DECODER) += mpc8.o mpc.o
OBJS-$(CONFIG_MPEGVIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o
OBJS-$(CONFIG_MPEG1VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o
OBJS-$(CONFIG_MPEG1VIDEO_ENCODER) += mpeg12enc.o mpeg12.o
+OBJS-$(CONFIG_MPEG1_CUVID_DECODER) += cuviddec.o
OBJS-$(CONFIG_MPEG1_V4L2M2M_DECODER) += v4l2_m2m_dec.o
OBJS-$(CONFIG_MPEG2_MMAL_DECODER) += mmaldec.o
OBJS-$(CONFIG_MPEG2_QSV_DECODER) += qsvdec_other.o
OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o
OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o
OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpeg12.o
+OBJS-$(CONFIG_MPEG2_CUVID_DECODER) += cuviddec.o
OBJS-$(CONFIG_MPEG2_MEDIACODEC_DECODER) += mediacodecdec.o
OBJS-$(CONFIG_MPEG2_VAAPI_ENCODER) += vaapi_encode_mpeg2.o
OBJS-$(CONFIG_MPEG2_V4L2M2M_DECODER) += v4l2_m2m_dec.o
OBJS-$(CONFIG_MPEG4_DECODER) += xvididct.o
+OBJS-$(CONFIG_MPEG4_CUVID_DECODER) += cuviddec.o
OBJS-$(CONFIG_MPEG4_MEDIACODEC_DECODER) += mediacodecdec.o
OBJS-$(CONFIG_MPEG4_OMX_ENCODER) += omx.o
OBJS-$(CONFIG_MPEG4_V4L2M2M_DECODER) += v4l2_m2m_dec.o
@@ -479,7 +485,7 @@ OBJS-$(CONFIG_NUV_DECODER) += nuv.o rtjpeg.o
OBJS-$(CONFIG_ON2AVC_DECODER) += on2avc.o on2avcdata.o
OBJS-$(CONFIG_OPUS_DECODER) += opusdec.o opus.o opus_celt.o opus_rc.o \
opus_pvq.o opus_silk.o opustab.o vorbis_data.o
-OBJS-$(CONFIG_OPUS_ENCODER) += opusenc.o opus_rc.o opustab.o opus_pvq.o \
+OBJS-$(CONFIG_OPUS_ENCODER) += opusenc.o opus.o opus_rc.o opustab.o opus_pvq.o \
opusenc_psy.o
OBJS-$(CONFIG_PAF_AUDIO_DECODER) += pafaudio.o
OBJS-$(CONFIG_PAF_VIDEO_DECODER) += pafvideo.o
@@ -581,6 +587,8 @@ OBJS-$(CONFIG_SUBVIEWER_DECODER) += subviewerdec.o ass.o
OBJS-$(CONFIG_SUNRAST_DECODER) += sunrast.o
OBJS-$(CONFIG_SUNRAST_ENCODER) += sunrastenc.o
OBJS-$(CONFIG_LIBRSVG_DECODER) += librsvgdec.o
+OBJS-$(CONFIG_SBC_DECODER) += sbcdec.o sbcdec_data.o sbc.o
+OBJS-$(CONFIG_SBC_ENCODER) += sbcenc.o sbc.o sbcdsp.o sbcdsp_data.o
OBJS-$(CONFIG_SVQ1_DECODER) += svq1dec.o svq1.o svq13.o h263data.o
OBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o svq1.o h263data.o \
h263.o ituh263enc.o
@@ -852,6 +860,8 @@ OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o
OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec_h2645.o
OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o
OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o
+OBJS-$(CONFIG_MJPEG_NVDEC_HWACCEL) += nvdec_mjpeg.o
+OBJS-$(CONFIG_MJPEG_VAAPI_HWACCEL) += vaapi_mjpeg.o
OBJS-$(CONFIG_MPEG1_NVDEC_HWACCEL) += nvdec_mpeg12.o
OBJS-$(CONFIG_MPEG1_VDPAU_HWACCEL) += vdpau_mpeg12.o
OBJS-$(CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o
@@ -927,6 +937,8 @@ OBJS-$(CONFIG_ILBC_AT_ENCODER) += audiotoolboxenc.o
OBJS-$(CONFIG_PCM_ALAW_AT_ENCODER) += audiotoolboxenc.o
OBJS-$(CONFIG_PCM_MULAW_AT_ENCODER) += audiotoolboxenc.o
OBJS-$(CONFIG_LIBCELT_DECODER) += libcelt_dec.o
+OBJS-$(CONFIG_LIBCODEC2_DECODER) += libcodec2.o codec2utils.o
+OBJS-$(CONFIG_LIBCODEC2_ENCODER) += libcodec2.o codec2utils.o
OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o
OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o
OBJS-$(CONFIG_LIBGSM_DECODER) += libgsmdec.o
@@ -1011,6 +1023,7 @@ OBJS-$(CONFIG_PNG_PARSER) += png_parser.o
OBJS-$(CONFIG_PNM_PARSER) += pnm_parser.o pnm.o
OBJS-$(CONFIG_RV30_PARSER) += rv34_parser.o
OBJS-$(CONFIG_RV40_PARSER) += rv34_parser.o
+OBJS-$(CONFIG_SBC_PARSER) += sbc_parser.o
OBJS-$(CONFIG_SIPR_PARSER) += sipr_parser.o
OBJS-$(CONFIG_TAK_PARSER) += tak_parser.o tak.o
OBJS-$(CONFIG_VC1_PARSER) += vc1_parser.o vc1.o vc1data.o \
@@ -1076,6 +1089,7 @@ SKIPHEADERS-$(CONFIG_JNI) += ffjni.h
SKIPHEADERS-$(CONFIG_LIBVPX) += libvpx.h
SKIPHEADERS-$(CONFIG_LIBWEBP_ENCODER) += libwebpenc_common.h
SKIPHEADERS-$(CONFIG_MEDIACODEC) += mediacodecdec_common.h mediacodec_surface.h mediacodec_wrapper.h mediacodec_sw_buffer.h
+SKIPHEADERS-$(CONFIG_NVDEC) += nvdec.h
SKIPHEADERS-$(CONFIG_NVENC) += nvenc.h
SKIPHEADERS-$(CONFIG_QSV) += qsv.h qsv_internal.h
SKIPHEADERS-$(CONFIG_QSVDEC) += qsvdec.h
@@ -1088,6 +1102,7 @@ SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m
TESTPROGS = avpacket \
celp_math \
+ codec_desc \
htmlsubtitles \
imgconvert \
jpeg2000dwt \
diff --git a/chromium/third_party/ffmpeg/libavcodec/aacdec.c b/chromium/third_party/ffmpeg/libavcodec/aacdec.c
index 44352764a7a..d394700cdc8 100644
--- a/chromium/third_party/ffmpeg/libavcodec/aacdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/aacdec.c
@@ -318,8 +318,8 @@ static int latm_decode_audio_specific_config(struct LATMContext *latmctx,
ac->oc[1].m4ac.sample_rate != m4ac.sample_rate ||
ac->oc[1].m4ac.chan_config != m4ac.chan_config) {
- if(latmctx->initialized) {
- av_log(avctx, AV_LOG_INFO, "audio config changed\n");
+ if (latmctx->initialized) {
+ av_log(avctx, AV_LOG_INFO, "audio config changed (sample_rate=%d, chan_config=%d)\n", m4ac.sample_rate, m4ac.chan_config);
} else {
av_log(avctx, AV_LOG_DEBUG, "initializing latmctx\n");
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/aacdec_template.c b/chromium/third_party/ffmpeg/libavcodec/aacdec_template.c
index a076464aad7..cf971810926 100644
--- a/chromium/third_party/ffmpeg/libavcodec/aacdec_template.c
+++ b/chromium/third_party/ffmpeg/libavcodec/aacdec_template.c
@@ -2591,7 +2591,7 @@ static void apply_ltp(AACContext *ac, SingleChannelElement *sce)
for (sfb = 0; sfb < FFMIN(sce->ics.max_sfb, MAX_LTP_LONG_SFB); sfb++)
if (ltp->used[sfb])
for (i = offsets[sfb]; i < offsets[sfb + 1]; i++)
- sce->coeffs[i] += predFreq[i];
+ sce->coeffs[i] += (UINTFLOAT)predFreq[i];
}
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/aacsbr_fixed.c b/chromium/third_party/ffmpeg/libavcodec/aacsbr_fixed.c
index 3d5875a4690..eeada0b9f2b 100644
--- a/chromium/third_party/ffmpeg/libavcodec/aacsbr_fixed.c
+++ b/chromium/third_party/ffmpeg/libavcodec/aacsbr_fixed.c
@@ -568,7 +568,8 @@ static void sbr_hf_assemble(int Y1[38][64][2],
int A = (1-((indexsine+(kx & 1))&2));
int B = (A^(-idx)) + idx;
int *out = &Y1[i][kx][idx];
- int shift, round;
+ int shift;
+ unsigned round;
SoftFloat *in = sbr->s_m[e];
for (m = 0; m+1 < m_max; m+=2) {
@@ -581,12 +582,12 @@ static void sbr_hf_assemble(int Y1[38][64][2],
}
if (shift < 32) {
round = 1 << (shift-1);
- out[2*m ] += (in[m ].mant * A + round) >> shift;
+ out[2*m ] += (int)(in[m ].mant * A + round) >> shift;
}
if (shift2 < 32) {
round = 1 << (shift2-1);
- out[2*m+2] += (in[m+1].mant * B + round) >> shift2;
+ out[2*m+2] += (int)(in[m+1].mant * B + round) >> shift2;
}
}
if(m_max&1)
@@ -597,7 +598,7 @@ static void sbr_hf_assemble(int Y1[38][64][2],
return;
} else if (shift < 32) {
round = 1 << (shift-1);
- out[2*m ] += (in[m ].mant * A + round) >> shift;
+ out[2*m ] += (int)(in[m ].mant * A + round) >> shift;
}
}
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/aarch64/sbrdsp_neon.S b/chromium/third_party/ffmpeg/libavcodec/aarch64/sbrdsp_neon.S
index d1d79b749c2..d23717e7605 100644
--- a/chromium/third_party/ffmpeg/libavcodec/aarch64/sbrdsp_neon.S
+++ b/chromium/third_party/ffmpeg/libavcodec/aarch64/sbrdsp_neon.S
@@ -287,7 +287,7 @@ endfunc
zip1 v4.4S, v4.4S, v4.4S
fmla v6.4S, v1.4S, v3.4S
fmla v2.4S, v5.4S, v4.4S
- fcmeq v7.4S, v3.4S, #0.0
+ fcmeq v7.4S, v3.4S, #0
bif v2.16B, v6.16B, v7.16B
st1 {v2.4S}, [x0], #16
subs x5, x5, #2
diff --git a/chromium/third_party/ffmpeg/libavcodec/allcodecs.c b/chromium/third_party/ffmpeg/libavcodec/allcodecs.c
index ed1e7ab06e5..71719595c63 100644
--- a/chromium/third_party/ffmpeg/libavcodec/allcodecs.c
+++ b/chromium/third_party/ffmpeg/libavcodec/allcodecs.c
@@ -29,641 +29,863 @@
#include "avcodec.h"
#include "version.h"
-#define REGISTER_ENCODER(X, x) \
- { \
- extern AVCodec ff_##x##_encoder; \
- if (CONFIG_##X##_ENCODER) \
- avcodec_register(&ff_##x##_encoder); \
- }
+extern AVCodec ff_a64multi_encoder;
+extern AVCodec ff_a64multi5_encoder;
+extern AVCodec ff_aasc_decoder;
+extern AVCodec ff_aic_decoder;
+extern AVCodec ff_alias_pix_encoder;
+extern AVCodec ff_alias_pix_decoder;
+extern AVCodec ff_amv_encoder;
+extern AVCodec ff_amv_decoder;
+extern AVCodec ff_anm_decoder;
+extern AVCodec ff_ansi_decoder;
+extern AVCodec ff_apng_encoder;
+extern AVCodec ff_apng_decoder;
+extern AVCodec ff_asv1_encoder;
+extern AVCodec ff_asv1_decoder;
+extern AVCodec ff_asv2_encoder;
+extern AVCodec ff_asv2_decoder;
+extern AVCodec ff_aura_decoder;
+extern AVCodec ff_aura2_decoder;
+extern AVCodec ff_avrp_encoder;
+extern AVCodec ff_avrp_decoder;
+extern AVCodec ff_avrn_decoder;
+extern AVCodec ff_avs_decoder;
+extern AVCodec ff_avui_encoder;
+extern AVCodec ff_avui_decoder;
+extern AVCodec ff_ayuv_encoder;
+extern AVCodec ff_ayuv_decoder;
+extern AVCodec ff_bethsoftvid_decoder;
+extern AVCodec ff_bfi_decoder;
+extern AVCodec ff_bink_decoder;
+extern AVCodec ff_bmp_encoder;
+extern AVCodec ff_bmp_decoder;
+extern AVCodec ff_bmv_video_decoder;
+extern AVCodec ff_brender_pix_decoder;
+extern AVCodec ff_c93_decoder;
+extern AVCodec ff_cavs_decoder;
+extern AVCodec ff_cdgraphics_decoder;
+extern AVCodec ff_cdxl_decoder;
+extern AVCodec ff_cfhd_decoder;
+extern AVCodec ff_cinepak_encoder;
+extern AVCodec ff_cinepak_decoder;
+extern AVCodec ff_clearvideo_decoder;
+extern AVCodec ff_cljr_encoder;
+extern AVCodec ff_cljr_decoder;
+extern AVCodec ff_cllc_decoder;
+extern AVCodec ff_comfortnoise_encoder;
+extern AVCodec ff_comfortnoise_decoder;
+extern AVCodec ff_cpia_decoder;
+extern AVCodec ff_cscd_decoder;
+extern AVCodec ff_cyuv_decoder;
+extern AVCodec ff_dds_decoder;
+extern AVCodec ff_dfa_decoder;
+extern AVCodec ff_dirac_decoder;
+extern AVCodec ff_dnxhd_encoder;
+extern AVCodec ff_dnxhd_decoder;
+extern AVCodec ff_dpx_encoder;
+extern AVCodec ff_dpx_decoder;
+extern AVCodec ff_dsicinvideo_decoder;
+extern AVCodec ff_dvaudio_decoder;
+extern AVCodec ff_dvvideo_encoder;
+extern AVCodec ff_dvvideo_decoder;
+extern AVCodec ff_dxa_decoder;
+extern AVCodec ff_dxtory_decoder;
+extern AVCodec ff_dxv_decoder;
+extern AVCodec ff_eacmv_decoder;
+extern AVCodec ff_eamad_decoder;
+extern AVCodec ff_eatgq_decoder;
+extern AVCodec ff_eatgv_decoder;
+extern AVCodec ff_eatqi_decoder;
+extern AVCodec ff_eightbps_decoder;
+extern AVCodec ff_eightsvx_exp_decoder;
+extern AVCodec ff_eightsvx_fib_decoder;
+extern AVCodec ff_escape124_decoder;
+extern AVCodec ff_escape130_decoder;
+extern AVCodec ff_exr_decoder;
+extern AVCodec ff_ffv1_encoder;
+extern AVCodec ff_ffv1_decoder;
+extern AVCodec ff_ffvhuff_encoder;
+extern AVCodec ff_ffvhuff_decoder;
+extern AVCodec ff_fic_decoder;
+extern AVCodec ff_fits_encoder;
+extern AVCodec ff_fits_decoder;
+extern AVCodec ff_flashsv_encoder;
+extern AVCodec ff_flashsv_decoder;
+extern AVCodec ff_flashsv2_encoder;
+extern AVCodec ff_flashsv2_decoder;
+extern AVCodec ff_flic_decoder;
+extern AVCodec ff_flv_encoder;
+extern AVCodec ff_flv_decoder;
+extern AVCodec ff_fmvc_decoder;
+extern AVCodec ff_fourxm_decoder;
+extern AVCodec ff_fraps_decoder;
+extern AVCodec ff_frwu_decoder;
+extern AVCodec ff_g2m_decoder;
+extern AVCodec ff_gdv_decoder;
+extern AVCodec ff_gif_encoder;
+extern AVCodec ff_gif_decoder;
+extern AVCodec ff_h261_encoder;
+extern AVCodec ff_h261_decoder;
+extern AVCodec ff_h263_encoder;
+extern AVCodec ff_h263_decoder;
+extern AVCodec ff_h263i_decoder;
+extern AVCodec ff_h263p_encoder;
+extern AVCodec ff_h263p_decoder;
+extern AVCodec ff_h263_v4l2m2m_decoder;
+extern AVCodec ff_h264_decoder;
+extern AVCodec ff_h264_crystalhd_decoder;
+extern AVCodec ff_h264_v4l2m2m_decoder;
+extern AVCodec ff_h264_mediacodec_decoder;
+extern AVCodec ff_h264_mmal_decoder;
+extern AVCodec ff_h264_qsv_decoder;
+extern AVCodec ff_h264_rkmpp_decoder;
+extern AVCodec ff_hap_encoder;
+extern AVCodec ff_hap_decoder;
+extern AVCodec ff_hevc_decoder;
+extern AVCodec ff_hevc_qsv_decoder;
+extern AVCodec ff_hevc_rkmpp_decoder;
+extern AVCodec ff_hevc_v4l2m2m_decoder;
+extern AVCodec ff_hnm4_video_decoder;
+extern AVCodec ff_hq_hqa_decoder;
+extern AVCodec ff_hqx_decoder;
+extern AVCodec ff_huffyuv_encoder;
+extern AVCodec ff_huffyuv_decoder;
+extern AVCodec ff_idcin_decoder;
+extern AVCodec ff_iff_ilbm_decoder;
+extern AVCodec ff_indeo2_decoder;
+extern AVCodec ff_indeo3_decoder;
+extern AVCodec ff_indeo4_decoder;
+extern AVCodec ff_indeo5_decoder;
+extern AVCodec ff_interplay_video_decoder;
+extern AVCodec ff_jpeg2000_encoder;
+extern AVCodec ff_jpeg2000_decoder;
+extern AVCodec ff_jpegls_encoder;
+extern AVCodec ff_jpegls_decoder;
+extern AVCodec ff_jv_decoder;
+extern AVCodec ff_kgv1_decoder;
+extern AVCodec ff_kmvc_decoder;
+extern AVCodec ff_lagarith_decoder;
+extern AVCodec ff_ljpeg_encoder;
+extern AVCodec ff_loco_decoder;
+extern AVCodec ff_m101_decoder;
+extern AVCodec ff_magicyuv_encoder;
+extern AVCodec ff_magicyuv_decoder;
+extern AVCodec ff_mdec_decoder;
+extern AVCodec ff_mimic_decoder;
+extern AVCodec ff_mjpeg_encoder;
+extern AVCodec ff_mjpeg_decoder;
+extern AVCodec ff_mjpegb_decoder;
+extern AVCodec ff_mmvideo_decoder;
+extern AVCodec ff_motionpixels_decoder;
+extern AVCodec ff_mpeg1video_encoder;
+extern AVCodec ff_mpeg1video_decoder;
+extern AVCodec ff_mpeg2video_encoder;
+extern AVCodec ff_mpeg2video_decoder;
+extern AVCodec ff_mpeg4_encoder;
+extern AVCodec ff_mpeg4_decoder;
+extern AVCodec ff_mpeg4_crystalhd_decoder;
+extern AVCodec ff_mpeg4_v4l2m2m_decoder;
+extern AVCodec ff_mpeg4_mmal_decoder;
+extern AVCodec ff_mpegvideo_decoder;
+extern AVCodec ff_mpeg1_v4l2m2m_decoder;
+extern AVCodec ff_mpeg2_mmal_decoder;
+extern AVCodec ff_mpeg2_crystalhd_decoder;
+extern AVCodec ff_mpeg2_v4l2m2m_decoder;
+extern AVCodec ff_mpeg2_qsv_decoder;
+extern AVCodec ff_mpeg2_mediacodec_decoder;
+extern AVCodec ff_msa1_decoder;
+extern AVCodec ff_mscc_decoder;
+extern AVCodec ff_msmpeg4v1_decoder;
+extern AVCodec ff_msmpeg4v2_encoder;
+extern AVCodec ff_msmpeg4v2_decoder;
+extern AVCodec ff_msmpeg4v3_encoder;
+extern AVCodec ff_msmpeg4v3_decoder;
+extern AVCodec ff_msmpeg4_crystalhd_decoder;
+extern AVCodec ff_msrle_decoder;
+extern AVCodec ff_mss1_decoder;
+extern AVCodec ff_mss2_decoder;
+extern AVCodec ff_msvideo1_encoder;
+extern AVCodec ff_msvideo1_decoder;
+extern AVCodec ff_mszh_decoder;
+extern AVCodec ff_mts2_decoder;
+extern AVCodec ff_mvc1_decoder;
+extern AVCodec ff_mvc2_decoder;
+extern AVCodec ff_mxpeg_decoder;
+extern AVCodec ff_nuv_decoder;
+extern AVCodec ff_paf_video_decoder;
+extern AVCodec ff_pam_encoder;
+extern AVCodec ff_pam_decoder;
+extern AVCodec ff_pbm_encoder;
+extern AVCodec ff_pbm_decoder;
+extern AVCodec ff_pcx_encoder;
+extern AVCodec ff_pcx_decoder;
+extern AVCodec ff_pgm_encoder;
+extern AVCodec ff_pgm_decoder;
+extern AVCodec ff_pgmyuv_encoder;
+extern AVCodec ff_pgmyuv_decoder;
+extern AVCodec ff_pictor_decoder;
+extern AVCodec ff_pixlet_decoder;
+extern AVCodec ff_png_encoder;
+extern AVCodec ff_png_decoder;
+extern AVCodec ff_ppm_encoder;
+extern AVCodec ff_ppm_decoder;
+extern AVCodec ff_prores_encoder;
+extern AVCodec ff_prores_decoder;
+extern AVCodec ff_prores_aw_encoder;
+extern AVCodec ff_prores_ks_encoder;
+extern AVCodec ff_prores_lgpl_decoder;
+extern AVCodec ff_psd_decoder;
+extern AVCodec ff_ptx_decoder;
+extern AVCodec ff_qdraw_decoder;
+extern AVCodec ff_qpeg_decoder;
+extern AVCodec ff_qtrle_encoder;
+extern AVCodec ff_qtrle_decoder;
+extern AVCodec ff_r10k_encoder;
+extern AVCodec ff_r10k_decoder;
+extern AVCodec ff_r210_encoder;
+extern AVCodec ff_r210_decoder;
+extern AVCodec ff_rawvideo_encoder;
+extern AVCodec ff_rawvideo_decoder;
+extern AVCodec ff_rl2_decoder;
+extern AVCodec ff_roq_encoder;
+extern AVCodec ff_roq_decoder;
+extern AVCodec ff_rpza_decoder;
+extern AVCodec ff_rscc_decoder;
+extern AVCodec ff_rv10_encoder;
+extern AVCodec ff_rv10_decoder;
+extern AVCodec ff_rv20_encoder;
+extern AVCodec ff_rv20_decoder;
+extern AVCodec ff_rv30_decoder;
+extern AVCodec ff_rv40_decoder;
+extern AVCodec ff_s302m_encoder;
+extern AVCodec ff_s302m_decoder;
+extern AVCodec ff_sanm_decoder;
+extern AVCodec ff_scpr_decoder;
+extern AVCodec ff_screenpresso_decoder;
+extern AVCodec ff_sdx2_dpcm_decoder;
+extern AVCodec ff_sgi_encoder;
+extern AVCodec ff_sgi_decoder;
+extern AVCodec ff_sgirle_decoder;
+extern AVCodec ff_sheervideo_decoder;
+extern AVCodec ff_smacker_decoder;
+extern AVCodec ff_smc_decoder;
+extern AVCodec ff_smvjpeg_decoder;
+extern AVCodec ff_snow_encoder;
+extern AVCodec ff_snow_decoder;
+extern AVCodec ff_sp5x_decoder;
+extern AVCodec ff_speedhq_decoder;
+extern AVCodec ff_srgc_decoder;
+extern AVCodec ff_sunrast_encoder;
+extern AVCodec ff_sunrast_decoder;
+extern AVCodec ff_svq1_encoder;
+extern AVCodec ff_svq1_decoder;
+extern AVCodec ff_svq3_decoder;
+extern AVCodec ff_targa_encoder;
+extern AVCodec ff_targa_decoder;
+extern AVCodec ff_targa_y216_decoder;
+extern AVCodec ff_tdsc_decoder;
+extern AVCodec ff_theora_decoder;
+extern AVCodec ff_thp_decoder;
+extern AVCodec ff_tiertexseqvideo_decoder;
+extern AVCodec ff_tiff_encoder;
+extern AVCodec ff_tiff_decoder;
+extern AVCodec ff_tmv_decoder;
+extern AVCodec ff_truemotion1_decoder;
+extern AVCodec ff_truemotion2_decoder;
+extern AVCodec ff_truemotion2rt_decoder;
+extern AVCodec ff_tscc_decoder;
+extern AVCodec ff_tscc2_decoder;
+extern AVCodec ff_txd_decoder;
+extern AVCodec ff_ulti_decoder;
+extern AVCodec ff_utvideo_encoder;
+extern AVCodec ff_utvideo_decoder;
+extern AVCodec ff_v210_encoder;
+extern AVCodec ff_v210_decoder;
+extern AVCodec ff_v210x_decoder;
+extern AVCodec ff_v308_encoder;
+extern AVCodec ff_v308_decoder;
+extern AVCodec ff_v408_encoder;
+extern AVCodec ff_v408_decoder;
+extern AVCodec ff_v410_encoder;
+extern AVCodec ff_v410_decoder;
+extern AVCodec ff_vb_decoder;
+extern AVCodec ff_vble_decoder;
+extern AVCodec ff_vc1_decoder;
+extern AVCodec ff_vc1_crystalhd_decoder;
+extern AVCodec ff_vc1image_decoder;
+extern AVCodec ff_vc1_mmal_decoder;
+extern AVCodec ff_vc1_qsv_decoder;
+extern AVCodec ff_vc1_v4l2m2m_decoder;
+extern AVCodec ff_vc2_encoder;
+extern AVCodec ff_vcr1_decoder;
+extern AVCodec ff_vmdvideo_decoder;
+extern AVCodec ff_vmnc_decoder;
+extern AVCodec ff_vp3_decoder;
+extern AVCodec ff_vp5_decoder;
+extern AVCodec ff_vp6_decoder;
+extern AVCodec ff_vp6a_decoder;
+extern AVCodec ff_vp6f_decoder;
+extern AVCodec ff_vp7_decoder;
+extern AVCodec ff_vp8_decoder;
+extern AVCodec ff_vp8_rkmpp_decoder;
+extern AVCodec ff_vp8_v4l2m2m_decoder;
+extern AVCodec ff_vp9_decoder;
+extern AVCodec ff_vp9_rkmpp_decoder;
+extern AVCodec ff_vp9_v4l2m2m_decoder;
+extern AVCodec ff_vqa_decoder;
+extern AVCodec ff_bitpacked_decoder;
+extern AVCodec ff_webp_decoder;
+extern AVCodec ff_wrapped_avframe_encoder;
+extern AVCodec ff_wrapped_avframe_decoder;
+extern AVCodec ff_wmv1_encoder;
+extern AVCodec ff_wmv1_decoder;
+extern AVCodec ff_wmv2_encoder;
+extern AVCodec ff_wmv2_decoder;
+extern AVCodec ff_wmv3_decoder;
+extern AVCodec ff_wmv3_crystalhd_decoder;
+extern AVCodec ff_wmv3image_decoder;
+extern AVCodec ff_wnv1_decoder;
+extern AVCodec ff_xan_wc3_decoder;
+extern AVCodec ff_xan_wc4_decoder;
+extern AVCodec ff_xbm_encoder;
+extern AVCodec ff_xbm_decoder;
+extern AVCodec ff_xface_encoder;
+extern AVCodec ff_xface_decoder;
+extern AVCodec ff_xl_decoder;
+extern AVCodec ff_xpm_decoder;
+extern AVCodec ff_xwd_encoder;
+extern AVCodec ff_xwd_decoder;
+extern AVCodec ff_y41p_encoder;
+extern AVCodec ff_y41p_decoder;
+extern AVCodec ff_ylc_decoder;
+extern AVCodec ff_yop_decoder;
+extern AVCodec ff_yuv4_encoder;
+extern AVCodec ff_yuv4_decoder;
+extern AVCodec ff_zero12v_decoder;
+extern AVCodec ff_zerocodec_decoder;
+extern AVCodec ff_zlib_encoder;
+extern AVCodec ff_zlib_decoder;
+extern AVCodec ff_zmbv_encoder;
+extern AVCodec ff_zmbv_decoder;
+
+/* audio codecs */
+extern AVCodec ff_aac_encoder;
+extern AVCodec ff_aac_decoder;
+extern AVCodec ff_aac_fixed_decoder;
+extern AVCodec ff_aac_latm_decoder;
+extern AVCodec ff_ac3_encoder;
+extern AVCodec ff_ac3_decoder;
+extern AVCodec ff_ac3_fixed_encoder;
+extern AVCodec ff_ac3_fixed_decoder;
+extern AVCodec ff_alac_encoder;
+extern AVCodec ff_alac_decoder;
+extern AVCodec ff_als_decoder;
+extern AVCodec ff_amrnb_decoder;
+extern AVCodec ff_amrwb_decoder;
+extern AVCodec ff_ape_decoder;
+extern AVCodec ff_aptx_encoder;
+extern AVCodec ff_aptx_decoder;
+extern AVCodec ff_aptx_hd_encoder;
+extern AVCodec ff_aptx_hd_decoder;
+extern AVCodec ff_atrac1_decoder;
+extern AVCodec ff_atrac3_decoder;
+extern AVCodec ff_atrac3al_decoder;
+extern AVCodec ff_atrac3p_decoder;
+extern AVCodec ff_atrac3pal_decoder;
+extern AVCodec ff_binkaudio_dct_decoder;
+extern AVCodec ff_binkaudio_rdft_decoder;
+extern AVCodec ff_bmv_audio_decoder;
+extern AVCodec ff_cook_decoder;
+extern AVCodec ff_dca_encoder;
+extern AVCodec ff_dca_decoder;
+extern AVCodec ff_dolby_e_decoder;
+extern AVCodec ff_dsd_lsbf_decoder;
+extern AVCodec ff_dsd_msbf_decoder;
+extern AVCodec ff_dsd_lsbf_planar_decoder;
+extern AVCodec ff_dsd_msbf_planar_decoder;
+extern AVCodec ff_dsicinaudio_decoder;
+extern AVCodec ff_dss_sp_decoder;
+extern AVCodec ff_dst_decoder;
+extern AVCodec ff_eac3_encoder;
+extern AVCodec ff_eac3_decoder;
+extern AVCodec ff_evrc_decoder;
+extern AVCodec ff_ffwavesynth_decoder;
+extern AVCodec ff_flac_encoder;
+extern AVCodec ff_flac_decoder;
+extern AVCodec ff_g723_1_encoder;
+extern AVCodec ff_g723_1_decoder;
+extern AVCodec ff_g729_decoder;
+extern AVCodec ff_gsm_decoder;
+extern AVCodec ff_gsm_ms_decoder;
+extern AVCodec ff_iac_decoder;
+extern AVCodec ff_imc_decoder;
+extern AVCodec ff_interplay_acm_decoder;
+extern AVCodec ff_mace3_decoder;
+extern AVCodec ff_mace6_decoder;
+extern AVCodec ff_metasound_decoder;
+extern AVCodec ff_mlp_encoder;
+extern AVCodec ff_mlp_decoder;
+extern AVCodec ff_mp1_decoder;
+extern AVCodec ff_mp1float_decoder;
+extern AVCodec ff_mp2_encoder;
+extern AVCodec ff_mp2_decoder;
+extern AVCodec ff_mp2float_decoder;
+extern AVCodec ff_mp2fixed_encoder;
+extern AVCodec ff_mp3_decoder;
+extern AVCodec ff_mp3float_decoder;
+extern AVCodec ff_mp3adu_decoder;
+extern AVCodec ff_mp3adufloat_decoder;
+extern AVCodec ff_mp3on4_decoder;
+extern AVCodec ff_mp3on4float_decoder;
+extern AVCodec ff_mpc7_decoder;
+extern AVCodec ff_mpc8_decoder;
+extern AVCodec ff_nellymoser_encoder;
+extern AVCodec ff_nellymoser_decoder;
+extern AVCodec ff_on2avc_decoder;
+extern AVCodec ff_opus_encoder;
+extern AVCodec ff_opus_decoder;
+extern AVCodec ff_paf_audio_decoder;
+extern AVCodec ff_qcelp_decoder;
+extern AVCodec ff_qdm2_decoder;
+extern AVCodec ff_qdmc_decoder;
+extern AVCodec ff_ra_144_encoder;
+extern AVCodec ff_ra_144_decoder;
+extern AVCodec ff_ra_288_decoder;
+extern AVCodec ff_ralf_decoder;
+extern AVCodec ff_sbc_encoder;
+extern AVCodec ff_sbc_decoder;
+extern AVCodec ff_shorten_decoder;
+extern AVCodec ff_sipr_decoder;
+extern AVCodec ff_smackaud_decoder;
+extern AVCodec ff_sonic_encoder;
+extern AVCodec ff_sonic_decoder;
+extern AVCodec ff_sonic_ls_encoder;
+extern AVCodec ff_tak_decoder;
+extern AVCodec ff_truehd_encoder;
+extern AVCodec ff_truehd_decoder;
+extern AVCodec ff_truespeech_decoder;
+extern AVCodec ff_tta_encoder;
+extern AVCodec ff_tta_decoder;
+extern AVCodec ff_twinvq_decoder;
+extern AVCodec ff_vmdaudio_decoder;
+extern AVCodec ff_vorbis_encoder;
+extern AVCodec ff_vorbis_decoder;
+extern AVCodec ff_wavpack_encoder;
+extern AVCodec ff_wavpack_decoder;
+extern AVCodec ff_wmalossless_decoder;
+extern AVCodec ff_wmapro_decoder;
+extern AVCodec ff_wmav1_encoder;
+extern AVCodec ff_wmav1_decoder;
+extern AVCodec ff_wmav2_encoder;
+extern AVCodec ff_wmav2_decoder;
+extern AVCodec ff_wmavoice_decoder;
+extern AVCodec ff_ws_snd1_decoder;
+extern AVCodec ff_xma1_decoder;
+extern AVCodec ff_xma2_decoder;
+
+/* PCM codecs */
+extern AVCodec ff_pcm_alaw_encoder;
+extern AVCodec ff_pcm_alaw_decoder;
+extern AVCodec ff_pcm_bluray_decoder;
+extern AVCodec ff_pcm_dvd_decoder;
+extern AVCodec ff_pcm_f16le_decoder;
+extern AVCodec ff_pcm_f24le_decoder;
+extern AVCodec ff_pcm_f32be_encoder;
+extern AVCodec ff_pcm_f32be_decoder;
+extern AVCodec ff_pcm_f32le_encoder;
+extern AVCodec ff_pcm_f32le_decoder;
+extern AVCodec ff_pcm_f64be_encoder;
+extern AVCodec ff_pcm_f64be_decoder;
+extern AVCodec ff_pcm_f64le_encoder;
+extern AVCodec ff_pcm_f64le_decoder;
+extern AVCodec ff_pcm_lxf_decoder;
+extern AVCodec ff_pcm_mulaw_encoder;
+extern AVCodec ff_pcm_mulaw_decoder;
+extern AVCodec ff_pcm_s8_encoder;
+extern AVCodec ff_pcm_s8_decoder;
+extern AVCodec ff_pcm_s8_planar_encoder;
+extern AVCodec ff_pcm_s8_planar_decoder;
+extern AVCodec ff_pcm_s16be_encoder;
+extern AVCodec ff_pcm_s16be_decoder;
+extern AVCodec ff_pcm_s16be_planar_encoder;
+extern AVCodec ff_pcm_s16be_planar_decoder;
+extern AVCodec ff_pcm_s16le_encoder;
+extern AVCodec ff_pcm_s16le_decoder;
+extern AVCodec ff_pcm_s16le_planar_encoder;
+extern AVCodec ff_pcm_s16le_planar_decoder;
+extern AVCodec ff_pcm_s24be_encoder;
+extern AVCodec ff_pcm_s24be_decoder;
+extern AVCodec ff_pcm_s24daud_encoder;
+extern AVCodec ff_pcm_s24daud_decoder;
+extern AVCodec ff_pcm_s24le_encoder;
+extern AVCodec ff_pcm_s24le_decoder;
+extern AVCodec ff_pcm_s24le_planar_encoder;
+extern AVCodec ff_pcm_s24le_planar_decoder;
+extern AVCodec ff_pcm_s32be_encoder;
+extern AVCodec ff_pcm_s32be_decoder;
+extern AVCodec ff_pcm_s32le_encoder;
+extern AVCodec ff_pcm_s32le_decoder;
+extern AVCodec ff_pcm_s32le_planar_encoder;
+extern AVCodec ff_pcm_s32le_planar_decoder;
+extern AVCodec ff_pcm_s64be_encoder;
+extern AVCodec ff_pcm_s64be_decoder;
+extern AVCodec ff_pcm_s64le_encoder;
+extern AVCodec ff_pcm_s64le_decoder;
+extern AVCodec ff_pcm_u8_encoder;
+extern AVCodec ff_pcm_u8_decoder;
+extern AVCodec ff_pcm_u16be_encoder;
+extern AVCodec ff_pcm_u16be_decoder;
+extern AVCodec ff_pcm_u16le_encoder;
+extern AVCodec ff_pcm_u16le_decoder;
+extern AVCodec ff_pcm_u24be_encoder;
+extern AVCodec ff_pcm_u24be_decoder;
+extern AVCodec ff_pcm_u24le_encoder;
+extern AVCodec ff_pcm_u24le_decoder;
+extern AVCodec ff_pcm_u32be_encoder;
+extern AVCodec ff_pcm_u32be_decoder;
+extern AVCodec ff_pcm_u32le_encoder;
+extern AVCodec ff_pcm_u32le_decoder;
+extern AVCodec ff_pcm_zork_decoder;
+
+/* DPCM codecs */
+extern AVCodec ff_gremlin_dpcm_decoder;
+extern AVCodec ff_interplay_dpcm_decoder;
+extern AVCodec ff_roq_dpcm_encoder;
+extern AVCodec ff_roq_dpcm_decoder;
+extern AVCodec ff_sol_dpcm_decoder;
+extern AVCodec ff_xan_dpcm_decoder;
+
+/* ADPCM codecs */
+extern AVCodec ff_adpcm_4xm_decoder;
+extern AVCodec ff_adpcm_adx_encoder;
+extern AVCodec ff_adpcm_adx_decoder;
+extern AVCodec ff_adpcm_afc_decoder;
+extern AVCodec ff_adpcm_aica_decoder;
+extern AVCodec ff_adpcm_ct_decoder;
+extern AVCodec ff_adpcm_dtk_decoder;
+extern AVCodec ff_adpcm_ea_decoder;
+extern AVCodec ff_adpcm_ea_maxis_xa_decoder;
+extern AVCodec ff_adpcm_ea_r1_decoder;
+extern AVCodec ff_adpcm_ea_r2_decoder;
+extern AVCodec ff_adpcm_ea_r3_decoder;
+extern AVCodec ff_adpcm_ea_xas_decoder;
+extern AVCodec ff_adpcm_g722_encoder;
+extern AVCodec ff_adpcm_g722_decoder;
+extern AVCodec ff_adpcm_g726_encoder;
+extern AVCodec ff_adpcm_g726_decoder;
+extern AVCodec ff_adpcm_g726le_encoder;
+extern AVCodec ff_adpcm_g726le_decoder;
+extern AVCodec ff_adpcm_ima_amv_decoder;
+extern AVCodec ff_adpcm_ima_apc_decoder;
+extern AVCodec ff_adpcm_ima_dat4_decoder;
+extern AVCodec ff_adpcm_ima_dk3_decoder;
+extern AVCodec ff_adpcm_ima_dk4_decoder;
+extern AVCodec ff_adpcm_ima_ea_eacs_decoder;
+extern AVCodec ff_adpcm_ima_ea_sead_decoder;
+extern AVCodec ff_adpcm_ima_iss_decoder;
+extern AVCodec ff_adpcm_ima_oki_decoder;
+extern AVCodec ff_adpcm_ima_qt_encoder;
+extern AVCodec ff_adpcm_ima_qt_decoder;
+extern AVCodec ff_adpcm_ima_rad_decoder;
+extern AVCodec ff_adpcm_ima_smjpeg_decoder;
+extern AVCodec ff_adpcm_ima_wav_encoder;
+extern AVCodec ff_adpcm_ima_wav_decoder;
+extern AVCodec ff_adpcm_ima_ws_decoder;
+extern AVCodec ff_adpcm_ms_encoder;
+extern AVCodec ff_adpcm_ms_decoder;
+extern AVCodec ff_adpcm_mtaf_decoder;
+extern AVCodec ff_adpcm_psx_decoder;
+extern AVCodec ff_adpcm_sbpro_2_decoder;
+extern AVCodec ff_adpcm_sbpro_3_decoder;
+extern AVCodec ff_adpcm_sbpro_4_decoder;
+extern AVCodec ff_adpcm_swf_encoder;
+extern AVCodec ff_adpcm_swf_decoder;
+extern AVCodec ff_adpcm_thp_decoder;
+extern AVCodec ff_adpcm_thp_le_decoder;
+extern AVCodec ff_adpcm_vima_decoder;
+extern AVCodec ff_adpcm_xa_decoder;
+extern AVCodec ff_adpcm_yamaha_encoder;
+extern AVCodec ff_adpcm_yamaha_decoder;
+
+/* subtitles */
+extern AVCodec ff_ssa_encoder;
+extern AVCodec ff_ssa_decoder;
+extern AVCodec ff_ass_encoder;
+extern AVCodec ff_ass_decoder;
+extern AVCodec ff_ccaption_decoder;
+extern AVCodec ff_dvbsub_encoder;
+extern AVCodec ff_dvbsub_decoder;
+extern AVCodec ff_dvdsub_encoder;
+extern AVCodec ff_dvdsub_decoder;
+extern AVCodec ff_jacosub_decoder;
+extern AVCodec ff_microdvd_decoder;
+extern AVCodec ff_movtext_encoder;
+extern AVCodec ff_movtext_decoder;
+extern AVCodec ff_mpl2_decoder;
+extern AVCodec ff_pgssub_decoder;
+extern AVCodec ff_pjs_decoder;
+extern AVCodec ff_realtext_decoder;
+extern AVCodec ff_sami_decoder;
+extern AVCodec ff_srt_encoder;
+extern AVCodec ff_srt_decoder;
+extern AVCodec ff_stl_decoder;
+extern AVCodec ff_subrip_encoder;
+extern AVCodec ff_subrip_decoder;
+extern AVCodec ff_subviewer_decoder;
+extern AVCodec ff_subviewer1_decoder;
+extern AVCodec ff_text_encoder;
+extern AVCodec ff_text_decoder;
+extern AVCodec ff_vplayer_decoder;
+extern AVCodec ff_webvtt_encoder;
+extern AVCodec ff_webvtt_decoder;
+extern AVCodec ff_xsub_encoder;
+extern AVCodec ff_xsub_decoder;
+
+/* external libraries */
+extern AVCodec ff_aac_at_encoder;
+extern AVCodec ff_aac_at_decoder;
+extern AVCodec ff_ac3_at_decoder;
+extern AVCodec ff_adpcm_ima_qt_at_decoder;
+extern AVCodec ff_alac_at_encoder;
+extern AVCodec ff_alac_at_decoder;
+extern AVCodec ff_amr_nb_at_decoder;
+extern AVCodec ff_eac3_at_decoder;
+extern AVCodec ff_gsm_ms_at_decoder;
+extern AVCodec ff_ilbc_at_encoder;
+extern AVCodec ff_ilbc_at_decoder;
+extern AVCodec ff_mp1_at_decoder;
+extern AVCodec ff_mp2_at_decoder;
+extern AVCodec ff_mp3_at_decoder;
+extern AVCodec ff_pcm_alaw_at_encoder;
+extern AVCodec ff_pcm_alaw_at_decoder;
+extern AVCodec ff_pcm_mulaw_at_encoder;
+extern AVCodec ff_pcm_mulaw_at_decoder;
+extern AVCodec ff_qdmc_at_decoder;
+extern AVCodec ff_qdm2_at_decoder;
+extern AVCodec ff_libcelt_decoder;
+extern AVCodec ff_libcodec2_encoder;
+extern AVCodec ff_libcodec2_decoder;
+extern AVCodec ff_libfdk_aac_encoder;
+extern AVCodec ff_libfdk_aac_decoder;
+extern AVCodec ff_libgsm_encoder;
+extern AVCodec ff_libgsm_decoder;
+extern AVCodec ff_libgsm_ms_encoder;
+extern AVCodec ff_libgsm_ms_decoder;
+extern AVCodec ff_libilbc_encoder;
+extern AVCodec ff_libilbc_decoder;
+extern AVCodec ff_libmp3lame_encoder;
+extern AVCodec ff_libopencore_amrnb_encoder;
+extern AVCodec ff_libopencore_amrnb_decoder;
+extern AVCodec ff_libopencore_amrwb_decoder;
+extern AVCodec ff_libopenjpeg_encoder;
+extern AVCodec ff_libopenjpeg_decoder;
+extern AVCodec ff_libopus_encoder;
+extern AVCodec ff_libopus_decoder;
+extern AVCodec ff_librsvg_decoder;
+extern AVCodec ff_libshine_encoder;
+extern AVCodec ff_libspeex_encoder;
+extern AVCodec ff_libspeex_decoder;
+extern AVCodec ff_libtheora_encoder;
+extern AVCodec ff_libtwolame_encoder;
+extern AVCodec ff_libvo_amrwbenc_encoder;
+extern AVCodec ff_libvorbis_encoder;
+extern AVCodec ff_libvorbis_decoder;
+extern AVCodec ff_libvpx_vp8_encoder;
+extern AVCodec ff_libvpx_vp8_decoder;
+extern AVCodec ff_libvpx_vp9_encoder;
+extern AVCodec ff_libvpx_vp9_decoder;
+extern AVCodec ff_libwavpack_encoder;
+/* preferred over libwebp */
+extern AVCodec ff_libwebp_anim_encoder;
+extern AVCodec ff_libwebp_encoder;
+extern AVCodec ff_libx262_encoder;
+extern AVCodec ff_libx264_encoder;
+extern AVCodec ff_libx264rgb_encoder;
+extern AVCodec ff_libx265_encoder;
+extern AVCodec ff_libxavs_encoder;
+extern AVCodec ff_libxvid_encoder;
+extern AVCodec ff_libzvbi_teletext_decoder;
+
+/* text */
+extern AVCodec ff_bintext_decoder;
+extern AVCodec ff_xbin_decoder;
+extern AVCodec ff_idf_decoder;
-#define REGISTER_DECODER(X, x) \
- { \
- extern AVCodec ff_##x##_decoder; \
- if (CONFIG_##X##_DECODER) \
- avcodec_register(&ff_##x##_decoder); \
+/* external libraries, that shouldn't be used by default if one of the
+ * above is available */
+extern AVCodec ff_h263_v4l2m2m_encoder;
+extern AVCodec ff_libopenh264_encoder;
+extern AVCodec ff_libopenh264_decoder;
+extern AVCodec ff_h264_amf_encoder;
+extern AVCodec ff_h264_cuvid_decoder;
+extern AVCodec ff_h264_nvenc_encoder;
+extern AVCodec ff_h264_omx_encoder;
+extern AVCodec ff_h264_qsv_encoder;
+extern AVCodec ff_h264_v4l2m2m_encoder;
+extern AVCodec ff_h264_vaapi_encoder;
+extern AVCodec ff_h264_videotoolbox_encoder;
+#if FF_API_NVENC_OLD_NAME
+extern AVCodec ff_nvenc_encoder;
+extern AVCodec ff_nvenc_h264_encoder;
+extern AVCodec ff_nvenc_hevc_encoder;
+#endif
+extern AVCodec ff_hevc_amf_encoder;
+extern AVCodec ff_hevc_cuvid_decoder;
+extern AVCodec ff_hevc_mediacodec_decoder;
+extern AVCodec ff_hevc_nvenc_encoder;
+extern AVCodec ff_hevc_qsv_encoder;
+extern AVCodec ff_hevc_v4l2m2m_encoder;
+extern AVCodec ff_hevc_vaapi_encoder;
+extern AVCodec ff_hevc_videotoolbox_encoder;
+extern AVCodec ff_libkvazaar_encoder;
+extern AVCodec ff_mjpeg_cuvid_decoder;
+extern AVCodec ff_mjpeg_qsv_encoder;
+extern AVCodec ff_mjpeg_vaapi_encoder;
+extern AVCodec ff_mpeg1_cuvid_decoder;
+extern AVCodec ff_mpeg2_cuvid_decoder;
+extern AVCodec ff_mpeg2_qsv_encoder;
+extern AVCodec ff_mpeg2_vaapi_encoder;
+extern AVCodec ff_mpeg4_cuvid_decoder;
+extern AVCodec ff_mpeg4_mediacodec_decoder;
+extern AVCodec ff_mpeg4_v4l2m2m_encoder;
+extern AVCodec ff_vc1_cuvid_decoder;
+extern AVCodec ff_vp8_cuvid_decoder;
+extern AVCodec ff_vp8_mediacodec_decoder;
+extern AVCodec ff_vp8_qsv_decoder;
+extern AVCodec ff_vp8_v4l2m2m_encoder;
+extern AVCodec ff_vp8_vaapi_encoder;
+extern AVCodec ff_vp9_cuvid_decoder;
+extern AVCodec ff_vp9_mediacodec_decoder;
+extern AVCodec ff_vp9_vaapi_encoder;
+
+#include "libavcodec/codec_list.c"
+
+static AVOnce av_codec_static_init = AV_ONCE_INIT;
+static void av_codec_init_static(void)
+{
+ for (int i = 0; codec_list[i]; i++) {
+ if (codec_list[i]->init_static_data)
+ codec_list[i]->init_static_data((AVCodec*)codec_list[i]);
}
+}
+
+const AVCodec *av_codec_iterate(void **opaque)
+{
+ uintptr_t i = (uintptr_t)*opaque;
+ const AVCodec *c = codec_list[i];
+
+ ff_thread_once(&av_codec_static_init, av_codec_init_static);
+
+ if (c)
+ *opaque = (void*)(i + 1);
+
+ return c;
+}
-#define REGISTER_ENCDEC(X, x) REGISTER_ENCODER(X, x); REGISTER_DECODER(X, x)
+#if FF_API_NEXT
+FF_DISABLE_DEPRECATION_WARNINGS
+static AVOnce av_codec_next_init = AV_ONCE_INIT;
-#define REGISTER_PARSER(X, x) \
- { \
- extern AVCodecParser ff_##x##_parser; \
- if (CONFIG_##X##_PARSER) \
- av_register_codec_parser(&ff_##x##_parser); \
+static void av_codec_init_next(void)
+{
+ AVCodec *prev = NULL, *p;
+ void *i = 0;
+ while ((p = (AVCodec*)av_codec_iterate(&i))) {
+ if (prev)
+ prev->next = p;
+ prev = p;
}
+}
+
-static void register_all(void)
+
+av_cold void avcodec_register(AVCodec *codec)
{
- /* video codecs */
- REGISTER_ENCODER(A64MULTI, a64multi);
- REGISTER_ENCODER(A64MULTI5, a64multi5);
- REGISTER_DECODER(AASC, aasc);
- REGISTER_DECODER(AIC, aic);
- REGISTER_ENCDEC (ALIAS_PIX, alias_pix);
- REGISTER_ENCDEC (AMV, amv);
- REGISTER_DECODER(ANM, anm);
- REGISTER_DECODER(ANSI, ansi);
- REGISTER_ENCDEC (APNG, apng);
- REGISTER_ENCDEC (ASV1, asv1);
- REGISTER_ENCDEC (ASV2, asv2);
- REGISTER_DECODER(AURA, aura);
- REGISTER_DECODER(AURA2, aura2);
- REGISTER_ENCDEC (AVRP, avrp);
- REGISTER_DECODER(AVRN, avrn);
- REGISTER_DECODER(AVS, avs);
- REGISTER_ENCDEC (AVUI, avui);
- REGISTER_ENCDEC (AYUV, ayuv);
- REGISTER_DECODER(BETHSOFTVID, bethsoftvid);
- REGISTER_DECODER(BFI, bfi);
- REGISTER_DECODER(BINK, bink);
- REGISTER_ENCDEC (BMP, bmp);
- REGISTER_DECODER(BMV_VIDEO, bmv_video);
- REGISTER_DECODER(BRENDER_PIX, brender_pix);
- REGISTER_DECODER(C93, c93);
- REGISTER_DECODER(CAVS, cavs);
- REGISTER_DECODER(CDGRAPHICS, cdgraphics);
- REGISTER_DECODER(CDXL, cdxl);
- REGISTER_DECODER(CFHD, cfhd);
- REGISTER_ENCDEC (CINEPAK, cinepak);
- REGISTER_DECODER(CLEARVIDEO, clearvideo);
- REGISTER_ENCDEC (CLJR, cljr);
- REGISTER_DECODER(CLLC, cllc);
- REGISTER_ENCDEC (COMFORTNOISE, comfortnoise);
- REGISTER_DECODER(CPIA, cpia);
- REGISTER_DECODER(CSCD, cscd);
- REGISTER_DECODER(CYUV, cyuv);
- REGISTER_DECODER(DDS, dds);
- REGISTER_DECODER(DFA, dfa);
- REGISTER_DECODER(DIRAC, dirac);
- REGISTER_ENCDEC (DNXHD, dnxhd);
- REGISTER_ENCDEC (DPX, dpx);
- REGISTER_DECODER(DSICINVIDEO, dsicinvideo);
- REGISTER_DECODER(DVAUDIO, dvaudio);
- REGISTER_ENCDEC (DVVIDEO, dvvideo);
- REGISTER_DECODER(DXA, dxa);
- REGISTER_DECODER(DXTORY, dxtory);
- REGISTER_DECODER(DXV, dxv);
- REGISTER_DECODER(EACMV, eacmv);
- REGISTER_DECODER(EAMAD, eamad);
- REGISTER_DECODER(EATGQ, eatgq);
- REGISTER_DECODER(EATGV, eatgv);
- REGISTER_DECODER(EATQI, eatqi);
- REGISTER_DECODER(EIGHTBPS, eightbps);
- REGISTER_DECODER(EIGHTSVX_EXP, eightsvx_exp);
- REGISTER_DECODER(EIGHTSVX_FIB, eightsvx_fib);
- REGISTER_DECODER(ESCAPE124, escape124);
- REGISTER_DECODER(ESCAPE130, escape130);
- REGISTER_DECODER(EXR, exr);
- REGISTER_ENCDEC (FFV1, ffv1);
- REGISTER_ENCDEC (FFVHUFF, ffvhuff);
- REGISTER_DECODER(FIC, fic);
- REGISTER_ENCDEC (FITS, fits);
- REGISTER_ENCDEC (FLASHSV, flashsv);
- REGISTER_ENCDEC (FLASHSV2, flashsv2);
- REGISTER_DECODER(FLIC, flic);
- REGISTER_ENCDEC (FLV, flv);
- REGISTER_DECODER(FMVC, fmvc);
- REGISTER_DECODER(FOURXM, fourxm);
- REGISTER_DECODER(FRAPS, fraps);
- REGISTER_DECODER(FRWU, frwu);
- REGISTER_DECODER(G2M, g2m);
- REGISTER_DECODER(GDV, gdv);
- REGISTER_ENCDEC (GIF, gif);
- REGISTER_ENCDEC (H261, h261);
- REGISTER_ENCDEC (H263, h263);
- REGISTER_DECODER(H263I, h263i);
- REGISTER_ENCDEC (H263P, h263p);
- REGISTER_DECODER(H263_V4L2M2M, h263_v4l2m2m);
- REGISTER_DECODER(H264, h264);
- REGISTER_DECODER(H264_CRYSTALHD, h264_crystalhd);
- REGISTER_DECODER(H264_V4L2M2M, h264_v4l2m2m);
- REGISTER_DECODER(H264_MEDIACODEC, h264_mediacodec);
- REGISTER_DECODER(H264_MMAL, h264_mmal);
- REGISTER_DECODER(H264_QSV, h264_qsv);
- REGISTER_DECODER(H264_RKMPP, h264_rkmpp);
- REGISTER_ENCDEC (HAP, hap);
- REGISTER_DECODER(HEVC, hevc);
- REGISTER_DECODER(HEVC_QSV, hevc_qsv);
- REGISTER_DECODER(HEVC_RKMPP, hevc_rkmpp);
- REGISTER_DECODER(HEVC_V4L2M2M, hevc_v4l2m2m);
- REGISTER_DECODER(HNM4_VIDEO, hnm4_video);
- REGISTER_DECODER(HQ_HQA, hq_hqa);
- REGISTER_DECODER(HQX, hqx);
- REGISTER_ENCDEC (HUFFYUV, huffyuv);
- REGISTER_DECODER(IDCIN, idcin);
- REGISTER_DECODER(IFF_ILBM, iff_ilbm);
- REGISTER_DECODER(INDEO2, indeo2);
- REGISTER_DECODER(INDEO3, indeo3);
- REGISTER_DECODER(INDEO4, indeo4);
- REGISTER_DECODER(INDEO5, indeo5);
- REGISTER_DECODER(INTERPLAY_VIDEO, interplay_video);
- REGISTER_ENCDEC (JPEG2000, jpeg2000);
- REGISTER_ENCDEC (JPEGLS, jpegls);
- REGISTER_DECODER(JV, jv);
- REGISTER_DECODER(KGV1, kgv1);
- REGISTER_DECODER(KMVC, kmvc);
- REGISTER_DECODER(LAGARITH, lagarith);
- REGISTER_ENCODER(LJPEG, ljpeg);
- REGISTER_DECODER(LOCO, loco);
- REGISTER_DECODER(M101, m101);
- REGISTER_ENCDEC (MAGICYUV, magicyuv);
- REGISTER_DECODER(MDEC, mdec);
- REGISTER_DECODER(MIMIC, mimic);
- REGISTER_ENCDEC (MJPEG, mjpeg);
- REGISTER_DECODER(MJPEGB, mjpegb);
- REGISTER_DECODER(MMVIDEO, mmvideo);
- REGISTER_DECODER(MOTIONPIXELS, motionpixels);
- REGISTER_ENCDEC (MPEG1VIDEO, mpeg1video);
- REGISTER_ENCDEC (MPEG2VIDEO, mpeg2video);
- REGISTER_ENCDEC (MPEG4, mpeg4);
- REGISTER_DECODER(MPEG4_CRYSTALHD, mpeg4_crystalhd);
- REGISTER_DECODER(MPEG4_V4L2M2M, mpeg4_v4l2m2m);
- REGISTER_DECODER(MPEG4_MMAL, mpeg4_mmal);
- REGISTER_DECODER(MPEGVIDEO, mpegvideo);
- REGISTER_DECODER(MPEG1_V4L2M2M, mpeg1_v4l2m2m);
- REGISTER_DECODER(MPEG2_MMAL, mpeg2_mmal);
- REGISTER_DECODER(MPEG2_CRYSTALHD, mpeg2_crystalhd);
- REGISTER_DECODER(MPEG2_V4L2M2M, mpeg2_v4l2m2m);
- REGISTER_DECODER(MPEG2_QSV, mpeg2_qsv);
- REGISTER_DECODER(MPEG2_MEDIACODEC, mpeg2_mediacodec);
- REGISTER_DECODER(MSA1, msa1);
- REGISTER_DECODER(MSCC, mscc);
- REGISTER_DECODER(MSMPEG4V1, msmpeg4v1);
- REGISTER_ENCDEC (MSMPEG4V2, msmpeg4v2);
- REGISTER_ENCDEC (MSMPEG4V3, msmpeg4v3);
- REGISTER_DECODER(MSMPEG4_CRYSTALHD, msmpeg4_crystalhd);
- REGISTER_DECODER(MSRLE, msrle);
- REGISTER_DECODER(MSS1, mss1);
- REGISTER_DECODER(MSS2, mss2);
- REGISTER_ENCDEC (MSVIDEO1, msvideo1);
- REGISTER_DECODER(MSZH, mszh);
- REGISTER_DECODER(MTS2, mts2);
- REGISTER_DECODER(MVC1, mvc1);
- REGISTER_DECODER(MVC2, mvc2);
- REGISTER_DECODER(MXPEG, mxpeg);
- REGISTER_DECODER(NUV, nuv);
- REGISTER_DECODER(PAF_VIDEO, paf_video);
- REGISTER_ENCDEC (PAM, pam);
- REGISTER_ENCDEC (PBM, pbm);
- REGISTER_ENCDEC (PCX, pcx);
- REGISTER_ENCDEC (PGM, pgm);
- REGISTER_ENCDEC (PGMYUV, pgmyuv);
- REGISTER_DECODER(PICTOR, pictor);
- REGISTER_DECODER(PIXLET, pixlet);
- REGISTER_ENCDEC (PNG, png);
- REGISTER_ENCDEC (PPM, ppm);
- REGISTER_ENCDEC (PRORES, prores);
- REGISTER_ENCODER(PRORES_AW, prores_aw);
- REGISTER_ENCODER(PRORES_KS, prores_ks);
- REGISTER_DECODER(PRORES_LGPL, prores_lgpl);
- REGISTER_DECODER(PSD, psd);
- REGISTER_DECODER(PTX, ptx);
- REGISTER_DECODER(QDRAW, qdraw);
- REGISTER_DECODER(QPEG, qpeg);
- REGISTER_ENCDEC (QTRLE, qtrle);
- REGISTER_ENCDEC (R10K, r10k);
- REGISTER_ENCDEC (R210, r210);
- REGISTER_ENCDEC (RAWVIDEO, rawvideo);
- REGISTER_DECODER(RL2, rl2);
- REGISTER_ENCDEC (ROQ, roq);
- REGISTER_DECODER(RPZA, rpza);
- REGISTER_DECODER(RSCC, rscc);
- REGISTER_ENCDEC (RV10, rv10);
- REGISTER_ENCDEC (RV20, rv20);
- REGISTER_DECODER(RV30, rv30);
- REGISTER_DECODER(RV40, rv40);
- REGISTER_ENCDEC (S302M, s302m);
- REGISTER_DECODER(SANM, sanm);
- REGISTER_DECODER(SCPR, scpr);
- REGISTER_DECODER(SCREENPRESSO, screenpresso);
- REGISTER_DECODER(SDX2_DPCM, sdx2_dpcm);
- REGISTER_ENCDEC (SGI, sgi);
- REGISTER_DECODER(SGIRLE, sgirle);
- REGISTER_DECODER(SHEERVIDEO, sheervideo);
- REGISTER_DECODER(SMACKER, smacker);
- REGISTER_DECODER(SMC, smc);
- REGISTER_DECODER(SMVJPEG, smvjpeg);
- REGISTER_ENCDEC (SNOW, snow);
- REGISTER_DECODER(SP5X, sp5x);
- REGISTER_DECODER(SPEEDHQ, speedhq);
- REGISTER_DECODER(SRGC, srgc);
- REGISTER_ENCDEC (SUNRAST, sunrast);
- REGISTER_ENCDEC (SVQ1, svq1);
- REGISTER_DECODER(SVQ3, svq3);
- REGISTER_ENCDEC (TARGA, targa);
- REGISTER_DECODER(TARGA_Y216, targa_y216);
- REGISTER_DECODER(TDSC, tdsc);
- REGISTER_DECODER(THEORA, theora);
- REGISTER_DECODER(THP, thp);
- REGISTER_DECODER(TIERTEXSEQVIDEO, tiertexseqvideo);
- REGISTER_ENCDEC (TIFF, tiff);
- REGISTER_DECODER(TMV, tmv);
- REGISTER_DECODER(TRUEMOTION1, truemotion1);
- REGISTER_DECODER(TRUEMOTION2, truemotion2);
- REGISTER_DECODER(TRUEMOTION2RT, truemotion2rt);
- REGISTER_DECODER(TSCC, tscc);
- REGISTER_DECODER(TSCC2, tscc2);
- REGISTER_DECODER(TXD, txd);
- REGISTER_DECODER(ULTI, ulti);
- REGISTER_ENCDEC (UTVIDEO, utvideo);
- REGISTER_ENCDEC (V210, v210);
- REGISTER_DECODER(V210X, v210x);
- REGISTER_ENCDEC (V308, v308);
- REGISTER_ENCDEC (V408, v408);
- REGISTER_ENCDEC (V410, v410);
- REGISTER_DECODER(VB, vb);
- REGISTER_DECODER(VBLE, vble);
- REGISTER_DECODER(VC1, vc1);
- REGISTER_DECODER(VC1_CRYSTALHD, vc1_crystalhd);
- REGISTER_DECODER(VC1IMAGE, vc1image);
- REGISTER_DECODER(VC1_MMAL, vc1_mmal);
- REGISTER_DECODER(VC1_QSV, vc1_qsv);
- REGISTER_DECODER(VC1_V4L2M2M, vc1_v4l2m2m);
- REGISTER_ENCODER(VC2, vc2);
- REGISTER_DECODER(VCR1, vcr1);
- REGISTER_DECODER(VMDVIDEO, vmdvideo);
- REGISTER_DECODER(VMNC, vmnc);
- REGISTER_DECODER(VP3, vp3);
- REGISTER_DECODER(VP5, vp5);
- REGISTER_DECODER(VP6, vp6);
- REGISTER_DECODER(VP6A, vp6a);
- REGISTER_DECODER(VP6F, vp6f);
- REGISTER_DECODER(VP7, vp7);
- REGISTER_DECODER(VP8, vp8);
- REGISTER_DECODER(VP8_RKMPP, vp8_rkmpp);
- REGISTER_DECODER(VP8_V4L2M2M, vp8_v4l2m2m);
- REGISTER_DECODER(VP9, vp9);
- REGISTER_DECODER(VP9_RKMPP, vp9_rkmpp);
- REGISTER_DECODER(VP9_V4L2M2M, vp9_v4l2m2m);
- REGISTER_DECODER(VQA, vqa);
- REGISTER_DECODER(BITPACKED, bitpacked);
- REGISTER_DECODER(WEBP, webp);
- REGISTER_ENCDEC (WRAPPED_AVFRAME, wrapped_avframe);
- REGISTER_ENCDEC (WMV1, wmv1);
- REGISTER_ENCDEC (WMV2, wmv2);
- REGISTER_DECODER(WMV3, wmv3);
- REGISTER_DECODER(WMV3_CRYSTALHD, wmv3_crystalhd);
- REGISTER_DECODER(WMV3IMAGE, wmv3image);
- REGISTER_DECODER(WNV1, wnv1);
- REGISTER_DECODER(XAN_WC3, xan_wc3);
- REGISTER_DECODER(XAN_WC4, xan_wc4);
- REGISTER_ENCDEC (XBM, xbm);
- REGISTER_ENCDEC (XFACE, xface);
- REGISTER_DECODER(XL, xl);
- REGISTER_DECODER(XPM, xpm);
- REGISTER_ENCDEC (XWD, xwd);
- REGISTER_ENCDEC (Y41P, y41p);
- REGISTER_DECODER(YLC, ylc);
- REGISTER_DECODER(YOP, yop);
- REGISTER_ENCDEC (YUV4, yuv4);
- REGISTER_DECODER(ZERO12V, zero12v);
- REGISTER_DECODER(ZEROCODEC, zerocodec);
- REGISTER_ENCDEC (ZLIB, zlib);
- REGISTER_ENCDEC (ZMBV, zmbv);
-
- /* audio codecs */
- REGISTER_ENCDEC (AAC, aac);
- REGISTER_DECODER(AAC_FIXED, aac_fixed);
- REGISTER_DECODER(AAC_LATM, aac_latm);
- REGISTER_ENCDEC (AC3, ac3);
- REGISTER_ENCDEC (AC3_FIXED, ac3_fixed);
- REGISTER_ENCDEC (ALAC, alac);
- REGISTER_DECODER(ALS, als);
- REGISTER_DECODER(AMRNB, amrnb);
- REGISTER_DECODER(AMRWB, amrwb);
- REGISTER_DECODER(APE, ape);
- REGISTER_ENCDEC (APTX, aptx);
- REGISTER_DECODER(ATRAC1, atrac1);
- REGISTER_DECODER(ATRAC3, atrac3);
- REGISTER_DECODER(ATRAC3AL, atrac3al);
- REGISTER_DECODER(ATRAC3P, atrac3p);
- REGISTER_DECODER(ATRAC3PAL, atrac3pal);
- REGISTER_DECODER(BINKAUDIO_DCT, binkaudio_dct);
- REGISTER_DECODER(BINKAUDIO_RDFT, binkaudio_rdft);
- REGISTER_DECODER(BMV_AUDIO, bmv_audio);
- REGISTER_DECODER(COOK, cook);
- REGISTER_ENCDEC (DCA, dca);
- REGISTER_DECODER(DOLBY_E, dolby_e);
- REGISTER_DECODER(DSD_LSBF, dsd_lsbf);
- REGISTER_DECODER(DSD_MSBF, dsd_msbf);
- REGISTER_DECODER(DSD_LSBF_PLANAR, dsd_lsbf_planar);
- REGISTER_DECODER(DSD_MSBF_PLANAR, dsd_msbf_planar);
- REGISTER_DECODER(DSICINAUDIO, dsicinaudio);
- REGISTER_DECODER(DSS_SP, dss_sp);
- REGISTER_DECODER(DST, dst);
- REGISTER_ENCDEC (EAC3, eac3);
- REGISTER_DECODER(EVRC, evrc);
- REGISTER_DECODER(FFWAVESYNTH, ffwavesynth);
- REGISTER_ENCDEC (FLAC, flac);
- REGISTER_ENCDEC (G723_1, g723_1);
- REGISTER_DECODER(G729, g729);
- REGISTER_DECODER(GSM, gsm);
- REGISTER_DECODER(GSM_MS, gsm_ms);
- REGISTER_DECODER(IAC, iac);
- REGISTER_DECODER(IMC, imc);
- REGISTER_DECODER(INTERPLAY_ACM, interplay_acm);
- REGISTER_DECODER(MACE3, mace3);
- REGISTER_DECODER(MACE6, mace6);
- REGISTER_DECODER(METASOUND, metasound);
- REGISTER_ENCDEC (MLP, mlp);
- REGISTER_DECODER(MP1, mp1);
- REGISTER_DECODER(MP1FLOAT, mp1float);
- REGISTER_ENCDEC (MP2, mp2);
- REGISTER_DECODER(MP2FLOAT, mp2float);
- REGISTER_ENCODER(MP2FIXED, mp2fixed);
- REGISTER_DECODER(MP3, mp3);
- REGISTER_DECODER(MP3FLOAT, mp3float);
- REGISTER_DECODER(MP3ADU, mp3adu);
- REGISTER_DECODER(MP3ADUFLOAT, mp3adufloat);
- REGISTER_DECODER(MP3ON4, mp3on4);
- REGISTER_DECODER(MP3ON4FLOAT, mp3on4float);
- REGISTER_DECODER(MPC7, mpc7);
- REGISTER_DECODER(MPC8, mpc8);
- REGISTER_ENCDEC (NELLYMOSER, nellymoser);
- REGISTER_DECODER(ON2AVC, on2avc);
- REGISTER_ENCDEC (OPUS, opus);
- REGISTER_DECODER(PAF_AUDIO, paf_audio);
- REGISTER_DECODER(QCELP, qcelp);
- REGISTER_DECODER(QDM2, qdm2);
- REGISTER_DECODER(QDMC, qdmc);
- REGISTER_ENCDEC (RA_144, ra_144);
- REGISTER_DECODER(RA_288, ra_288);
- REGISTER_DECODER(RALF, ralf);
- REGISTER_DECODER(SHORTEN, shorten);
- REGISTER_DECODER(SIPR, sipr);
- REGISTER_DECODER(SMACKAUD, smackaud);
- REGISTER_ENCDEC (SONIC, sonic);
- REGISTER_ENCODER(SONIC_LS, sonic_ls);
- REGISTER_DECODER(TAK, tak);
- REGISTER_ENCDEC (TRUEHD, truehd);
- REGISTER_DECODER(TRUESPEECH, truespeech);
- REGISTER_ENCDEC (TTA, tta);
- REGISTER_DECODER(TWINVQ, twinvq);
- REGISTER_DECODER(VMDAUDIO, vmdaudio);
- REGISTER_ENCDEC (VORBIS, vorbis);
- REGISTER_ENCDEC (WAVPACK, wavpack);
- REGISTER_DECODER(WMALOSSLESS, wmalossless);
- REGISTER_DECODER(WMAPRO, wmapro);
- REGISTER_ENCDEC (WMAV1, wmav1);
- REGISTER_ENCDEC (WMAV2, wmav2);
- REGISTER_DECODER(WMAVOICE, wmavoice);
- REGISTER_DECODER(WS_SND1, ws_snd1);
- REGISTER_DECODER(XMA1, xma1);
- REGISTER_DECODER(XMA2, xma2);
-
- /* PCM codecs */
- REGISTER_ENCDEC (PCM_ALAW, pcm_alaw);
- REGISTER_DECODER(PCM_BLURAY, pcm_bluray);
- REGISTER_DECODER(PCM_DVD, pcm_dvd);
- REGISTER_DECODER(PCM_F16LE, pcm_f16le);
- REGISTER_DECODER(PCM_F24LE, pcm_f24le);
- REGISTER_ENCDEC (PCM_F32BE, pcm_f32be);
- REGISTER_ENCDEC (PCM_F32LE, pcm_f32le);
- REGISTER_ENCDEC (PCM_F64BE, pcm_f64be);
- REGISTER_ENCDEC (PCM_F64LE, pcm_f64le);
- REGISTER_DECODER(PCM_LXF, pcm_lxf);
- REGISTER_ENCDEC (PCM_MULAW, pcm_mulaw);
- REGISTER_ENCDEC (PCM_S8, pcm_s8);
- REGISTER_ENCDEC (PCM_S8_PLANAR, pcm_s8_planar);
- REGISTER_ENCDEC (PCM_S16BE, pcm_s16be);
- REGISTER_ENCDEC (PCM_S16BE_PLANAR, pcm_s16be_planar);
- REGISTER_ENCDEC (PCM_S16LE, pcm_s16le);
- REGISTER_ENCDEC (PCM_S16LE_PLANAR, pcm_s16le_planar);
- REGISTER_ENCDEC (PCM_S24BE, pcm_s24be);
- REGISTER_ENCDEC (PCM_S24DAUD, pcm_s24daud);
- REGISTER_ENCDEC (PCM_S24LE, pcm_s24le);
- REGISTER_ENCDEC (PCM_S24LE_PLANAR, pcm_s24le_planar);
- REGISTER_ENCDEC (PCM_S32BE, pcm_s32be);
- REGISTER_ENCDEC (PCM_S32LE, pcm_s32le);
- REGISTER_ENCDEC (PCM_S32LE_PLANAR, pcm_s32le_planar);
- REGISTER_ENCDEC (PCM_S64BE, pcm_s64be);
- REGISTER_ENCDEC (PCM_S64LE, pcm_s64le);
- REGISTER_ENCDEC (PCM_U8, pcm_u8);
- REGISTER_ENCDEC (PCM_U16BE, pcm_u16be);
- REGISTER_ENCDEC (PCM_U16LE, pcm_u16le);
- REGISTER_ENCDEC (PCM_U24BE, pcm_u24be);
- REGISTER_ENCDEC (PCM_U24LE, pcm_u24le);
- REGISTER_ENCDEC (PCM_U32BE, pcm_u32be);
- REGISTER_ENCDEC (PCM_U32LE, pcm_u32le);
- REGISTER_DECODER(PCM_ZORK, pcm_zork);
-
- /* DPCM codecs */
- REGISTER_DECODER(GREMLIN_DPCM, gremlin_dpcm);
- REGISTER_DECODER(INTERPLAY_DPCM, interplay_dpcm);
- REGISTER_ENCDEC (ROQ_DPCM, roq_dpcm);
- REGISTER_DECODER(SOL_DPCM, sol_dpcm);
- REGISTER_DECODER(XAN_DPCM, xan_dpcm);
-
- /* ADPCM codecs */
- REGISTER_DECODER(ADPCM_4XM, adpcm_4xm);
- REGISTER_ENCDEC (ADPCM_ADX, adpcm_adx);
- REGISTER_DECODER(ADPCM_AFC, adpcm_afc);
- REGISTER_DECODER(ADPCM_AICA, adpcm_aica);
- REGISTER_DECODER(ADPCM_CT, adpcm_ct);
- REGISTER_DECODER(ADPCM_DTK, adpcm_dtk);
- REGISTER_DECODER(ADPCM_EA, adpcm_ea);
- REGISTER_DECODER(ADPCM_EA_MAXIS_XA, adpcm_ea_maxis_xa);
- REGISTER_DECODER(ADPCM_EA_R1, adpcm_ea_r1);
- REGISTER_DECODER(ADPCM_EA_R2, adpcm_ea_r2);
- REGISTER_DECODER(ADPCM_EA_R3, adpcm_ea_r3);
- REGISTER_DECODER(ADPCM_EA_XAS, adpcm_ea_xas);
- REGISTER_ENCDEC (ADPCM_G722, adpcm_g722);
- REGISTER_ENCDEC (ADPCM_G726, adpcm_g726);
- REGISTER_ENCDEC (ADPCM_G726LE, adpcm_g726le);
- REGISTER_DECODER(ADPCM_IMA_AMV, adpcm_ima_amv);
- REGISTER_DECODER(ADPCM_IMA_APC, adpcm_ima_apc);
- REGISTER_DECODER(ADPCM_IMA_DAT4, adpcm_ima_dat4);
- REGISTER_DECODER(ADPCM_IMA_DK3, adpcm_ima_dk3);
- REGISTER_DECODER(ADPCM_IMA_DK4, adpcm_ima_dk4);
- REGISTER_DECODER(ADPCM_IMA_EA_EACS, adpcm_ima_ea_eacs);
- REGISTER_DECODER(ADPCM_IMA_EA_SEAD, adpcm_ima_ea_sead);
- REGISTER_DECODER(ADPCM_IMA_ISS, adpcm_ima_iss);
- REGISTER_DECODER(ADPCM_IMA_OKI, adpcm_ima_oki);
- REGISTER_ENCDEC (ADPCM_IMA_QT, adpcm_ima_qt);
- REGISTER_DECODER(ADPCM_IMA_RAD, adpcm_ima_rad);
- REGISTER_DECODER(ADPCM_IMA_SMJPEG, adpcm_ima_smjpeg);
- REGISTER_ENCDEC (ADPCM_IMA_WAV, adpcm_ima_wav);
- REGISTER_DECODER(ADPCM_IMA_WS, adpcm_ima_ws);
- REGISTER_ENCDEC (ADPCM_MS, adpcm_ms);
- REGISTER_DECODER(ADPCM_MTAF, adpcm_mtaf);
- REGISTER_DECODER(ADPCM_PSX, adpcm_psx);
- REGISTER_DECODER(ADPCM_SBPRO_2, adpcm_sbpro_2);
- REGISTER_DECODER(ADPCM_SBPRO_3, adpcm_sbpro_3);
- REGISTER_DECODER(ADPCM_SBPRO_4, adpcm_sbpro_4);
- REGISTER_ENCDEC (ADPCM_SWF, adpcm_swf);
- REGISTER_DECODER(ADPCM_THP, adpcm_thp);
- REGISTER_DECODER(ADPCM_THP_LE, adpcm_thp_le);
- REGISTER_DECODER(ADPCM_VIMA, adpcm_vima);
- REGISTER_DECODER(ADPCM_XA, adpcm_xa);
- REGISTER_ENCDEC (ADPCM_YAMAHA, adpcm_yamaha);
-
- /* subtitles */
- REGISTER_ENCDEC (SSA, ssa);
- REGISTER_ENCDEC (ASS, ass);
- REGISTER_DECODER(CCAPTION, ccaption);
- REGISTER_ENCDEC (DVBSUB, dvbsub);
- REGISTER_ENCDEC (DVDSUB, dvdsub);
- REGISTER_DECODER(JACOSUB, jacosub);
- REGISTER_DECODER(MICRODVD, microdvd);
- REGISTER_ENCDEC (MOVTEXT, movtext);
- REGISTER_DECODER(MPL2, mpl2);
- REGISTER_DECODER(PGSSUB, pgssub);
- REGISTER_DECODER(PJS, pjs);
- REGISTER_DECODER(REALTEXT, realtext);
- REGISTER_DECODER(SAMI, sami);
- REGISTER_ENCDEC (SRT, srt);
- REGISTER_DECODER(STL, stl);
- REGISTER_ENCDEC (SUBRIP, subrip);
- REGISTER_DECODER(SUBVIEWER, subviewer);
- REGISTER_DECODER(SUBVIEWER1, subviewer1);
- REGISTER_ENCDEC (TEXT, text);
- REGISTER_DECODER(VPLAYER, vplayer);
- REGISTER_ENCDEC (WEBVTT, webvtt);
- REGISTER_ENCDEC (XSUB, xsub);
-
- /* external libraries */
- REGISTER_ENCDEC (AAC_AT, aac_at);
- REGISTER_DECODER(AC3_AT, ac3_at);
- REGISTER_DECODER(ADPCM_IMA_QT_AT, adpcm_ima_qt_at);
- REGISTER_ENCDEC (ALAC_AT, alac_at);
- REGISTER_DECODER(AMR_NB_AT, amr_nb_at);
- REGISTER_DECODER(EAC3_AT, eac3_at);
- REGISTER_DECODER(GSM_MS_AT, gsm_ms_at);
- REGISTER_ENCDEC (ILBC_AT, ilbc_at);
- REGISTER_DECODER(MP1_AT, mp1_at);
- REGISTER_DECODER(MP2_AT, mp2_at);
- REGISTER_DECODER(MP3_AT, mp3_at);
- REGISTER_ENCDEC (PCM_ALAW_AT, pcm_alaw_at);
- REGISTER_ENCDEC (PCM_MULAW_AT, pcm_mulaw_at);
- REGISTER_DECODER(QDMC_AT, qdmc_at);
- REGISTER_DECODER(QDM2_AT, qdm2_at);
- REGISTER_DECODER(LIBCELT, libcelt);
- REGISTER_ENCDEC (LIBFDK_AAC, libfdk_aac);
- REGISTER_ENCDEC (LIBGSM, libgsm);
- REGISTER_ENCDEC (LIBGSM_MS, libgsm_ms);
- REGISTER_ENCDEC (LIBILBC, libilbc);
- REGISTER_ENCODER(LIBMP3LAME, libmp3lame);
- REGISTER_ENCDEC (LIBOPENCORE_AMRNB, libopencore_amrnb);
- REGISTER_DECODER(LIBOPENCORE_AMRWB, libopencore_amrwb);
- REGISTER_ENCDEC (LIBOPENJPEG, libopenjpeg);
- REGISTER_ENCDEC (LIBOPUS, libopus);
- REGISTER_DECODER(LIBRSVG, librsvg);
- REGISTER_ENCODER(LIBSHINE, libshine);
- REGISTER_ENCDEC (LIBSPEEX, libspeex);
- REGISTER_ENCODER(LIBTHEORA, libtheora);
- REGISTER_ENCODER(LIBTWOLAME, libtwolame);
- REGISTER_ENCODER(LIBVO_AMRWBENC, libvo_amrwbenc);
- REGISTER_ENCDEC (LIBVORBIS, libvorbis);
- REGISTER_ENCDEC (LIBVPX_VP8, libvpx_vp8);
- REGISTER_ENCDEC (LIBVPX_VP9, libvpx_vp9);
- REGISTER_ENCODER(LIBWAVPACK, libwavpack);
- REGISTER_ENCODER(LIBWEBP_ANIM, libwebp_anim); /* preferred over libwebp */
- REGISTER_ENCODER(LIBWEBP, libwebp);
- REGISTER_ENCODER(LIBX262, libx262);
- REGISTER_ENCODER(LIBX264, libx264);
- REGISTER_ENCODER(LIBX264RGB, libx264rgb);
- REGISTER_ENCODER(LIBX265, libx265);
- REGISTER_ENCODER(LIBXAVS, libxavs);
- REGISTER_ENCODER(LIBXVID, libxvid);
- REGISTER_DECODER(LIBZVBI_TELETEXT, libzvbi_teletext);
-
- /* text */
- REGISTER_DECODER(BINTEXT, bintext);
- REGISTER_DECODER(XBIN, xbin);
- REGISTER_DECODER(IDF, idf);
-
- /* external libraries, that shouldn't be used by default if one of the
- * above is available */
- REGISTER_ENCODER(H263_V4L2M2M, h263_v4l2m2m);
- REGISTER_ENCDEC (LIBOPENH264, libopenh264);
- REGISTER_ENCODER(H264_AMF, h264_amf);
- REGISTER_DECODER(H264_CUVID, h264_cuvid);
- REGISTER_ENCODER(H264_NVENC, h264_nvenc);
- REGISTER_ENCODER(H264_OMX, h264_omx);
- REGISTER_ENCODER(H264_QSV, h264_qsv);
- REGISTER_ENCODER(H264_V4L2M2M, h264_v4l2m2m);
- REGISTER_ENCODER(H264_VAAPI, h264_vaapi);
- REGISTER_ENCODER(H264_VIDEOTOOLBOX, h264_videotoolbox);
-#if FF_API_NVENC_OLD_NAME
- REGISTER_ENCODER(NVENC, nvenc);
- REGISTER_ENCODER(NVENC_H264, nvenc_h264);
- REGISTER_ENCODER(NVENC_HEVC, nvenc_hevc);
-#endif
- REGISTER_ENCODER(HEVC_AMF, hevc_amf);
- REGISTER_DECODER(HEVC_CUVID, hevc_cuvid);
- REGISTER_DECODER(HEVC_MEDIACODEC, hevc_mediacodec);
- REGISTER_ENCODER(HEVC_NVENC, hevc_nvenc);
- REGISTER_ENCODER(HEVC_QSV, hevc_qsv);
- REGISTER_ENCODER(HEVC_V4L2M2M, hevc_v4l2m2m);
- REGISTER_ENCODER(HEVC_VAAPI, hevc_vaapi);
- REGISTER_ENCODER(HEVC_VIDEOTOOLBOX, hevc_videotoolbox);
- REGISTER_ENCODER(LIBKVAZAAR, libkvazaar);
- REGISTER_DECODER(MJPEG_CUVID, mjpeg_cuvid);
- REGISTER_ENCODER(MJPEG_QSV, mjpeg_qsv);
- REGISTER_ENCODER(MJPEG_VAAPI, mjpeg_vaapi);
- REGISTER_DECODER(MPEG1_CUVID, mpeg1_cuvid);
- REGISTER_DECODER(MPEG2_CUVID, mpeg2_cuvid);
- REGISTER_ENCODER(MPEG2_QSV, mpeg2_qsv);
- REGISTER_ENCODER(MPEG2_VAAPI, mpeg2_vaapi);
- REGISTER_DECODER(MPEG4_CUVID, mpeg4_cuvid);
- REGISTER_DECODER(MPEG4_MEDIACODEC, mpeg4_mediacodec);
- REGISTER_ENCODER(MPEG4_V4L2M2M, mpeg4_v4l2m2m);
- REGISTER_DECODER(VC1_CUVID, vc1_cuvid);
- REGISTER_DECODER(VP8_CUVID, vp8_cuvid);
- REGISTER_DECODER(VP8_MEDIACODEC, vp8_mediacodec);
- REGISTER_DECODER(VP8_QSV, vp8_qsv);
- REGISTER_ENCODER(VP8_V4L2M2M, vp8_v4l2m2m);
- REGISTER_ENCODER(VP8_VAAPI, vp8_vaapi);
- REGISTER_DECODER(VP9_CUVID, vp9_cuvid);
- REGISTER_DECODER(VP9_MEDIACODEC, vp9_mediacodec);
- REGISTER_ENCODER(VP9_VAAPI, vp9_vaapi);
-
- /* parsers */
- REGISTER_PARSER(AAC, aac);
- REGISTER_PARSER(AAC_LATM, aac_latm);
- REGISTER_PARSER(AC3, ac3);
- REGISTER_PARSER(ADX, adx);
- REGISTER_PARSER(BMP, bmp);
- REGISTER_PARSER(CAVSVIDEO, cavsvideo);
- REGISTER_PARSER(COOK, cook);
- REGISTER_PARSER(DCA, dca);
- REGISTER_PARSER(DIRAC, dirac);
- REGISTER_PARSER(DNXHD, dnxhd);
- REGISTER_PARSER(DPX, dpx);
- REGISTER_PARSER(DVAUDIO, dvaudio);
- REGISTER_PARSER(DVBSUB, dvbsub);
- REGISTER_PARSER(DVDSUB, dvdsub);
- REGISTER_PARSER(DVD_NAV, dvd_nav);
- REGISTER_PARSER(FLAC, flac);
- REGISTER_PARSER(G729, g729);
- REGISTER_PARSER(GSM, gsm);
- REGISTER_PARSER(H261, h261);
- REGISTER_PARSER(H263, h263);
- REGISTER_PARSER(H264, h264);
- REGISTER_PARSER(HEVC, hevc);
- REGISTER_PARSER(MJPEG, mjpeg);
- REGISTER_PARSER(MLP, mlp);
- REGISTER_PARSER(MPEG4VIDEO, mpeg4video);
- REGISTER_PARSER(MPEGAUDIO, mpegaudio);
- REGISTER_PARSER(MPEGVIDEO, mpegvideo);
- REGISTER_PARSER(OPUS, opus);
- REGISTER_PARSER(PNG, png);
- REGISTER_PARSER(PNM, pnm);
- REGISTER_PARSER(RV30, rv30);
- REGISTER_PARSER(RV40, rv40);
- REGISTER_PARSER(SIPR, sipr);
- REGISTER_PARSER(TAK, tak);
- REGISTER_PARSER(VC1, vc1);
- REGISTER_PARSER(VORBIS, vorbis);
- REGISTER_PARSER(VP3, vp3);
- REGISTER_PARSER(VP8, vp8);
- REGISTER_PARSER(VP9, vp9);
- REGISTER_PARSER(XMA, xma);
+ ff_thread_once(&av_codec_next_init, av_codec_init_next);
+}
+
+AVCodec *av_codec_next(const AVCodec *c)
+{
+ ff_thread_once(&av_codec_next_init, av_codec_init_next);
+
+ if (c)
+ return c->next;
+ else
+ return (AVCodec*)codec_list[0];
}
void avcodec_register_all(void)
{
- static AVOnce control = AV_ONCE_INIT;
+ ff_thread_once(&av_codec_next_init, av_codec_init_next);
+}
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+
+static enum AVCodecID remap_deprecated_codec_id(enum AVCodecID id)
+{
+ switch(id){
+ //This is for future deprecatec codec ids, its empty since
+ //last major bump but will fill up again over time, please don't remove it
+ default : return id;
+ }
+}
+
+static AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *))
+{
+ const AVCodec *p, *experimental = NULL;
+ void *i = 0;
+
+ id = remap_deprecated_codec_id(id);
+
+ while ((p = av_codec_iterate(&i))) {
+ if (!x(p))
+ continue;
+ if (p->id == id) {
+ if (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL && !experimental) {
+ experimental = p;
+ } else
+ return (AVCodec*)p;
+ }
+ }
+
+ return (AVCodec*)experimental;
+}
+
+AVCodec *avcodec_find_encoder(enum AVCodecID id)
+{
+ return find_codec(id, av_codec_is_encoder);
+}
+
+AVCodec *avcodec_find_decoder(enum AVCodecID id)
+{
+ return find_codec(id, av_codec_is_decoder);
+}
- ff_thread_once(&control, register_all);
+static AVCodec *find_codec_by_name(const char *name, int (*x)(const AVCodec *))
+{
+ void *i = 0;
+ const AVCodec *p;
+
+ if (!name)
+ return NULL;
+
+ while ((p = av_codec_iterate(&i))) {
+ if (!x(p))
+ continue;
+ if (strcmp(name, p->name) == 0)
+ return (AVCodec*)p;
+ }
+
+ return NULL;
+}
+
+AVCodec *avcodec_find_encoder_by_name(const char *name)
+{
+ return find_codec_by_name(name, av_codec_is_encoder);
+}
+
+AVCodec *avcodec_find_decoder_by_name(const char *name)
+{
+ return find_codec_by_name(name, av_codec_is_decoder);
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/aptx.c b/chromium/third_party/ffmpeg/libavcodec/aptx.c
index a35d2861c17..8750d8421fb 100644
--- a/chromium/third_party/ffmpeg/libavcodec/aptx.c
+++ b/chromium/third_party/ffmpeg/libavcodec/aptx.c
@@ -89,6 +89,8 @@ typedef struct {
} Channel;
typedef struct {
+ int hd;
+ int block_size;
int32_t sync_idx;
Channel channels[NB_CHANNELS];
AudioFrameQueue afq;
@@ -182,41 +184,268 @@ static const int16_t quantize_factor_select_offset_HF[5] = {
0, -8, 33, 95, 262,
};
+
+static const int32_t hd_quantize_intervals_LF[257] = {
+ -2436, 2436, 7308, 12180, 17054, 21930, 26806, 31686,
+ 36566, 41450, 46338, 51230, 56124, 61024, 65928, 70836,
+ 75750, 80670, 85598, 90530, 95470, 100418, 105372, 110336,
+ 115308, 120288, 125278, 130276, 135286, 140304, 145334, 150374,
+ 155426, 160490, 165566, 170654, 175756, 180870, 185998, 191138,
+ 196294, 201466, 206650, 211850, 217068, 222300, 227548, 232814,
+ 238096, 243396, 248714, 254050, 259406, 264778, 270172, 275584,
+ 281018, 286470, 291944, 297440, 302956, 308496, 314056, 319640,
+ 325248, 330878, 336532, 342212, 347916, 353644, 359398, 365178,
+ 370986, 376820, 382680, 388568, 394486, 400430, 406404, 412408,
+ 418442, 424506, 430600, 436726, 442884, 449074, 455298, 461554,
+ 467844, 474168, 480528, 486922, 493354, 499820, 506324, 512866,
+ 519446, 526064, 532722, 539420, 546160, 552940, 559760, 566624,
+ 573532, 580482, 587478, 594520, 601606, 608740, 615920, 623148,
+ 630426, 637754, 645132, 652560, 660042, 667576, 675164, 682808,
+ 690506, 698262, 706074, 713946, 721876, 729868, 737920, 746036,
+ 754216, 762460, 770770, 779148, 787594, 796108, 804694, 813354,
+ 822086, 830892, 839774, 848736, 857776, 866896, 876100, 885386,
+ 894758, 904218, 913766, 923406, 933138, 942964, 952886, 962908,
+ 973030, 983254, 993582, 1004020, 1014566, 1025224, 1035996, 1046886,
+ 1057894, 1069026, 1080284, 1091670, 1103186, 1114838, 1126628, 1138558,
+ 1150634, 1162858, 1175236, 1187768, 1200462, 1213320, 1226346, 1239548,
+ 1252928, 1266490, 1280242, 1294188, 1308334, 1322688, 1337252, 1352034,
+ 1367044, 1382284, 1397766, 1413494, 1429478, 1445728, 1462252, 1479058,
+ 1496158, 1513562, 1531280, 1549326, 1567710, 1586446, 1605550, 1625034,
+ 1644914, 1665208, 1685932, 1707108, 1728754, 1750890, 1773542, 1796732,
+ 1820488, 1844840, 1869816, 1895452, 1921780, 1948842, 1976680, 2005338,
+ 2034868, 2065322, 2096766, 2129260, 2162880, 2197708, 2233832, 2271352,
+ 2310384, 2351050, 2393498, 2437886, 2484404, 2533262, 2584710, 2639036,
+ 2696578, 2757738, 2822998, 2892940, 2968278, 3049896, 3138912, 3236760,
+ 3345312, 3467068, 3605434, 3765154, 3952904, 4177962, 4452178, 4787134,
+ 5187290, 5647128, 6159120, 6720518, 7332904, 8000032, 8726664, 9518152,
+ 10380372,
+};
+static const int32_t hd_invert_quantize_dither_factors_LF[257] = {
+ 2436, 2436, 2436, 2436, 2438, 2438, 2438, 2440,
+ 2442, 2442, 2444, 2446, 2448, 2450, 2454, 2456,
+ 2458, 2462, 2464, 2468, 2472, 2476, 2480, 2484,
+ 2488, 2492, 2498, 2502, 2506, 2512, 2518, 2524,
+ 2528, 2534, 2540, 2548, 2554, 2560, 2568, 2574,
+ 2582, 2588, 2596, 2604, 2612, 2620, 2628, 2636,
+ 2646, 2654, 2664, 2672, 2682, 2692, 2702, 2712,
+ 2722, 2732, 2742, 2752, 2764, 2774, 2786, 2798,
+ 2810, 2822, 2834, 2846, 2858, 2870, 2884, 2896,
+ 2910, 2924, 2938, 2952, 2966, 2980, 2994, 3010,
+ 3024, 3040, 3056, 3070, 3086, 3104, 3120, 3136,
+ 3154, 3170, 3188, 3206, 3224, 3242, 3262, 3280,
+ 3300, 3320, 3338, 3360, 3380, 3400, 3422, 3442,
+ 3464, 3486, 3508, 3532, 3554, 3578, 3602, 3626,
+ 3652, 3676, 3702, 3728, 3754, 3780, 3808, 3836,
+ 3864, 3892, 3920, 3950, 3980, 4010, 4042, 4074,
+ 4106, 4138, 4172, 4206, 4240, 4276, 4312, 4348,
+ 4384, 4422, 4460, 4500, 4540, 4580, 4622, 4664,
+ 4708, 4752, 4796, 4842, 4890, 4938, 4986, 5036,
+ 5086, 5138, 5192, 5246, 5300, 5358, 5416, 5474,
+ 5534, 5596, 5660, 5726, 5792, 5860, 5930, 6002,
+ 6074, 6150, 6226, 6306, 6388, 6470, 6556, 6644,
+ 6736, 6828, 6924, 7022, 7124, 7228, 7336, 7448,
+ 7562, 7680, 7802, 7928, 8058, 8192, 8332, 8476,
+ 8624, 8780, 8940, 9106, 9278, 9458, 9644, 9840,
+ 10042, 10252, 10472, 10702, 10942, 11194, 11458, 11734,
+ 12024, 12328, 12648, 12986, 13342, 13720, 14118, 14540,
+ 14990, 15466, 15976, 16520, 17102, 17726, 18398, 19124,
+ 19908, 20760, 21688, 22702, 23816, 25044, 26404, 27922,
+ 29622, 31540, 33720, 36222, 39116, 42502, 46514, 51334,
+ 57218, 64536, 73830, 85890, 101860, 123198, 151020, 183936,
+ 216220, 243618, 268374, 293022, 319362, 347768, 378864, 412626, 449596,
+};
+static const int32_t hd_quantize_dither_factors_LF[256] = {
+ 0, 0, 0, 1, 0, 0, 1, 1,
+ 0, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 2, 2, 2, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3,
+ 2, 3, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 4, 3, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 5, 4, 4, 5,
+ 4, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 6, 5, 5, 6, 5, 6,
+ 6, 6, 6, 6, 6, 6, 6, 7,
+ 6, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 8, 8, 8, 8, 8, 8,
+ 8, 9, 9, 9, 9, 9, 9, 9,
+ 10, 10, 10, 10, 10, 11, 11, 11,
+ 11, 11, 12, 12, 12, 12, 13, 13,
+ 13, 14, 14, 14, 15, 15, 15, 15,
+ 16, 16, 17, 17, 17, 18, 18, 18,
+ 19, 19, 20, 21, 21, 22, 22, 23,
+ 23, 24, 25, 26, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37,
+ 39, 40, 42, 43, 45, 47, 49, 51,
+ 53, 55, 58, 60, 63, 66, 69, 73,
+ 76, 80, 85, 89, 95, 100, 106, 113,
+ 119, 128, 136, 146, 156, 168, 182, 196,
+ 213, 232, 254, 279, 307, 340, 380, 425,
+ 480, 545, 626, 724, 847, 1003, 1205, 1471,
+ 1830, 2324, 3015, 3993, 5335, 6956, 8229, 8071,
+ 6850, 6189, 6162, 6585, 7102, 7774, 8441, 9243,
+};
+static const int16_t hd_quantize_factor_select_offset_LF[257] = {
+ 0, -22, -21, -21, -20, -20, -19, -19,
+ -18, -18, -17, -17, -16, -16, -15, -14,
+ -14, -13, -13, -12, -12, -11, -11, -10,
+ -10, -9, -9, -8, -7, -7, -6, -6,
+ -5, -5, -4, -4, -3, -3, -2, -1,
+ -1, 0, 0, 1, 1, 2, 2, 3,
+ 4, 4, 5, 5, 6, 6, 7, 8,
+ 8, 9, 9, 10, 11, 11, 12, 12,
+ 13, 14, 14, 15, 15, 16, 17, 17,
+ 18, 19, 19, 20, 20, 21, 22, 22,
+ 23, 24, 24, 25, 26, 26, 27, 28,
+ 28, 29, 30, 30, 31, 32, 33, 33,
+ 34, 35, 35, 36, 37, 38, 38, 39,
+ 40, 41, 41, 42, 43, 44, 44, 45,
+ 46, 47, 48, 48, 49, 50, 51, 52,
+ 52, 53, 54, 55, 56, 57, 58, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 69, 70, 71, 72, 73,
+ 74, 75, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 89, 90, 91,
+ 92, 93, 94, 96, 97, 98, 99, 101,
+ 102, 103, 105, 106, 107, 109, 110, 112,
+ 113, 115, 116, 118, 119, 121, 122, 124,
+ 125, 127, 129, 130, 132, 134, 136, 137,
+ 139, 141, 143, 145, 147, 149, 151, 153,
+ 155, 158, 160, 162, 164, 167, 169, 172,
+ 174, 177, 180, 182, 185, 188, 191, 194,
+ 197, 201, 204, 208, 211, 215, 219, 223,
+ 227, 232, 236, 241, 246, 251, 257, 263,
+ 269, 275, 283, 290, 298, 307, 317, 327,
+ 339, 352, 367, 384, 404, 429, 458, 494,
+ 522, 522, 522, 522, 522, 522, 522, 522, 522,
+};
+
+
+static const int32_t hd_quantize_intervals_MLF[33] = {
+ -21236, 21236, 63830, 106798, 150386, 194832, 240376, 287258,
+ 335726, 386034, 438460, 493308, 550924, 611696, 676082, 744626,
+ 817986, 896968, 982580, 1076118, 1179278, 1294344, 1424504, 1574386,
+ 1751090, 1966260, 2240868, 2617662, 3196432, 4176450, 5658260, 7671068,
+ 10380372,
+};
+static const int32_t hd_invert_quantize_dither_factors_MLF[33] = {
+ 21236, 21236, 21360, 21608, 21978, 22468, 23076, 23806,
+ 24660, 25648, 26778, 28070, 29544, 31228, 33158, 35386,
+ 37974, 41008, 44606, 48934, 54226, 60840, 69320, 80564,
+ 96140, 119032, 155576, 221218, 357552, 622468, 859344, 1153464, 1555840,
+};
+static const int32_t hd_quantize_dither_factors_MLF[32] = {
+ 0, 31, 62, 93, 123, 152, 183, 214,
+ 247, 283, 323, 369, 421, 483, 557, 647,
+ 759, 900, 1082, 1323, 1654, 2120, 2811, 3894,
+ 5723, 9136, 16411, 34084, 66229, 59219, 73530, 100594,
+};
+static const int16_t hd_quantize_factor_select_offset_MLF[33] = {
+ 0, -21, -16, -12, -7, -2, 3, 8,
+ 13, 19, 24, 30, 36, 43, 50, 57,
+ 65, 74, 83, 93, 104, 117, 131, 147,
+ 166, 189, 219, 259, 322, 427, 521, 521, 521,
+};
+
+
+static const int32_t hd_quantize_intervals_MHF[9] = {
+ -95044, 95044, 295844, 528780, 821332, 1226438, 1890540, 3344850, 6450664,
+};
+static const int32_t hd_invert_quantize_dither_factors_MHF[9] = {
+ 95044, 95044, 105754, 127180, 165372, 39736, 424366, 1029946, 2075866,
+};
+static const int32_t hd_quantize_dither_factors_MHF[8] = {
+ 0, 2678, 5357, 9548, -31409, 96158, 151395, 261480,
+};
+static const int16_t hd_quantize_factor_select_offset_MHF[9] = {
+ 0, -17, 5, 30, 62, 105, 177, 334, 518,
+};
+
+
+static const int32_t hd_quantize_intervals_HF[17] = {
+ -45754, 45754, 138496, 234896, 337336, 448310, 570738, 708380,
+ 866534, 1053262, 1281958, 1577438, 1993050, 2665984, 3900982, 5902844,
+ 8897462,
+};
+static const int32_t hd_invert_quantize_dither_factors_HF[17] = {
+ 45754, 45754, 46988, 49412, 53026, 57950, 64478, 73164,
+ 84988, 101740, 126958, 168522, 247092, 425842, 809154, 1192708, 1801910,
+};
+static const int32_t hd_quantize_dither_factors_HF[16] = {
+ 0, 309, 606, 904, 1231, 1632, 2172, 2956,
+ 4188, 6305, 10391, 19643, 44688, 95828, 95889, 152301,
+};
+static const int16_t hd_quantize_factor_select_offset_HF[17] = {
+ 0, -18, -8, 2, 13, 25, 38, 53,
+ 70, 90, 115, 147, 192, 264, 398, 521, 521,
+};
+
typedef const struct {
const int32_t *quantize_intervals;
const int32_t *invert_quantize_dither_factors;
const int32_t *quantize_dither_factors;
const int16_t *quantize_factor_select_offset;
int tables_size;
- int32_t quantized_bits;
+ int32_t factor_max;
int32_t prediction_order;
} ConstTables;
-static ConstTables tables[NB_SUBBANDS] = {
- [LF] = { quantize_intervals_LF,
- invert_quantize_dither_factors_LF,
- quantize_dither_factors_LF,
- quantize_factor_select_offset_LF,
- FF_ARRAY_ELEMS(quantize_intervals_LF),
- 7, 24 },
- [MLF] = { quantize_intervals_MLF,
- invert_quantize_dither_factors_MLF,
- quantize_dither_factors_MLF,
- quantize_factor_select_offset_MLF,
- FF_ARRAY_ELEMS(quantize_intervals_MLF),
- 4, 12 },
- [MHF] = { quantize_intervals_MHF,
- invert_quantize_dither_factors_MHF,
- quantize_dither_factors_MHF,
- quantize_factor_select_offset_MHF,
- FF_ARRAY_ELEMS(quantize_intervals_MHF),
- 2, 6 },
- [HF] = { quantize_intervals_HF,
- invert_quantize_dither_factors_HF,
- quantize_dither_factors_HF,
- quantize_factor_select_offset_HF,
- FF_ARRAY_ELEMS(quantize_intervals_HF),
- 3, 12 },
+static ConstTables tables[2][NB_SUBBANDS] = {
+ {
+ [LF] = { quantize_intervals_LF,
+ invert_quantize_dither_factors_LF,
+ quantize_dither_factors_LF,
+ quantize_factor_select_offset_LF,
+ FF_ARRAY_ELEMS(quantize_intervals_LF),
+ 0x11FF, 24 },
+ [MLF] = { quantize_intervals_MLF,
+ invert_quantize_dither_factors_MLF,
+ quantize_dither_factors_MLF,
+ quantize_factor_select_offset_MLF,
+ FF_ARRAY_ELEMS(quantize_intervals_MLF),
+ 0x14FF, 12 },
+ [MHF] = { quantize_intervals_MHF,
+ invert_quantize_dither_factors_MHF,
+ quantize_dither_factors_MHF,
+ quantize_factor_select_offset_MHF,
+ FF_ARRAY_ELEMS(quantize_intervals_MHF),
+ 0x16FF, 6 },
+ [HF] = { quantize_intervals_HF,
+ invert_quantize_dither_factors_HF,
+ quantize_dither_factors_HF,
+ quantize_factor_select_offset_HF,
+ FF_ARRAY_ELEMS(quantize_intervals_HF),
+ 0x15FF, 12 },
+ },
+ {
+ [LF] = { hd_quantize_intervals_LF,
+ hd_invert_quantize_dither_factors_LF,
+ hd_quantize_dither_factors_LF,
+ hd_quantize_factor_select_offset_LF,
+ FF_ARRAY_ELEMS(hd_quantize_intervals_LF),
+ 0x11FF, 24 },
+ [MLF] = { hd_quantize_intervals_MLF,
+ hd_invert_quantize_dither_factors_MLF,
+ hd_quantize_dither_factors_MLF,
+ hd_quantize_factor_select_offset_MLF,
+ FF_ARRAY_ELEMS(hd_quantize_intervals_MLF),
+ 0x14FF, 12 },
+ [MHF] = { hd_quantize_intervals_MHF,
+ hd_invert_quantize_dither_factors_MHF,
+ hd_quantize_dither_factors_MHF,
+ hd_quantize_factor_select_offset_MHF,
+ FF_ARRAY_ELEMS(hd_quantize_intervals_MHF),
+ 0x16FF, 6 },
+ [HF] = { hd_quantize_intervals_HF,
+ hd_invert_quantize_dither_factors_HF,
+ hd_quantize_dither_factors_HF,
+ hd_quantize_factor_select_offset_HF,
+ FF_ARRAY_ELEMS(hd_quantize_intervals_HF),
+ 0x15FF, 12 },
+ }
};
static const int16_t quantization_factors[32] = {
@@ -462,10 +691,13 @@ static void aptx_quantize_difference(Quantize *quantize,
{
const int32_t *intervals = tables->quantize_intervals;
int32_t quantized_sample, dithered_sample, parity_change;
- int32_t d, mean, interval, inv;
+ int32_t d, mean, interval, inv, sample_difference_abs;
int64_t error;
- quantized_sample = aptx_bin_search(FFABS(sample_difference) >> 4,
+ sample_difference_abs = FFABS(sample_difference);
+ sample_difference_abs = FFMIN(sample_difference_abs, (1 << 23) - 1);
+
+ quantized_sample = aptx_bin_search(sample_difference_abs >> 4,
quantization_factor,
intervals, tables->tables_size);
@@ -476,8 +708,8 @@ static void aptx_quantize_difference(Quantize *quantize,
mean = (intervals[1] + intervals[0]) / 2;
interval = (intervals[1] - intervals[0]) * (-(sample_difference < 0) | 1);
- dithered_sample = rshift64_clip24(MUL64(dither, interval) + ((int64_t)(mean + d) << 32), 32);
- error = ((int64_t)FFABS(sample_difference) << 20) - MUL64(dithered_sample, quantization_factor);
+ dithered_sample = rshift64_clip24(MUL64(dither, interval) + ((int64_t)av_clip_intp2(mean + d, 23) << 32), 32);
+ error = ((int64_t)sample_difference_abs << 20) - MUL64(dithered_sample, quantization_factor);
quantize->error = FFABS(rshift64(error, 23));
parity_change = quantized_sample;
@@ -491,7 +723,7 @@ static void aptx_quantize_difference(Quantize *quantize,
quantize->quantized_sample_parity_change = parity_change ^ inv;
}
-static void aptx_encode_channel(Channel *channel, int32_t samples[4])
+static void aptx_encode_channel(Channel *channel, int32_t samples[4], int hd)
{
int32_t subband_samples[4];
int subband;
@@ -502,7 +734,7 @@ static void aptx_encode_channel(Channel *channel, int32_t samples[4])
aptx_quantize_difference(&channel->quantize[subband], diff,
channel->dither[subband],
channel->invert_quantize[subband].quantization_factor,
- &tables[subband]);
+ &tables[hd][subband]);
}
}
@@ -530,16 +762,14 @@ static void aptx_invert_quantization(InvertQuantize *invert_quantize,
qr = rshift64_clip24(((int64_t)qr<<32) + MUL64(dither, tables->invert_quantize_dither_factors[idx]), 32);
invert_quantize->reconstructed_difference = MUL64(invert_quantize->quantization_factor, qr) >> 19;
- shift = 24 - tables->quantized_bits;
-
/* update factor_select */
factor_select = 32620 * invert_quantize->factor_select;
factor_select = rshift32(factor_select + (tables->quantize_factor_select_offset[idx] << 15), 15);
- invert_quantize->factor_select = av_clip(factor_select, 0, (shift << 8) | 0xFF);
+ invert_quantize->factor_select = av_clip(factor_select, 0, tables->factor_max);
/* update quantization factor */
idx = (invert_quantize->factor_select & 0xFF) >> 3;
- shift -= invert_quantize->factor_select >> 8;
+ shift = (tables->factor_max - invert_quantize->factor_select) >> 8;
invert_quantize->quantization_factor = (quantization_factors[idx] << 11) >> shift;
}
@@ -615,7 +845,7 @@ static void aptx_process_subband(InvertQuantize *invert_quantize,
tables->prediction_order);
}
-static void aptx_invert_quantize_and_prediction(Channel *channel)
+static void aptx_invert_quantize_and_prediction(Channel *channel, int hd)
{
int subband;
for (subband = 0; subband < NB_SUBBANDS; subband++)
@@ -623,7 +853,7 @@ static void aptx_invert_quantize_and_prediction(Channel *channel)
&channel->prediction[subband],
channel->quantize[subband].quantized_sample,
channel->dither[subband],
- &tables[subband]);
+ &tables[hd][subband]);
}
static int32_t aptx_quantized_parity(Channel *channel)
@@ -677,6 +907,15 @@ static uint16_t aptx_pack_codeword(Channel *channel)
| (((channel->quantize[0].quantized_sample & 0x7F) ) << 0);
}
+static uint32_t aptxhd_pack_codeword(Channel *channel)
+{
+ int32_t parity = aptx_quantized_parity(channel);
+ return (((channel->quantize[3].quantized_sample & 0x01E) | parity) << 19)
+ | (((channel->quantize[2].quantized_sample & 0x00F) ) << 15)
+ | (((channel->quantize[1].quantized_sample & 0x03F) ) << 9)
+ | (((channel->quantize[0].quantized_sample & 0x1FF) ) << 0);
+}
+
static void aptx_unpack_codeword(Channel *channel, uint16_t codeword)
{
channel->quantize[0].quantized_sample = sign_extend(codeword >> 0, 7);
@@ -687,35 +926,53 @@ static void aptx_unpack_codeword(Channel *channel, uint16_t codeword)
| aptx_quantized_parity(channel);
}
+static void aptxhd_unpack_codeword(Channel *channel, uint32_t codeword)
+{
+ channel->quantize[0].quantized_sample = sign_extend(codeword >> 0, 9);
+ channel->quantize[1].quantized_sample = sign_extend(codeword >> 9, 6);
+ channel->quantize[2].quantized_sample = sign_extend(codeword >> 15, 4);
+ channel->quantize[3].quantized_sample = sign_extend(codeword >> 19, 5);
+ channel->quantize[3].quantized_sample = (channel->quantize[3].quantized_sample & ~1)
+ | aptx_quantized_parity(channel);
+}
+
static void aptx_encode_samples(AptXContext *ctx,
int32_t samples[NB_CHANNELS][4],
- uint8_t output[2*NB_CHANNELS])
+ uint8_t *output)
{
int channel;
for (channel = 0; channel < NB_CHANNELS; channel++)
- aptx_encode_channel(&ctx->channels[channel], samples[channel]);
+ aptx_encode_channel(&ctx->channels[channel], samples[channel], ctx->hd);
aptx_insert_sync(ctx->channels, &ctx->sync_idx);
for (channel = 0; channel < NB_CHANNELS; channel++) {
- aptx_invert_quantize_and_prediction(&ctx->channels[channel]);
- AV_WB16(output + 2*channel, aptx_pack_codeword(&ctx->channels[channel]));
+ aptx_invert_quantize_and_prediction(&ctx->channels[channel], ctx->hd);
+ if (ctx->hd)
+ AV_WB24(output + 3*channel,
+ aptxhd_pack_codeword(&ctx->channels[channel]));
+ else
+ AV_WB16(output + 2*channel,
+ aptx_pack_codeword(&ctx->channels[channel]));
}
}
static int aptx_decode_samples(AptXContext *ctx,
- const uint8_t input[2*NB_CHANNELS],
+ const uint8_t *input,
int32_t samples[NB_CHANNELS][4])
{
int channel, ret;
for (channel = 0; channel < NB_CHANNELS; channel++) {
- uint16_t codeword;
aptx_generate_dither(&ctx->channels[channel]);
- codeword = AV_RB16(input + 2*channel);
- aptx_unpack_codeword(&ctx->channels[channel], codeword);
- aptx_invert_quantize_and_prediction(&ctx->channels[channel]);
+ if (ctx->hd)
+ aptxhd_unpack_codeword(&ctx->channels[channel],
+ AV_RB24(input + 3*channel));
+ else
+ aptx_unpack_codeword(&ctx->channels[channel],
+ AV_RB16(input + 2*channel));
+ aptx_invert_quantize_and_prediction(&ctx->channels[channel], ctx->hd);
}
ret = aptx_check_parity(ctx->channels, &ctx->sync_idx);
@@ -732,11 +989,15 @@ static av_cold int aptx_init(AVCodecContext *avctx)
AptXContext *s = avctx->priv_data;
int chan, subband;
+ s->hd = avctx->codec->id == AV_CODEC_ID_APTX_HD;
+ s->block_size = s->hd ? 6 : 4;
+
if (avctx->frame_size == 0)
- avctx->frame_size = 1024;
+ avctx->frame_size = 256 * s->block_size;
- if (avctx->frame_size & 3) {
- av_log(avctx, AV_LOG_ERROR, "Frame size must be a multiple of 4 samples\n");
+ if (avctx->frame_size % s->block_size) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Frame size must be a multiple of %d samples\n", s->block_size);
return AVERROR(EINVAL);
}
@@ -758,9 +1019,9 @@ static int aptx_decode_frame(AVCodecContext *avctx, void *data,
{
AptXContext *s = avctx->priv_data;
AVFrame *frame = data;
- int pos, channel, sample, ret;
+ int pos, opos, channel, sample, ret;
- if (avpkt->size < 4) {
+ if (avpkt->size < s->block_size) {
av_log(avctx, AV_LOG_ERROR, "Packet is too small\n");
return AVERROR_INVALIDDATA;
}
@@ -768,11 +1029,11 @@ static int aptx_decode_frame(AVCodecContext *avctx, void *data,
/* get output buffer */
frame->channels = NB_CHANNELS;
frame->format = AV_SAMPLE_FMT_S32P;
- frame->nb_samples = avpkt->size & ~3;
+ frame->nb_samples = 4 * avpkt->size / s->block_size;
if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
return ret;
- for (pos = 0; pos < frame->nb_samples; pos += 4) {
+ for (pos = 0, opos = 0; opos < frame->nb_samples; pos += s->block_size, opos += 4) {
int32_t samples[NB_CHANNELS][4];
if (aptx_decode_samples(s, &avpkt->data[pos], samples)) {
@@ -782,32 +1043,33 @@ static int aptx_decode_frame(AVCodecContext *avctx, void *data,
for (channel = 0; channel < NB_CHANNELS; channel++)
for (sample = 0; sample < 4; sample++)
- AV_WN32A(&frame->data[channel][4*(sample+pos)],
+ AV_WN32A(&frame->data[channel][4*(opos+sample)],
samples[channel][sample] << 8);
}
*got_frame_ptr = 1;
- return frame->nb_samples;
+ return s->block_size * frame->nb_samples / 4;
}
static int aptx_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
const AVFrame *frame, int *got_packet_ptr)
{
AptXContext *s = avctx->priv_data;
- int pos, channel, sample, ret;
+ int pos, ipos, channel, sample, output_size, ret;
if ((ret = ff_af_queue_add(&s->afq, frame)) < 0)
return ret;
- if ((ret = ff_alloc_packet2(avctx, avpkt, frame->nb_samples, 0)) < 0)
+ output_size = s->block_size * frame->nb_samples/4;
+ if ((ret = ff_alloc_packet2(avctx, avpkt, output_size, 0)) < 0)
return ret;
- for (pos = 0; pos < frame->nb_samples; pos += 4) {
+ for (pos = 0, ipos = 0; pos < output_size; pos += s->block_size, ipos += 4) {
int32_t samples[NB_CHANNELS][4];
for (channel = 0; channel < NB_CHANNELS; channel++)
for (sample = 0; sample < 4; sample++)
- samples[channel][sample] = (int32_t)AV_RN32A(&frame->data[channel][4*(sample+pos)]) >> 8;
+ samples[channel][sample] = (int32_t)AV_RN32A(&frame->data[channel][4*(ipos+sample)]) >> 8;
aptx_encode_samples(s, samples, avpkt->data + pos);
}
@@ -843,6 +1105,24 @@ AVCodec ff_aptx_decoder = {
};
#endif
+#if CONFIG_APTX_HD_DECODER
+AVCodec ff_aptx_hd_decoder = {
+ .name = "aptx_hd",
+ .long_name = NULL_IF_CONFIG_SMALL("aptX HD (Audio Processing Technology for Bluetooth)"),
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = AV_CODEC_ID_APTX_HD,
+ .priv_data_size = sizeof(AptXContext),
+ .init = aptx_init,
+ .decode = aptx_decode_frame,
+ .close = aptx_close,
+ .capabilities = AV_CODEC_CAP_DR1,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .channel_layouts = (const uint64_t[]) { AV_CH_LAYOUT_STEREO, 0},
+ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P,
+ AV_SAMPLE_FMT_NONE },
+};
+#endif
+
#if CONFIG_APTX_ENCODER
AVCodec ff_aptx_encoder = {
.name = "aptx",
@@ -861,3 +1141,22 @@ AVCodec ff_aptx_encoder = {
.supported_samplerates = (const int[]) {8000, 16000, 24000, 32000, 44100, 48000, 0},
};
#endif
+
+#if CONFIG_APTX_HD_ENCODER
+AVCodec ff_aptx_hd_encoder = {
+ .name = "aptx_hd",
+ .long_name = NULL_IF_CONFIG_SMALL("aptX HD (Audio Processing Technology for Bluetooth)"),
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = AV_CODEC_ID_APTX_HD,
+ .priv_data_size = sizeof(AptXContext),
+ .init = aptx_init,
+ .encode2 = aptx_encode_frame,
+ .close = aptx_close,
+ .capabilities = AV_CODEC_CAP_SMALL_LAST_FRAME,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .channel_layouts = (const uint64_t[]) { AV_CH_LAYOUT_STEREO, 0},
+ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P,
+ AV_SAMPLE_FMT_NONE },
+ .supported_samplerates = (const int[]) {8000, 16000, 24000, 32000, 44100, 48000, 0},
+};
+#endif
diff --git a/chromium/third_party/ffmpeg/libavcodec/arm/Makefile b/chromium/third_party/ffmpeg/libavcodec/arm/Makefile
index 1eeac5449ee..fd2401f4e5c 100644
--- a/chromium/third_party/ffmpeg/libavcodec/arm/Makefile
+++ b/chromium/third_party/ffmpeg/libavcodec/arm/Makefile
@@ -42,6 +42,7 @@ OBJS-$(CONFIG_DCA_DECODER) += arm/synth_filter_init_arm.o
OBJS-$(CONFIG_HEVC_DECODER) += arm/hevcdsp_init_arm.o
OBJS-$(CONFIG_MLP_DECODER) += arm/mlpdsp_init_arm.o
OBJS-$(CONFIG_RV40_DECODER) += arm/rv40dsp_init_arm.o
+OBJS-$(CONFIG_SBC_ENCODER) += arm/sbcdsp_init_arm.o
OBJS-$(CONFIG_VORBIS_DECODER) += arm/vorbisdsp_init_arm.o
OBJS-$(CONFIG_VP6_DECODER) += arm/vp6dsp_init_arm.o
OBJS-$(CONFIG_VP9_DECODER) += arm/vp9dsp_init_10bpp_arm.o \
@@ -81,6 +82,7 @@ ARMV6-OBJS-$(CONFIG_VP8DSP) += arm/vp8_armv6.o \
# decoders/encoders
ARMV6-OBJS-$(CONFIG_MLP_DECODER) += arm/mlpdsp_armv6.o
+ARMV6-OBJS-$(CONFIG_SBC_ENCODER) += arm/sbcdsp_armv6.o
# VFP optimizations
@@ -140,6 +142,7 @@ NEON-OBJS-$(CONFIG_HEVC_DECODER) += arm/hevcdsp_init_neon.o \
NEON-OBJS-$(CONFIG_RV30_DECODER) += arm/rv34dsp_neon.o
NEON-OBJS-$(CONFIG_RV40_DECODER) += arm/rv34dsp_neon.o \
arm/rv40dsp_neon.o
+NEON-OBJS-$(CONFIG_SBC_ENCODER) += arm/sbcdsp_neon.o
NEON-OBJS-$(CONFIG_VORBIS_DECODER) += arm/vorbisdsp_neon.o
NEON-OBJS-$(CONFIG_VP6_DECODER) += arm/vp6dsp_neon.o
NEON-OBJS-$(CONFIG_VP9_DECODER) += arm/vp9itxfm_16bpp_neon.o \
diff --git a/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_armv6.S b/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_armv6.S
new file mode 100644
index 00000000000..f1ff8457988
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_armv6.S
@@ -0,0 +1,245 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC ARMv6 optimizations. The instructions are scheduled for ARM11 pipeline.
+ */
+
+#include "libavutil/arm/asm.S"
+
+function ff_sbc_analyze_4_armv6, export=1
+ @ r0 = in, r1 = out, r2 = consts
+ push {r1, r3-r7, lr}
+ push {r8-r12, r14}
+ ldrd r4, r5, [r0, #0]
+ ldrd r6, r7, [r2, #0]
+ ldrd r8, r9, [r0, #16]
+ ldrd r10, r11, [r2, #16]
+ mov r14, #0x8000
+ smlad r3, r4, r6, r14
+ smlad r12, r5, r7, r14
+ ldrd r4, r5, [r0, #32]
+ ldrd r6, r7, [r2, #32]
+ smlad r3, r8, r10, r3
+ smlad r12, r9, r11, r12
+ ldrd r8, r9, [r0, #48]
+ ldrd r10, r11, [r2, #48]
+ smlad r3, r4, r6, r3
+ smlad r12, r5, r7, r12
+ ldrd r4, r5, [r0, #64]
+ ldrd r6, r7, [r2, #64]
+ smlad r3, r8, r10, r3
+ smlad r12, r9, r11, r12
+ ldrd r8, r9, [r0, #8]
+ ldrd r10, r11, [r2, #8]
+ smlad r3, r4, r6, r3 @ t1[0] is done
+ smlad r12, r5, r7, r12 @ t1[1] is done
+ ldrd r4, r5, [r0, #24]
+ ldrd r6, r7, [r2, #24]
+ pkhtb r3, r12, r3, asr #16 @ combine t1[0] and t1[1]
+ smlad r12, r8, r10, r14
+ smlad r14, r9, r11, r14
+ ldrd r8, r9, [r0, #40]
+ ldrd r10, r11, [r2, #40]
+ smlad r12, r4, r6, r12
+ smlad r14, r5, r7, r14
+ ldrd r4, r5, [r0, #56]
+ ldrd r6, r7, [r2, #56]
+ smlad r12, r8, r10, r12
+ smlad r14, r9, r11, r14
+ ldrd r8, r9, [r0, #72]
+ ldrd r10, r11, [r2, #72]
+ smlad r12, r4, r6, r12
+ smlad r14, r5, r7, r14
+ ldrd r4, r5, [r2, #80] @ start loading cos table
+ smlad r12, r8, r10, r12 @ t1[2] is done
+ smlad r14, r9, r11, r14 @ t1[3] is done
+ ldrd r6, r7, [r2, #88]
+ ldrd r8, r9, [r2, #96]
+ ldrd r10, r11, [r2, #104] @ cos table fully loaded
+ pkhtb r12, r14, r12, asr #16 @ combine t1[2] and t1[3]
+ smuad r4, r3, r4
+ smuad r5, r3, r5
+ smlad r4, r12, r8, r4
+ smlad r5, r12, r9, r5
+ smuad r6, r3, r6
+ smuad r7, r3, r7
+ smlad r6, r12, r10, r6
+ smlad r7, r12, r11, r7
+ pop {r8-r12, r14}
+ stmia r1, {r4, r5, r6, r7}
+ pop {r1, r3-r7, pc}
+endfunc
+
+function ff_sbc_analyze_8_armv6, export=1
+ @ r0 = in, r1 = out, r2 = consts
+ push {r1, r3-r7, lr}
+ push {r8-r12, r14}
+ ldrd r4, r5, [r0, #24]
+ ldrd r6, r7, [r2, #24]
+ ldrd r8, r9, [r0, #56]
+ ldrd r10, r11, [r2, #56]
+ mov r14, #0x8000
+ smlad r3, r4, r6, r14
+ smlad r12, r5, r7, r14
+ ldrd r4, r5, [r0, #88]
+ ldrd r6, r7, [r2, #88]
+ smlad r3, r8, r10, r3
+ smlad r12, r9, r11, r12
+ ldrd r8, r9, [r0, #120]
+ ldrd r10, r11, [r2, #120]
+ smlad r3, r4, r6, r3
+ smlad r12, r5, r7, r12
+ ldrd r4, r5, [r0, #152]
+ ldrd r6, r7, [r2, #152]
+ smlad r3, r8, r10, r3
+ smlad r12, r9, r11, r12
+ ldrd r8, r9, [r0, #16]
+ ldrd r10, r11, [r2, #16]
+ smlad r3, r4, r6, r3 @ t1[6] is done
+ smlad r12, r5, r7, r12 @ t1[7] is done
+ ldrd r4, r5, [r0, #48]
+ ldrd r6, r7, [r2, #48]
+ pkhtb r3, r12, r3, asr #16 @ combine t1[6] and t1[7]
+ str r3, [sp, #-4]! @ save to stack
+ smlad r3, r8, r10, r14
+ smlad r12, r9, r11, r14
+ ldrd r8, r9, [r0, #80]
+ ldrd r10, r11, [r2, #80]
+ smlad r3, r4, r6, r3
+ smlad r12, r5, r7, r12
+ ldrd r4, r5, [r0, #112]
+ ldrd r6, r7, [r2, #112]
+ smlad r3, r8, r10, r3
+ smlad r12, r9, r11, r12
+ ldrd r8, r9, [r0, #144]
+ ldrd r10, r11, [r2, #144]
+ smlad r3, r4, r6, r3
+ smlad r12, r5, r7, r12
+ ldrd r4, r5, [r0, #0]
+ ldrd r6, r7, [r2, #0]
+ smlad r3, r8, r10, r3 @ t1[4] is done
+ smlad r12, r9, r11, r12 @ t1[5] is done
+ ldrd r8, r9, [r0, #32]
+ ldrd r10, r11, [r2, #32]
+ pkhtb r3, r12, r3, asr #16 @ combine t1[4] and t1[5]
+ str r3, [sp, #-4]! @ save to stack
+ smlad r3, r4, r6, r14
+ smlad r12, r5, r7, r14
+ ldrd r4, r5, [r0, #64]
+ ldrd r6, r7, [r2, #64]
+ smlad r3, r8, r10, r3
+ smlad r12, r9, r11, r12
+ ldrd r8, r9, [r0, #96]
+ ldrd r10, r11, [r2, #96]
+ smlad r3, r4, r6, r3
+ smlad r12, r5, r7, r12
+ ldrd r4, r5, [r0, #128]
+ ldrd r6, r7, [r2, #128]
+ smlad r3, r8, r10, r3
+ smlad r12, r9, r11, r12
+ ldrd r8, r9, [r0, #8]
+ ldrd r10, r11, [r2, #8]
+ smlad r3, r4, r6, r3 @ t1[0] is done
+ smlad r12, r5, r7, r12 @ t1[1] is done
+ ldrd r4, r5, [r0, #40]
+ ldrd r6, r7, [r2, #40]
+ pkhtb r3, r12, r3, asr #16 @ combine t1[0] and t1[1]
+ smlad r12, r8, r10, r14
+ smlad r14, r9, r11, r14
+ ldrd r8, r9, [r0, #72]
+ ldrd r10, r11, [r2, #72]
+ smlad r12, r4, r6, r12
+ smlad r14, r5, r7, r14
+ ldrd r4, r5, [r0, #104]
+ ldrd r6, r7, [r2, #104]
+ smlad r12, r8, r10, r12
+ smlad r14, r9, r11, r14
+ ldrd r8, r9, [r0, #136]
+ ldrd r10, r11, [r2, #136]!
+ smlad r12, r4, r6, r12
+ smlad r14, r5, r7, r14
+ ldrd r4, r5, [r2, #(160 - 136 + 0)]
+ smlad r12, r8, r10, r12 @ t1[2] is done
+ smlad r14, r9, r11, r14 @ t1[3] is done
+ ldrd r6, r7, [r2, #(160 - 136 + 8)]
+ smuad r4, r3, r4
+ smuad r5, r3, r5
+ pkhtb r12, r14, r12, asr #16 @ combine t1[2] and t1[3]
+ @ r3 = t2[0:1]
+ @ r12 = t2[2:3]
+ pop {r0, r14} @ t2[4:5], t2[6:7]
+ ldrd r8, r9, [r2, #(160 - 136 + 32)]
+ smuad r6, r3, r6
+ smuad r7, r3, r7
+ ldrd r10, r11, [r2, #(160 - 136 + 40)]
+ smlad r4, r12, r8, r4
+ smlad r5, r12, r9, r5
+ ldrd r8, r9, [r2, #(160 - 136 + 64)]
+ smlad r6, r12, r10, r6
+ smlad r7, r12, r11, r7
+ ldrd r10, r11, [r2, #(160 - 136 + 72)]
+ smlad r4, r0, r8, r4
+ smlad r5, r0, r9, r5
+ ldrd r8, r9, [r2, #(160 - 136 + 96)]
+ smlad r6, r0, r10, r6
+ smlad r7, r0, r11, r7
+ ldrd r10, r11, [r2, #(160 - 136 + 104)]
+ smlad r4, r14, r8, r4
+ smlad r5, r14, r9, r5
+ ldrd r8, r9, [r2, #(160 - 136 + 16 + 0)]
+ smlad r6, r14, r10, r6
+ smlad r7, r14, r11, r7
+ ldrd r10, r11, [r2, #(160 - 136 + 16 + 8)]
+ stmia r1!, {r4, r5}
+ smuad r4, r3, r8
+ smuad r5, r3, r9
+ ldrd r8, r9, [r2, #(160 - 136 + 16 + 32)]
+ stmia r1!, {r6, r7}
+ smuad r6, r3, r10
+ smuad r7, r3, r11
+ ldrd r10, r11, [r2, #(160 - 136 + 16 + 40)]
+ smlad r4, r12, r8, r4
+ smlad r5, r12, r9, r5
+ ldrd r8, r9, [r2, #(160 - 136 + 16 + 64)]
+ smlad r6, r12, r10, r6
+ smlad r7, r12, r11, r7
+ ldrd r10, r11, [r2, #(160 - 136 + 16 + 72)]
+ smlad r4, r0, r8, r4
+ smlad r5, r0, r9, r5
+ ldrd r8, r9, [r2, #(160 - 136 + 16 + 96)]
+ smlad r6, r0, r10, r6
+ smlad r7, r0, r11, r7
+ ldrd r10, r11, [r2, #(160 - 136 + 16 + 104)]
+ smlad r4, r14, r8, r4
+ smlad r5, r14, r9, r5
+ smlad r6, r14, r10, r6
+ smlad r7, r14, r11, r7
+ pop {r8-r12, r14}
+ stmia r1!, {r4, r5, r6, r7}
+ pop {r1, r3-r7, pc}
+endfunc
diff --git a/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_init_arm.c b/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_init_arm.c
new file mode 100644
index 00000000000..6bf7e729ef1
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_init_arm.c
@@ -0,0 +1,105 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC ARMv6 optimization for some basic "building bricks"
+ */
+
+#include "libavutil/cpu.h"
+#include "libavutil/arm/cpu.h"
+#include "libavcodec/sbcdsp.h"
+
+void ff_sbc_analyze_4_armv6(const int16_t *in, int32_t *out, const int16_t *consts);
+void ff_sbc_analyze_8_armv6(const int16_t *in, int32_t *out, const int16_t *consts);
+
+void ff_sbc_analyze_4_neon(const int16_t *in, int32_t *out, const int16_t *consts);
+void ff_sbc_analyze_8_neon(const int16_t *in, int32_t *out, const int16_t *consts);
+void ff_sbc_calc_scalefactors_neon(int32_t sb_sample_f[16][2][8],
+ uint32_t scale_factor[2][8],
+ int blocks, int channels, int subbands);
+int ff_sbc_calc_scalefactors_j_neon(int32_t sb_sample_f[16][2][8],
+ uint32_t scale_factor[2][8],
+ int blocks, int subbands);
+int ff_sbc_enc_process_input_4s_neon(int position, const uint8_t *pcm,
+ int16_t X[2][SBC_X_BUFFER_SIZE],
+ int nsamples, int nchannels);
+int ff_sbc_enc_process_input_8s_neon(int position, const uint8_t *pcm,
+ int16_t X[2][SBC_X_BUFFER_SIZE],
+ int nsamples, int nchannels);
+
+DECLARE_ALIGNED(SBC_ALIGN, int32_t, ff_sbcdsp_joint_bits_mask)[8] = {
+ 8, 4, 2, 1, 128, 64, 32, 16
+};
+
+#if HAVE_BIGENDIAN
+#define PERM(a, b, c, d) { \
+ (a * 2) + 1, (a * 2) + 0, \
+ (b * 2) + 1, (b * 2) + 0, \
+ (c * 2) + 1, (c * 2) + 0, \
+ (d * 2) + 1, (d * 2) + 0 \
+ }
+#else
+#define PERM(a, b, c, d) { \
+ (a * 2) + 0, (a * 2) + 1, \
+ (b * 2) + 0, (b * 2) + 1, \
+ (c * 2) + 0, (c * 2) + 1, \
+ (d * 2) + 0, (d * 2) + 1 \
+ }
+#endif
+
+DECLARE_ALIGNED(SBC_ALIGN, uint8_t, ff_sbc_input_perm_4)[2][8] = {
+ PERM(7, 3, 6, 4),
+ PERM(0, 2, 1, 5)
+};
+
+DECLARE_ALIGNED(SBC_ALIGN, uint8_t, ff_sbc_input_perm_8)[4][8] = {
+ PERM(15, 7, 14, 8),
+ PERM(13, 9, 12, 10),
+ PERM(11, 3, 6, 0),
+ PERM( 5, 1, 4, 2)
+};
+
+av_cold void ff_sbcdsp_init_arm(SBCDSPContext *s)
+{
+ int cpu_flags = av_get_cpu_flags();
+
+ if (have_armv6(cpu_flags)) {
+ s->sbc_analyze_4 = ff_sbc_analyze_4_armv6;
+ s->sbc_analyze_8 = ff_sbc_analyze_8_armv6;
+ }
+
+ if (have_neon(cpu_flags)) {
+ s->sbc_analyze_4 = ff_sbc_analyze_4_neon;
+ s->sbc_analyze_8 = ff_sbc_analyze_8_neon;
+ s->sbc_calc_scalefactors = ff_sbc_calc_scalefactors_neon;
+ s->sbc_calc_scalefactors_j = ff_sbc_calc_scalefactors_j_neon;
+ if (s->increment != 1) {
+ s->sbc_enc_process_input_4s = ff_sbc_enc_process_input_4s_neon;
+ s->sbc_enc_process_input_8s = ff_sbc_enc_process_input_8s_neon;
+ }
+ }
+}
diff --git a/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_neon.S b/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_neon.S
new file mode 100644
index 00000000000..d83d21d2020
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/arm/sbcdsp_neon.S
@@ -0,0 +1,714 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC ARM NEON optimizations
+ */
+
+#include "libavutil/arm/asm.S"
+#include "neon.S"
+
+#define SBC_PROTO_FIXED_SCALE 16
+
+function ff_sbc_analyze_4_neon, export=1
+ /* TODO: merge even and odd cases (or even merge all four calls to this
+ * function) in order to have only aligned reads from 'in' array
+ * and reduce number of load instructions */
+ vld1.16 {d4, d5}, [r0, :64]!
+ vld1.16 {d8, d9}, [r2, :128]!
+
+ vmull.s16 q0, d4, d8
+ vld1.16 {d6, d7}, [r0, :64]!
+ vmull.s16 q1, d5, d9
+ vld1.16 {d10, d11}, [r2, :128]!
+
+ vmlal.s16 q0, d6, d10
+ vld1.16 {d4, d5}, [r0, :64]!
+ vmlal.s16 q1, d7, d11
+ vld1.16 {d8, d9}, [r2, :128]!
+
+ vmlal.s16 q0, d4, d8
+ vld1.16 {d6, d7}, [r0, :64]!
+ vmlal.s16 q1, d5, d9
+ vld1.16 {d10, d11}, [r2, :128]!
+
+ vmlal.s16 q0, d6, d10
+ vld1.16 {d4, d5}, [r0, :64]!
+ vmlal.s16 q1, d7, d11
+ vld1.16 {d8, d9}, [r2, :128]!
+
+ vmlal.s16 q0, d4, d8
+ vmlal.s16 q1, d5, d9
+
+ vpadd.s32 d0, d0, d1
+ vpadd.s32 d1, d2, d3
+
+ vrshrn.s32 d0, q0, SBC_PROTO_FIXED_SCALE
+
+ vld1.16 {d2, d3, d4, d5}, [r2, :128]!
+
+ vdup.i32 d1, d0[1] /* TODO: can be eliminated */
+ vdup.i32 d0, d0[0] /* TODO: can be eliminated */
+
+ vmull.s16 q3, d2, d0
+ vmull.s16 q4, d3, d0
+ vmlal.s16 q3, d4, d1
+ vmlal.s16 q4, d5, d1
+
+ vpadd.s32 d0, d6, d7 /* TODO: can be eliminated */
+ vpadd.s32 d1, d8, d9 /* TODO: can be eliminated */
+
+ vst1.32 {d0, d1}, [r1, :128]
+
+ bx lr
+endfunc
+
+function ff_sbc_analyze_8_neon, export=1
+ /* TODO: merge even and odd cases (or even merge all four calls to this
+ * function) in order to have only aligned reads from 'in' array
+ * and reduce number of load instructions */
+ vld1.16 {d4, d5}, [r0, :64]!
+ vld1.16 {d8, d9}, [r2, :128]!
+
+ vmull.s16 q6, d4, d8
+ vld1.16 {d6, d7}, [r0, :64]!
+ vmull.s16 q7, d5, d9
+ vld1.16 {d10, d11}, [r2, :128]!
+ vmull.s16 q8, d6, d10
+ vld1.16 {d4, d5}, [r0, :64]!
+ vmull.s16 q9, d7, d11
+ vld1.16 {d8, d9}, [r2, :128]!
+
+ vmlal.s16 q6, d4, d8
+ vld1.16 {d6, d7}, [r0, :64]!
+ vmlal.s16 q7, d5, d9
+ vld1.16 {d10, d11}, [r2, :128]!
+ vmlal.s16 q8, d6, d10
+ vld1.16 {d4, d5}, [r0, :64]!
+ vmlal.s16 q9, d7, d11
+ vld1.16 {d8, d9}, [r2, :128]!
+
+ vmlal.s16 q6, d4, d8
+ vld1.16 {d6, d7}, [r0, :64]!
+ vmlal.s16 q7, d5, d9
+ vld1.16 {d10, d11}, [r2, :128]!
+ vmlal.s16 q8, d6, d10
+ vld1.16 {d4, d5}, [r0, :64]!
+ vmlal.s16 q9, d7, d11
+ vld1.16 {d8, d9}, [r2, :128]!
+
+ vmlal.s16 q6, d4, d8
+ vld1.16 {d6, d7}, [r0, :64]!
+ vmlal.s16 q7, d5, d9
+ vld1.16 {d10, d11}, [r2, :128]!
+ vmlal.s16 q8, d6, d10
+ vld1.16 {d4, d5}, [r0, :64]!
+ vmlal.s16 q9, d7, d11
+ vld1.16 {d8, d9}, [r2, :128]!
+
+ vmlal.s16 q6, d4, d8
+ vld1.16 {d6, d7}, [r0, :64]!
+ vmlal.s16 q7, d5, d9
+ vld1.16 {d10, d11}, [r2, :128]!
+
+ vmlal.s16 q8, d6, d10
+ vmlal.s16 q9, d7, d11
+
+ vpadd.s32 d0, d12, d13
+ vpadd.s32 d1, d14, d15
+ vpadd.s32 d2, d16, d17
+ vpadd.s32 d3, d18, d19
+
+ vrshr.s32 q0, q0, SBC_PROTO_FIXED_SCALE
+ vrshr.s32 q1, q1, SBC_PROTO_FIXED_SCALE
+ vmovn.s32 d0, q0
+ vmovn.s32 d1, q1
+
+ vdup.i32 d3, d1[1] /* TODO: can be eliminated */
+ vdup.i32 d2, d1[0] /* TODO: can be eliminated */
+ vdup.i32 d1, d0[1] /* TODO: can be eliminated */
+ vdup.i32 d0, d0[0] /* TODO: can be eliminated */
+
+ vld1.16 {d4, d5}, [r2, :128]!
+ vmull.s16 q6, d4, d0
+ vld1.16 {d6, d7}, [r2, :128]!
+ vmull.s16 q7, d5, d0
+ vmull.s16 q8, d6, d0
+ vmull.s16 q9, d7, d0
+
+ vld1.16 {d4, d5}, [r2, :128]!
+ vmlal.s16 q6, d4, d1
+ vld1.16 {d6, d7}, [r2, :128]!
+ vmlal.s16 q7, d5, d1
+ vmlal.s16 q8, d6, d1
+ vmlal.s16 q9, d7, d1
+
+ vld1.16 {d4, d5}, [r2, :128]!
+ vmlal.s16 q6, d4, d2
+ vld1.16 {d6, d7}, [r2, :128]!
+ vmlal.s16 q7, d5, d2
+ vmlal.s16 q8, d6, d2
+ vmlal.s16 q9, d7, d2
+
+ vld1.16 {d4, d5}, [r2, :128]!
+ vmlal.s16 q6, d4, d3
+ vld1.16 {d6, d7}, [r2, :128]!
+ vmlal.s16 q7, d5, d3
+ vmlal.s16 q8, d6, d3
+ vmlal.s16 q9, d7, d3
+
+ vpadd.s32 d0, d12, d13 /* TODO: can be eliminated */
+ vpadd.s32 d1, d14, d15 /* TODO: can be eliminated */
+ vpadd.s32 d2, d16, d17 /* TODO: can be eliminated */
+ vpadd.s32 d3, d18, d19 /* TODO: can be eliminated */
+
+ vst1.32 {d0, d1, d2, d3}, [r1, :128]
+
+ bx lr
+endfunc
+
+function ff_sbc_calc_scalefactors_neon, export=1
+ @ parameters
+ @ r0 = sb_sample_f
+ @ r1 = scale_factor
+ @ r2 = blocks
+ @ r3 = channels
+ @ r4 = subbands
+ @ local variables
+ @ r5 = in_loop_1
+ @ r6 = in
+ @ r7 = out_loop_1
+ @ r8 = out
+ @ r9 = ch
+ @ r10 = sb
+ @ r11 = inc
+ @ r12 = blk
+
+ push {r1-r2, r4-r12}
+ ldr r4, [sp, #44]
+ mov r11, #64
+
+ mov r9, #0
+1:
+ add r5, r0, r9, lsl#5
+ add r7, r1, r9, lsl#5
+
+ mov r10, #0
+2:
+ add r6, r5, r10, lsl#2
+ add r8, r7, r10, lsl#2
+ mov r12, r2
+
+ vmov.s32 q0, #0
+ vmov.s32 q1, #0x8000 @ 1 << SCALE_OUT_BITS
+ vmov.s32 q14, #1
+ vmov.s32 q15, #16 @ 31 - SCALE_OUT_BITS
+ vadd.s32 q1, q1, q14
+3:
+ vld1.32 {d16, d17}, [r6, :128], r11
+ vabs.s32 q8, q8
+ vld1.32 {d18, d19}, [r6, :128], r11
+ vabs.s32 q9, q9
+ vld1.32 {d20, d21}, [r6, :128], r11
+ vabs.s32 q10, q10
+ vld1.32 {d22, d23}, [r6, :128], r11
+ vabs.s32 q11, q11
+ vmax.s32 q0, q0, q8
+ vmax.s32 q1, q1, q9
+ vmax.s32 q0, q0, q10
+ vmax.s32 q1, q1, q11
+ subs r12, r12, #4
+ bgt 3b
+ vmax.s32 q0, q0, q1
+ vsub.s32 q0, q0, q14
+ vclz.s32 q0, q0
+ vsub.s32 q0, q15, q0
+ vst1.32 {d0, d1}, [r8, :128]
+
+ add r10, r10, #4
+ cmp r10, r4
+ blt 2b
+
+ add r9, r9, #1
+ cmp r9, r3
+ blt 1b
+
+ pop {r1-r2, r4-r12}
+ bx lr
+endfunc
+
+/*
+ * constants: q13 = (31 - SCALE_OUT_BITS)
+ * q14 = 1
+ * input: q0 - ((1 << SCALE_OUT_BITS) + 1)
+ * r5 - samples for channel 0
+ * r6 - samples for shannel 1
+ * output: q0, q1 - scale factors without joint stereo
+ * q2, q3 - scale factors with joint stereo
+ * q15 - joint stereo selection mask
+ */
+.macro calc_scalefactors
+ vmov.s32 q1, q0
+ vmov.s32 q2, q0
+ vmov.s32 q3, q0
+ mov r3, r2
+1:
+ vld1.32 {d18, d19}, [r6, :128], r11
+ vbic.s32 q11, q9, q14
+ vld1.32 {d16, d17}, [r5, :128], r11
+ vhadd.s32 q10, q8, q11
+ vhsub.s32 q11, q8, q11
+ vabs.s32 q8, q8
+ vabs.s32 q9, q9
+ vabs.s32 q10, q10
+ vabs.s32 q11, q11
+ vmax.s32 q0, q0, q8
+ vmax.s32 q1, q1, q9
+ vmax.s32 q2, q2, q10
+ vmax.s32 q3, q3, q11
+ subs r3, r3, #1
+ bgt 1b
+ vsub.s32 q0, q0, q14
+ vsub.s32 q1, q1, q14
+ vsub.s32 q2, q2, q14
+ vsub.s32 q3, q3, q14
+ vclz.s32 q0, q0
+ vclz.s32 q1, q1
+ vclz.s32 q2, q2
+ vclz.s32 q3, q3
+ vsub.s32 q0, q13, q0
+ vsub.s32 q1, q13, q1
+ vsub.s32 q2, q13, q2
+ vsub.s32 q3, q13, q3
+.endm
+
+/*
+ * constants: q14 = 1
+ * input: q15 - joint stereo selection mask
+ * r5 - value set by calc_scalefactors macro
+ * r6 - value set by calc_scalefactors macro
+ */
+.macro update_joint_stereo_samples
+ sub r8, r6, r11
+ sub r7, r5, r11
+ sub r6, r6, r11, asl #1
+ sub r5, r5, r11, asl #1
+ vld1.32 {d18, d19}, [r6, :128]
+ vbic.s32 q11, q9, q14
+ vld1.32 {d16, d17}, [r5, :128]
+ vld1.32 {d2, d3}, [r8, :128]
+ vbic.s32 q3, q1, q14
+ vld1.32 {d0, d1}, [r7, :128]
+ vhsub.s32 q10, q8, q11
+ vhadd.s32 q11, q8, q11
+ vhsub.s32 q2, q0, q3
+ vhadd.s32 q3, q0, q3
+ vbif.s32 q10, q9, q15
+ vbif.s32 d22, d16, d30
+ sub r11, r10, r11, asl #1
+ sub r3, r2, #2
+2:
+ vbif.s32 d23, d17, d31
+ vst1.32 {d20, d21}, [r6, :128], r11
+ vbif.s32 d4, d2, d30
+ vld1.32 {d18, d19}, [r6, :128]
+ vbif.s32 d5, d3, d31
+ vst1.32 {d22, d23}, [r5, :128], r11
+ vbif.s32 d6, d0, d30
+ vld1.32 {d16, d17}, [r5, :128]
+ vbif.s32 d7, d1, d31
+ vst1.32 {d4, d5}, [r8, :128], r11
+ vbic.s32 q11, q9, q14
+ vld1.32 {d2, d3}, [r8, :128]
+ vst1.32 {d6, d7}, [r7, :128], r11
+ vbic.s32 q3, q1, q14
+ vld1.32 {d0, d1}, [r7, :128]
+ vhsub.s32 q10, q8, q11
+ vhadd.s32 q11, q8, q11
+ vhsub.s32 q2, q0, q3
+ vhadd.s32 q3, q0, q3
+ vbif.s32 q10, q9, q15
+ vbif.s32 d22, d16, d30
+ subs r3, r3, #2
+ bgt 2b
+ sub r11, r10, r11, asr #1
+ vbif.s32 d23, d17, d31
+ vst1.32 {d20, d21}, [r6, :128]
+ vbif.s32 q2, q1, q15
+ vst1.32 {d22, d23}, [r5, :128]
+ vbif.s32 q3, q0, q15
+ vst1.32 {d4, d5}, [r8, :128]
+ vst1.32 {d6, d7}, [r7, :128]
+.endm
+
+function ff_sbc_calc_scalefactors_j_neon, export=1
+ @ parameters
+ @ r0 = in = sb_sample_f
+ @ r1 = out = scale_factor
+ @ r2 = blocks
+ @ r3 = subbands
+ @ local variables
+ @ r4 = consts = ff_sbcdsp_joint_bits_mask
+ @ r5 = in0
+ @ r6 = in1
+ @ r7 = out0
+ @ r8 = out1
+ @ r10 = zero
+ @ r11 = inc
+ @ return r0 = joint
+
+ push {r3-r11}
+ movrelx r4, X(ff_sbcdsp_joint_bits_mask)
+ mov r10, #0
+ mov r11, #64
+
+ vmov.s32 q14, #1
+ vmov.s32 q13, #16 @ 31 - SCALE_OUT_BITS
+
+ cmp r3, #4
+ bne 8f
+
+4: @ 4 subbands
+ add r5, r0, #0
+ add r6, r0, #32
+ add r7, r1, #0
+ add r8, r1, #32
+ vmov.s32 q0, #0x8000 @ 1 << SCALE_OUT_BITS
+ vadd.s32 q0, q0, q14
+
+ calc_scalefactors
+
+ @ check whether to use joint stereo for subbands 0, 1, 2
+ vadd.s32 q15, q0, q1
+ vadd.s32 q9, q2, q3
+ vmov.s32 d31[1], r10 @ last subband -> no joint
+ vld1.32 {d16, d17}, [r4, :128]!
+ vcgt.s32 q15, q15, q9
+
+ @ calculate and save to memory 'joint' variable
+ @ update and save scale factors to memory
+ vand.s32 q8, q8, q15
+ vbit.s32 q0, q2, q15
+ vpadd.s32 d16, d16, d17
+ vbit.s32 q1, q3, q15
+ vpadd.s32 d16, d16, d16
+ vst1.32 {d0, d1}, [r7, :128]
+ vst1.32 {d2, d3}, [r8, :128]
+ vmov.32 r0, d16[0]
+
+ update_joint_stereo_samples
+ b 9f
+
+8: @ 8 subbands
+ add r5, r0, #16
+ add r6, r0, #48
+ add r7, r1, #16
+ add r8, r1, #48
+ vmov.s32 q0, #0x8000 @ 1 << SCALE_OUT_BITS
+ vadd.s32 q0, q0, q14
+
+ calc_scalefactors
+
+ @ check whether to use joint stereo for subbands 4, 5, 6
+ vadd.s32 q15, q0, q1
+ vadd.s32 q9, q2, q3
+ vmov.s32 d31[1], r10 @ last subband -> no joint
+ vld1.32 {d16, d17}, [r4, :128]!
+ vcgt.s32 q15, q15, q9
+
+ @ calculate part of 'joint' variable and save it to d24
+ @ update and save scale factors to memory
+ vand.s32 q8, q8, q15
+ vbit.s32 q0, q2, q15
+ vpadd.s32 d16, d16, d17
+ vbit.s32 q1, q3, q15
+ vst1.32 {d0, d1}, [r7, :128]
+ vst1.32 {d2, d3}, [r8, :128]
+ vpadd.s32 d24, d16, d16
+
+ update_joint_stereo_samples
+
+ add r5, r0, #0
+ add r6, r0, #32
+ add r7, r1, #0
+ add r8, r1, #32
+ vmov.s32 q0, #0x8000 @ 1 << SCALE_OUT_BITS
+ vadd.s32 q0, q0, q14
+
+ calc_scalefactors
+
+ @ check whether to use joint stereo for subbands 0, 1, 2, 3
+ vadd.s32 q15, q0, q1
+ vadd.s32 q9, q2, q3
+ vld1.32 {d16, d17}, [r4, :128]!
+ vcgt.s32 q15, q15, q9
+
+ @ combine last part of 'joint' with d24 and save to memory
+ @ update and save scale factors to memory
+ vand.s32 q8, q8, q15
+ vbit.s32 q0, q2, q15
+ vpadd.s32 d16, d16, d17
+ vbit.s32 q1, q3, q15
+ vpadd.s32 d16, d16, d16
+ vst1.32 {d0, d1}, [r7, :128]
+ vadd.s32 d16, d16, d24
+ vst1.32 {d2, d3}, [r8, :128]
+ vmov.32 r0, d16[0]
+
+ update_joint_stereo_samples
+9:
+ pop {r3-r11}
+ bx lr
+endfunc
+
+function ff_sbc_enc_process_input_4s_neon, export=1
+ @ parameters
+ @ r0 = positioin
+ @ r1 = pcm
+ @ r2 = X
+ @ r3 = nsamples
+ @ r4 = nchannels
+ @ local variables
+ @ r5 = ff_sbc_input_perm_4
+ @ r6 = src / x
+ @ r7 = dst / y
+
+ push {r1, r3-r7}
+ ldr r4, [sp, #24]
+ movrelx r5, X(ff_sbc_input_perm_4)
+
+ @ handle X buffer wraparound
+ cmp r0, r3
+ bge 1f @ if (position < nsamples)
+ add r7, r2, #576 @ &X[0][SBC_X_BUFFER_SIZE - 40]
+ add r6, r2, r0, lsl#1 @ &X[0][position]
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0}, [r6, :64]!
+ vst1.16 {d0}, [r7, :64]!
+ cmp r4, #1
+ ble 2f @ if (nchannels > 1)
+ add r7, r2, #1232 @ &X[1][SBC_X_BUFFER_SIZE - 40]
+ add r6, r2, #656
+ add r6, r6, r0, lsl#1 @ &X[1][position]
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0}, [r6, :64]!
+ vst1.16 {d0}, [r7, :64]!
+2:
+ mov r0, #288 @ SBC_X_BUFFER_SIZE - 40
+1:
+
+ add r6, r2, r0, lsl#1 @ &X[0][position]
+ add r7, r6, #656 @ &X[1][position]
+
+ cmp r4, #1
+ ble 8f @ if (nchannels > 1)
+ tst r1, #1
+ beq 7f @ if (pcm & 1)
+ @ poor 'pcm' alignment
+ vld1.8 {d0, d1}, [r5, :128]
+1:
+ sub r6, r6, #16
+ sub r7, r7, #16
+ sub r0, r0, #8
+ vld1.8 {d4, d5}, [r1]!
+ vuzp.16 d4, d5
+ vld1.8 {d20, d21}, [r1]!
+ vuzp.16 d20, d21
+ vswp d5, d20
+ vtbl.8 d16, {d4, d5}, d0
+ vtbl.8 d17, {d4, d5}, d1
+ vtbl.8 d18, {d20, d21}, d0
+ vtbl.8 d19, {d20, d21}, d1
+ vst1.16 {d16, d17}, [r6, :128]
+ vst1.16 {d18, d19}, [r7, :128]
+ subs r3, r3, #8
+ bgt 1b
+ b 9f
+7:
+ @ proper 'pcm' alignment
+ vld1.8 {d0, d1}, [r5, :128]
+1:
+ sub r6, r6, #16
+ sub r7, r7, #16
+ sub r0, r0, #8
+ vld2.16 {d4, d5}, [r1]!
+ vld2.16 {d20, d21}, [r1]!
+ vswp d5, d20
+ vtbl.8 d16, {d4, d5}, d0
+ vtbl.8 d17, {d4, d5}, d1
+ vtbl.8 d18, {d20, d21}, d0
+ vtbl.8 d19, {d20, d21}, d1
+ vst1.16 {d16, d17}, [r6, :128]
+ vst1.16 {d18, d19}, [r7, :128]
+ subs r3, r3, #8
+ bgt 1b
+ b 9f
+8:
+ @ mono
+ vld1.8 {d0, d1}, [r5, :128]
+1:
+ sub r6, r6, #16
+ sub r0, r0, #8
+ vld1.8 {d4, d5}, [r1]!
+ vtbl.8 d16, {d4, d5}, d0
+ vtbl.8 d17, {d4, d5}, d1
+ vst1.16 {d16, d17}, [r6, :128]
+ subs r3, r3, #8
+ bgt 1b
+9:
+ pop {r1, r3-r7}
+ bx lr
+endfunc
+
+function ff_sbc_enc_process_input_8s_neon, export=1
+ @ parameters
+ @ r0 = positioin
+ @ r1 = pcm
+ @ r2 = X
+ @ r3 = nsamples
+ @ r4 = nchannels
+ @ local variables
+ @ r5 = ff_sbc_input_perm_8
+ @ r6 = src
+ @ r7 = dst
+
+ push {r1, r3-r7}
+ ldr r4, [sp, #24]
+ movrelx r5, X(ff_sbc_input_perm_8)
+
+ @ handle X buffer wraparound
+ cmp r0, r3
+ bge 1f @ if (position < nsamples)
+ add r7, r2, #512 @ &X[0][SBC_X_BUFFER_SIZE - 72]
+ add r6, r2, r0, lsl#1 @ &X[0][position]
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1}, [r6, :128]!
+ vst1.16 {d0, d1}, [r7, :128]!
+ cmp r4, #1
+ ble 2f @ if (nchannels > 1)
+ add r7, r2, #1168 @ &X[1][SBC_X_BUFFER_SIZE - 72]
+ add r6, r2, #656
+ add r6, r6, r0, lsl#1 @ &X[1][position]
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1, d2, d3}, [r6, :128]!
+ vst1.16 {d0, d1, d2, d3}, [r7, :128]!
+ vld1.16 {d0, d1}, [r6, :128]!
+ vst1.16 {d0, d1}, [r7, :128]!
+2:
+ mov r0, #256 @ SBC_X_BUFFER_SIZE - 72
+1:
+
+ add r6, r2, r0, lsl#1 @ &X[0][position]
+ add r7, r6, #656 @ &X[1][position]
+
+ cmp r4, #1
+ ble 8f @ if (nchannels > 1)
+ tst r1, #1
+ beq 7f @ if (pcm & 1)
+ @ poor 'pcm' alignment
+ vld1.8 {d0, d1, d2, d3}, [r5, :128]
+1:
+ sub r6, r6, #32
+ sub r7, r7, #32
+ sub r0, r0, #16
+ vld1.8 {d4, d5, d6, d7}, [r1]!
+ vuzp.16 q2, q3
+ vld1.8 {d20, d21, d22, d23}, [r1]!
+ vuzp.16 q10, q11
+ vswp q3, q10
+ vtbl.8 d16, {d4, d5, d6, d7}, d0
+ vtbl.8 d17, {d4, d5, d6, d7}, d1
+ vtbl.8 d18, {d4, d5, d6, d7}, d2
+ vtbl.8 d19, {d4, d5, d6, d7}, d3
+ vst1.16 {d16, d17, d18, d19}, [r6, :128]
+ vtbl.8 d16, {d20, d21, d22, d23}, d0
+ vtbl.8 d17, {d20, d21, d22, d23}, d1
+ vtbl.8 d18, {d20, d21, d22, d23}, d2
+ vtbl.8 d19, {d20, d21, d22, d23}, d3
+ vst1.16 {d16, d17, d18, d19}, [r7, :128]
+ subs r3, r3, #16
+ bgt 1b
+ b 9f
+7:
+ @ proper 'pcm' alignment
+ vld1.8 {d0, d1, d2, d3}, [r5, :128]
+1:
+ sub r6, r6, #32
+ sub r7, r7, #32
+ sub r0, r0, #16
+ vld2.16 {d4, d5, d6, d7}, [r1]!
+ vld2.16 {d20, d21, d22, d23}, [r1]!
+ vswp q3, q10
+ vtbl.8 d16, {d4, d5, d6, d7}, d0
+ vtbl.8 d17, {d4, d5, d6, d7}, d1
+ vtbl.8 d18, {d4, d5, d6, d7}, d2
+ vtbl.8 d19, {d4, d5, d6, d7}, d3
+ vst1.16 {d16, d17, d18, d19}, [r6, :128]
+ vtbl.8 d16, {d20, d21, d22, d23}, d0
+ vtbl.8 d17, {d20, d21, d22, d23}, d1
+ vtbl.8 d18, {d20, d21, d22, d23}, d2
+ vtbl.8 d19, {d20, d21, d22, d23}, d3
+ vst1.16 {d16, d17, d18, d19}, [r7, :128]
+ subs r3, r3, #16
+ bgt 1b
+ b 9f
+8:
+ @ mono
+ vld1.8 {d0, d1, d2, d3}, [r5, :128]
+1:
+ sub r6, r6, #32
+ sub r0, r0, #16
+ vld1.8 {d4, d5, d6, d7}, [r1]!
+ vtbl.8 d16, {d4, d5, d6, d7}, d0
+ vtbl.8 d17, {d4, d5, d6, d7}, d1
+ vtbl.8 d18, {d4, d5, d6, d7}, d2
+ vtbl.8 d19, {d4, d5, d6, d7}, d3
+ vst1.16 {d16, d17, d18, d19}, [r6, :128]
+ subs r3, r3, #16
+ bgt 1b
+9:
+ pop {r1, r3-r7}
+ bx lr
+endfunc
diff --git a/chromium/third_party/ffmpeg/libavcodec/avcodec.h b/chromium/third_party/ffmpeg/libavcodec/avcodec.h
index 8fbbc798a2e..a8322fb62a2 100644
--- a/chromium/third_party/ffmpeg/libavcodec/avcodec.h
+++ b/chromium/third_party/ffmpeg/libavcodec/avcodec.h
@@ -615,6 +615,7 @@ enum AVCodecID {
AV_CODEC_ID_PAF_AUDIO,
AV_CODEC_ID_ON2AVC,
AV_CODEC_ID_DSS_SP,
+ AV_CODEC_ID_CODEC2,
AV_CODEC_ID_FFWAVESYNTH = 0x15800,
AV_CODEC_ID_SONIC,
@@ -634,6 +635,8 @@ enum AVCodecID {
AV_CODEC_ID_ATRAC3PAL,
AV_CODEC_ID_DOLBY_E,
AV_CODEC_ID_APTX,
+ AV_CODEC_ID_APTX_HD,
+ AV_CODEC_ID_SBC,
/* subtitle codecs */
AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
@@ -2917,6 +2920,14 @@ typedef struct AVCodecContext {
#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3
#define FF_PROFILE_HEVC_REXT 4
+#define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0
+#define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1
+#define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2
+#define FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3
+#define FF_PROFILE_MJPEG_JPEG_LS 0xf7
+
+#define FF_PROFILE_SBC_MSBC 1
+
/**
* level
* - encoding: Set by user.
@@ -3254,6 +3265,20 @@ typedef struct AVCodecContext {
* (with the display dimensions being determined by the crop_* fields).
*/
int apply_cropping;
+
+ /*
+ * Video decoding only. Sets the number of extra hardware frames which
+ * the decoder will allocate for use by the caller. This must be set
+ * before avcodec_open2() is called.
+ *
+ * Some hardware decoders require all frames that they will use for
+ * output to be defined in advance before decoding starts. For such
+ * decoders, the hardware frame pool must therefore be of a fixed size.
+ * The extra frames set here are on top of any number that the decoder
+ * needs internally in order to operate normally (for example, frames
+ * used as reference pictures).
+ */
+ int extra_hw_frames;
} AVCodecContext;
#if FF_API_CODEC_GET_SET
@@ -3439,6 +3464,9 @@ typedef struct AVCodec {
/**
* Initialize codec static data, called from avcodec_register().
+ *
+ * This is not intended for time consuming operations as it is
+ * run for every codec regardless of that codec being used.
*/
void (*init_static_data)(struct AVCodec *codec);
@@ -3979,11 +4007,25 @@ typedef struct AVCodecParameters {
} AVCodecParameters;
/**
+ * Iterate over all registered codecs.
+ *
+ * @param opaque a pointer where libavcodec will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered codec or NULL when the iteration is
+ * finished
+ */
+const AVCodec *av_codec_iterate(void **opaque);
+
+#if FF_API_NEXT
+/**
* If c is NULL, returns the first registered codec,
* if c is non-NULL, returns the next registered codec after c,
* or NULL if c is the last one.
*/
+attribute_deprecated
AVCodec *av_codec_next(const AVCodec *c);
+#endif
/**
* Return the LIBAVCODEC_VERSION_INT constant.
@@ -4000,6 +4042,7 @@ const char *avcodec_configuration(void);
*/
const char *avcodec_license(void);
+#if FF_API_NEXT
/**
* Register the codec codec and initialize libavcodec.
*
@@ -4008,6 +4051,7 @@ const char *avcodec_license(void);
*
* @see avcodec_register_all()
*/
+attribute_deprecated
void avcodec_register(AVCodec *codec);
/**
@@ -4020,7 +4064,9 @@ void avcodec_register(AVCodec *codec);
* @see av_register_codec_parser
* @see av_register_bitstream_filter
*/
+attribute_deprecated
void avcodec_register_all(void);
+#endif
/**
* Allocate an AVCodecContext and set its fields to default values. The
@@ -5120,8 +5166,21 @@ typedef struct AVCodecParser {
struct AVCodecParser *next;
} AVCodecParser;
+/**
+ * Iterate over all registered codec parsers.
+ *
+ * @param opaque a pointer where libavcodec will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered codec parser or NULL when the iteration is
+ * finished
+ */
+const AVCodecParser *av_parser_iterate(void **opaque);
+
+attribute_deprecated
AVCodecParser *av_parser_next(const AVCodecParser *c);
+attribute_deprecated
void av_register_codec_parser(AVCodecParser *parser);
AVCodecParserContext *av_parser_init(int codec_id);
@@ -5697,7 +5756,7 @@ attribute_deprecated
void av_bitstream_filter_close(AVBitStreamFilterContext *bsf);
/**
* @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
- * is deprecated. Use av_bsf_next() from the new bitstream filtering API (using
+ * is deprecated. Use av_bsf_iterate() from the new bitstream filtering API (using
* AVBSFContext).
*/
attribute_deprecated
@@ -5719,7 +5778,11 @@ const AVBitStreamFilter *av_bsf_get_by_name(const char *name);
* @return the next registered bitstream filter or NULL when the iteration is
* finished
*/
+const AVBitStreamFilter *av_bsf_iterate(void **opaque);
+#if FF_API_NEXT
+attribute_deprecated
const AVBitStreamFilter *av_bsf_next(void **opaque);
+#endif
/**
* Allocate a context for a given bitstream filter. The caller must fill in the
diff --git a/chromium/third_party/ffmpeg/libavcodec/avpacket.c b/chromium/third_party/ffmpeg/libavcodec/avpacket.c
index 90b82159283..fe8113ab764 100644
--- a/chromium/third_party/ffmpeg/libavcodec/avpacket.c
+++ b/chromium/third_party/ffmpeg/libavcodec/avpacket.c
@@ -571,6 +571,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
dst->flags = src->flags;
dst->stream_index = src->stream_index;
+ dst->side_data = NULL;
+ dst->side_data_elems = 0;
for (i = 0; i < src->side_data_elems; i++) {
enum AVPacketSideDataType type = src->side_data[i].type;
int size = src->side_data[i].size;
diff --git a/chromium/third_party/ffmpeg/libavcodec/bintext.c b/chromium/third_party/ffmpeg/libavcodec/bintext.c
index 90bbe67b59b..d967317671b 100644
--- a/chromium/third_party/ffmpeg/libavcodec/bintext.c
+++ b/chromium/third_party/ffmpeg/libavcodec/bintext.c
@@ -35,6 +35,8 @@
#include "bintext.h"
#include "internal.h"
+#define FONT_WIDTH 8
+
typedef struct XbinContext {
AVFrame *frame;
int palette[16];
@@ -91,6 +93,9 @@ static av_cold int decode_init(AVCodecContext *avctx)
break;
}
}
+ if (avctx->width < FONT_WIDTH || avctx->height < s->font_height)
+ return AVERROR_INVALIDDATA;
+
s->frame = av_frame_alloc();
if (!s->frame)
@@ -113,8 +118,6 @@ av_unused static void hscroll(AVCodecContext *avctx)
}
}
-#define FONT_WIDTH 8
-
/**
* Draw character to screen
*/
diff --git a/chromium/third_party/ffmpeg/libavcodec/bitstream_filter.c b/chromium/third_party/ffmpeg/libavcodec/bitstream_filter.c
index ed1cf3335ba..ca11ed371e3 100644
--- a/chromium/third_party/ffmpeg/libavcodec/bitstream_filter.c
+++ b/chromium/third_party/ffmpeg/libavcodec/bitstream_filter.c
@@ -34,9 +34,9 @@ const AVBitStreamFilter *av_bitstream_filter_next(const AVBitStreamFilter *f)
void *opaque = NULL;
while (filter != f)
- filter = av_bsf_next(&opaque);
+ filter = av_bsf_iterate(&opaque);
- return av_bsf_next(&opaque);
+ return av_bsf_iterate(&opaque);
}
void av_register_bitstream_filter(AVBitStreamFilter *bsf)
diff --git a/chromium/third_party/ffmpeg/libavcodec/bitstream_filters.c b/chromium/third_party/ffmpeg/libavcodec/bitstream_filters.c
index 7b0cb5032a3..338ef8251bf 100644
--- a/chromium/third_party/ffmpeg/libavcodec/bitstream_filters.c
+++ b/chromium/third_party/ffmpeg/libavcodec/bitstream_filters.c
@@ -52,7 +52,7 @@ extern const AVBitStreamFilter ff_vp9_superframe_split_bsf;
#include "libavcodec/bsf_list.c"
-const AVBitStreamFilter *av_bsf_next(void **opaque)
+const AVBitStreamFilter *av_bsf_iterate(void **opaque)
{
uintptr_t i = (uintptr_t)*opaque;
const AVBitStreamFilter *f = bitstream_filters[i];
@@ -63,12 +63,18 @@ const AVBitStreamFilter *av_bsf_next(void **opaque)
return f;
}
+#if FF_API_NEXT
+const AVBitStreamFilter *av_bsf_next(void **opaque) {
+ return av_bsf_iterate(opaque);
+}
+#endif
+
const AVBitStreamFilter *av_bsf_get_by_name(const char *name)
{
- int i;
+ const AVBitStreamFilter *f = NULL;
+ void *i = 0;
- for (i = 0; bitstream_filters[i]; i++) {
- const AVBitStreamFilter *f = bitstream_filters[i];
+ while ((f = av_bsf_iterate(&i))) {
if (!strcmp(f->name, name))
return f;
}
@@ -78,19 +84,20 @@ const AVBitStreamFilter *av_bsf_get_by_name(const char *name)
const AVClass *ff_bsf_child_class_next(const AVClass *prev)
{
- int i;
+ const AVBitStreamFilter *f = NULL;
+ void *i = 0;
/* find the filter that corresponds to prev */
- for (i = 0; prev && bitstream_filters[i]; i++) {
- if (bitstream_filters[i]->priv_class == prev) {
- i++;
+ while (prev && (f = av_bsf_iterate(&i))) {
+ if (f->priv_class == prev) {
break;
}
}
/* find next filter with priv options */
- for (; bitstream_filters[i]; i++)
- if (bitstream_filters[i]->priv_class)
- return bitstream_filters[i]->priv_class;
+ while ((f = av_bsf_iterate(&i))) {
+ if (f->priv_class)
+ return f->priv_class;
+ }
return NULL;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/cavsdec.c b/chromium/third_party/ffmpeg/libavcodec/cavsdec.c
index 06c752735ec..c7fff67c06c 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cavsdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/cavsdec.c
@@ -1067,6 +1067,11 @@ static int decode_pic(AVSContext *h)
if (!h->loop_filter_disable && get_bits1(&h->gb)) {
h->alpha_offset = get_se_golomb(&h->gb);
h->beta_offset = get_se_golomb(&h->gb);
+ if ( h->alpha_offset < -64 || h->alpha_offset > 64
+ || h-> beta_offset < -64 || h-> beta_offset > 64) {
+ h->alpha_offset = h->beta_offset = 0;
+ return AVERROR_INVALIDDATA;
+ }
} else {
h->alpha_offset = h->beta_offset = 0;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs.c b/chromium/third_party/ffmpeg/libavcodec/cbs.c
index 97ab520c22a..62f60be437b 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs.c
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs.c
@@ -21,6 +21,7 @@
#include "config.h"
#include "libavutil/avassert.h"
+#include "libavutil/buffer.h"
#include "libavutil/common.h"
#include "cbs.h"
@@ -95,11 +96,12 @@ void ff_cbs_close(CodedBitstreamContext **ctx_ptr)
static void cbs_unit_uninit(CodedBitstreamContext *ctx,
CodedBitstreamUnit *unit)
{
- if (ctx->codec->free_unit && unit->content && !unit->content_external)
- ctx->codec->free_unit(unit);
+ av_buffer_unref(&unit->content_ref);
+ unit->content = NULL;
- av_freep(&unit->data);
- unit->data_size = 0;
+ av_buffer_unref(&unit->data_ref);
+ unit->data = NULL;
+ unit->data_size = 0;
unit->data_bit_padding = 0;
}
@@ -113,7 +115,8 @@ void ff_cbs_fragment_uninit(CodedBitstreamContext *ctx,
av_freep(&frag->units);
frag->nb_units = 0;
- av_freep(&frag->data);
+ av_buffer_unref(&frag->data_ref);
+ frag->data = NULL;
frag->data_size = 0;
frag->data_bit_padding = 0;
}
@@ -133,9 +136,12 @@ static int cbs_read_fragment_content(CodedBitstreamContext *ctx,
continue;
}
+ av_buffer_unref(&frag->units[i].content_ref);
+ frag->units[i].content = NULL;
+
err = ctx->codec->read_unit(ctx, &frag->units[i]);
if (err == AVERROR(ENOSYS)) {
- av_log(ctx->log_ctx, AV_LOG_WARNING,
+ av_log(ctx->log_ctx, AV_LOG_VERBOSE,
"Decomposition unimplemented for unit %d "
"(type %"PRIu32").\n", i, frag->units[i].type);
} else if (err < 0) {
@@ -169,6 +175,27 @@ int ff_cbs_read_extradata(CodedBitstreamContext *ctx,
return cbs_read_fragment_content(ctx, frag);
}
+static int cbs_fill_fragment_data(CodedBitstreamContext *ctx,
+ CodedBitstreamFragment *frag,
+ const uint8_t *data, size_t size)
+{
+ av_assert0(!frag->data && !frag->data_ref);
+
+ frag->data_ref =
+ av_buffer_alloc(size + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!frag->data_ref)
+ return AVERROR(ENOMEM);
+
+ frag->data = frag->data_ref->data;
+ frag->data_size = size;
+
+ memcpy(frag->data, data, size);
+ memset(frag->data + size, 0,
+ AV_INPUT_BUFFER_PADDING_SIZE);
+
+ return 0;
+}
+
int ff_cbs_read_packet(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
const AVPacket *pkt)
@@ -177,16 +204,24 @@ int ff_cbs_read_packet(CodedBitstreamContext *ctx,
memset(frag, 0, sizeof(*frag));
- frag->data = pkt->data;
- frag->data_size = pkt->size;
+ if (pkt->buf) {
+ frag->data_ref = av_buffer_ref(pkt->buf);
+ if (!frag->data_ref)
+ return AVERROR(ENOMEM);
+
+ frag->data = pkt->data;
+ frag->data_size = pkt->size;
+
+ } else {
+ err = cbs_fill_fragment_data(ctx, frag, pkt->data, pkt->size);
+ if (err < 0)
+ return err;
+ }
err = ctx->codec->split_fragment(ctx, frag, 0);
if (err < 0)
return err;
- frag->data = NULL;
- frag->data_size = 0;
-
return cbs_read_fragment_content(ctx, frag);
}
@@ -198,17 +233,14 @@ int ff_cbs_read(CodedBitstreamContext *ctx,
memset(frag, 0, sizeof(*frag));
- // (We won't write to this during split.)
- frag->data = (uint8_t*)data;
- frag->data_size = size;
+ err = cbs_fill_fragment_data(ctx, frag, data, size);
+ if (err < 0)
+ return err;
err = ctx->codec->split_fragment(ctx, frag, 0);
if (err < 0)
return err;
- frag->data = NULL;
- frag->data_size = 0;
-
return cbs_read_fragment_content(ctx, frag);
}
@@ -219,17 +251,25 @@ int ff_cbs_write_fragment_data(CodedBitstreamContext *ctx,
int err, i;
for (i = 0; i < frag->nb_units; i++) {
- if (!frag->units[i].content)
+ CodedBitstreamUnit *unit = &frag->units[i];
+
+ if (!unit->content)
continue;
- err = ctx->codec->write_unit(ctx, &frag->units[i]);
+ av_buffer_unref(&unit->data_ref);
+ unit->data = NULL;
+
+ err = ctx->codec->write_unit(ctx, unit);
if (err < 0) {
av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to write unit %d "
- "(type %"PRIu32").\n", i, frag->units[i].type);
+ "(type %"PRIu32").\n", i, unit->type);
return err;
}
}
+ av_buffer_unref(&frag->data_ref);
+ frag->data = NULL;
+
err = ctx->codec->assemble_fragment(ctx, frag);
if (err < 0) {
av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to assemble fragment.\n");
@@ -268,17 +308,21 @@ int ff_cbs_write_packet(CodedBitstreamContext *ctx,
AVPacket *pkt,
CodedBitstreamFragment *frag)
{
+ AVBufferRef *buf;
int err;
err = ff_cbs_write_fragment_data(ctx, frag);
if (err < 0)
return err;
- err = av_new_packet(pkt, frag->data_size);
- if (err < 0)
- return err;
+ av_assert0(frag->data_ref);
+ buf = av_buffer_ref(frag->data_ref);
+ if (!buf)
+ return AVERROR(ENOMEM);
- memcpy(pkt->data, frag->data, frag->data_size);
+ av_init_packet(pkt);
+ pkt->buf = buf;
+ pkt->data = frag->data;
pkt->size = frag->data_size;
return 0;
@@ -394,6 +438,45 @@ int ff_cbs_write_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc,
}
+int ff_cbs_alloc_unit_content(CodedBitstreamContext *ctx,
+ CodedBitstreamUnit *unit,
+ size_t size,
+ void (*free)(void *opaque, uint8_t *data))
+{
+ av_assert0(!unit->content && !unit->content_ref);
+
+ unit->content = av_mallocz(size);
+ if (!unit->content)
+ return AVERROR(ENOMEM);
+
+ unit->content_ref = av_buffer_create(unit->content, size,
+ free, ctx, 0);
+ if (!unit->content_ref) {
+ av_freep(&unit->content);
+ return AVERROR(ENOMEM);
+ }
+
+ return 0;
+}
+
+int ff_cbs_alloc_unit_data(CodedBitstreamContext *ctx,
+ CodedBitstreamUnit *unit,
+ size_t size)
+{
+ av_assert0(!unit->data && !unit->data_ref);
+
+ unit->data_ref = av_buffer_alloc(size + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!unit->data_ref)
+ return AVERROR(ENOMEM);
+
+ unit->data = unit->data_ref->data;
+ unit->data_size = size;
+
+ memset(unit->data + size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+
+ return 0;
+}
+
static int cbs_insert_unit(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
int position)
@@ -423,21 +506,35 @@ int ff_cbs_insert_unit_content(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
int position,
CodedBitstreamUnitType type,
- void *content)
+ void *content,
+ AVBufferRef *content_buf)
{
+ CodedBitstreamUnit *unit;
+ AVBufferRef *content_ref;
int err;
if (position == -1)
position = frag->nb_units;
av_assert0(position >= 0 && position <= frag->nb_units);
+ if (content_buf) {
+ content_ref = av_buffer_ref(content_buf);
+ if (!content_ref)
+ return AVERROR(ENOMEM);
+ } else {
+ content_ref = NULL;
+ }
+
err = cbs_insert_unit(ctx, frag, position);
- if (err < 0)
+ if (err < 0) {
+ av_buffer_unref(&content_ref);
return err;
+ }
- frag->units[position].type = type;
- frag->units[position].content = content;
- frag->units[position].content_external = 1;
+ unit = &frag->units[position];
+ unit->type = type;
+ unit->content = content;
+ unit->content_ref = content_ref;
return 0;
}
@@ -446,21 +543,35 @@ int ff_cbs_insert_unit_data(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
int position,
CodedBitstreamUnitType type,
- uint8_t *data, size_t data_size)
+ uint8_t *data, size_t data_size,
+ AVBufferRef *data_buf)
{
+ CodedBitstreamUnit *unit;
+ AVBufferRef *data_ref;
int err;
if (position == -1)
position = frag->nb_units;
av_assert0(position >= 0 && position <= frag->nb_units);
+ if (data_buf)
+ data_ref = av_buffer_ref(data_buf);
+ else
+ data_ref = av_buffer_create(data, data_size, NULL, NULL, 0);
+ if (!data_ref)
+ return AVERROR(ENOMEM);
+
err = cbs_insert_unit(ctx, frag, position);
- if (err < 0)
+ if (err < 0) {
+ av_buffer_unref(&data_ref);
return err;
+ }
- frag->units[position].type = type;
- frag->units[position].data = data;
- frag->units[position].data_size = data_size;
+ unit = &frag->units[position];
+ unit->type = type;
+ unit->data = data;
+ unit->data_size = data_size;
+ unit->data_ref = data_ref;
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs.h b/chromium/third_party/ffmpeg/libavcodec/cbs.h
index ff978806107..396ff0faec7 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs.h
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs.h
@@ -22,6 +22,8 @@
#include <stddef.h>
#include <stdint.h>
+#include "libavutil/buffer.h"
+
#include "avcodec.h"
@@ -81,6 +83,11 @@ typedef struct CodedBitstreamUnit {
* This supports non-byte-aligned bitstreams.
*/
size_t data_bit_padding;
+ /**
+ * If data is reference counted, a reference to the buffer containing
+ * data. Null if data is not reference counted.
+ */
+ AVBufferRef *data_ref;
/**
* Pointer to the decomposed form of this unit.
@@ -91,11 +98,10 @@ typedef struct CodedBitstreamUnit {
*/
void *content;
/**
- * Whether the content was supplied externally.
- *
- * If so, it should not be freed when freeing the unit.
+ * If content is reference counted, a reference to the buffer containing
+ * content. Null if content is not reference counted.
*/
- int content_external;
+ AVBufferRef *content_ref;
} CodedBitstreamUnit;
/**
@@ -123,6 +129,11 @@ typedef struct CodedBitstreamFragment {
* The number of bits which should be ignored in the final byte.
*/
size_t data_bit_padding;
+ /**
+ * If data is reference counted, a reference to the buffer containing
+ * data. Null if data is not reference counted.
+ */
+ AVBufferRef *data_ref;
/**
* Number of units in this fragment.
@@ -279,27 +290,49 @@ void ff_cbs_fragment_uninit(CodedBitstreamContext *ctx,
/**
+ * Allocate a new internal content buffer of the given size in the unit.
+ *
+ * The content will be zeroed.
+ */
+int ff_cbs_alloc_unit_content(CodedBitstreamContext *ctx,
+ CodedBitstreamUnit *unit,
+ size_t size,
+ void (*free)(void *unit, uint8_t *content));
+
+/**
+ * Allocate a new internal data buffer of the given size in the unit.
+ *
+ * The data buffer will have input padding.
+ */
+int ff_cbs_alloc_unit_data(CodedBitstreamContext *ctx,
+ CodedBitstreamUnit *unit,
+ size_t size);
+
+/**
* Insert a new unit into a fragment with the given content.
*
- * The content structure continues to be owned by the caller, and
- * will not be freed when the unit is.
+ * The content structure continues to be owned by the caller if
+ * content_buf is not supplied.
*/
int ff_cbs_insert_unit_content(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
int position,
CodedBitstreamUnitType type,
- void *content);
+ void *content,
+ AVBufferRef *content_buf);
/**
* Insert a new unit into a fragment with the given data bitstream.
*
- * The data buffer will be owned by the unit after this operation.
+ * If data_buf is not supplied then data must have been allocated with
+ * av_malloc() and will become owned by the unit after this call.
*/
int ff_cbs_insert_unit_data(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
int position,
CodedBitstreamUnitType type,
- uint8_t *data, size_t data_size);
+ uint8_t *data, size_t data_size,
+ AVBufferRef *data_buf);
/**
* Delete a unit from a fragment and free all memory it uses.
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs_h264.h b/chromium/third_party/ffmpeg/libavcodec/cbs_h264.h
index ab7dfd855fe..2219d9da8d7 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs_h264.h
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs_h264.h
@@ -22,6 +22,7 @@
#include <stddef.h>
#include <stdint.h>
+#include "cbs.h"
#include "cbs_h2645.h"
#include "h264.h"
@@ -194,7 +195,9 @@ typedef struct H264RawPPS {
uint8_t slice_group_change_direction_flag;
uint16_t slice_group_change_rate_minus1;
uint16_t pic_size_in_map_units_minus1;
- uint8_t slice_group_id[H264_MAX_MB_PIC_SIZE];
+
+ uint8_t *slice_group_id;
+ AVBufferRef *slice_group_id_ref;
uint8_t num_ref_idx_l0_default_active_minus1;
uint8_t num_ref_idx_l1_default_active_minus1;
@@ -266,12 +269,14 @@ typedef struct H264RawSEIUserDataRegistered {
uint8_t itu_t_t35_country_code_extension_byte;
uint8_t *data;
size_t data_length;
+ AVBufferRef *data_ref;
} H264RawSEIUserDataRegistered;
typedef struct H264RawSEIUserDataUnregistered {
uint8_t uuid_iso_iec_11578[16];
uint8_t *data;
size_t data_length;
+ AVBufferRef *data_ref;
} H264RawSEIUserDataUnregistered;
typedef struct H264RawSEIRecoveryPoint {
@@ -304,6 +309,7 @@ typedef struct H264RawSEIPayload {
struct {
uint8_t *data;
size_t data_length;
+ AVBufferRef *data_ref;
} other;
} payload;
} H264RawSEIPayload;
@@ -399,8 +405,15 @@ typedef struct H264RawSlice {
uint8_t *data;
size_t data_size;
int data_bit_start;
+ AVBufferRef *data_ref;
} H264RawSlice;
+typedef struct H264RawFiller {
+ H264RawNALUnitHeader nal_unit_header;
+
+ uint32_t filler_size;
+} H264RawFiller;
+
typedef struct CodedBitstreamH264Context {
// Reader/writer context in common with the H.265 implementation.
@@ -424,4 +437,22 @@ typedef struct CodedBitstreamH264Context {
} CodedBitstreamH264Context;
+/**
+ * Add an SEI message to an access unit.
+ */
+int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx,
+ CodedBitstreamFragment *access_unit,
+ const H264RawSEIPayload *payload);
+
+/**
+ * Delete an SEI message from an access unit.
+ *
+ * Deletes from nal_unit, which must be an SEI NAL unit. If this is the
+ * last message in nal_unit, also deletes it from access_unit.
+ */
+int ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
+ CodedBitstreamFragment *access_unit,
+ CodedBitstreamUnit *nal_unit,
+ int position);
+
#endif /* AVCODEC_CBS_H264_H */
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs_h2645.c b/chromium/third_party/ffmpeg/libavcodec/cbs_h2645.c
index 2f96e4f20eb..5585831cf61 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs_h2645.c
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs_h2645.c
@@ -291,9 +291,10 @@ static int cbs_h2645_read_more_rbsp_data(GetBitContext *gbc)
#define byte_alignment(rw) (get_bits_count(rw) % 8)
#define allocate(name, size) do { \
- name = av_mallocz(size); \
- if (!name) \
+ name ## _ref = av_buffer_allocz(size); \
+ if (!name ## _ref) \
return AVERROR(ENOMEM); \
+ name = name ## _ref->data; \
} while (0)
#define FUNC(name) FUNC_H264(READWRITE, name)
@@ -393,82 +394,75 @@ static int cbs_h2645_read_more_rbsp_data(GetBitContext *gbc)
#undef allocate
-static void cbs_h264_free_sei(H264RawSEI *sei)
+static void cbs_h264_free_pps(void *unit, uint8_t *content)
{
- int i;
- for (i = 0; i < sei->payload_count; i++) {
- H264RawSEIPayload *payload = &sei->payload[i];
-
- switch (payload->payload_type) {
- case H264_SEI_TYPE_BUFFERING_PERIOD:
- case H264_SEI_TYPE_PIC_TIMING:
- case H264_SEI_TYPE_RECOVERY_POINT:
- case H264_SEI_TYPE_DISPLAY_ORIENTATION:
- break;
- case H264_SEI_TYPE_USER_DATA_REGISTERED:
- av_freep(&payload->payload.user_data_registered.data);
- break;
- case H264_SEI_TYPE_USER_DATA_UNREGISTERED:
- av_freep(&payload->payload.user_data_unregistered.data);
- break;
- default:
- av_freep(&payload->payload.other.data);
- break;
- }
+ H264RawPPS *pps = (H264RawPPS*)content;
+ av_buffer_unref(&pps->slice_group_id_ref);
+ av_freep(&content);
+}
+
+static void cbs_h264_free_sei_payload(H264RawSEIPayload *payload)
+{
+ switch (payload->payload_type) {
+ case H264_SEI_TYPE_BUFFERING_PERIOD:
+ case H264_SEI_TYPE_PIC_TIMING:
+ case H264_SEI_TYPE_RECOVERY_POINT:
+ case H264_SEI_TYPE_DISPLAY_ORIENTATION:
+ break;
+ case H264_SEI_TYPE_USER_DATA_REGISTERED:
+ av_buffer_unref(&payload->payload.user_data_registered.data_ref);
+ break;
+ case H264_SEI_TYPE_USER_DATA_UNREGISTERED:
+ av_buffer_unref(&payload->payload.user_data_unregistered.data_ref);
+ break;
+ default:
+ av_buffer_unref(&payload->payload.other.data_ref);
+ break;
}
}
-static void cbs_h264_free_slice(H264RawSlice *slice)
+static void cbs_h264_free_sei(void *unit, uint8_t *content)
{
- av_freep(&slice->data);
+ H264RawSEI *sei = (H264RawSEI*)content;
+ int i;
+ for (i = 0; i < sei->payload_count; i++)
+ cbs_h264_free_sei_payload(&sei->payload[i]);
+ av_freep(&content);
}
-static void cbs_h264_free_nal_unit(CodedBitstreamUnit *unit)
+static void cbs_h264_free_slice(void *unit, uint8_t *content)
{
- switch (unit->type) {
- case H264_NAL_SEI:
- cbs_h264_free_sei(unit->content);
- break;
- case H264_NAL_IDR_SLICE:
- case H264_NAL_SLICE:
- cbs_h264_free_slice(unit->content);
- break;
- }
- av_freep(&unit->content);
+ H264RawSlice *slice = (H264RawSlice*)content;
+ av_buffer_unref(&slice->data_ref);
+ av_freep(&content);
}
-static void cbs_h265_free_nal_unit(CodedBitstreamUnit *unit)
+static void cbs_h265_free_vps(void *unit, uint8_t *content)
{
- switch (unit->type) {
- case HEVC_NAL_VPS:
- av_freep(&((H265RawVPS*)unit->content)->extension_data.data);
- break;
- case HEVC_NAL_SPS:
- av_freep(&((H265RawSPS*)unit->content)->extension_data.data);
- break;
- case HEVC_NAL_PPS:
- av_freep(&((H265RawPPS*)unit->content)->extension_data.data);
- break;
- case HEVC_NAL_TRAIL_N:
- case HEVC_NAL_TRAIL_R:
- case HEVC_NAL_TSA_N:
- case HEVC_NAL_TSA_R:
- case HEVC_NAL_STSA_N:
- case HEVC_NAL_STSA_R:
- case HEVC_NAL_RADL_N:
- case HEVC_NAL_RADL_R:
- case HEVC_NAL_RASL_N:
- case HEVC_NAL_RASL_R:
- case HEVC_NAL_BLA_W_LP:
- case HEVC_NAL_BLA_W_RADL:
- case HEVC_NAL_BLA_N_LP:
- case HEVC_NAL_IDR_W_RADL:
- case HEVC_NAL_IDR_N_LP:
- case HEVC_NAL_CRA_NUT:
- av_freep(&((H265RawSlice*)unit->content)->data);
- break;
- }
- av_freep(&unit->content);
+ H265RawVPS *vps = (H265RawVPS*)content;
+ av_buffer_unref(&vps->extension_data.data_ref);
+ av_freep(&content);
+}
+
+static void cbs_h265_free_sps(void *unit, uint8_t *content)
+{
+ H265RawSPS *sps = (H265RawSPS*)content;
+ av_buffer_unref(&sps->extension_data.data_ref);
+ av_freep(&content);
+}
+
+static void cbs_h265_free_pps(void *unit, uint8_t *content)
+{
+ H265RawPPS *pps = (H265RawPPS*)content;
+ av_buffer_unref(&pps->extension_data.data_ref);
+ av_freep(&content);
+}
+
+static void cbs_h265_free_slice(void *unit, uint8_t *content)
+{
+ H265RawSlice *slice = (H265RawSlice*)content;
+ av_buffer_unref(&slice->data_ref);
+ av_freep(&content);
}
static int cbs_h2645_fragment_add_nals(CodedBitstreamContext *ctx,
@@ -494,7 +488,7 @@ static int cbs_h2645_fragment_add_nals(CodedBitstreamContext *ctx,
memset(data + size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
err = ff_cbs_insert_unit_data(ctx, frag, -1, nal->type,
- data, size);
+ data, size, NULL);
if (err < 0) {
av_freep(&data);
return err;
@@ -674,6 +668,8 @@ static int cbs_h26 ## h26n ## _replace_ ## ps_var(CodedBitstreamContext *ctx, \
" id : %d.\n", id); \
return AVERROR_INVALIDDATA; \
} \
+ if (priv->ps_var[id] == priv->active_ ## ps_var) \
+ priv->active_ ## ps_var = NULL ; \
av_freep(&priv->ps_var[id]); \
priv->ps_var[id] = av_malloc(sizeof(*ps_var)); \
if (!priv->ps_var[id]) \
@@ -703,35 +699,32 @@ static int cbs_h264_read_nal_unit(CodedBitstreamContext *ctx,
{
H264RawSPS *sps;
- sps = av_mallocz(sizeof(*sps));
- if (!sps)
- return AVERROR(ENOMEM);
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(*sps), NULL);
+ if (err < 0)
+ return err;
+ sps = unit->content;
+
err = cbs_h264_read_sps(ctx, &gbc, sps);
- if (err >= 0)
- err = cbs_h264_replace_sps(ctx, sps);
- if (err < 0) {
- av_free(sps);
+ if (err < 0)
return err;
- }
- unit->content = sps;
+ err = cbs_h264_replace_sps(ctx, sps);
+ if (err < 0)
+ return err;
}
break;
case H264_NAL_SPS_EXT:
{
- H264RawSPSExtension *sps_ext;
-
- sps_ext = av_mallocz(sizeof(*sps_ext));
- if (!sps_ext)
- return AVERROR(ENOMEM);
- err = cbs_h264_read_sps_extension(ctx, &gbc, sps_ext);
- if (err < 0) {
- av_free(sps_ext);
+ err = ff_cbs_alloc_unit_content(ctx, unit,
+ sizeof(H264RawSPSExtension),
+ NULL);
+ if (err < 0)
return err;
- }
- unit->content = sps_ext;
+ err = cbs_h264_read_sps_extension(ctx, &gbc, unit->content);
+ if (err < 0)
+ return err;
}
break;
@@ -739,18 +732,19 @@ static int cbs_h264_read_nal_unit(CodedBitstreamContext *ctx,
{
H264RawPPS *pps;
- pps = av_mallocz(sizeof(*pps));
- if (!pps)
- return AVERROR(ENOMEM);
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(*pps),
+ &cbs_h264_free_pps);
+ if (err < 0)
+ return err;
+ pps = unit->content;
+
err = cbs_h264_read_pps(ctx, &gbc, pps);
- if (err >= 0)
- err = cbs_h264_replace_pps(ctx, pps);
- if (err < 0) {
- av_free(pps);
+ if (err < 0)
return err;
- }
- unit->content = pps;
+ err = cbs_h264_replace_pps(ctx, pps);
+ if (err < 0)
+ return err;
}
break;
@@ -761,14 +755,15 @@ static int cbs_h264_read_nal_unit(CodedBitstreamContext *ctx,
H264RawSlice *slice;
int pos, len;
- slice = av_mallocz(sizeof(*slice));
- if (!slice)
- return AVERROR(ENOMEM);
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(*slice),
+ &cbs_h264_free_slice);
+ if (err < 0)
+ return err;
+ slice = unit->content;
+
err = cbs_h264_read_slice_header(ctx, &gbc, &slice->header);
- if (err < 0) {
- av_free(slice);
+ if (err < 0)
return err;
- }
pos = get_bits_count(&gbc);
len = unit->data_size;
@@ -781,54 +776,55 @@ static int cbs_h264_read_nal_unit(CodedBitstreamContext *ctx,
}
slice->data_size = len - pos / 8;
- slice->data = av_malloc(slice->data_size +
- AV_INPUT_BUFFER_PADDING_SIZE);
- if (!slice->data) {
- av_free(slice);
+ slice->data_ref = av_buffer_alloc(slice->data_size +
+ AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!slice->data_ref)
return AVERROR(ENOMEM);
- }
+ slice->data = slice->data_ref->data;
memcpy(slice->data,
unit->data + pos / 8, slice->data_size);
memset(slice->data + slice->data_size, 0,
AV_INPUT_BUFFER_PADDING_SIZE);
slice->data_bit_start = pos % 8;
-
- unit->content = slice;
}
break;
case H264_NAL_AUD:
{
- H264RawAUD *aud;
-
- aud = av_mallocz(sizeof(*aud));
- if (!aud)
- return AVERROR(ENOMEM);
- err = cbs_h264_read_aud(ctx, &gbc, aud);
- if (err < 0) {
- av_free(aud);
+ err = ff_cbs_alloc_unit_content(ctx, unit,
+ sizeof(H264RawAUD), NULL);
+ if (err < 0)
return err;
- }
- unit->content = aud;
+ err = cbs_h264_read_aud(ctx, &gbc, unit->content);
+ if (err < 0)
+ return err;
}
break;
case H264_NAL_SEI:
{
- H264RawSEI *sei;
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(H264RawSEI),
+ &cbs_h264_free_sei);
+ if (err < 0)
+ return err;
- sei = av_mallocz(sizeof(*sei));
- if (!sei)
- return AVERROR(ENOMEM);
- err = cbs_h264_read_sei(ctx, &gbc, sei);
- if (err < 0) {
- cbs_h264_free_sei(sei);
- av_free(sei);
+ err = cbs_h264_read_sei(ctx, &gbc, unit->content);
+ if (err < 0)
return err;
- }
+ }
+ break;
- unit->content = sei;
+ case H264_NAL_FILLER_DATA:
+ {
+ err = ff_cbs_alloc_unit_content(ctx, unit,
+ sizeof(H264RawFiller), NULL);
+ if (err < 0)
+ return err;
+
+ err = cbs_h264_read_filler(ctx, &gbc, unit->content);
+ if (err < 0)
+ return err;
}
break;
@@ -854,36 +850,38 @@ static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx,
{
H265RawVPS *vps;
- vps = av_mallocz(sizeof(*vps));
- if (!vps)
- return AVERROR(ENOMEM);
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(*vps),
+ &cbs_h265_free_vps);
+ if (err < 0)
+ return err;
+ vps = unit->content;
+
err = cbs_h265_read_vps(ctx, &gbc, vps);
- if (err >= 0)
- err = cbs_h265_replace_vps(ctx, vps);
- if (err < 0) {
- av_free(vps);
+ if (err < 0)
return err;
- }
- unit->content = vps;
+ err = cbs_h265_replace_vps(ctx, vps);
+ if (err < 0)
+ return err;
}
break;
case HEVC_NAL_SPS:
{
H265RawSPS *sps;
- sps = av_mallocz(sizeof(*sps));
- if (!sps)
- return AVERROR(ENOMEM);
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(*sps),
+ &cbs_h265_free_sps);
+ if (err < 0)
+ return err;
+ sps = unit->content;
+
err = cbs_h265_read_sps(ctx, &gbc, sps);
- if (err >= 0)
- err = cbs_h265_replace_sps(ctx, sps);
- if (err < 0) {
- av_free(sps);
+ if (err < 0)
return err;
- }
- unit->content = sps;
+ err = cbs_h265_replace_sps(ctx, sps);
+ if (err < 0)
+ return err;
}
break;
@@ -891,18 +889,19 @@ static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx,
{
H265RawPPS *pps;
- pps = av_mallocz(sizeof(*pps));
- if (!pps)
- return AVERROR(ENOMEM);
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(*pps),
+ &cbs_h265_free_pps);
+ if (err < 0)
+ return err;
+ pps = unit->content;
+
err = cbs_h265_read_pps(ctx, &gbc, pps);
- if (err >= 0)
- err = cbs_h265_replace_pps(ctx, pps);
- if (err < 0) {
- av_free(pps);
+ if (err < 0)
return err;
- }
- unit->content = pps;
+ err = cbs_h265_replace_pps(ctx, pps);
+ if (err < 0)
+ return err;
}
break;
@@ -926,14 +925,15 @@ static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx,
H265RawSlice *slice;
int pos, len;
- slice = av_mallocz(sizeof(*slice));
- if (!slice)
- return AVERROR(ENOMEM);
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(*slice),
+ &cbs_h265_free_slice);
+ if (err < 0)
+ return err;
+ slice = unit->content;
+
err = cbs_h265_read_slice_segment_header(ctx, &gbc, &slice->header);
- if (err < 0) {
- av_free(slice);
+ if (err < 0)
return err;
- }
pos = get_bits_count(&gbc);
len = unit->data_size;
@@ -946,36 +946,29 @@ static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx,
}
slice->data_size = len - pos / 8;
- slice->data = av_malloc(slice->data_size +
- AV_INPUT_BUFFER_PADDING_SIZE);
- if (!slice->data) {
- av_free(slice);
+ slice->data_ref = av_buffer_alloc(slice->data_size +
+ AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!slice->data_ref)
return AVERROR(ENOMEM);
- }
+ slice->data = slice->data_ref->data;
memcpy(slice->data,
unit->data + pos / 8, slice->data_size);
memset(slice->data + slice->data_size, 0,
AV_INPUT_BUFFER_PADDING_SIZE);
slice->data_bit_start = pos % 8;
-
- unit->content = slice;
}
break;
case HEVC_NAL_AUD:
{
- H265RawAUD *aud;
-
- aud = av_mallocz(sizeof(*aud));
- if (!aud)
- return AVERROR(ENOMEM);
- err = cbs_h265_read_aud(ctx, &gbc, aud);
- if (err < 0) {
- av_free(aud);
+ err = ff_cbs_alloc_unit_content(ctx, unit,
+ sizeof(H265RawAUD), NULL);
+ if (err < 0)
return err;
- }
- unit->content = aud;
+ err = cbs_h265_read_aud(ctx, &gbc, unit->content);
+ if (err < 0)
+ return err;
}
break;
@@ -1090,6 +1083,14 @@ static int cbs_h264_write_nal_unit(CodedBitstreamContext *ctx,
}
break;
+ case H264_NAL_FILLER_DATA:
+ {
+ err = cbs_h264_write_filler(ctx, pbc, unit->content);
+ if (err < 0)
+ return err;
+ }
+ break;
+
default:
av_log(ctx->log_ctx, AV_LOG_ERROR, "Write unimplemented for "
"NAL unit type %"PRIu32".\n", unit->type);
@@ -1270,7 +1271,7 @@ static int cbs_h2645_write_nal_unit(CodedBitstreamContext *ctx,
unit->data_size = (put_bits_count(&pbc) + 7) / 8;
flush_put_bits(&pbc);
- err = av_reallocp(&unit->data, unit->data_size);
+ err = ff_cbs_alloc_unit_data(ctx, unit, unit->data_size);
if (err < 0)
return err;
@@ -1297,7 +1298,7 @@ static int cbs_h2645_assemble_fragment(CodedBitstreamContext *ctx,
max_size += 3 + frag->units[i].data_size * 3 / 2;
}
- data = av_malloc(max_size);
+ data = av_malloc(max_size + AV_INPUT_BUFFER_PADDING_SIZE);
if (!data)
return AVERROR(ENOMEM);
@@ -1348,9 +1349,17 @@ static int cbs_h2645_assemble_fragment(CodedBitstreamContext *ctx,
}
av_assert0(dp <= max_size);
- err = av_reallocp(&data, dp);
+ err = av_reallocp(&data, dp + AV_INPUT_BUFFER_PADDING_SIZE);
if (err)
return err;
+ memset(data + dp, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+
+ frag->data_ref = av_buffer_create(data, dp + AV_INPUT_BUFFER_PADDING_SIZE,
+ NULL, NULL, 0);
+ if (!frag->data_ref) {
+ av_freep(&data);
+ return AVERROR(ENOMEM);
+ }
frag->data = data;
frag->data_size = dp;
@@ -1400,7 +1409,6 @@ const CodedBitstreamType ff_cbs_type_h264 = {
.write_unit = &cbs_h2645_write_nal_unit,
.assemble_fragment = &cbs_h2645_assemble_fragment,
- .free_unit = &cbs_h264_free_nal_unit,
.close = &cbs_h264_close,
};
@@ -1414,6 +1422,100 @@ const CodedBitstreamType ff_cbs_type_h265 = {
.write_unit = &cbs_h2645_write_nal_unit,
.assemble_fragment = &cbs_h2645_assemble_fragment,
- .free_unit = &cbs_h265_free_nal_unit,
.close = &cbs_h265_close,
};
+
+int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx,
+ CodedBitstreamFragment *au,
+ const H264RawSEIPayload *payload)
+{
+ H264RawSEI *sei;
+ CodedBitstreamUnit *nal = NULL;
+ int err, i;
+
+ // Find an existing SEI NAL unit to add to.
+ for (i = 0; i < au->nb_units; i++) {
+ if (au->units[i].type == H264_NAL_SEI) {
+ nal = &au->units[i];
+ break;
+ }
+ }
+ if (nal) {
+ sei = nal->content;
+
+ } else {
+ // Need to make a new SEI NAL unit. Insert it before the first
+ // slice data NAL unit; if no slice data, add at the end.
+ AVBufferRef *sei_ref;
+
+ sei = av_mallocz(sizeof(*sei));
+ if (!sei)
+ return AVERROR(ENOMEM);
+
+ sei->nal_unit_header.nal_unit_type = H264_NAL_SEI;
+ sei->nal_unit_header.nal_ref_idc = 0;
+
+ sei_ref = av_buffer_create((uint8_t*)sei, sizeof(*sei),
+ &cbs_h264_free_sei, ctx, 0);
+ if (!sei_ref) {
+ av_freep(&sei);
+ return AVERROR(ENOMEM);
+ }
+
+ for (i = 0; i < au->nb_units; i++) {
+ if (au->units[i].type == H264_NAL_SLICE ||
+ au->units[i].type == H264_NAL_IDR_SLICE)
+ break;
+ }
+
+ err = ff_cbs_insert_unit_content(ctx, au, i, H264_NAL_SEI,
+ sei, sei_ref);
+ av_buffer_unref(&sei_ref);
+ if (err < 0)
+ return err;
+ }
+
+ if (sei->payload_count >= H264_MAX_SEI_PAYLOADS) {
+ av_log(ctx->log_ctx, AV_LOG_ERROR, "Too many payloads in "
+ "SEI NAL unit.\n");
+ return AVERROR(EINVAL);
+ }
+
+ memcpy(&sei->payload[sei->payload_count], payload, sizeof(*payload));
+ ++sei->payload_count;
+
+ return 0;
+}
+
+int ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
+ CodedBitstreamFragment *au,
+ CodedBitstreamUnit *nal,
+ int position)
+{
+ H264RawSEI *sei = nal->content;
+
+ av_assert0(nal->type == H264_NAL_SEI);
+ av_assert0(position >= 0 && position < sei->payload_count);
+
+ if (position == 0 && sei->payload_count == 1) {
+ // Deleting NAL unit entirely.
+ int i;
+
+ for (i = 0; i < au->nb_units; i++) {
+ if (&au->units[i] == nal)
+ break;
+ }
+ av_assert0(i < au->nb_units && "NAL unit not in access unit.");
+
+ return ff_cbs_delete_unit(ctx, au, i);
+ } else {
+ cbs_h264_free_sei_payload(&sei->payload[position]);
+
+ --sei->payload_count;
+ memmove(sei->payload + position,
+ sei->payload + position + 1,
+ (sei->payload_count - position) * sizeof(*sei->payload));
+
+ return 0;
+ }
+}
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs_h264_syntax_template.c b/chromium/third_party/ffmpeg/libavcodec/cbs_h264_syntax_template.c
index 2d60273506f..f58dee8a258 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs_h264_syntax_template.c
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs_h264_syntax_template.c
@@ -404,6 +404,9 @@ static int FUNC(pps)(CodedBitstreamContext *ctx, RWContext *rw,
ue(slice_group_change_rate_minus1, 0, pic_size - 1);
} else if (current->slice_group_map_type == 6) {
ue(pic_size_in_map_units_minus1, pic_size - 1, pic_size - 1);
+
+ allocate(current->slice_group_id,
+ current->pic_size_in_map_units_minus1 + 1);
for (i = 0; i <= current->pic_size_in_map_units_minus1; i++)
u(av_log2(2 * current->num_slice_groups_minus1 + 1),
slice_group_id[i], 0, current->num_slice_groups_minus1);
@@ -561,6 +564,22 @@ static int FUNC(sei_pic_timing)(CodedBitstreamContext *ctx, RWContext *rw,
sps = h264->active_sps;
if (!sps) {
+ // If there is exactly one possible SPS but it is not yet active
+ // then just assume that it should be the active one.
+ int i, k = -1;
+ for (i = 0; i < H264_MAX_SPS_COUNT; i++) {
+ if (h264->sps[i]) {
+ if (k >= 0) {
+ k = -1;
+ break;
+ }
+ k = i;
+ }
+ }
+ if (k >= 0)
+ sps = h264->sps[k];
+ }
+ if (!sps) {
av_log(ctx->log_ctx, AV_LOG_ERROR,
"No active SPS for pic_timing.\n");
return AVERROR_INVALIDDATA;
@@ -1228,3 +1247,32 @@ static int FUNC(slice_header)(CodedBitstreamContext *ctx, RWContext *rw,
return 0;
}
+
+static int FUNC(filler)(CodedBitstreamContext *ctx, RWContext *rw,
+ H264RawFiller *current)
+{
+ av_unused int ff_byte = 0xff;
+ int err;
+
+ HEADER("Filler Data");
+
+ CHECK(FUNC(nal_unit_header)(ctx, rw, &current->nal_unit_header,
+ 1 << H264_NAL_FILLER_DATA));
+
+#ifdef READ
+ while (show_bits(rw, 8) == 0xff) {
+ xu(8, ff_byte, ff_byte, 0xff, 0xff);
+ ++current->filler_size;
+ }
+#else
+ {
+ uint32_t i;
+ for (i = 0; i < current->filler_size; i++)
+ xu(8, ff_byte, ff_byte, 0xff, 0xff);
+ }
+#endif
+
+ CHECK(FUNC(rbsp_trailing_bits)(ctx, rw));
+
+ return 0;
+}
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs_h265.h b/chromium/third_party/ffmpeg/libavcodec/cbs_h265.h
index b4777cf6bef..33e71fc234e 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs_h265.h
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs_h265.h
@@ -154,6 +154,7 @@ typedef struct H265RawVUI {
typedef struct H265RawPSExtensionData {
uint8_t *data;
size_t bit_length;
+ AVBufferRef *data_ref;
} H265RawPSExtensionData;
typedef struct H265RawVPS {
@@ -512,6 +513,7 @@ typedef struct H265RawSlice {
uint8_t *data;
size_t data_size;
int data_bit_start;
+ AVBufferRef *data_ref;
} H265RawSlice;
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs_internal.h b/chromium/third_party/ffmpeg/libavcodec/cbs_internal.h
index ae0b417b43a..56748034727 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs_internal.h
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs_internal.h
@@ -32,9 +32,9 @@ typedef struct CodedBitstreamType {
// Split frag->data into coded bitstream units, creating the
// frag->units array. Fill data but not content on each unit.
- // header is set if the fragment came from a header block, which
- // may require different parsing for some codecs (e.g. the AVCC
- // header in H.264).
+ // The header argument should be set if the fragment came from
+ // a header block, which may require different parsing for some
+ // codecs (e.g. the AVCC header in H.264).
int (*split_fragment)(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
int header);
@@ -53,9 +53,6 @@ typedef struct CodedBitstreamType {
int (*assemble_fragment)(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag);
- // Free the content and data of a single unit.
- void (*free_unit)(CodedBitstreamUnit *unit);
-
// Free the codec internal state.
void (*close)(CodedBitstreamContext *ctx);
} CodedBitstreamType;
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.c b/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.c
index 642a9c99b1a..bfb64a08511 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.c
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.c
@@ -102,6 +102,21 @@
#undef nextbits
+static void cbs_mpeg2_free_user_data(void *unit, uint8_t *content)
+{
+ MPEG2RawUserData *user = (MPEG2RawUserData*)content;
+ av_buffer_unref(&user->user_data_ref);
+ av_freep(&content);
+}
+
+static void cbs_mpeg2_free_slice(void *unit, uint8_t *content)
+{
+ MPEG2RawSlice *slice = (MPEG2RawSlice*)content;
+ av_buffer_unref(&slice->header.extra_information_ref);
+ av_buffer_unref(&slice->data_ref);
+ av_freep(&content);
+}
+
static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
int header)
@@ -138,7 +153,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx,
memset(unit_data + unit_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
err = ff_cbs_insert_unit_data(ctx, frag, i, unit_type,
- unit_data, unit_size);
+ unit_data, unit_size, NULL);
if (err < 0) {
av_freep(&unit_data);
return err;
@@ -168,25 +183,25 @@ static int cbs_mpeg2_read_unit(CodedBitstreamContext *ctx,
MPEG2RawSlice *slice;
int pos, len;
- slice = av_mallocz(sizeof(*slice));
- if (!slice)
- return AVERROR(ENOMEM);
+ err = ff_cbs_alloc_unit_content(ctx, unit, sizeof(*slice),
+ &cbs_mpeg2_free_slice);
+ if (err < 0)
+ return err;
+ slice = unit->content;
+
err = cbs_mpeg2_read_slice_header(ctx, &gbc, &slice->header);
- if (err < 0) {
- av_free(slice);
+ if (err < 0)
return err;
- }
pos = get_bits_count(&gbc);
len = unit->data_size;
slice->data_size = len - pos / 8;
- slice->data = av_malloc(slice->data_size +
- AV_INPUT_BUFFER_PADDING_SIZE);
- if (!slice->data) {
- av_free(slice);
+ slice->data_ref = av_buffer_alloc(slice->data_size +
+ AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!slice->data_ref)
return AVERROR(ENOMEM);
- }
+ slice->data = slice->data_ref->data;
memcpy(slice->data,
unit->data + pos / 8, slice->data_size);
@@ -194,33 +209,32 @@ static int cbs_mpeg2_read_unit(CodedBitstreamContext *ctx,
AV_INPUT_BUFFER_PADDING_SIZE);
slice->data_bit_start = pos % 8;
- unit->content = slice;
-
} else {
switch (unit->type) {
-#define START(start_code, type, func) \
+#define START(start_code, type, read_func, free_func) \
case start_code: \
{ \
type *header; \
- header = av_mallocz(sizeof(*header)); \
- if (!header) \
- return AVERROR(ENOMEM); \
- err = cbs_mpeg2_read_ ## func(ctx, &gbc, header); \
- if (err < 0) { \
- av_free(header); \
+ err = ff_cbs_alloc_unit_content(ctx, unit, \
+ sizeof(*header), free_func); \
+ if (err < 0) \
+ return err; \
+ header = unit->content; \
+ err = cbs_mpeg2_read_ ## read_func(ctx, &gbc, header); \
+ if (err < 0) \
return err; \
- } \
- unit->content = header; \
} \
break;
- START(0x00, MPEG2RawPictureHeader, picture_header);
- START(0xb2, MPEG2RawUserData, user_data);
- START(0xb3, MPEG2RawSequenceHeader, sequence_header);
- START(0xb5, MPEG2RawExtensionData, extension_data);
- START(0xb8, MPEG2RawGroupOfPicturesHeader, group_of_pictures_header);
+ START(0x00, MPEG2RawPictureHeader, picture_header, NULL);
+ START(0xb2, MPEG2RawUserData, user_data,
+ &cbs_mpeg2_free_user_data);
+ START(0xb3, MPEG2RawSequenceHeader, sequence_header, NULL);
+ START(0xb5, MPEG2RawExtensionData, extension_data, NULL);
+ START(0xb8, MPEG2RawGroupOfPicturesHeader,
+ group_of_pictures_header, NULL);
#undef START
default:
- av_log(ctx->log_ctx, AV_LOG_ERROR, "Unknown start code %"PRIx32".\n",
+ av_log(ctx->log_ctx, AV_LOG_ERROR, "Unknown start code %02"PRIx32".\n",
unit->type);
return AVERROR_INVALIDDATA;
}
@@ -248,7 +262,7 @@ static int cbs_mpeg2_write_header(CodedBitstreamContext *ctx,
#undef START
default:
av_log(ctx->log_ctx, AV_LOG_ERROR, "Write unimplemented for start "
- "code %02"PRIu32".\n", unit->type);
+ "code %02"PRIx32".\n", unit->type);
return AVERROR_PATCHWELCOME;
}
@@ -335,7 +349,7 @@ static int cbs_mpeg2_write_unit(CodedBitstreamContext *ctx,
unit->data_size = (put_bits_count(&pbc) + 7) / 8;
flush_put_bits(&pbc);
- err = av_reallocp(&unit->data, unit->data_size);
+ err = ff_cbs_alloc_unit_data(ctx, unit, unit->data_size);
if (err < 0)
return err;
@@ -355,9 +369,10 @@ static int cbs_mpeg2_assemble_fragment(CodedBitstreamContext *ctx,
for (i = 0; i < frag->nb_units; i++)
size += 3 + frag->units[i].data_size;
- data = av_malloc(size);
- if (!data)
+ frag->data_ref = av_buffer_alloc(size + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!frag->data_ref)
return AVERROR(ENOMEM);
+ data = frag->data_ref->data;
dp = 0;
for (i = 0; i < frag->nb_units; i++) {
@@ -373,25 +388,13 @@ static int cbs_mpeg2_assemble_fragment(CodedBitstreamContext *ctx,
av_assert0(dp == size);
+ memset(data + size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
frag->data = data;
frag->data_size = size;
return 0;
}
-static void cbs_mpeg2_free_unit(CodedBitstreamUnit *unit)
-{
- if (MPEG2_START_IS_SLICE(unit->type)) {
- MPEG2RawSlice *slice = unit->content;
- av_freep(&slice->data);
- av_freep(&slice->header.extra_information);
- } else if (unit->type == MPEG2_START_USER_DATA) {
- MPEG2RawUserData *user = unit->content;
- av_freep(&user->user_data);
- }
- av_freep(&unit->content);
-}
-
static void cbs_mpeg2_close(CodedBitstreamContext *ctx)
{
CodedBitstreamMPEG2Context *priv = ctx->priv_data;
@@ -409,6 +412,5 @@ const CodedBitstreamType ff_cbs_type_mpeg2 = {
.write_unit = &cbs_mpeg2_write_unit,
.assemble_fragment = &cbs_mpeg2_assemble_fragment,
- .free_unit = &cbs_mpeg2_free_unit,
.close = &cbs_mpeg2_close,
};
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.h b/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.h
index a8f12b2e75d..92caa99dc1d 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.h
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2.h
@@ -22,6 +22,8 @@
#include <stddef.h>
#include <stdint.h>
+#include "libavutil/buffer.h"
+
enum {
MPEG2_START_PICTURE = 0x00,
@@ -76,6 +78,7 @@ typedef struct MPEG2RawUserData {
uint8_t *user_data;
size_t user_data_length;
+ AVBufferRef *user_data_ref;
} MPEG2RawUserData;
typedef struct MPEG2RawSequenceExtension {
@@ -195,6 +198,7 @@ typedef struct MPEG2RawSliceHeader {
size_t extra_information_length;
uint8_t *extra_information;
+ AVBufferRef *extra_information_ref;
} MPEG2RawSliceHeader;
typedef struct MPEG2RawSlice {
@@ -203,6 +207,7 @@ typedef struct MPEG2RawSlice {
uint8_t *data;
size_t data_size;
int data_bit_start;
+ AVBufferRef *data_ref;
} MPEG2RawSlice;
diff --git a/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2_syntax_template.c b/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2_syntax_template.c
index 90dde26aedc..51c32cb58d6 100644
--- a/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2_syntax_template.c
+++ b/chromium/third_party/ffmpeg/libavcodec/cbs_mpeg2_syntax_template.c
@@ -71,9 +71,10 @@ static int FUNC(user_data)(CodedBitstreamContext *ctx, RWContext *rw,
av_assert0(k % 8 == 0);
current->user_data_length = k /= 8;
if (k > 0) {
- current->user_data = av_malloc(k);
- if (!current->user_data)
+ current->user_data_ref = av_buffer_alloc(k);
+ if (!current->user_data_ref)
return AVERROR(ENOMEM);
+ current->user_data = current->user_data_ref->data;
}
#endif
diff --git a/chromium/third_party/ffmpeg/libavcodec/chomp_bsf.c b/chromium/third_party/ffmpeg/libavcodec/chomp_bsf.c
index cc94380535a..3ba45f3e06d 100644
--- a/chromium/third_party/ffmpeg/libavcodec/chomp_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/chomp_bsf.c
@@ -23,20 +23,16 @@
#include "bsf.h"
#include "internal.h"
-static int chomp_filter(AVBSFContext *ctx, AVPacket *out)
+static int chomp_filter(AVBSFContext *ctx, AVPacket *pkt)
{
- AVPacket *in;
int ret;
- ret = ff_bsf_get_packet(ctx, &in);
+ ret = ff_bsf_get_packet_ref(ctx, pkt);
if (ret < 0)
return ret;
- while (in->size > 0 && !in->data[in->size - 1])
- in->size--;
-
- av_packet_move_ref(out, in);
- av_packet_free(&in);
+ while (pkt->size > 0 && !pkt->data[pkt->size - 1])
+ pkt->size--;
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/codec2utils.c b/chromium/third_party/ffmpeg/libavcodec/codec2utils.c
new file mode 100644
index 00000000000..931478f22a3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/codec2utils.c
@@ -0,0 +1,80 @@
+/*
+ * codec2 utility functions
+ * Copyright (c) 2017 Tomas Härdin
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <string.h>
+#include "internal.h"
+#include "libavcodec/codec2utils.h"
+
+int avpriv_codec2_mode_bit_rate(void *logctx, int mode)
+{
+ int frame_size = avpriv_codec2_mode_frame_size(logctx, mode);
+ int block_align = avpriv_codec2_mode_block_align(logctx, mode);
+
+ if (frame_size <= 0 || block_align <= 0) {
+ return 0;
+ }
+
+ return 8 * 8000 * block_align / frame_size;
+}
+
+int avpriv_codec2_mode_frame_size(void *logctx, int mode)
+{
+ int frame_size_table[AVPRIV_CODEC2_MODE_MAX+1] = {
+ 160, // 3200
+ 160, // 2400
+ 320, // 1600
+ 320, // 1400
+ 320, // 1300
+ 320, // 1200
+ 320, // 700
+ 320, // 700B
+ 320, // 700C
+ };
+
+ if (mode < 0 || mode > AVPRIV_CODEC2_MODE_MAX) {
+ av_log(logctx, AV_LOG_ERROR, "unknown codec2 mode %i, can't find frame_size\n", mode);
+ return 0;
+ } else {
+ return frame_size_table[mode];
+ }
+}
+
+int avpriv_codec2_mode_block_align(void *logctx, int mode)
+{
+ int block_align_table[AVPRIV_CODEC2_MODE_MAX+1] = {
+ 8, // 3200
+ 6, // 2400
+ 8, // 1600
+ 7, // 1400
+ 7, // 1300
+ 6, // 1200
+ 4, // 700
+ 4, // 700B
+ 4, // 700C
+ };
+
+ if (mode < 0 || mode > AVPRIV_CODEC2_MODE_MAX) {
+ av_log(logctx, AV_LOG_ERROR, "unknown codec2 mode %i, can't find block_align\n", mode);
+ return 0;
+ } else {
+ return block_align_table[mode];
+ }
+}
diff --git a/chromium/third_party/ffmpeg/libavcodec/codec2utils.h b/chromium/third_party/ffmpeg/libavcodec/codec2utils.h
new file mode 100644
index 00000000000..6def4d4aa39
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/codec2utils.h
@@ -0,0 +1,82 @@
+/*
+ * codec2 utility functions
+ * Copyright (c) 2017 Tomas Härdin
+ *
+ * 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
+ */
+
+#ifndef AVCODEC_CODEC2UTILS_H
+#define AVCODEC_CODEC2UTILS_H
+
+#include <stdint.h>
+
+//Highest mode we're willing to use.
+//Don't want to let users accidentally produce files that can't be decoded in the future.
+//CODEC2_MODE_WB (9) is experimental/unstable as of 2017-11-23.
+#define AVPRIV_CODEC2_MODE_MAX 8 //CODEC2_MODE_700C
+
+//Used by both codec2raw demuxer and libcodec2 encoder.
+//The integers match the values in codec2.h, so "3200" -> CODEC2_MODE_3000 = 0 and so on.
+//It is possible that we're linked to a version of libcodec2 that lacks some of these modes.
+//For example Debian stretch ships with libcodec2.so.0.4 which lacks CODEC2_MODE_700C.
+#define AVPRIV_CODEC2_AVOPTIONS(desc, classname, min_val, default_val, option_flags) \
+ { "mode", desc, offsetof(classname, mode), AV_OPT_TYPE_INT, {.i64 = default_val}, min_val, AVPRIV_CODEC2_MODE_MAX, .flags=option_flags, .unit="codec2_mode"},\
+ { "3200", "3200", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, .flags=option_flags, .unit="codec2_mode"},\
+ { "2400", "2400", 0, AV_OPT_TYPE_CONST, {.i64 = 1}, .flags=option_flags, .unit="codec2_mode"},\
+ { "1600", "1600", 0, AV_OPT_TYPE_CONST, {.i64 = 2}, .flags=option_flags, .unit="codec2_mode"},\
+ { "1400", "1400", 0, AV_OPT_TYPE_CONST, {.i64 = 3}, .flags=option_flags, .unit="codec2_mode"},\
+ { "1300", "1300", 0, AV_OPT_TYPE_CONST, {.i64 = 4}, .flags=option_flags, .unit="codec2_mode"},\
+ { "1200", "1200", 0, AV_OPT_TYPE_CONST, {.i64 = 5}, .flags=option_flags, .unit="codec2_mode"},\
+ { "700", "700", 0, AV_OPT_TYPE_CONST, {.i64 = 6}, .flags=option_flags, .unit="codec2_mode"},\
+ { "700B", "700B", 0, AV_OPT_TYPE_CONST, {.i64 = 7}, .flags=option_flags, .unit="codec2_mode"},\
+ { "700C", "700C", 0, AV_OPT_TYPE_CONST, {.i64 = 8}, .flags=option_flags, .unit="codec2_mode"}
+
+//The three following functions are here to avoid needing libavformat/codec2.c to depend on libcodec2
+
+//Computes bitrate from mode, with frames rounded up to the nearest octet.
+//So 700 bit/s (28 bits/frame) becomes 800 bits/s (32 bits/frame).
+//logctx is used for av_log()
+//Returns <0 if mode is invalid
+int avpriv_codec2_mode_bit_rate(void *logctx, int mode);
+
+//Mimics codec2_samples_per_frame()
+int avpriv_codec2_mode_frame_size(void *logctx, int mode);
+
+//Mimics (codec2_bits_per_frame()+7)/8
+int avpriv_codec2_mode_block_align(void *logctx, int mode);
+
+#define AVPRIV_CODEC2_EXTRADATA_SIZE 4
+
+//Used in codec2raw demuxer and libcodec2 encoder
+static inline void avpriv_codec2_make_extradata(uint8_t *ptr, int mode) {
+ //version 0.8 as of 2017-12-23 (r3386)
+ ptr[0] = 0; //major
+ ptr[1] = 8; //minor
+ ptr[2] = mode; //mode
+ ptr[3] = 0; //flags
+}
+
+//Returns version as a 16-bit value. 0.8 -> 0x0008
+static inline uint16_t avpriv_codec2_version_from_extradata(uint8_t *ptr) {
+ return (ptr[0] << 8) + ptr[1];
+}
+
+static inline uint8_t avpriv_codec2_mode_from_extradata(uint8_t *ptr) {
+ return ptr[2];
+}
+
+#endif /* AVCODEC_CODEC2UTILS_H */
diff --git a/chromium/third_party/ffmpeg/libavcodec/codec_desc.c b/chromium/third_party/ffmpeg/libavcodec/codec_desc.c
index c3688de1d6d..da7c0871a27 100644
--- a/chromium/third_party/ffmpeg/libavcodec/codec_desc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/codec_desc.c
@@ -90,6 +90,28 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_LJPEG,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "ljpeg",
+ .long_name = NULL_IF_CONFIG_SMALL("Lossless JPEG"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_SP5X,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "sp5x",
+ .long_name = NULL_IF_CONFIG_SMALL("Sunplus JPEG (SP5X)"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
+ },
+ {
+ .id = AV_CODEC_ID_JPEGLS,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "jpegls",
+ .long_name = NULL_IF_CONFIG_SMALL("JPEG-LS"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
+ AV_CODEC_PROP_LOSSLESS,
+ },
+ {
.id = AV_CODEC_ID_MPEG4,
.type = AVMEDIA_TYPE_VIDEO,
.name = "mpeg4",
@@ -161,14 +183,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_SVG,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "svg",
- .long_name = NULL_IF_CONFIG_SMALL("Scalable Vector Graphics"),
- .props = AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/svg+xml"),
- },
- {
.id = AV_CODEC_ID_SVQ1,
.type = AVMEDIA_TYPE_VIDEO,
.name = "svq1",
@@ -408,13 +422,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_SNOW,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "snow",
- .long_name = NULL_IF_CONFIG_SMALL("Snow"),
- .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_TSCC,
.type = AVMEDIA_TYPE_VIDEO,
.name = "tscc",
@@ -450,6 +457,50 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_PNG,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "png",
+ .long_name = NULL_IF_CONFIG_SMALL("PNG (Portable Network Graphics) image"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/png"),
+ },
+ {
+ .id = AV_CODEC_ID_PPM,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "ppm",
+ .long_name = NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PBM,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "pbm",
+ .long_name = NULL_IF_CONFIG_SMALL("PBM (Portable BitMap) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PGM,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "pgm",
+ .long_name = NULL_IF_CONFIG_SMALL("PGM (Portable GrayMap) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PGMYUV,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "pgmyuv",
+ .long_name = NULL_IF_CONFIG_SMALL("PGMYUV (Portable GrayMap YUV) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PAM,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "pam",
+ .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/x-portable-pixmap"),
+ },
+ {
.id = AV_CODEC_ID_FFVHUFF,
.type = AVMEDIA_TYPE_VIDEO,
.name = "ffvhuff",
@@ -638,6 +689,14 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_TARGA,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "targa",
+ .long_name = NULL_IF_CONFIG_SMALL("Truevision Targa image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/x-targa", "image/x-tga"),
+ },
+ {
.id = AV_CODEC_ID_DSICINVIDEO,
.type = AVMEDIA_TYPE_VIDEO,
.name = "dsicinvideo",
@@ -652,6 +711,22 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_TIFF,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "tiff",
+ .long_name = NULL_IF_CONFIG_SMALL("TIFF image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/tiff"),
+ },
+ {
+ .id = AV_CODEC_ID_GIF,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "gif",
+ .long_name = NULL_IF_CONFIG_SMALL("GIF (Graphics Interchange Format)"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/gif"),
+ },
+ {
.id = AV_CODEC_ID_DXA,
.type = AVMEDIA_TYPE_VIDEO,
.name = "dxa",
@@ -674,6 +749,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_SGI,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "sgi",
+ .long_name = NULL_IF_CONFIG_SMALL("SGI image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
.id = AV_CODEC_ID_C93,
.type = AVMEDIA_TYPE_VIDEO,
.name = "c93",
@@ -688,6 +770,20 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_PTX,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "ptx",
+ .long_name = NULL_IF_CONFIG_SMALL("V.Flash PTX image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
+ },
+ {
+ .id = AV_CODEC_ID_TXD,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "txd",
+ .long_name = NULL_IF_CONFIG_SMALL("Renderware TXD (TeXture Dictionary) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
+ },
+ {
.id = AV_CODEC_ID_VP6A,
.type = AVMEDIA_TYPE_VIDEO,
.name = "vp6a",
@@ -709,6 +805,21 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_PCX,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "pcx",
+ .long_name = NULL_IF_CONFIG_SMALL("PC Paintbrush PCX image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/x-pcx"),
+ },
+ {
+ .id = AV_CODEC_ID_SUNRAST,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "sunrast",
+ .long_name = NULL_IF_CONFIG_SMALL("Sun Rasterfile image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
.id = AV_CODEC_ID_INDEO4,
.type = AVMEDIA_TYPE_VIDEO,
.name = "indeo4",
@@ -744,13 +855,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_DAALA,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "daala",
- .long_name = NULL_IF_CONFIG_SMALL("Daala"),
- .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_DIRAC,
.type = AVMEDIA_TYPE_VIDEO,
.name = "dirac",
@@ -835,6 +939,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
+ .id = AV_CODEC_ID_DPX,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "dpx",
+ .long_name = NULL_IF_CONFIG_SMALL("DPX (Digital Picture Exchange) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
.id = AV_CODEC_ID_MAD,
.type = AVMEDIA_TYPE_VIDEO,
.name = "mad",
@@ -912,14 +1023,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_VP9,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "vp9",
- .long_name = NULL_IF_CONFIG_SMALL("Google VP9"),
- .props = AV_CODEC_PROP_LOSSY,
- .profiles = NULL_IF_CONFIG_SMALL(ff_vp9_profiles),
- },
- {
.id = AV_CODEC_ID_PICTOR,
.type = AVMEDIA_TYPE_VIDEO,
.name = "pictor",
@@ -927,6 +1030,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_ANSI,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "ansi",
+ .long_name = NULL_IF_CONFIG_SMALL("ASCII/ANSI art"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
.id = AV_CODEC_ID_A64_MULTI,
.type = AVMEDIA_TYPE_VIDEO,
.name = "a64_multi",
@@ -948,27 +1058,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_M101,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "m101",
- .long_name = NULL_IF_CONFIG_SMALL("Matrox Uncompressed SD"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_MVC1,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "mvc1",
- .long_name = NULL_IF_CONFIG_SMALL("Silicon Graphics Motion Video Compressor 1"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_MVC2,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "mvc2",
- .long_name = NULL_IF_CONFIG_SMALL("Silicon Graphics Motion Video Compressor 2"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
- },
- {
.id = AV_CODEC_ID_MXPEG,
.type = AVMEDIA_TYPE_VIDEO,
.name = "mxpeg",
@@ -1004,6 +1093,20 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_WMV3IMAGE,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "wmv3image",
+ .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9 Image"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
+ .id = AV_CODEC_ID_VC1IMAGE,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "vc1image",
+ .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9 Image v2"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
.id = AV_CODEC_ID_UTVIDEO,
.type = AVMEDIA_TYPE_VIDEO,
.name = "utvideo",
@@ -1039,6 +1142,14 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
+ .id = AV_CODEC_ID_XWD,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "xwd",
+ .long_name = NULL_IF_CONFIG_SMALL("XWD (X Window Dump) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/x-xwindowdump"),
+ },
+ {
.id = AV_CODEC_ID_CDXL,
.type = AVMEDIA_TYPE_VIDEO,
.name = "cdxl",
@@ -1046,6 +1157,14 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_XBM,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "xbm",
+ .long_name = NULL_IF_CONFIG_SMALL("XBM (X BitMap) image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/x-xbitmap"),
+ },
+ {
.id = AV_CODEC_ID_ZEROCODEC,
.type = AVMEDIA_TYPE_VIDEO,
.name = "zerocodec",
@@ -1095,6 +1214,14 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_VP9,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "vp9",
+ .long_name = NULL_IF_CONFIG_SMALL("Google VP9"),
+ .props = AV_CODEC_PROP_LOSSY,
+ .profiles = NULL_IF_CONFIG_SMALL(ff_vp9_profiles),
+ },
+ {
.id = AV_CODEC_ID_AIC,
.type = AVMEDIA_TYPE_VIDEO,
.name = "aic",
@@ -1102,13 +1229,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_Y41P,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "y41p",
- .long_name = NULL_IF_CONFIG_SMALL("Uncompressed YUV 4:1:1 12-bit"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_ESCAPE130,
.type = AVMEDIA_TYPE_VIDEO,
.name = "escape130",
@@ -1116,88 +1236,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_AVRP,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "avrp",
- .long_name = NULL_IF_CONFIG_SMALL("Avid 1:1 10-bit RGB Packer"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_012V,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "012v",
- .long_name = NULL_IF_CONFIG_SMALL("Uncompressed 4:2:2 10-bit"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_AVUI,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "avui",
- .long_name = NULL_IF_CONFIG_SMALL("Avid Meridien Uncompressed"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_AYUV,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "ayuv",
- .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed MS 4:4:4:4"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_TARGA_Y216,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "targa_y216",
- .long_name = NULL_IF_CONFIG_SMALL("Pinnacle TARGA CineWave YUV16"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_V308,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "v308",
- .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed 4:4:4"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_V408,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "v408",
- .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed QT 4:4:4:4"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_YUV4,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "yuv4",
- .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed 4:2:0"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_AVRN,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "avrn",
- .long_name = NULL_IF_CONFIG_SMALL("Avid AVI Codec"),
- },
- {
- .id = AV_CODEC_ID_CPIA,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "cpia",
- .long_name = NULL_IF_CONFIG_SMALL("CPiA video format"),
- },
- {
- .id = AV_CODEC_ID_XFACE,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "xface",
- .long_name = NULL_IF_CONFIG_SMALL("X-face image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_SMVJPEG,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "smvjpeg",
- .long_name = NULL_IF_CONFIG_SMALL("Sigmatel Motion Video"),
- },
-
- {
.id = AV_CODEC_ID_G2M,
.type = AVMEDIA_TYPE_VIDEO,
.name = "g2m",
@@ -1205,6 +1243,15 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_WEBP,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "webp",
+ .long_name = NULL_IF_CONFIG_SMALL("WebP"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
+ AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/webp"),
+ },
+ {
.id = AV_CODEC_ID_HNM4_VIDEO,
.type = AVMEDIA_TYPE_VIDEO,
.name = "hnm4video",
@@ -1227,6 +1274,20 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_ALIAS_PIX,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "alias_pix",
+ .long_name = NULL_IF_CONFIG_SMALL("Alias/Wavefront PIX image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_BRENDER_PIX,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "brender_pix",
+ .long_name = NULL_IF_CONFIG_SMALL("BRender PIX image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ },
+ {
.id = AV_CODEC_ID_PAF_VIDEO,
.type = AVMEDIA_TYPE_VIDEO,
.name = "paf_video",
@@ -1234,6 +1295,14 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_EXR,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "exr",
+ .long_name = NULL_IF_CONFIG_SMALL("OpenEXR image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
+ AV_CODEC_PROP_LOSSLESS,
+ },
+ {
.id = AV_CODEC_ID_VP7,
.type = AVMEDIA_TYPE_VIDEO,
.name = "vp7",
@@ -1255,6 +1324,20 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
+ .id = AV_CODEC_ID_MVC1,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "mvc1",
+ .long_name = NULL_IF_CONFIG_SMALL("Silicon Graphics Motion Video Compressor 1"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
+ },
+ {
+ .id = AV_CODEC_ID_MVC2,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "mvc2",
+ .long_name = NULL_IF_CONFIG_SMALL("Silicon Graphics Motion Video Compressor 2"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
+ },
+ {
.id = AV_CODEC_ID_HQX,
.type = AVMEDIA_TYPE_VIDEO,
.name = "hqx",
@@ -1262,6 +1345,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_TDSC,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "tdsc",
+ .long_name = NULL_IF_CONFIG_SMALL("TDSC"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
.id = AV_CODEC_ID_HQ_HQA,
.type = AVMEDIA_TYPE_VIDEO,
.name = "hq_hqa",
@@ -1276,6 +1366,14 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_DDS,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "dds",
+ .long_name = NULL_IF_CONFIG_SMALL("DirectDraw Surface image decoder"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
+ AV_CODEC_PROP_LOSSLESS,
+ },
+ {
.id = AV_CODEC_ID_DXV,
.type = AVMEDIA_TYPE_VIDEO,
.name = "dxv",
@@ -1290,20 +1388,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_SPEEDHQ,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "speedhq",
- .long_name = NULL_IF_CONFIG_SMALL("NewTek SpeedHQ"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_WRAPPED_AVFRAME,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "wrapped_avframe",
- .long_name = NULL_IF_CONFIG_SMALL("AVFrame to AVPacket passthrough"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_RSCC,
.type = AVMEDIA_TYPE_VIDEO,
.name = "rscc",
@@ -1311,229 +1395,155 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_MAGICYUV,
+ .id = AV_CODEC_ID_Y41P,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "magicyuv",
- .long_name = NULL_IF_CONFIG_SMALL("MagicYUV video"),
+ .name = "y41p",
+ .long_name = NULL_IF_CONFIG_SMALL("Uncompressed YUV 4:1:1 12-bit"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_TRUEMOTION2RT,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "truemotion2rt",
- .long_name = NULL_IF_CONFIG_SMALL("Duck TrueMotion 2.0 Real Time"),
- .props = AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_CFHD,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "cfhd",
- .long_name = NULL_IF_CONFIG_SMALL("Cineform HD"),
- .props = AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_SHEERVIDEO,
+ .id = AV_CODEC_ID_AVRP,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "sheervideo",
- .long_name = NULL_IF_CONFIG_SMALL("BitJazz SheerVideo"),
+ .name = "avrp",
+ .long_name = NULL_IF_CONFIG_SMALL("Avid 1:1 10-bit RGB Packer"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_YLC,
+ .id = AV_CODEC_ID_012V,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "ylc",
- .long_name = NULL_IF_CONFIG_SMALL("YUY2 Lossless Codec"),
+ .name = "012v",
+ .long_name = NULL_IF_CONFIG_SMALL("Uncompressed 4:2:2 10-bit"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_PIXLET,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "pixlet",
- .long_name = NULL_IF_CONFIG_SMALL("Apple Pixlet"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_FMVC,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "fmvc",
- .long_name = NULL_IF_CONFIG_SMALL("FM Screen Capture Codec"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_SCPR,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "scpr",
- .long_name = NULL_IF_CONFIG_SMALL("ScreenPressor"),
- .props = AV_CODEC_PROP_LOSSLESS | AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_CLEARVIDEO,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "clearvideo",
- .long_name = NULL_IF_CONFIG_SMALL("Iterated Systems ClearVideo"),
- .props = AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_AV1,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "av1",
- .long_name = NULL_IF_CONFIG_SMALL("Alliance for Open Media AV1"),
- .props = AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_BITPACKED,
+ .id = AV_CODEC_ID_AVUI,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "bitpacked",
- .long_name = NULL_IF_CONFIG_SMALL("Bitpacked"),
+ .name = "avui",
+ .long_name = NULL_IF_CONFIG_SMALL("Avid Meridien Uncompressed"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_MSCC,
+ .id = AV_CODEC_ID_AYUV,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "mscc",
- .long_name = NULL_IF_CONFIG_SMALL("Mandsoft Screen Capture Codec"),
+ .name = "ayuv",
+ .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed MS 4:4:4:4"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_SRGC,
+ .id = AV_CODEC_ID_TARGA_Y216,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "srgc",
- .long_name = NULL_IF_CONFIG_SMALL("Screen Recorder Gold Codec"),
+ .name = "targa_y216",
+ .long_name = NULL_IF_CONFIG_SMALL("Pinnacle TARGA CineWave YUV16"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_GDV,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "gdv",
- .long_name = NULL_IF_CONFIG_SMALL("Gremlin Digital Video"),
- .props = AV_CODEC_PROP_LOSSY,
- },
-
- /* image codecs */
- {
- .id = AV_CODEC_ID_ALIAS_PIX,
+ .id = AV_CODEC_ID_V308,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "alias_pix",
- .long_name = NULL_IF_CONFIG_SMALL("Alias/Wavefront PIX image"),
+ .name = "v308",
+ .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed 4:4:4"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_ANSI,
+ .id = AV_CODEC_ID_V408,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "ansi",
- .long_name = NULL_IF_CONFIG_SMALL("ASCII/ANSI art"),
- .props = AV_CODEC_PROP_LOSSY,
+ .name = "v408",
+ .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed QT 4:4:4:4"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_BRENDER_PIX,
+ .id = AV_CODEC_ID_YUV4,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "brender_pix",
- .long_name = NULL_IF_CONFIG_SMALL("BRender PIX image"),
+ .name = "yuv4",
+ .long_name = NULL_IF_CONFIG_SMALL("Uncompressed packed 4:2:0"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_DDS,
+ .id = AV_CODEC_ID_AVRN,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "dds",
- .long_name = NULL_IF_CONFIG_SMALL("DirectDraw Surface image decoder"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
- AV_CODEC_PROP_LOSSLESS,
+ .name = "avrn",
+ .long_name = NULL_IF_CONFIG_SMALL("Avid AVI Codec"),
},
{
- .id = AV_CODEC_ID_DPX,
+ .id = AV_CODEC_ID_CPIA,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "dpx",
- .long_name = NULL_IF_CONFIG_SMALL("DPX (Digital Picture Exchange) image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .name = "cpia",
+ .long_name = NULL_IF_CONFIG_SMALL("CPiA video format"),
},
{
- .id = AV_CODEC_ID_EXR,
+ .id = AV_CODEC_ID_XFACE,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "exr",
- .long_name = NULL_IF_CONFIG_SMALL("OpenEXR image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
- AV_CODEC_PROP_LOSSLESS,
+ .name = "xface",
+ .long_name = NULL_IF_CONFIG_SMALL("X-face image"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_FITS,
+ .id = AV_CODEC_ID_SNOW,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "fits",
- .long_name = NULL_IF_CONFIG_SMALL("FITS (Flexible Image Transport System)"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .name = "snow",
+ .long_name = NULL_IF_CONFIG_SMALL("Snow"),
+ .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_GIF,
+ .id = AV_CODEC_ID_SMVJPEG,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "gif",
- .long_name = NULL_IF_CONFIG_SMALL("GIF (Graphics Interchange Format)"),
- .props = AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/gif"),
+ .name = "smvjpeg",
+ .long_name = NULL_IF_CONFIG_SMALL("Sigmatel Motion Video"),
},
{
- .id = AV_CODEC_ID_JPEGLS,
+ .id = AV_CODEC_ID_APNG,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "jpegls",
- .long_name = NULL_IF_CONFIG_SMALL("JPEG-LS"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
- AV_CODEC_PROP_LOSSLESS,
+ .name = "apng",
+ .long_name = NULL_IF_CONFIG_SMALL("APNG (Animated Portable Network Graphics) image"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/png"),
},
{
- .id = AV_CODEC_ID_LJPEG,
+ .id = AV_CODEC_ID_DAALA,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "ljpeg",
- .long_name = NULL_IF_CONFIG_SMALL("Lossless JPEG"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .name = "daala",
+ .long_name = NULL_IF_CONFIG_SMALL("Daala"),
+ .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_PAM,
+ .id = AV_CODEC_ID_CFHD,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "pam",
- .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/x-portable-pixmap"),
+ .name = "cfhd",
+ .long_name = NULL_IF_CONFIG_SMALL("Cineform HD"),
+ .props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_PBM,
+ .id = AV_CODEC_ID_TRUEMOTION2RT,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "pbm",
- .long_name = NULL_IF_CONFIG_SMALL("PBM (Portable BitMap) image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .name = "truemotion2rt",
+ .long_name = NULL_IF_CONFIG_SMALL("Duck TrueMotion 2.0 Real Time"),
+ .props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_PCX,
+ .id = AV_CODEC_ID_M101,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "pcx",
- .long_name = NULL_IF_CONFIG_SMALL("PC Paintbrush PCX image"),
+ .name = "m101",
+ .long_name = NULL_IF_CONFIG_SMALL("Matrox Uncompressed SD"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/x-pcx"),
},
{
- .id = AV_CODEC_ID_PGM,
+ .id = AV_CODEC_ID_MAGICYUV,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "pgm",
- .long_name = NULL_IF_CONFIG_SMALL("PGM (Portable GrayMap) image"),
+ .name = "magicyuv",
+ .long_name = NULL_IF_CONFIG_SMALL("MagicYUV video"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_PGMYUV,
+ .id = AV_CODEC_ID_SHEERVIDEO,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "pgmyuv",
- .long_name = NULL_IF_CONFIG_SMALL("PGMYUV (Portable GrayMap YUV) image"),
+ .name = "sheervideo",
+ .long_name = NULL_IF_CONFIG_SMALL("BitJazz SheerVideo"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_PNG,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "png",
- .long_name = NULL_IF_CONFIG_SMALL("PNG (Portable Network Graphics) image"),
- .props = AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/png"),
- },
- {
- .id = AV_CODEC_ID_PPM,
+ .id = AV_CODEC_ID_YLC,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "ppm",
- .long_name = NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"),
+ .name = "ylc",
+ .long_name = NULL_IF_CONFIG_SMALL("YUY2 Lossless Codec"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
@@ -1544,117 +1554,97 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_PTX,
+ .id = AV_CODEC_ID_PIXLET,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "ptx",
- .long_name = NULL_IF_CONFIG_SMALL("V.Flash PTX image"),
+ .name = "pixlet",
+ .long_name = NULL_IF_CONFIG_SMALL("Apple Pixlet"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_SGI,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "sgi",
- .long_name = NULL_IF_CONFIG_SMALL("SGI image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_SP5X,
+ .id = AV_CODEC_ID_SPEEDHQ,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "sp5x",
- .long_name = NULL_IF_CONFIG_SMALL("Sunplus JPEG (SP5X)"),
+ .name = "speedhq",
+ .long_name = NULL_IF_CONFIG_SMALL("NewTek SpeedHQ"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_SUNRAST,
+ .id = AV_CODEC_ID_FMVC,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "sunrast",
- .long_name = NULL_IF_CONFIG_SMALL("Sun Rasterfile image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
+ .name = "fmvc",
+ .long_name = NULL_IF_CONFIG_SMALL("FM Screen Capture Codec"),
+ .props = AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_TARGA,
+ .id = AV_CODEC_ID_SCPR,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "targa",
- .long_name = NULL_IF_CONFIG_SMALL("Truevision Targa image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/x-targa", "image/x-tga"),
+ .name = "scpr",
+ .long_name = NULL_IF_CONFIG_SMALL("ScreenPressor"),
+ .props = AV_CODEC_PROP_LOSSLESS | AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_TDSC,
+ .id = AV_CODEC_ID_CLEARVIDEO,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "tdsc",
- .long_name = NULL_IF_CONFIG_SMALL("TDSC"),
+ .name = "clearvideo",
+ .long_name = NULL_IF_CONFIG_SMALL("Iterated Systems ClearVideo"),
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_TIFF,
+ .id = AV_CODEC_ID_XPM,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "tiff",
- .long_name = NULL_IF_CONFIG_SMALL("TIFF image"),
+ .name = "xpm",
+ .long_name = NULL_IF_CONFIG_SMALL("XPM (X PixMap) image"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/tiff"),
- },
- {
- .id = AV_CODEC_ID_TXD,
- .type = AVMEDIA_TYPE_VIDEO,
- .name = "txd",
- .long_name = NULL_IF_CONFIG_SMALL("Renderware TXD (TeXture Dictionary) image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
+ .mime_types= MT("image/x-xpixmap"),
},
{
- .id = AV_CODEC_ID_VC1IMAGE,
+ .id = AV_CODEC_ID_AV1,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "vc1image",
- .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9 Image v2"),
+ .name = "av1",
+ .long_name = NULL_IF_CONFIG_SMALL("Alliance for Open Media AV1"),
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_WEBP,
+ .id = AV_CODEC_ID_BITPACKED,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "webp",
- .long_name = NULL_IF_CONFIG_SMALL("WebP"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
- AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/webp"),
+ .name = "bitpacked",
+ .long_name = NULL_IF_CONFIG_SMALL("Bitpacked"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_WMV3IMAGE,
+ .id = AV_CODEC_ID_MSCC,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "wmv3image",
- .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9 Image"),
- .props = AV_CODEC_PROP_LOSSY,
+ .name = "mscc",
+ .long_name = NULL_IF_CONFIG_SMALL("Mandsoft Screen Capture Codec"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_XBM,
+ .id = AV_CODEC_ID_SRGC,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "xbm",
- .long_name = NULL_IF_CONFIG_SMALL("XBM (X BitMap) image"),
+ .name = "srgc",
+ .long_name = NULL_IF_CONFIG_SMALL("Screen Recorder Gold Codec"),
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/x-xbitmap"),
},
{
- .id = AV_CODEC_ID_XPM,
+ .id = AV_CODEC_ID_SVG,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "xpm",
- .long_name = NULL_IF_CONFIG_SMALL("XPM (X PixMap) image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/x-xpixmap"),
+ .name = "svg",
+ .long_name = NULL_IF_CONFIG_SMALL("Scalable Vector Graphics"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ .mime_types= MT("image/svg+xml"),
},
{
- .id = AV_CODEC_ID_XWD,
+ .id = AV_CODEC_ID_GDV,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "xwd",
- .long_name = NULL_IF_CONFIG_SMALL("XWD (X Window Dump) image"),
- .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/x-xwindowdump"),
+ .name = "gdv",
+ .long_name = NULL_IF_CONFIG_SMALL("Gremlin Digital Video"),
+ .props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_APNG,
+ .id = AV_CODEC_ID_FITS,
.type = AVMEDIA_TYPE_VIDEO,
- .name = "apng",
- .long_name = NULL_IF_CONFIG_SMALL("APNG (Animated Portable Network Graphics) image"),
- .props = AV_CODEC_PROP_LOSSLESS,
- .mime_types= MT("image/png"),
+ .name = "fits",
+ .long_name = NULL_IF_CONFIG_SMALL("FITS (Flexible Image Transport System)"),
+ .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
},
/* various PCM "codecs" */
@@ -1729,20 +1719,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_PCM_S64LE,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "pcm_s64le",
- .long_name = NULL_IF_CONFIG_SMALL("PCM signed 64-bit little-endian"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_PCM_S64BE,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "pcm_s64be",
- .long_name = NULL_IF_CONFIG_SMALL("PCM signed 64-bit big-endian"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_PCM_U32LE,
.type = AVMEDIA_TYPE_AUDIO,
.name = "pcm_u32le",
@@ -1799,13 +1775,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_PCM_S16BE_PLANAR,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "pcm_s16be_planar",
- .long_name = NULL_IF_CONFIG_SMALL("PCM signed 16-bit big-endian planar"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_PCM_S16LE_PLANAR,
.type = AVMEDIA_TYPE_AUDIO,
.name = "pcm_s16le_planar",
@@ -1813,20 +1782,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_PCM_S24LE_PLANAR,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "pcm_s24le_planar",
- .long_name = NULL_IF_CONFIG_SMALL("PCM signed 24-bit little-endian planar"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_PCM_S32LE_PLANAR,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "pcm_s32le_planar",
- .long_name = NULL_IF_CONFIG_SMALL("PCM signed 32-bit little-endian planar"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_PCM_DVD,
.type = AVMEDIA_TYPE_AUDIO,
.name = "pcm_dvd",
@@ -1834,20 +1789,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_PCM_F16LE,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "pcm_f16le",
- .long_name = NULL_IF_CONFIG_SMALL("PCM 16.8 floating point little-endian"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_PCM_F24LE,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "pcm_f24le",
- .long_name = NULL_IF_CONFIG_SMALL("PCM 24.0 floating point little-endian"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_PCM_F32BE,
.type = AVMEDIA_TYPE_AUDIO,
.name = "pcm_f32be",
@@ -1903,6 +1844,55 @@ static const AVCodecDescriptor codec_descriptors[] = {
.long_name = NULL_IF_CONFIG_SMALL("PCM signed 8-bit planar"),
.props = AV_CODEC_PROP_LOSSLESS,
},
+ {
+ .id = AV_CODEC_ID_PCM_S24LE_PLANAR,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "pcm_s24le_planar",
+ .long_name = NULL_IF_CONFIG_SMALL("PCM signed 24-bit little-endian planar"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PCM_S32LE_PLANAR,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "pcm_s32le_planar",
+ .long_name = NULL_IF_CONFIG_SMALL("PCM signed 32-bit little-endian planar"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PCM_S16BE_PLANAR,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "pcm_s16be_planar",
+ .long_name = NULL_IF_CONFIG_SMALL("PCM signed 16-bit big-endian planar"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PCM_S64LE,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "pcm_s64le",
+ .long_name = NULL_IF_CONFIG_SMALL("PCM signed 64-bit little-endian"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PCM_S64BE,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "pcm_s64be",
+ .long_name = NULL_IF_CONFIG_SMALL("PCM signed 64-bit big-endian"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PCM_F16LE,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "pcm_f16le",
+ .long_name = NULL_IF_CONFIG_SMALL("PCM 16.8 floating point little-endian"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_PCM_F24LE,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "pcm_f24le",
+ .long_name = NULL_IF_CONFIG_SMALL("PCM 24.0 floating point little-endian"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
/* various ADPCM codecs */
{
@@ -2039,13 +2029,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_ADPCM_THP_LE,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "adpcm_thp_le",
- .long_name = NULL_IF_CONFIG_SMALL("ADPCM Nintendo THP (Little-Endian)"),
- .props = AV_CODEC_PROP_LOSSY,
- },
- {
.id = AV_CODEC_ID_ADPCM_IMA_AMV,
.type = AVMEDIA_TYPE_AUDIO,
.name = "adpcm_ima_amv",
@@ -2123,6 +2106,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_ADPCM_VIMA,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "adpcm_vima",
+ .long_name = NULL_IF_CONFIG_SMALL("LucasArts VIMA audio"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
.id = AV_CODEC_ID_ADPCM_AFC,
.type = AVMEDIA_TYPE_AUDIO,
.name = "adpcm_afc",
@@ -2158,10 +2148,10 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_ADPCM_VIMA,
+ .id = AV_CODEC_ID_ADPCM_THP_LE,
.type = AVMEDIA_TYPE_AUDIO,
- .name = "adpcm_vima",
- .long_name = NULL_IF_CONFIG_SMALL("LucasArts VIMA audio"),
+ .name = "adpcm_thp_le",
+ .long_name = NULL_IF_CONFIG_SMALL("ADPCM Nintendo THP (Little-Endian)"),
.props = AV_CODEC_PROP_LOSSY,
},
{
@@ -2185,6 +2175,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA Eurocom DAT4"),
.props = AV_CODEC_PROP_LOSSY,
},
+ {
+ .id = AV_CODEC_ID_ADPCM_MTAF,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "adpcm_mtaf",
+ .long_name = NULL_IF_CONFIG_SMALL("ADPCM MTAF"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
/* AMR */
{
@@ -2547,20 +2544,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_ATRAC3PAL,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "atrac3pal",
- .long_name = NULL_IF_CONFIG_SMALL("ATRAC3+ AL (Adaptive TRansform Acoustic Coding 3+ Advanced Lossless)"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
- .id = AV_CODEC_ID_ATRAC3AL,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "atrac3al",
- .long_name = NULL_IF_CONFIG_SMALL("ATRAC3 AL (Adaptive TRansform Acoustic Coding 3 Advanced Lossless)"),
- .props = AV_CODEC_PROP_LOSSLESS,
- },
- {
.id = AV_CODEC_ID_EAC3,
.type = AVMEDIA_TYPE_AUDIO,
.name = "eac3",
@@ -2653,20 +2636,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_DSS_SP,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "dss_sp",
- .long_name = NULL_IF_CONFIG_SMALL("Digital Speech Standard - Standard Play mode (DSS SP)"),
- .props = AV_CODEC_PROP_LOSSY,
- },
- {
- .id = AV_CODEC_ID_DOLBY_E,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "dolby_e",
- .long_name = NULL_IF_CONFIG_SMALL("Dolby E"),
- .props = AV_CODEC_PROP_LOSSY,
- },
- {
.id = AV_CODEC_ID_G729,
.type = AVMEDIA_TYPE_AUDIO,
.name = "g729",
@@ -2716,24 +2685,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_FFWAVESYNTH,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "wavesynth",
- .long_name = NULL_IF_CONFIG_SMALL("Wave synthesis pseudo-codec"),
- },
- {
- .id = AV_CODEC_ID_SONIC,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "sonic",
- .long_name = NULL_IF_CONFIG_SMALL("Sonic"),
- },
- {
- .id = AV_CODEC_ID_SONIC_LS,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "sonicls",
- .long_name = NULL_IF_CONFIG_SMALL("Sonic lossless"),
- },
- {
.id = AV_CODEC_ID_OPUS,
.type = AVMEDIA_TYPE_AUDIO,
.name = "opus",
@@ -2776,6 +2727,38 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_DSS_SP,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "dss_sp",
+ .long_name = NULL_IF_CONFIG_SMALL("Digital Speech Standard - Standard Play mode (DSS SP)"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
+ .id = AV_CODEC_ID_CODEC2,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "codec2",
+ .long_name = NULL_IF_CONFIG_SMALL("codec2 (very low bitrate speech codec)"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
+ .id = AV_CODEC_ID_FFWAVESYNTH,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "wavesynth",
+ .long_name = NULL_IF_CONFIG_SMALL("Wave synthesis pseudo-codec"),
+ },
+ {
+ .id = AV_CODEC_ID_SONIC,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "sonic",
+ .long_name = NULL_IF_CONFIG_SMALL("Sonic"),
+ },
+ {
+ .id = AV_CODEC_ID_SONIC_LS,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "sonicls",
+ .long_name = NULL_IF_CONFIG_SMALL("Sonic lossless"),
+ },
+ {
.id = AV_CODEC_ID_EVRC,
.type = AVMEDIA_TYPE_AUDIO,
.name = "evrc",
@@ -2790,13 +2773,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
- .id = AV_CODEC_ID_4GV,
- .type = AVMEDIA_TYPE_AUDIO,
- .name = "4gv",
- .long_name = NULL_IF_CONFIG_SMALL("4GV (Fourth Generation Vocoder)"),
- .props = AV_CODEC_PROP_LOSSY,
- },
- {
.id = AV_CODEC_ID_DSD_LSBF,
.type = AVMEDIA_TYPE_AUDIO,
.name = "dsd_lsbf",
@@ -2825,6 +2801,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSY,
},
{
+ .id = AV_CODEC_ID_4GV,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "4gv",
+ .long_name = NULL_IF_CONFIG_SMALL("4GV (Fourth Generation Vocoder)"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
.id = AV_CODEC_ID_INTERPLAY_ACM,
.type = AVMEDIA_TYPE_AUDIO,
.name = "interplayacm",
@@ -2853,10 +2836,24 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSLESS,
},
{
- .id = AV_CODEC_ID_ADPCM_MTAF,
+ .id = AV_CODEC_ID_ATRAC3AL,
.type = AVMEDIA_TYPE_AUDIO,
- .name = "adpcm_mtaf",
- .long_name = NULL_IF_CONFIG_SMALL("ADPCM MTAF"),
+ .name = "atrac3al",
+ .long_name = NULL_IF_CONFIG_SMALL("ATRAC3 AL (Adaptive TRansform Acoustic Coding 3 Advanced Lossless)"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_ATRAC3PAL,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "atrac3pal",
+ .long_name = NULL_IF_CONFIG_SMALL("ATRAC3+ AL (Adaptive TRansform Acoustic Coding 3+ Advanced Lossless)"),
+ .props = AV_CODEC_PROP_LOSSLESS,
+ },
+ {
+ .id = AV_CODEC_ID_DOLBY_E,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "dolby_e",
+ .long_name = NULL_IF_CONFIG_SMALL("Dolby E"),
.props = AV_CODEC_PROP_LOSSY,
},
{
@@ -2866,6 +2863,20 @@ static const AVCodecDescriptor codec_descriptors[] = {
.long_name = NULL_IF_CONFIG_SMALL("aptX (Audio Processing Technology for Bluetooth)"),
.props = AV_CODEC_PROP_LOSSY,
},
+ {
+ .id = AV_CODEC_ID_APTX_HD,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "aptx_hd",
+ .long_name = NULL_IF_CONFIG_SMALL("aptX HD (Audio Processing Technology for Bluetooth)"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
+ {
+ .id = AV_CODEC_ID_SBC,
+ .type = AVMEDIA_TYPE_AUDIO,
+ .name = "sbc",
+ .long_name = NULL_IF_CONFIG_SMALL("SBC (low-complexity subband codec)"),
+ .props = AV_CODEC_PROP_LOSSY,
+ },
/* subtitle codecs */
{
@@ -2897,13 +2908,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_BITMAP_SUB,
},
{
- .id = AV_CODEC_ID_ASS,
- .type = AVMEDIA_TYPE_SUBTITLE,
- .name = "ass",
- .long_name = NULL_IF_CONFIG_SMALL("ASS (Advanced SSA) subtitle"),
- .props = AV_CODEC_PROP_TEXT_SUB,
- },
- {
.id = AV_CODEC_ID_SSA,
.type = AVMEDIA_TYPE_SUBTITLE,
.name = "ssa",
@@ -2938,13 +2942,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_TEXT_SUB,
},
{
- .id = AV_CODEC_ID_SUBRIP,
- .type = AVMEDIA_TYPE_SUBTITLE,
- .name = "subrip",
- .long_name = NULL_IF_CONFIG_SMALL("SubRip subtitle"),
- .props = AV_CODEC_PROP_TEXT_SUB,
- },
- {
.id = AV_CODEC_ID_MICRODVD,
.type = AVMEDIA_TYPE_SUBTITLE,
.name = "microdvd",
@@ -2952,13 +2949,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_TEXT_SUB,
},
{
- .id = AV_CODEC_ID_MPL2,
- .type = AVMEDIA_TYPE_SUBTITLE,
- .name = "mpl2",
- .long_name = NULL_IF_CONFIG_SMALL("MPL2 subtitle"),
- .props = AV_CODEC_PROP_TEXT_SUB,
- },
- {
.id = AV_CODEC_ID_EIA_608,
.type = AVMEDIA_TYPE_SUBTITLE,
.name = "eia_608",
@@ -2973,13 +2963,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_TEXT_SUB,
},
{
- .id = AV_CODEC_ID_PJS,
- .type = AVMEDIA_TYPE_SUBTITLE,
- .name = "pjs",
- .long_name = NULL_IF_CONFIG_SMALL("PJS (Phoenix Japanimation Society) subtitle"),
- .props = AV_CODEC_PROP_TEXT_SUB,
- },
- {
.id = AV_CODEC_ID_SAMI,
.type = AVMEDIA_TYPE_SUBTITLE,
.name = "sami",
@@ -3015,10 +2998,10 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_TEXT_SUB,
},
{
- .id = AV_CODEC_ID_VPLAYER,
+ .id = AV_CODEC_ID_SUBRIP,
.type = AVMEDIA_TYPE_SUBTITLE,
- .name = "vplayer",
- .long_name = NULL_IF_CONFIG_SMALL("VPlayer subtitle"),
+ .name = "subrip",
+ .long_name = NULL_IF_CONFIG_SMALL("SubRip subtitle"),
.props = AV_CODEC_PROP_TEXT_SUB,
},
{
@@ -3029,6 +3012,34 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_TEXT_SUB,
},
{
+ .id = AV_CODEC_ID_MPL2,
+ .type = AVMEDIA_TYPE_SUBTITLE,
+ .name = "mpl2",
+ .long_name = NULL_IF_CONFIG_SMALL("MPL2 subtitle"),
+ .props = AV_CODEC_PROP_TEXT_SUB,
+ },
+ {
+ .id = AV_CODEC_ID_VPLAYER,
+ .type = AVMEDIA_TYPE_SUBTITLE,
+ .name = "vplayer",
+ .long_name = NULL_IF_CONFIG_SMALL("VPlayer subtitle"),
+ .props = AV_CODEC_PROP_TEXT_SUB,
+ },
+ {
+ .id = AV_CODEC_ID_PJS,
+ .type = AVMEDIA_TYPE_SUBTITLE,
+ .name = "pjs",
+ .long_name = NULL_IF_CONFIG_SMALL("PJS (Phoenix Japanimation Society) subtitle"),
+ .props = AV_CODEC_PROP_TEXT_SUB,
+ },
+ {
+ .id = AV_CODEC_ID_ASS,
+ .type = AVMEDIA_TYPE_SUBTITLE,
+ .name = "ass",
+ .long_name = NULL_IF_CONFIG_SMALL("ASS (Advanced SSA) subtitle"),
+ .props = AV_CODEC_PROP_TEXT_SUB,
+ },
+ {
.id = AV_CODEC_ID_HDMV_TEXT_SUBTITLE,
.type = AVMEDIA_TYPE_SUBTITLE,
.name = "hdmv_text_subtitle",
@@ -3045,6 +3056,12 @@ static const AVCodecDescriptor codec_descriptors[] = {
.mime_types= MT("application/x-truetype-font", "application/x-font"),
},
{
+ .id = AV_CODEC_ID_SCTE_35,
+ .type = AVMEDIA_TYPE_DATA,
+ .name = "scte_35",
+ .long_name = NULL_IF_CONFIG_SMALL("SCTE 35 Message Queue"),
+ },
+ {
.id = AV_CODEC_ID_BINTEXT,
.type = AVMEDIA_TYPE_VIDEO,
.name = "bintext",
@@ -3098,23 +3115,26 @@ static const AVCodecDescriptor codec_descriptors[] = {
.mime_types= MT("application/octet-stream"),
},
{
- .id = AV_CODEC_ID_SCTE_35,
- .type = AVMEDIA_TYPE_DATA,
- .name = "scte_35",
- .long_name = NULL_IF_CONFIG_SMALL("SCTE 35 Message Queue"),
+ .id = AV_CODEC_ID_WRAPPED_AVFRAME,
+ .type = AVMEDIA_TYPE_VIDEO,
+ .name = "wrapped_avframe",
+ .long_name = NULL_IF_CONFIG_SMALL("AVFrame to AVPacket passthrough"),
+ .props = AV_CODEC_PROP_LOSSLESS,
},
-
- /* deprecated codec ids */
};
-const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id)
+static int descriptor_compare(const void *key, const void *member)
{
- int i;
+ enum AVCodecID id = *(const enum AVCodecID *) key;
+ const AVCodecDescriptor *desc = member;
- for (i = 0; i < FF_ARRAY_ELEMS(codec_descriptors); i++)
- if (codec_descriptors[i].id == id)
- return &codec_descriptors[i];
- return NULL;
+ return id - desc->id;
+}
+
+const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id)
+{
+ return bsearch(&id, codec_descriptors, FF_ARRAY_ELEMS(codec_descriptors),
+ sizeof(codec_descriptors[0]), descriptor_compare);
}
const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev)
diff --git a/chromium/third_party/ffmpeg/libavcodec/dca_core_bsf.c b/chromium/third_party/ffmpeg/libavcodec/dca_core_bsf.c
index 9edc0cfd618..8565796951e 100644
--- a/chromium/third_party/ffmpeg/libavcodec/dca_core_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/dca_core_bsf.c
@@ -24,18 +24,17 @@
#include "dca_syncwords.h"
#include "libavutil/mem.h"
-static int dca_core_filter(AVBSFContext *ctx, AVPacket *out)
+static int dca_core_filter(AVBSFContext *ctx, AVPacket *pkt)
{
- AVPacket *in;
GetByteContext gb;
uint32_t syncword;
int core_size = 0, ret;
- ret = ff_bsf_get_packet(ctx, &in);
+ ret = ff_bsf_get_packet_ref(ctx, pkt);
if (ret < 0)
return ret;
- bytestream2_init(&gb, in->data, in->size);
+ bytestream2_init(&gb, pkt->data, pkt->size);
syncword = bytestream2_get_be32(&gb);
bytestream2_skip(&gb, 1);
@@ -45,11 +44,8 @@ static int dca_core_filter(AVBSFContext *ctx, AVPacket *out)
break;
}
- av_packet_move_ref(out, in);
- av_packet_free(&in);
-
- if (core_size > 0 && core_size <= out->size) {
- out->size = core_size;
+ if (core_size > 0 && core_size <= pkt->size) {
+ pkt->size = core_size;
}
return 0;
diff --git a/chromium/third_party/ffmpeg/libavcodec/decode.c b/chromium/third_party/ffmpeg/libavcodec/decode.c
index f67b2147591..ea2168ad0cc 100644
--- a/chromium/third_party/ffmpeg/libavcodec/decode.c
+++ b/chromium/third_party/ffmpeg/libavcodec/decode.c
@@ -130,7 +130,7 @@ static int extract_packet_props(AVCodecInternal *avci, const AVPacket *pkt)
if (pkt) {
ret = av_packet_copy_props(avci->last_pkt_props, pkt);
if (!ret)
- avci->last_pkt_props->size = pkt->size; // HACK: Needed for ff_init_buffer_info().
+ avci->last_pkt_props->size = pkt->size; // HACK: Needed for ff_decode_frame_props().
}
return ret;
}
@@ -1186,10 +1186,6 @@ int ff_decode_get_hw_frames_ctx(AVCodecContext *avctx,
// We guarantee 4 base work surfaces. The function above guarantees 1
// (the absolute minimum), so add the missing count.
frames_ctx->initial_pool_size += 3;
-
- // Add an additional surface per thread is frame threading is enabled.
- if (avctx->active_thread_type & FF_THREAD_FRAME)
- frames_ctx->initial_pool_size += avctx->thread_count;
}
ret = av_hwframe_ctx_init(avctx->hw_frames_ctx);
@@ -1229,6 +1225,20 @@ int avcodec_get_hw_frames_parameters(AVCodecContext *avctx,
ret = hwa->frame_params(avctx, frames_ref);
if (ret >= 0) {
+ AVHWFramesContext *frames_ctx = (AVHWFramesContext*)frames_ref->data;
+
+ if (frames_ctx->initial_pool_size) {
+ // If the user has requested that extra output surfaces be
+ // available then add them here.
+ if (avctx->extra_hw_frames > 0)
+ frames_ctx->initial_pool_size += avctx->extra_hw_frames;
+
+ // If frame threading is enabled then an extra surface per thread
+ // is also required.
+ if (avctx->active_thread_type & FF_THREAD_FRAME)
+ frames_ctx->initial_pool_size += avctx->thread_count;
+ }
+
*out_frames_ref = frames_ref;
} else {
av_buffer_unref(&frames_ref);
@@ -1651,7 +1661,7 @@ static int add_metadata_from_side_data(const AVPacket *avpkt, AVFrame *frame)
return av_packet_unpack_dictionary(side_metadata, size, frame_md);
}
-int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame)
+int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
{
const AVPacket *pkt = avctx->internal->last_pkt_props;
int i;
@@ -1759,11 +1769,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
return 0;
}
-int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
-{
- return ff_init_buffer_info(avctx, frame);
-}
-
static void validate_avframe_allocation(AVCodecContext *avctx, AVFrame *frame)
{
if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) {
@@ -1906,8 +1911,6 @@ static int reget_buffer_internal(AVCodecContext *avctx, AVFrame *frame)
av_frame_unref(frame);
}
- ff_init_buffer_info(avctx, frame);
-
if (!frame->data[0])
return ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF);
diff --git a/chromium/third_party/ffmpeg/libavcodec/dirac_dwt.h b/chromium/third_party/ffmpeg/libavcodec/dirac_dwt.h
index 1af41e07025..68ebd195603 100644
--- a/chromium/third_party/ffmpeg/libavcodec/dirac_dwt.h
+++ b/chromium/third_party/ffmpeg/libavcodec/dirac_dwt.h
@@ -93,10 +93,10 @@ void ff_spatial_idwt_slice2(DWTContext *d, int y);
// shared stuff for simd optimizations
#define COMPOSE_53iL0(b0, b1, b2)\
- (b1 - ((int)(b0 + (unsigned)(b2) + 2) >> 2))
+ (b1 - (unsigned)((int)(b0 + (unsigned)(b2) + 2) >> 2))
#define COMPOSE_DIRAC53iH0(b0, b1, b2)\
- (b1 + ((int)(b0 + (unsigned)(b2) + 1) >> 1))
+ (b1 + (unsigned)((int)(b0 + (unsigned)(b2) + 1) >> 1))
#define COMPOSE_DD97iH0(b0, b1, b2, b3, b4)\
(int)(((unsigned)(b2) + ((int)(-b0 + 9U*b1 + 9U*b3 - b4 + 8) >> 4)))
diff --git a/chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c b/chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c
index e436c247a1f..8c25c1f8228 100644
--- a/chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c
+++ b/chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c
@@ -49,7 +49,7 @@ static void RENAME(vertical_compose53iL0)(uint8_t *_b0, uint8_t *_b1, uint8_t *_
TYPE *b1 = (TYPE *)_b1;
TYPE *b2 = (TYPE *)_b2;
for (i = 0; i < width; i++)
- b1[i] -= (int)(b0[i] + (unsigned)b2[i] + 2) >> 2;
+ b1[i] -= (unsigned)((int)(b0[i] + (unsigned)b2[i] + 2) >> 2);
}
static av_always_inline void RENAME(interleave)(TYPE *dst, TYPE *src0, TYPE *src1, int w2,
@@ -95,8 +95,8 @@ static void RENAME(horizontal_compose_dd97i)(uint8_t *_b, uint8_t *_tmp, int w)
tmp[w2+1] = tmp[w2] = tmp[w2-1];
for (x = 0; x < w2; x++) {
- b[2*x ] = (tmp[x] + 1)>>1;
- b[2*x+1] = (COMPOSE_DD97iH0(tmp[x-1], tmp[x], b[x+w2], tmp[x+1], tmp[x+2]) + 1)>>1;
+ b[2*x ] = ((int)(tmp[x] + 1U))>>1;
+ b[2*x+1] = ((int)(COMPOSE_DD97iH0(tmp[x-1], tmp[x], b[x+w2], tmp[x+1], tmp[x+2]) + 1U))>>1;
}
}
@@ -118,8 +118,8 @@ static void RENAME(horizontal_compose_dd137i)(uint8_t *_b, uint8_t *_tmp, int w)
tmp[w2+1] = tmp[w2] = tmp[w2-1];
for (x = 0; x < w2; x++) {
- b[2*x ] = (tmp[x] + 1)>>1;
- b[2*x+1] = (COMPOSE_DD97iH0(tmp[x-1], tmp[x], b[x+w2], tmp[x+1], tmp[x+2]) + 1)>>1;
+ b[2*x ] = ((int)(tmp[x] + 1U))>>1;
+ b[2*x+1] = ((int)(COMPOSE_DD97iH0(tmp[x-1], tmp[x], b[x+w2], tmp[x+1], tmp[x+2]) + 1U))>>1;
}
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/diracdec.c b/chromium/third_party/ffmpeg/libavcodec/diracdec.c
index 530e1c6ffd2..753adeff61c 100644
--- a/chromium/third_party/ffmpeg/libavcodec/diracdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/diracdec.c
@@ -1399,8 +1399,8 @@ static void global_mv(DiracContext *s, DiracBlock *block, int x, int y, int ref)
int *c = s->globalmc[ref].perspective;
int m = (1<<ep) - (c[0]*x + c[1]*y);
- int mx = m * ((A[0][0] * x + A[0][1]*y) + (1<<ez) * b[0]);
- int my = m * ((A[1][0] * x + A[1][1]*y) + (1<<ez) * b[1]);
+ int64_t mx = m * (int64_t)((A[0][0] * x + A[0][1]*y) + (1<<ez) * b[0]);
+ int64_t my = m * (int64_t)((A[1][0] * x + A[1][1]*y) + (1<<ez) * b[1]);
block->u.mv[ref][0] = (mx + (1<<(ez+ep))) >> (ez+ep);
block->u.mv[ref][1] = (my + (1<<(ez+ep))) >> (ez+ep);
@@ -1437,8 +1437,8 @@ static void decode_block_params(DiracContext *s, DiracArith arith[8], DiracBlock
global_mv(s, block, x, y, i);
} else {
pred_mv(block, stride, x, y, i);
- block->u.mv[i][0] += dirac_get_arith_int(arith + 4 + 2 * i, CTX_MV_F1, CTX_MV_DATA);
- block->u.mv[i][1] += dirac_get_arith_int(arith + 5 + 2 * i, CTX_MV_F1, CTX_MV_DATA);
+ block->u.mv[i][0] += (unsigned)dirac_get_arith_int(arith + 4 + 2 * i, CTX_MV_F1, CTX_MV_DATA);
+ block->u.mv[i][1] += (unsigned)dirac_get_arith_int(arith + 5 + 2 * i, CTX_MV_F1, CTX_MV_DATA);
}
}
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/dxtory.c b/chromium/third_party/ffmpeg/libavcodec/dxtory.c
index 6f8652ad499..285ca38efb8 100644
--- a/chromium/third_party/ffmpeg/libavcodec/dxtory.c
+++ b/chromium/third_party/ffmpeg/libavcodec/dxtory.c
@@ -305,11 +305,7 @@ static int dxtory_decode_v2(AVCodecContext *avctx, AVFrame *pic,
}
if (avctx->height - line) {
- av_log(avctx, AV_LOG_VERBOSE,
- "Not enough slice data available, "
- "cropping the frame by %d pixels\n",
- avctx->height - line);
- avctx->height = line;
+ avpriv_request_sample(avctx, "Not enough slice data available");
}
return 0;
@@ -326,7 +322,7 @@ static int dx2_decode_slice_5x5(GetBitContext *gb, AVFrame *frame,
int stride = frame->linesize[0];
uint8_t *dst = frame->data[0] + stride * line;
- for (y = 0; y < left && get_bits_left(gb) > 16; y++) {
+ for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) {
for (x = 0; x < width; x++) {
b = decode_sym_565(gb, lru[0], 5);
g = decode_sym_565(gb, lru[1], is_565 ? 6 : 5);
@@ -392,7 +388,7 @@ static int dx2_decode_slice_rgb(GetBitContext *gb, AVFrame *frame,
int stride = frame->linesize[0];
uint8_t *dst = frame->data[0] + stride * line;
- for (y = 0; y < left && get_bits_left(gb) > 16; y++) {
+ for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) {
for (x = 0; x < width; x++) {
dst[x * 3 + 0] = decode_sym(gb, lru[0]);
dst[x * 3 + 1] = decode_sym(gb, lru[1]);
@@ -437,7 +433,7 @@ static int dx2_decode_slice_410(GetBitContext *gb, AVFrame *frame,
uint8_t *U = frame->data[1] + (ustride >> 2) * line;
uint8_t *V = frame->data[2] + (vstride >> 2) * line;
- for (y = 0; y < left - 3 && get_bits_left(gb) > 16; y += 4) {
+ for (y = 0; y < left - 3 && get_bits_left(gb) > 9 * width; y += 4) {
for (x = 0; x < width; x += 4) {
for (j = 0; j < 4; j++)
for (i = 0; i < 4; i++)
@@ -481,7 +477,7 @@ static int dx2_decode_slice_420(GetBitContext *gb, AVFrame *frame,
uint8_t *V = frame->data[2] + (vstride >> 1) * line;
- for (y = 0; y < left - 1 && get_bits_left(gb) > 16; y += 2) {
+ for (y = 0; y < left - 1 && get_bits_left(gb) > 6 * width; y += 2) {
for (x = 0; x < width; x += 2) {
Y[x + 0 + 0 * ystride] = decode_sym(gb, lru[0]);
Y[x + 1 + 0 * ystride] = decode_sym(gb, lru[0]);
@@ -524,7 +520,7 @@ static int dx2_decode_slice_444(GetBitContext *gb, AVFrame *frame,
uint8_t *U = frame->data[1] + ustride * line;
uint8_t *V = frame->data[2] + vstride * line;
- for (y = 0; y < left && get_bits_left(gb) > 16; y++) {
+ for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) {
for (x = 0; x < width; x++) {
Y[x] = decode_sym(gb, lru[0]);
U[x] = decode_sym(gb, lru[1]) ^ 0x80;
diff --git a/chromium/third_party/ffmpeg/libavcodec/dxva2.c b/chromium/third_party/ffmpeg/libavcodec/dxva2.c
index 6f294703fbb..6d831599afd 100644
--- a/chromium/third_party/ffmpeg/libavcodec/dxva2.c
+++ b/chromium/third_party/ffmpeg/libavcodec/dxva2.c
@@ -614,10 +614,6 @@ int ff_dxva2_common_frame_params(AVCodecContext *avctx,
else
num_surfaces += 2;
- /* add extra surfaces for frame threading */
- if (avctx->active_thread_type & FF_THREAD_FRAME)
- num_surfaces += avctx->thread_count;
-
frames_ctx->sw_format = avctx->sw_pix_fmt == AV_PIX_FMT_YUV420P10 ?
AV_PIX_FMT_P010 : AV_PIX_FMT_NV12;
frames_ctx->width = FFALIGN(avctx->coded_width, surface_alignment);
diff --git a/chromium/third_party/ffmpeg/libavcodec/exr.c b/chromium/third_party/ffmpeg/libavcodec/exr.c
index 454dc74cfb1..5253cc3f136 100644
--- a/chromium/third_party/ffmpeg/libavcodec/exr.c
+++ b/chromium/third_party/ffmpeg/libavcodec/exr.c
@@ -558,7 +558,7 @@ static int huf_decode(const uint64_t *hcode, const HufDec *hdecod,
while (lc > 0) {
const HufDec pl = hdecod[(c << (HUF_DECBITS - lc)) & HUF_DECMASK];
- if (pl.len) {
+ if (pl.len && lc >= pl.len) {
lc -= pl.len;
get_code(pl.lit, rlc, c, lc, gb, out, oe, outb);
} else {
@@ -899,7 +899,7 @@ static int pxr24_uncompress(EXRContext *s, const uint8_t *src,
static void unpack_14(const uint8_t b[14], uint16_t s[16])
{
- unsigned short shift = (b[ 2] >> 2);
+ unsigned short shift = (b[ 2] >> 2) & 15;
unsigned short bias = (0x20 << shift);
int i;
@@ -1306,6 +1306,7 @@ static int decode_header(EXRContext *s, AVFrame *frame)
AVDictionary *metadata = NULL;
int magic_number, version, i, flags, sar = 0;
int layer_match = 0;
+ int ret;
s->current_channel_offset = 0;
s->xmin = ~0;
@@ -1349,12 +1350,14 @@ static int decode_header(EXRContext *s, AVFrame *frame)
flags = bytestream2_get_le24(&s->gb);
- if (flags == 0x00)
- s->is_tile = 0;
- else if (flags & 0x02)
+ if (flags & 0x02)
s->is_tile = 1;
- else{
- avpriv_report_missing_feature(s->avctx, "flags %d", flags);
+ if (flags & 0x08) {
+ avpriv_report_missing_feature(s->avctx, "deep data");
+ return AVERROR_PATCHWELCOME;
+ }
+ if (flags & 0x10) {
+ avpriv_report_missing_feature(s->avctx, "multipart");
return AVERROR_PATCHWELCOME;
}
@@ -1364,8 +1367,10 @@ static int decode_header(EXRContext *s, AVFrame *frame)
if ((var_size = check_header_variable(s, "channels",
"chlist", 38)) >= 0) {
GetByteContext ch_gb;
- if (!var_size)
- return AVERROR_INVALIDDATA;
+ if (!var_size) {
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
+ }
bytestream2_init(&ch_gb, s->gb.buffer, var_size);
@@ -1424,14 +1429,16 @@ static int decode_header(EXRContext *s, AVFrame *frame)
if (bytestream2_get_bytes_left(&ch_gb) < 4) {
av_log(s->avctx, AV_LOG_ERROR, "Incomplete header.\n");
- return AVERROR_INVALIDDATA;
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
}
current_pixel_type = bytestream2_get_le32(&ch_gb);
if (current_pixel_type >= EXR_UNKNOWN) {
avpriv_report_missing_feature(s->avctx, "Pixel type %d",
current_pixel_type);
- return AVERROR_PATCHWELCOME;
+ ret = AVERROR_PATCHWELCOME;
+ goto fail;
}
bytestream2_skip(&ch_gb, 4);
@@ -1442,7 +1449,8 @@ static int decode_header(EXRContext *s, AVFrame *frame)
avpriv_report_missing_feature(s->avctx,
"Subsampling %dx%d",
xsub, ysub);
- return AVERROR_PATCHWELCOME;
+ ret = AVERROR_PATCHWELCOME;
+ goto fail;
}
if (channel_index >= 0 && s->channel_offsets[channel_index] == -1) { /* channel has not been previously assigned */
@@ -1450,7 +1458,8 @@ static int decode_header(EXRContext *s, AVFrame *frame)
s->pixel_type != current_pixel_type) {
av_log(s->avctx, AV_LOG_ERROR,
"RGB channels not of the same depth.\n");
- return AVERROR_INVALIDDATA;
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
}
s->pixel_type = current_pixel_type;
s->channel_offsets[channel_index] = s->current_channel_offset;
@@ -1458,8 +1467,10 @@ static int decode_header(EXRContext *s, AVFrame *frame)
s->channels = av_realloc(s->channels,
++s->nb_channels * sizeof(EXRChannel));
- if (!s->channels)
- return AVERROR(ENOMEM);
+ if (!s->channels) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
channel = &s->channels[s->nb_channels - 1];
channel->pixel_type = current_pixel_type;
channel->xsub = xsub;
@@ -1484,7 +1495,8 @@ static int decode_header(EXRContext *s, AVFrame *frame)
av_log(s->avctx, AV_LOG_ERROR, "Missing green channel.\n");
if (s->channel_offsets[2] < 0)
av_log(s->avctx, AV_LOG_ERROR, "Missing blue channel.\n");
- return AVERROR_INVALIDDATA;
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
}
}
@@ -1493,8 +1505,10 @@ static int decode_header(EXRContext *s, AVFrame *frame)
continue;
} else if ((var_size = check_header_variable(s, "dataWindow", "box2i",
31)) >= 0) {
- if (!var_size)
- return AVERROR_INVALIDDATA;
+ if (!var_size) {
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
+ }
s->xmin = bytestream2_get_le32(&s->gb);
s->ymin = bytestream2_get_le32(&s->gb);
@@ -1506,8 +1520,10 @@ static int decode_header(EXRContext *s, AVFrame *frame)
continue;
} else if ((var_size = check_header_variable(s, "displayWindow",
"box2i", 34)) >= 0) {
- if (!var_size)
- return AVERROR_INVALIDDATA;
+ if (!var_size) {
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
+ }
bytestream2_skip(&s->gb, 8);
s->w = bytestream2_get_le32(&s->gb) + 1;
@@ -1517,29 +1533,36 @@ static int decode_header(EXRContext *s, AVFrame *frame)
} else if ((var_size = check_header_variable(s, "lineOrder",
"lineOrder", 25)) >= 0) {
int line_order;
- if (!var_size)
- return AVERROR_INVALIDDATA;
+ if (!var_size) {
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
+ }
line_order = bytestream2_get_byte(&s->gb);
av_log(s->avctx, AV_LOG_DEBUG, "line order: %d.\n", line_order);
if (line_order > 2) {
av_log(s->avctx, AV_LOG_ERROR, "Unknown line order.\n");
- return AVERROR_INVALIDDATA;
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
}
continue;
} else if ((var_size = check_header_variable(s, "pixelAspectRatio",
"float", 31)) >= 0) {
- if (!var_size)
- return AVERROR_INVALIDDATA;
+ if (!var_size) {
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
+ }
sar = bytestream2_get_le32(&s->gb);
continue;
} else if ((var_size = check_header_variable(s, "compression",
"compression", 29)) >= 0) {
- if (!var_size)
- return AVERROR_INVALIDDATA;
+ if (!var_size) {
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
+ }
if (s->compression == EXR_UNKN)
s->compression = bytestream2_get_byte(&s->gb);
@@ -1566,13 +1589,15 @@ static int decode_header(EXRContext *s, AVFrame *frame)
if (s->tile_attr.level_mode >= EXR_TILE_LEVEL_UNKNOWN){
avpriv_report_missing_feature(s->avctx, "Tile level mode %d",
s->tile_attr.level_mode);
- return AVERROR_PATCHWELCOME;
+ ret = AVERROR_PATCHWELCOME;
+ goto fail;
}
if (s->tile_attr.level_round >= EXR_TILE_ROUND_UNKNOWN) {
avpriv_report_missing_feature(s->avctx, "Tile level round %d",
s->tile_attr.level_round);
- return AVERROR_PATCHWELCOME;
+ ret = AVERROR_PATCHWELCOME;
+ goto fail;
}
continue;
@@ -1589,7 +1614,8 @@ static int decode_header(EXRContext *s, AVFrame *frame)
// Check if there are enough bytes for a header
if (bytestream2_get_bytes_left(&s->gb) <= 9) {
av_log(s->avctx, AV_LOG_ERROR, "Incomplete header\n");
- return AVERROR_INVALIDDATA;
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
}
// Process unknown variables
@@ -1604,19 +1630,22 @@ static int decode_header(EXRContext *s, AVFrame *frame)
if (s->compression == EXR_UNKN) {
av_log(s->avctx, AV_LOG_ERROR, "Missing compression attribute.\n");
- return AVERROR_INVALIDDATA;
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
}
if (s->is_tile) {
if (s->tile_attr.xSize < 1 || s->tile_attr.ySize < 1) {
av_log(s->avctx, AV_LOG_ERROR, "Invalid tile attribute.\n");
- return AVERROR_INVALIDDATA;
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
}
}
if (bytestream2_get_bytes_left(&s->gb) <= 0) {
av_log(s->avctx, AV_LOG_ERROR, "Incomplete frame.\n");
- return AVERROR_INVALIDDATA;
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
}
frame->metadata = metadata;
@@ -1624,6 +1653,9 @@ static int decode_header(EXRContext *s, AVFrame *frame)
// aaand we are done
bytestream2_skip(&s->gb, 1);
return 0;
+fail:
+ av_dict_free(&metadata);
+ return ret;
}
static int decode_frame(AVCodecContext *avctx, void *data,
diff --git a/chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c b/chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c
index d40907a675c..1c386becd7e 100644
--- a/chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c
@@ -62,7 +62,7 @@ static int extract_extradata_h2645(AVBSFContext *ctx, AVPacket *pkt,
ExtractExtradataContext *s = ctx->priv_data;
H2645Packet h2645_pkt = { 0 };
- int extradata_size = 0;
+ int extradata_size = 0, filtered_size = 0;
const int *extradata_nal_types;
int nb_extradata_nal_types;
int i, has_sps = 0, has_vps = 0, ret = 0;
@@ -90,6 +90,8 @@ static int extract_extradata_h2645(AVBSFContext *ctx, AVPacket *pkt,
} else {
if (nal->type == H264_NAL_SPS) has_sps = 1;
}
+ } else if (s->remove) {
+ filtered_size += nal->raw_size + 3;
}
}
@@ -100,11 +102,13 @@ static int extract_extradata_h2645(AVBSFContext *ctx, AVPacket *pkt,
uint8_t *extradata, *filtered_data;
if (s->remove) {
- filtered_buf = av_buffer_alloc(pkt->size + AV_INPUT_BUFFER_PADDING_SIZE);
+ filtered_buf = av_buffer_alloc(filtered_size + AV_INPUT_BUFFER_PADDING_SIZE);
if (!filtered_buf) {
ret = AVERROR(ENOMEM);
goto fail;
}
+ memset(filtered_buf->data + filtered_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+
filtered_data = filtered_buf->data;
}
@@ -114,6 +118,7 @@ static int extract_extradata_h2645(AVBSFContext *ctx, AVPacket *pkt,
ret = AVERROR(ENOMEM);
goto fail;
}
+ memset(extradata + extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
*data = extradata;
*size = extradata_size;
@@ -136,7 +141,7 @@ static int extract_extradata_h2645(AVBSFContext *ctx, AVPacket *pkt,
av_buffer_unref(&pkt->buf);
pkt->buf = filtered_buf;
pkt->data = filtered_buf->data;
- pkt->size = filtered_data - filtered_buf->data;
+ pkt->size = filtered_size;
}
}
@@ -169,6 +174,7 @@ static int extract_extradata_vc1(AVBSFContext *ctx, AVPacket *pkt,
return AVERROR(ENOMEM);
memcpy(*data, pkt->data, extradata_size);
+ memset(*data + extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
*size = extradata_size;
if (s->remove) {
@@ -199,6 +205,7 @@ static int extract_extradata_mpeg12(AVBSFContext *ctx, AVPacket *pkt,
return AVERROR(ENOMEM);
memcpy(*data, pkt->data, *size);
+ memset(*data + *size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
if (s->remove) {
pkt->data += *size;
@@ -228,6 +235,7 @@ static int extract_extradata_mpeg4(AVBSFContext *ctx, AVPacket *pkt,
return AVERROR(ENOMEM);
memcpy(*data, pkt->data, *size);
+ memset(*data + *size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
if (s->remove) {
pkt->data += *size;
@@ -271,24 +279,23 @@ static int extract_extradata_init(AVBSFContext *ctx)
return 0;
}
-static int extract_extradata_filter(AVBSFContext *ctx, AVPacket *out)
+static int extract_extradata_filter(AVBSFContext *ctx, AVPacket *pkt)
{
ExtractExtradataContext *s = ctx->priv_data;
- AVPacket *in;
uint8_t *extradata = NULL;
int extradata_size;
int ret = 0;
- ret = ff_bsf_get_packet(ctx, &in);
+ ret = ff_bsf_get_packet_ref(ctx, pkt);
if (ret < 0)
return ret;
- ret = s->extract(ctx, in, &extradata, &extradata_size);
+ ret = s->extract(ctx, pkt, &extradata, &extradata_size);
if (ret < 0)
goto fail;
if (extradata) {
- ret = av_packet_add_side_data(in, AV_PKT_DATA_NEW_EXTRADATA,
+ ret = av_packet_add_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA,
extradata, extradata_size);
if (ret < 0) {
av_freep(&extradata);
@@ -296,10 +303,10 @@ static int extract_extradata_filter(AVBSFContext *ctx, AVPacket *out)
}
}
- av_packet_move_ref(out, in);
+ return 0;
fail:
- av_packet_free(&in);
+ av_packet_unref(pkt);
return ret;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/ffv1dec.c b/chromium/third_party/ffmpeg/libavcodec/ffv1dec.c
index 5eadb6b1586..b4a183c5b7a 100644
--- a/chromium/third_party/ffmpeg/libavcodec/ffv1dec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/ffv1dec.c
@@ -336,14 +336,16 @@ static int decode_slice(AVCodecContext *c, void *arg)
decode_plane(fs, p->data[0] + ps*x + y*p->linesize[0] , width, height, p->linesize[0], 0, 2);
decode_plane(fs, p->data[0] + ps*x + y*p->linesize[0] + 1, width, height, p->linesize[0], 1, 2);
} else if (f->use32bit) {
- uint8_t *planes[3] = { p->data[0] + ps * x + y * p->linesize[0],
+ uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0],
p->data[1] + ps * x + y * p->linesize[1],
- p->data[2] + ps * x + y * p->linesize[2] };
+ p->data[2] + ps * x + y * p->linesize[2],
+ p->data[3] + ps * x + y * p->linesize[3] };
decode_rgb_frame32(fs, planes, width, height, p->linesize);
} else {
- uint8_t *planes[3] = { p->data[0] + ps * x + y * p->linesize[0],
+ uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0],
p->data[1] + ps * x + y * p->linesize[1],
- p->data[2] + ps * x + y * p->linesize[2] };
+ p->data[2] + ps * x + y * p->linesize[2],
+ p->data[3] + ps * x + y * p->linesize[3] };
decode_rgb_frame(fs, planes, width, height, p->linesize);
}
if (fs->ac != AC_GOLOMB_RICE && f->version > 2) {
@@ -589,7 +591,10 @@ static int read_header(FFV1Context *f)
if (!f->transparency && !f->chroma_planes) {
if (f->avctx->bits_per_raw_sample <= 8)
f->avctx->pix_fmt = AV_PIX_FMT_GRAY8;
- else if (f->avctx->bits_per_raw_sample == 10) {
+ else if (f->avctx->bits_per_raw_sample == 9) {
+ f->packed_at_lsb = 1;
+ f->avctx->pix_fmt = AV_PIX_FMT_GRAY9;
+ } else if (f->avctx->bits_per_raw_sample == 10) {
f->packed_at_lsb = 1;
f->avctx->pix_fmt = AV_PIX_FMT_GRAY10;
} else if (f->avctx->bits_per_raw_sample == 12) {
@@ -640,6 +645,7 @@ static int read_header(FFV1Context *f)
f->packed_at_lsb = 1;
switch(16 * f->chroma_h_shift + f->chroma_v_shift) {
case 0x00: f->avctx->pix_fmt = AV_PIX_FMT_YUV444P10; break;
+ case 0x01: f->avctx->pix_fmt = AV_PIX_FMT_YUV440P10; break;
case 0x10: f->avctx->pix_fmt = AV_PIX_FMT_YUV422P10; break;
case 0x11: f->avctx->pix_fmt = AV_PIX_FMT_YUV420P10; break;
}
@@ -654,9 +660,17 @@ static int read_header(FFV1Context *f)
f->packed_at_lsb = 1;
switch(16 * f->chroma_h_shift + f->chroma_v_shift) {
case 0x00: f->avctx->pix_fmt = AV_PIX_FMT_YUV444P12; break;
+ case 0x01: f->avctx->pix_fmt = AV_PIX_FMT_YUV440P12; break;
case 0x10: f->avctx->pix_fmt = AV_PIX_FMT_YUV422P12; break;
case 0x11: f->avctx->pix_fmt = AV_PIX_FMT_YUV420P12; break;
}
+ } else if (f->avctx->bits_per_raw_sample == 14 && !f->transparency) {
+ f->packed_at_lsb = 1;
+ switch(16 * f->chroma_h_shift + f->chroma_v_shift) {
+ case 0x00: f->avctx->pix_fmt = AV_PIX_FMT_YUV444P14; break;
+ case 0x10: f->avctx->pix_fmt = AV_PIX_FMT_YUV422P14; break;
+ case 0x11: f->avctx->pix_fmt = AV_PIX_FMT_YUV420P14; break;
+ }
} else if (f->avctx->bits_per_raw_sample == 16 && !f->transparency){
f->packed_at_lsb = 1;
switch(16 * f->chroma_h_shift + f->chroma_v_shift) {
@@ -686,14 +700,22 @@ static int read_header(FFV1Context *f)
f->avctx->pix_fmt = AV_PIX_FMT_GBRP9;
else if (f->avctx->bits_per_raw_sample == 10 && !f->transparency)
f->avctx->pix_fmt = AV_PIX_FMT_GBRP10;
+ else if (f->avctx->bits_per_raw_sample == 10 && f->transparency)
+ f->avctx->pix_fmt = AV_PIX_FMT_GBRAP10;
else if (f->avctx->bits_per_raw_sample == 12 && !f->transparency)
f->avctx->pix_fmt = AV_PIX_FMT_GBRP12;
+ else if (f->avctx->bits_per_raw_sample == 12 && f->transparency)
+ f->avctx->pix_fmt = AV_PIX_FMT_GBRAP12;
else if (f->avctx->bits_per_raw_sample == 14 && !f->transparency)
f->avctx->pix_fmt = AV_PIX_FMT_GBRP14;
else if (f->avctx->bits_per_raw_sample == 16 && !f->transparency) {
f->avctx->pix_fmt = AV_PIX_FMT_GBRP16;
f->use32bit = 1;
}
+ else if (f->avctx->bits_per_raw_sample == 16 && f->transparency) {
+ f->avctx->pix_fmt = AV_PIX_FMT_GBRAP16;
+ f->use32bit = 1;
+ }
} else {
av_log(f->avctx, AV_LOG_ERROR, "colorspace not supported\n");
return AVERROR(ENOSYS);
diff --git a/chromium/third_party/ffmpeg/libavcodec/ffv1dec_template.c b/chromium/third_party/ffmpeg/libavcodec/ffv1dec_template.c
index 37df7667737..f8a42a6d44c 100644
--- a/chromium/third_party/ffmpeg/libavcodec/ffv1dec_template.c
+++ b/chromium/third_party/ffmpeg/libavcodec/ffv1dec_template.c
@@ -107,13 +107,14 @@ static av_always_inline int RENAME(decode_line)(FFV1Context *s, int w,
return 0;
}
-static void RENAME(decode_rgb_frame)(FFV1Context *s, uint8_t *src[3], int w, int h, int stride[3])
+static void RENAME(decode_rgb_frame)(FFV1Context *s, uint8_t *src[4], int w, int h, int stride[4])
{
int x, y, p;
TYPE *sample[4][2];
int lbd = s->avctx->bits_per_raw_sample <= 8;
int bits = s->avctx->bits_per_raw_sample > 0 ? s->avctx->bits_per_raw_sample : 8;
int offset = 1 << bits;
+ int transparency = s->transparency;
for (x = 0; x < 4; x++) {
sample[x][0] = RENAME(s->sample_buffer) + x * 2 * (w + 6) + 3;
@@ -125,7 +126,7 @@ static void RENAME(decode_rgb_frame)(FFV1Context *s, uint8_t *src[3], int w, int
memset(RENAME(s->sample_buffer), 0, 8 * (w + 6) * sizeof(*RENAME(s->sample_buffer)));
for (y = 0; y < h; y++) {
- for (p = 0; p < 3 + s->transparency; p++) {
+ for (p = 0; p < 3 + transparency; p++) {
TYPE *temp = sample[p][0]; // FIXME: try a normal buffer
sample[p][0] = sample[p][1];
@@ -154,10 +155,12 @@ static void RENAME(decode_rgb_frame)(FFV1Context *s, uint8_t *src[3], int w, int
if (lbd)
*((uint32_t*)(src[0] + x*4 + stride[0]*y)) = b + ((unsigned)g<<8) + ((unsigned)r<<16) + ((unsigned)a<<24);
- else if (sizeof(TYPE) == 4) {
+ else if (sizeof(TYPE) == 4 || transparency) {
*((uint16_t*)(src[0] + x*2 + stride[0]*y)) = g;
*((uint16_t*)(src[1] + x*2 + stride[1]*y)) = b;
*((uint16_t*)(src[2] + x*2 + stride[2]*y)) = r;
+ if (transparency)
+ *((uint16_t*)(src[3] + x*2 + stride[3]*y)) = a;
} else {
*((uint16_t*)(src[0] + x*2 + stride[0]*y)) = b;
*((uint16_t*)(src[1] + x*2 + stride[1]*y)) = g;
diff --git a/chromium/third_party/ffmpeg/libavcodec/ffv1enc.c b/chromium/third_party/ffmpeg/libavcodec/ffv1enc.c
index c0c1558ffe6..dd4d7429f54 100644
--- a/chromium/third_party/ffmpeg/libavcodec/ffv1enc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/ffv1enc.c
@@ -558,6 +558,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
s->plane_count = 3;
switch(avctx->pix_fmt) {
+ case AV_PIX_FMT_GRAY9:
case AV_PIX_FMT_YUV444P9:
case AV_PIX_FMT_YUV422P9:
case AV_PIX_FMT_YUV420P9:
@@ -568,6 +569,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
s->bits_per_raw_sample = 9;
case AV_PIX_FMT_GRAY10:
case AV_PIX_FMT_YUV444P10:
+ case AV_PIX_FMT_YUV440P10:
case AV_PIX_FMT_YUV420P10:
case AV_PIX_FMT_YUV422P10:
case AV_PIX_FMT_YUVA444P10:
@@ -577,11 +579,17 @@ FF_ENABLE_DEPRECATION_WARNINGS
s->bits_per_raw_sample = 10;
case AV_PIX_FMT_GRAY12:
case AV_PIX_FMT_YUV444P12:
+ case AV_PIX_FMT_YUV440P12:
case AV_PIX_FMT_YUV420P12:
case AV_PIX_FMT_YUV422P12:
- s->packed_at_lsb = 1;
if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample)
s->bits_per_raw_sample = 12;
+ case AV_PIX_FMT_YUV444P14:
+ case AV_PIX_FMT_YUV420P14:
+ case AV_PIX_FMT_YUV422P14:
+ if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample)
+ s->bits_per_raw_sample = 14;
+ s->packed_at_lsb = 1;
case AV_PIX_FMT_GRAY16:
case AV_PIX_FMT_YUV444P16:
case AV_PIX_FMT_YUV422P16:
@@ -624,6 +632,14 @@ FF_ENABLE_DEPRECATION_WARNINGS
s->chroma_planes = 1;
s->bits_per_raw_sample = 8;
break;
+ case AV_PIX_FMT_RGBA64:
+ s->colorspace = 1;
+ s->transparency = 1;
+ s->chroma_planes = 1;
+ s->bits_per_raw_sample = 16;
+ s->use32bit = 1;
+ s->version = FFMAX(s->version, 1);
+ break;
case AV_PIX_FMT_RGB48:
s->colorspace = 1;
s->chroma_planes = 1;
@@ -640,27 +656,27 @@ FF_ENABLE_DEPRECATION_WARNINGS
if (!avctx->bits_per_raw_sample)
s->bits_per_raw_sample = 9;
case AV_PIX_FMT_GBRP10:
+ case AV_PIX_FMT_GBRAP10:
if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample)
s->bits_per_raw_sample = 10;
case AV_PIX_FMT_GBRP12:
+ case AV_PIX_FMT_GBRAP12:
if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample)
s->bits_per_raw_sample = 12;
case AV_PIX_FMT_GBRP14:
if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample)
s->bits_per_raw_sample = 14;
case AV_PIX_FMT_GBRP16:
+ case AV_PIX_FMT_GBRAP16:
if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample)
s->bits_per_raw_sample = 16;
else if (!s->bits_per_raw_sample)
s->bits_per_raw_sample = avctx->bits_per_raw_sample;
+ s->transparency = desc->nb_components == 4 || desc->nb_components == 2;
s->colorspace = 1;
s->chroma_planes = 1;
if (s->bits_per_raw_sample >= 16) {
s->use32bit = 1;
- if (avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
- av_log(avctx, AV_LOG_ERROR, "16bit RGB is experimental and under development, only use it for experiments\n");
- return AVERROR_INVALIDDATA;
- }
}
s->version = FFMAX(s->version, 1);
break;
@@ -677,9 +693,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
s->ac = AC_RANGE_CUSTOM_TAB;
}
}
- if (s->transparency) {
- av_log(avctx, AV_LOG_WARNING, "Storing alpha plane, this will require a recent FFV1 decoder to playback!\n");
- }
#if FF_API_PRIVATE_OPT
FF_DISABLE_DEPRECATION_WARNINGS
if (avctx->context_model)
@@ -1028,9 +1041,10 @@ static int encode_slice(AVCodecContext *c, void *arg)
const int ps = av_pix_fmt_desc_get(c->pix_fmt)->comp[0].step;
int ret;
RangeCoder c_bak = fs->c;
- const uint8_t *planes[3] = {p->data[0] + ps*x + y*p->linesize[0],
+ const uint8_t *planes[4] = {p->data[0] + ps*x + y*p->linesize[0],
p->data[1] ? p->data[1] + ps*x + y*p->linesize[1] : NULL,
- p->data[2] ? p->data[2] + ps*x + y*p->linesize[2] : NULL};
+ p->data[2] ? p->data[2] + ps*x + y*p->linesize[2] : NULL,
+ p->data[3] ? p->data[3] + ps*x + y*p->linesize[3] : NULL};
fs->slice_coding_mode = 0;
if (f->version > 3) {
@@ -1319,9 +1333,14 @@ AVCodec ff_ffv1_encoder = {
AV_PIX_FMT_YUVA444P9, AV_PIX_FMT_YUVA422P9, AV_PIX_FMT_YUVA420P9,
AV_PIX_FMT_GRAY16, AV_PIX_FMT_GRAY8, AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP10,
AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14,
+ AV_PIX_FMT_GBRAP10, AV_PIX_FMT_GBRAP12,
AV_PIX_FMT_YA8,
AV_PIX_FMT_GRAY10, AV_PIX_FMT_GRAY12,
AV_PIX_FMT_GBRP16, AV_PIX_FMT_RGB48,
+ AV_PIX_FMT_GBRAP16, AV_PIX_FMT_RGBA64,
+ AV_PIX_FMT_GRAY9,
+ AV_PIX_FMT_YUV420P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV444P14,
+ AV_PIX_FMT_YUV440P10, AV_PIX_FMT_YUV440P12,
AV_PIX_FMT_NONE
},
diff --git a/chromium/third_party/ffmpeg/libavcodec/ffv1enc_template.c b/chromium/third_party/ffmpeg/libavcodec/ffv1enc_template.c
index b7eea0dd700..bc0add5ed7c 100644
--- a/chromium/third_party/ffmpeg/libavcodec/ffv1enc_template.c
+++ b/chromium/third_party/ffmpeg/libavcodec/ffv1enc_template.c
@@ -122,8 +122,8 @@ static av_always_inline int RENAME(encode_line)(FFV1Context *s, int w,
return 0;
}
-static int RENAME(encode_rgb_frame)(FFV1Context *s, const uint8_t *src[3],
- int w, int h, const int stride[3])
+static int RENAME(encode_rgb_frame)(FFV1Context *s, const uint8_t *src[4],
+ int w, int h, const int stride[4])
{
int x, y, p, i;
const int ring_size = s->context_model ? 3 : 2;
@@ -132,6 +132,8 @@ static int RENAME(encode_rgb_frame)(FFV1Context *s, const uint8_t *src[3],
int packed = !src[1];
int bits = s->bits_per_raw_sample > 0 ? s->bits_per_raw_sample : 8;
int offset = 1 << bits;
+ int transparency = s->transparency;
+ int packed_size = (3 + transparency)*2;
s->run_index = 0;
@@ -152,14 +154,18 @@ static int RENAME(encode_rgb_frame)(FFV1Context *s, const uint8_t *src[3],
r = (v >> 16) & 0xFF;
a = v >> 24;
} else if (packed) {
- const uint16_t *p = ((const uint16_t*)(src[0] + x*6 + stride[0]*y));
+ const uint16_t *p = ((const uint16_t*)(src[0] + x*packed_size + stride[0]*y));
r = p[0];
g = p[1];
b = p[2];
- } else if (sizeof(TYPE) == 4) {
+ if (transparency)
+ a = p[3];
+ } else if (sizeof(TYPE) == 4 || transparency) {
g = *((const uint16_t *)(src[0] + x*2 + stride[0]*y));
b = *((const uint16_t *)(src[1] + x*2 + stride[1]*y));
r = *((const uint16_t *)(src[2] + x*2 + stride[2]*y));
+ if (transparency)
+ a = *((const uint16_t *)(src[3] + x*2 + stride[3]*y));
} else {
b = *((const uint16_t *)(src[0] + x*2 + stride[0]*y));
g = *((const uint16_t *)(src[1] + x*2 + stride[1]*y));
@@ -179,7 +185,7 @@ static int RENAME(encode_rgb_frame)(FFV1Context *s, const uint8_t *src[3],
sample[2][0][x] = r;
sample[3][0][x] = a;
}
- for (p = 0; p < 3 + s->transparency; p++) {
+ for (p = 0; p < 3 + transparency; p++) {
int ret;
sample[p][0][-1] = sample[p][1][0 ];
sample[p][1][ w] = sample[p][1][w-1];
diff --git a/chromium/third_party/ffmpeg/libavcodec/g2meet.c b/chromium/third_party/ffmpeg/libavcodec/g2meet.c
index 842095ba3b4..a46157218f2 100644
--- a/chromium/third_party/ffmpeg/libavcodec/g2meet.c
+++ b/chromium/third_party/ffmpeg/libavcodec/g2meet.c
@@ -28,6 +28,7 @@
#include <inttypes.h>
#include <zlib.h>
+#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
@@ -1451,7 +1452,8 @@ static int g2m_decode_frame(AVCodecContext *avctx, void *data,
c->tile_height = bytestream2_get_be32(&bc);
if (c->tile_width <= 0 || c->tile_height <= 0 ||
((c->tile_width | c->tile_height) & 0xF) ||
- c->tile_width * (uint64_t)c->tile_height >= INT_MAX / 4
+ c->tile_width * (uint64_t)c->tile_height >= INT_MAX / 4 ||
+ av_image_check_size2(c->tile_width, c->tile_height, avctx->max_pixels, avctx->pix_fmt, 0, avctx) < 0
) {
av_log(avctx, AV_LOG_ERROR,
"Invalid tile dimensions %dx%d\n",
diff --git a/chromium/third_party/ffmpeg/libavcodec/get_bits.h b/chromium/third_party/ffmpeg/libavcodec/get_bits.h
index c530015169e..0c7f5ff0c60 100644
--- a/chromium/third_party/ffmpeg/libavcodec/get_bits.h
+++ b/chromium/third_party/ffmpeg/libavcodec/get_bits.h
@@ -550,6 +550,7 @@ static inline const uint8_t *align_get_bits(GetBitContext *s)
* @param max_depth is the number of times bits bits must be read to completely
* read the longest vlc code
* = (max_vlc_length + bits - 1) / bits
+ * @returns the code parsed or -1 if no vlc matches
*/
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2],
int bits, int max_depth)
diff --git a/chromium/third_party/ffmpeg/libavcodec/h264_metadata_bsf.c b/chromium/third_party/ffmpeg/libavcodec/h264_metadata_bsf.c
index ada40a57c71..466823cda69 100644
--- a/chromium/third_party/ffmpeg/libavcodec/h264_metadata_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/h264_metadata_bsf.c
@@ -63,6 +63,8 @@ typedef struct H264MetadataContext {
const char *sei_user_data;
int sei_first_au;
+
+ int delete_filler;
} H264MetadataContext;
@@ -209,7 +211,6 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
AVPacket *in = NULL;
CodedBitstreamFragment *au = &ctx->access_unit;
int err, i, j, has_sps;
- char *sei_udu_string = NULL;
err = ff_bsf_get_packet(bsf, &in);
if (err < 0)
@@ -271,7 +272,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
aud->primary_pic_type = j;
err = ff_cbs_insert_unit_content(ctx->cbc, au,
- 0, H264_NAL_AUD, aud);
+ 0, H264_NAL_AUD, aud, NULL);
if (err < 0) {
av_log(bsf, AV_LOG_ERROR, "Failed to insert AUD.\n");
goto fail;
@@ -289,48 +290,17 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
}
}
- // Insert the SEI in access units containing SPSs, and also
+ // Only insert the SEI in access units containing SPSs, and also
// unconditionally in the first access unit we ever see.
if (ctx->sei_user_data && (has_sps || !ctx->sei_first_au)) {
- H264RawSEI *sei;
- H264RawSEIPayload *payload;
- H264RawSEIUserDataUnregistered *udu;
- int sei_pos, sei_new;
+ H264RawSEIPayload payload = {
+ .payload_type = H264_SEI_TYPE_USER_DATA_UNREGISTERED,
+ };
+ H264RawSEIUserDataUnregistered *udu =
+ &payload.payload.user_data_unregistered;
ctx->sei_first_au = 1;
- for (i = 0; i < au->nb_units; i++) {
- if (au->units[i].type == H264_NAL_SEI ||
- au->units[i].type == H264_NAL_SLICE ||
- au->units[i].type == H264_NAL_IDR_SLICE)
- break;
- }
- sei_pos = i;
-
- if (sei_pos < au->nb_units &&
- au->units[sei_pos].type == H264_NAL_SEI) {
- sei_new = 0;
- sei = au->units[sei_pos].content;
- } else {
- sei_new = 1;
- sei = &ctx->sei_nal;
- memset(sei, 0, sizeof(*sei));
-
- sei->nal_unit_header.nal_unit_type = H264_NAL_SEI;
-
- err = ff_cbs_insert_unit_content(ctx->cbc, au,
- sei_pos, H264_NAL_SEI, sei);
- if (err < 0) {
- av_log(bsf, AV_LOG_ERROR, "Failed to insert SEI.\n");
- goto fail;
- }
- }
-
- payload = &sei->payload[sei->payload_count];
-
- payload->payload_type = H264_SEI_TYPE_USER_DATA_UNREGISTERED;
- udu = &payload->payload.user_data_unregistered;
-
for (i = j = 0; j < 32 && ctx->sei_user_data[i]; i++) {
int c, v;
c = ctx->sei_user_data[i];
@@ -349,21 +319,25 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
++j;
}
if (j == 32 && ctx->sei_user_data[i] == '+') {
- sei_udu_string = av_strdup(ctx->sei_user_data + i + 1);
- if (!sei_udu_string) {
+ size_t len = strlen(ctx->sei_user_data + i + 1);
+
+ udu->data_ref = av_buffer_alloc(len + 1);
+ if (!udu->data_ref) {
err = AVERROR(ENOMEM);
- goto sei_fail;
+ goto fail;
}
- udu->data = sei_udu_string;
- udu->data_length = strlen(sei_udu_string);
+ udu->data = udu->data_ref->data;
+ udu->data_length = len + 1;
+ memcpy(udu->data, ctx->sei_user_data + i + 1, len + 1);
- payload->payload_size = 16 + udu->data_length;
+ payload.payload_size = 16 + udu->data_length;
- if (!sei_new) {
- // This will be freed by the existing internal
- // reference in fragment_uninit().
- sei_udu_string = NULL;
+ err = ff_cbs_h264_add_sei_message(ctx->cbc, au, &payload);
+ if (err < 0) {
+ av_log(bsf, AV_LOG_ERROR, "Failed to add user data SEI "
+ "message to access unit.\n");
+ goto fail;
}
} else {
@@ -371,12 +345,46 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
av_log(bsf, AV_LOG_ERROR, "Invalid user data: "
"must be \"UUID+string\".\n");
err = AVERROR(EINVAL);
- sei_fail:
- memset(payload, 0, sizeof(*payload));
goto fail;
}
+ }
+
+ if (ctx->delete_filler) {
+ for (i = 0; i < au->nb_units; i++) {
+ if (au->units[i].type == H264_NAL_FILLER_DATA) {
+ // Filler NAL units.
+ err = ff_cbs_delete_unit(ctx->cbc, au, i);
+ if (err < 0) {
+ av_log(bsf, AV_LOG_ERROR, "Failed to delete "
+ "filler NAL.\n");
+ goto fail;
+ }
+ --i;
+ continue;
+ }
- ++sei->payload_count;
+ if (au->units[i].type == H264_NAL_SEI) {
+ // Filler SEI messages.
+ H264RawSEI *sei = au->units[i].content;
+
+ for (j = 0; j < sei->payload_count; j++) {
+ if (sei->payload[j].payload_type ==
+ H264_SEI_TYPE_FILLER_PAYLOAD) {
+ err = ff_cbs_h264_delete_sei_message(ctx->cbc, au,
+ &au->units[i], j);
+ if (err < 0) {
+ av_log(bsf, AV_LOG_ERROR, "Failed to delete "
+ "filler SEI message.\n");
+ goto fail;
+ }
+ // Renumbering might have happened, start again at
+ // the same NAL unit position.
+ --i;
+ break;
+ }
+ }
+ }
+ }
}
err = ff_cbs_write_packet(ctx->cbc, out, au);
@@ -392,7 +400,6 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
err = 0;
fail:
ff_cbs_fragment_uninit(ctx->cbc, au);
- av_freep(&sei_udu_string);
av_packet_free(&in);
@@ -499,6 +506,9 @@ static const AVOption h264_metadata_options[] = {
{ "sei_user_data", "Insert SEI user data (UUID+string)",
OFFSET(sei_user_data), AV_OPT_TYPE_STRING, { .str = NULL } },
+ { "delete_filler", "Delete all filler (both NAL and SEI)",
+ OFFSET(delete_filler), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1 },
+
{ NULL }
};
diff --git a/chromium/third_party/ffmpeg/libavcodec/h264_parse.c b/chromium/third_party/ffmpeg/libavcodec/h264_parse.c
index fee28d90d99..87e5b3cdc53 100644
--- a/chromium/third_party/ffmpeg/libavcodec/h264_parse.c
+++ b/chromium/third_party/ffmpeg/libavcodec/h264_parse.c
@@ -82,8 +82,11 @@ int ff_h264_pred_weight_table(GetBitContext *gb, const SPS *sps,
pwt->chroma_weight[i][list][j][0] = get_se_golomb(gb);
pwt->chroma_weight[i][list][j][1] = get_se_golomb(gb);
if ((int8_t)pwt->chroma_weight[i][list][j][0] != pwt->chroma_weight[i][list][j][0] ||
- (int8_t)pwt->chroma_weight[i][list][j][1] != pwt->chroma_weight[i][list][j][1])
+ (int8_t)pwt->chroma_weight[i][list][j][1] != pwt->chroma_weight[i][list][j][1]) {
+ pwt->chroma_weight[i][list][j][0] = chroma_def;
+ pwt->chroma_weight[i][list][j][1] = 0;
goto out_range_weight;
+ }
if (pwt->chroma_weight[i][list][j][0] != chroma_def ||
pwt->chroma_weight[i][list][j][1] != 0) {
pwt->use_weight_chroma = 1;
@@ -271,7 +274,7 @@ int ff_h264_init_poc(int pic_field_poc[2], int *pic_poc,
int picture_structure, int nal_ref_idc)
{
const int max_frame_num = 1 << sps->log2_max_frame_num;
- int field_poc[2];
+ int64_t field_poc[2];
pc->frame_num_offset = pc->prev_frame_num_offset;
if (pc->frame_num < pc->prev_frame_num)
@@ -337,6 +340,10 @@ int ff_h264_init_poc(int pic_field_poc[2], int *pic_poc,
field_poc[1] = poc;
}
+ if ( field_poc[0] != (int)field_poc[0]
+ || field_poc[1] != (int)field_poc[1])
+ return AVERROR_INVALIDDATA;
+
if (picture_structure != PICT_BOTTOM_FIELD)
pic_field_poc[0] = field_poc[0];
if (picture_structure != PICT_TOP_FIELD)
diff --git a/chromium/third_party/ffmpeg/libavcodec/h264_parser.c b/chromium/third_party/ffmpeg/libavcodec/h264_parser.c
index 9f6c381647b..006d9120255 100644
--- a/chromium/third_party/ffmpeg/libavcodec/h264_parser.c
+++ b/chromium/third_party/ffmpeg/libavcodec/h264_parser.c
@@ -447,8 +447,10 @@ static inline int parse_nal_units(AVCodecParserContext *s,
/* Decode POC of this picture.
* The prev_ values needed for decoding POC of the next picture are not set here. */
field_poc[0] = field_poc[1] = INT_MAX;
- ff_h264_init_poc(field_poc, &s->output_picture_number, sps,
+ ret = ff_h264_init_poc(field_poc, &s->output_picture_number, sps,
&p->poc, p->picture_structure, nal.ref_idc);
+ if (ret < 0)
+ goto fail;
/* Continue parsing to check if MMCO_RESET is present.
* FIXME: MMCO_RESET could appear in non-first slice.
diff --git a/chromium/third_party/ffmpeg/libavcodec/h264_slice.c b/chromium/third_party/ffmpeg/libavcodec/h264_slice.c
index e6b7998834c..90e05ed8f10 100644
--- a/chromium/third_party/ffmpeg/libavcodec/h264_slice.c
+++ b/chromium/third_party/ffmpeg/libavcodec/h264_slice.c
@@ -1607,8 +1607,10 @@ static int h264_field_start(H264Context *h, const H264SliceContext *sl,
(h->mb_height * h->mb_stride - 1) * sizeof(*h->slice_table));
}
- ff_h264_init_poc(h->cur_pic_ptr->field_poc, &h->cur_pic_ptr->poc,
+ ret = ff_h264_init_poc(h->cur_pic_ptr->field_poc, &h->cur_pic_ptr->poc,
h->ps.sps, &h->poc, h->picture_structure, nal->ref_idc);
+ if (ret < 0)
+ return ret;
memcpy(h->mmco, sl->mmco, sl->nb_mmco * sizeof(*h->mmco));
h->nb_mmco = sl->nb_mmco;
diff --git a/chromium/third_party/ffmpeg/libavcodec/h264dec.c b/chromium/third_party/ffmpeg/libavcodec/h264dec.c
index 516c913a957..6cee29d1384 100644
--- a/chromium/third_party/ffmpeg/libavcodec/h264dec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/h264dec.c
@@ -836,9 +836,6 @@ static int output_frame(H264Context *h, AVFrame *dst, H264Picture *srcp)
AVFrame *src = srcp->f;
int ret;
- if (src->format == AV_PIX_FMT_VIDEOTOOLBOX && src->buf[0]->size == 1)
- return AVERROR_INVALIDDATA;
-
ret = av_frame_ref(dst, src);
if (ret < 0)
return ret;
diff --git a/chromium/third_party/ffmpeg/libavcodec/h265_metadata_bsf.c b/chromium/third_party/ffmpeg/libavcodec/h265_metadata_bsf.c
index 67dbe288e30..2398ee95c51 100644
--- a/chromium/third_party/ffmpeg/libavcodec/h265_metadata_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/h265_metadata_bsf.c
@@ -289,7 +289,7 @@ static int h265_metadata_filter(AVBSFContext *bsf, AVPacket *out)
aud->pic_type = pic_type;
err = ff_cbs_insert_unit_content(ctx->cbc, au,
- 0, HEVC_NAL_AUD, aud);
+ 0, HEVC_NAL_AUD, aud, NULL);
if (err) {
av_log(bsf, AV_LOG_ERROR, "Failed to insert AUD.\n");
goto fail;
diff --git a/chromium/third_party/ffmpeg/libavcodec/hevc_cabac.c b/chromium/third_party/ffmpeg/libavcodec/hevc_cabac.c
index 5b5da1165a7..faa36d54593 100644
--- a/chromium/third_party/ffmpeg/libavcodec/hevc_cabac.c
+++ b/chromium/third_party/ffmpeg/libavcodec/hevc_cabac.c
@@ -990,16 +990,19 @@ static av_always_inline int coeff_abs_level_remaining_decode(HEVCContext *s, int
while (prefix < CABAC_MAX_BIN && get_cabac_bypass(&s->HEVClc->cc))
prefix++;
- if (prefix == CABAC_MAX_BIN) {
- av_log(s->avctx, AV_LOG_ERROR, "CABAC_MAX_BIN : %d\n", prefix);
- return 0;
- }
+
if (prefix < 3) {
for (i = 0; i < rc_rice_param; i++)
suffix = (suffix << 1) | get_cabac_bypass(&s->HEVClc->cc);
last_coeff_abs_level_remaining = (prefix << rc_rice_param) + suffix;
} else {
int prefix_minus3 = prefix - 3;
+
+ if (prefix == CABAC_MAX_BIN || prefix_minus3 + rc_rice_param >= 31) {
+ av_log(s->avctx, AV_LOG_ERROR, "CABAC_MAX_BIN : %d\n", prefix);
+ return 0;
+ }
+
for (i = 0; i < prefix_minus3 + rc_rice_param; i++)
suffix = (suffix << 1) | get_cabac_bypass(&s->HEVClc->cc);
last_coeff_abs_level_remaining = (((1 << prefix_minus3) + 3 - 1)
diff --git a/chromium/third_party/ffmpeg/libavcodec/hevc_parser.c b/chromium/third_party/ffmpeg/libavcodec/hevc_parser.c
index 88d3d9a22f3..a468682ed33 100644
--- a/chromium/third_party/ffmpeg/libavcodec/hevc_parser.c
+++ b/chromium/third_party/ffmpeg/libavcodec/hevc_parser.c
@@ -24,6 +24,7 @@
#include "golomb.h"
#include "hevc.h"
+#include "hevc_parse.h"
#include "hevc_ps.h"
#include "hevc_sei.h"
#include "h2645_parse.h"
@@ -43,6 +44,8 @@ typedef struct HEVCParserContext {
HEVCSEI sei;
SliceHeader sh;
+ int is_avc;
+ int nal_length_size;
int parsed_extradata;
int poc;
@@ -181,7 +184,6 @@ static int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
HEVCParserContext *ctx = s->priv_data;
HEVCParamSets *ps = &ctx->ps;
HEVCSEI *sei = &ctx->sei;
- int is_global = buf == avctx->extradata;
int ret, i;
/* set some sane default values */
@@ -191,8 +193,8 @@ static int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
ff_hevc_reset_sei(sei);
- ret = ff_h2645_packet_split(&ctx->pkt, buf, buf_size, avctx, 0, 0,
- AV_CODEC_ID_HEVC, 1);
+ ret = ff_h2645_packet_split(&ctx->pkt, buf, buf_size, avctx, ctx->is_avc,
+ ctx->nal_length_size, AV_CODEC_ID_HEVC, 1);
if (ret < 0)
return ret;
@@ -230,12 +232,6 @@ static int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
case HEVC_NAL_RADL_R:
case HEVC_NAL_RASL_N:
case HEVC_NAL_RASL_R:
-
- if (is_global) {
- av_log(avctx, AV_LOG_ERROR, "Invalid NAL unit: %d\n", nal->type);
- return AVERROR_INVALIDDATA;
- }
-
ret = hevc_parse_slice_header(s, nal, avctx);
if (ret)
return ret;
@@ -243,8 +239,7 @@ static int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
}
}
/* didn't find a picture! */
- if (!is_global)
- av_log(avctx, AV_LOG_ERROR, "missing picture in access unit\n");
+ av_log(avctx, AV_LOG_ERROR, "missing picture in access unit\n");
return -1;
}
@@ -301,7 +296,9 @@ static int hevc_parse(AVCodecParserContext *s, AVCodecContext *avctx,
ParseContext *pc = &ctx->pc;
if (avctx->extradata && !ctx->parsed_extradata) {
- parse_nal_units(s, avctx->extradata, avctx->extradata_size, avctx);
+ ff_hevc_decode_extradata(avctx->extradata, avctx->extradata_size, &ctx->ps, &ctx->sei,
+ &ctx->is_avc, &ctx->nal_length_size, avctx->err_recognition,
+ 1, avctx);
ctx->parsed_extradata = 1;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/hevc_ps.c b/chromium/third_party/ffmpeg/libavcodec/hevc_ps.c
index 4787312cfaa..1f18d0335b9 100644
--- a/chromium/third_party/ffmpeg/libavcodec/hevc_ps.c
+++ b/chromium/third_party/ffmpeg/libavcodec/hevc_ps.c
@@ -1324,6 +1324,11 @@ static int pps_range_extensions(GetBitContext *gb, AVCodecContext *avctx,
pps->log2_sao_offset_scale_luma = get_ue_golomb_long(gb);
pps->log2_sao_offset_scale_chroma = get_ue_golomb_long(gb);
+ if ( pps->log2_sao_offset_scale_luma > FFMAX(sps->bit_depth - 10, 0)
+ || pps->log2_sao_offset_scale_chroma > FFMAX(sps->bit_depth_chroma - 10, 0)
+ )
+ return AVERROR_INVALIDDATA;
+
return(0);
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/hevcdec.c b/chromium/third_party/ffmpeg/libavcodec/hevcdec.c
index 8f1c1f19534..c8877626d2e 100644
--- a/chromium/third_party/ffmpeg/libavcodec/hevcdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/hevcdec.c
@@ -151,12 +151,18 @@ static int pred_weight_table(HEVCContext *s, GetBitContext *gb)
int luma_log2_weight_denom;
luma_log2_weight_denom = get_ue_golomb_long(gb);
- if (luma_log2_weight_denom < 0 || luma_log2_weight_denom > 7)
+ if (luma_log2_weight_denom < 0 || luma_log2_weight_denom > 7) {
av_log(s->avctx, AV_LOG_ERROR, "luma_log2_weight_denom %d is invalid\n", luma_log2_weight_denom);
+ return AVERROR_INVALIDDATA;
+ }
s->sh.luma_log2_weight_denom = av_clip_uintp2(luma_log2_weight_denom, 3);
if (s->ps.sps->chroma_format_idc != 0) {
- int delta = get_se_golomb(gb);
- s->sh.chroma_log2_weight_denom = av_clip_uintp2(s->sh.luma_log2_weight_denom + delta, 3);
+ int64_t chroma_log2_weight_denom = luma_log2_weight_denom + (int64_t)get_se_golomb(gb);
+ if (chroma_log2_weight_denom < 0 || chroma_log2_weight_denom > 7) {
+ av_log(s->avctx, AV_LOG_ERROR, "chroma_log2_weight_denom %"PRId64" is invalid\n", chroma_log2_weight_denom);
+ return AVERROR_INVALIDDATA;
+ }
+ s->sh.chroma_log2_weight_denom = chroma_log2_weight_denom;
}
for (i = 0; i < s->sh.nb_refs[L0]; i++) {
@@ -402,6 +408,11 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
*fmt++ = AV_PIX_FMT_CUDA;
#endif
break;
+ case AV_PIX_FMT_YUV420P12:
+#if CONFIG_HEVC_NVDEC_HWACCEL
+ *fmt++ = AV_PIX_FMT_CUDA;
+#endif
+ break;
}
*fmt++ = sps->pix_fmt;
diff --git a/chromium/third_party/ffmpeg/libavcodec/huffyuvdec.c b/chromium/third_party/ffmpeg/libavcodec/huffyuvdec.c
index f97fe280be8..5395129b51a 100644
--- a/chromium/third_party/ffmpeg/libavcodec/huffyuvdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/huffyuvdec.c
@@ -917,6 +917,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
AVFrame *const p = data;
int table_size = 0, ret;
+ if (buf_size < (width * height + 7)/8)
+ return AVERROR_INVALIDDATA;
+
av_fast_padded_malloc(&s->bitstream_buffer,
&s->bitstream_buffer_size,
buf_size);
diff --git a/chromium/third_party/ffmpeg/libavcodec/hwaccels.h b/chromium/third_party/ffmpeg/libavcodec/hwaccels.h
index fcfe4e088ec..7d73da86767 100644
--- a/chromium/third_party/ffmpeg/libavcodec/hwaccels.h
+++ b/chromium/third_party/ffmpeg/libavcodec/hwaccels.h
@@ -37,6 +37,8 @@ extern const AVHWAccel ff_hevc_nvdec_hwaccel;
extern const AVHWAccel ff_hevc_vaapi_hwaccel;
extern const AVHWAccel ff_hevc_vdpau_hwaccel;
extern const AVHWAccel ff_hevc_videotoolbox_hwaccel;
+extern const AVHWAccel ff_mjpeg_nvdec_hwaccel;
+extern const AVHWAccel ff_mjpeg_vaapi_hwaccel;
extern const AVHWAccel ff_mpeg1_nvdec_hwaccel;
extern const AVHWAccel ff_mpeg1_vdpau_hwaccel;
extern const AVHWAccel ff_mpeg1_videotoolbox_hwaccel;
diff --git a/chromium/third_party/ffmpeg/libavcodec/indeo5.c b/chromium/third_party/ffmpeg/libavcodec/indeo5.c
index 81b4514038a..b39cffd9a91 100644
--- a/chromium/third_party/ffmpeg/libavcodec/indeo5.c
+++ b/chromium/third_party/ffmpeg/libavcodec/indeo5.c
@@ -324,6 +324,7 @@ static int decode_pic_hdr(IVI45DecContext *ctx, AVCodecContext *avctx)
ctx->frame_type = get_bits(&ctx->gb, 3);
if (ctx->frame_type >= 5) {
av_log(avctx, AV_LOG_ERROR, "Invalid frame type: %d \n", ctx->frame_type);
+ ctx->frame_type = FRAMETYPE_INTRA;
return AVERROR_INVALIDDATA;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/internal.h b/chromium/third_party/ffmpeg/libavcodec/internal.h
index 16bd1012849..bb92873d7b8 100644
--- a/chromium/third_party/ffmpeg/libavcodec/internal.h
+++ b/chromium/third_party/ffmpeg/libavcodec/internal.h
@@ -235,12 +235,6 @@ int ff_match_2uint16(const uint16_t (*tab)[2], int size, int a, int b);
unsigned int avpriv_toupper4(unsigned int x);
-/**
- * does needed setup of pkt_pts/pos and such for (re)get_buffer();
- */
-int ff_init_buffer_info(AVCodecContext *s, AVFrame *frame);
-
-
void ff_color_frame(AVFrame *frame, const int color[4]);
/**
diff --git a/chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c b/chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c
index 01fe4b39493..5414ce56554 100644
--- a/chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c
@@ -34,6 +34,7 @@
#include "libavutil/imgutils.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
+#include "libavutil/thread.h"
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
@@ -284,7 +285,7 @@ static int get_siz(Jpeg2000DecoderContext *s)
avpriv_request_sample(s->avctx, "Support for image offsets");
return AVERROR_PATCHWELCOME;
}
- if (av_image_check_size(s->width, s->height, 0, s->avctx)) {
+ if (av_image_check_size2(s->width, s->height, s->avctx->max_pixels, AV_PIX_FMT_NONE, 0, s->avctx)) {
avpriv_request_sample(s->avctx, "Large Dimensions");
return AVERROR_PATCHWELCOME;
}
@@ -2142,10 +2143,18 @@ static int jp2_find_codestream(Jpeg2000DecoderContext *s)
return 0;
}
+static av_cold void jpeg2000_init_static_data(void)
+{
+ ff_jpeg2000_init_tier1_luts();
+ ff_mqc_init_context_tables();
+}
+
static av_cold int jpeg2000_decode_init(AVCodecContext *avctx)
{
+ static AVOnce init_static_once = AV_ONCE_INIT;
Jpeg2000DecoderContext *s = avctx->priv_data;
+ ff_thread_once(&init_static_once, jpeg2000_init_static_data);
ff_jpeg2000dsp_init(&s->dsp);
return 0;
@@ -2223,12 +2232,6 @@ end:
return ret;
}
-static av_cold void jpeg2000_init_static_data(AVCodec *codec)
-{
- ff_jpeg2000_init_tier1_luts();
- ff_mqc_init_context_tables();
-}
-
#define OFFSET(x) offsetof(Jpeg2000DecoderContext, x)
#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
@@ -2252,7 +2255,6 @@ AVCodec ff_jpeg2000_decoder = {
.id = AV_CODEC_ID_JPEG2000,
.capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_DR1,
.priv_data_size = sizeof(Jpeg2000DecoderContext),
- .init_static_data = jpeg2000_init_static_data,
.init = jpeg2000_decode_init,
.decode = jpeg2000_decode_frame,
.priv_class = &jpeg2000_class,
diff --git a/chromium/third_party/ffmpeg/libavcodec/jpeg2000dwt.c b/chromium/third_party/ffmpeg/libavcodec/jpeg2000dwt.c
index 55dd5e89b52..ce1678a3d74 100644
--- a/chromium/third_party/ffmpeg/libavcodec/jpeg2000dwt.c
+++ b/chromium/third_party/ffmpeg/libavcodec/jpeg2000dwt.c
@@ -305,22 +305,22 @@ static void dwt_encode97_int(DWTContext *s, int *t)
t[i] = (t[i] + ((1<<I_PRESHIFT)>>1)) >> I_PRESHIFT;
}
-static void sr_1d53(int *p, int i0, int i1)
+static void sr_1d53(unsigned *p, int i0, int i1)
{
int i;
if (i1 <= i0 + 1) {
if (i0 == 1)
- p[1] >>= 1;
+ p[1] = (int)p[1] >> 1;
return;
}
extend53(p, i0, i1);
for (i = (i0 >> 1); i < (i1 >> 1) + 1; i++)
- p[2 * i] -= (p[2 * i - 1] + p[2 * i + 1] + 2) >> 2;
+ p[2 * i] -= (int)(p[2 * i - 1] + p[2 * i + 1] + 2) >> 2;
for (i = (i0 >> 1); i < (i1 >> 1); i++)
- p[2 * i + 1] += (p[2 * i] + p[2 * i + 2]) >> 1;
+ p[2 * i + 1] += (int)(p[2 * i] + p[2 * i + 2]) >> 1;
}
static void dwt_decode53(DWTContext *s, int *t)
diff --git a/chromium/third_party/ffmpeg/libavcodec/libcodec2.c b/chromium/third_party/ffmpeg/libavcodec/libcodec2.c
new file mode 100644
index 00000000000..1d6bed03833
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/libcodec2.c
@@ -0,0 +1,213 @@
+/*
+ * codec2 encoder/decoder using libcodec2
+ * Copyright (c) 2017 Tomas Härdin
+ *
+ * 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 <codec2/codec2.h>
+#include "avcodec.h"
+#include "libavutil/opt.h"
+#include "internal.h"
+#include "codec2utils.h"
+
+typedef struct {
+ const AVClass *class;
+ struct CODEC2 *codec;
+ int mode;
+} LibCodec2Context;
+
+static const AVOption options[] = {
+ //not AV_OPT_FLAG_DECODING_PARAM since mode should come from the demuxer
+ //1300 (aka FreeDV 1600) is the most common mode on-the-air, default to it here as well
+ AVPRIV_CODEC2_AVOPTIONS("codec2 mode", LibCodec2Context, 0, 4 /*CODEC2_MODE_1300*/, AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_ENCODING_PARAM),
+ { NULL },
+};
+
+static const AVClass libcodec2_enc_class = {
+ .class_name = "libcodec2 encoder",
+ .item_name = av_default_item_name,
+ .option = options,
+ .version = LIBAVUTIL_VERSION_INT,
+};
+
+static const AVClass libcodec2_dec_class = {
+ .class_name = "libcodec2 decoder",
+ .item_name = av_default_item_name,
+ .version = LIBAVUTIL_VERSION_INT,
+};
+
+static av_cold int libcodec2_init_common(AVCodecContext *avctx, int mode)
+{
+ LibCodec2Context *c2 = avctx->priv_data;
+ //Grab mode name from options, unless it's some weird number.
+ const char *modename = mode >= 0 && mode <= AVPRIV_CODEC2_MODE_MAX ? options[mode+1].name : "?";
+
+ c2->codec = codec2_create(mode);
+ if (!c2->codec) {
+ //Out of memory or unsupported mode. The latter seems most likely,
+ //but we can't tell for sure with the current API.
+ goto libcodec2_init_common_error;
+ }
+
+ avctx->frame_size = codec2_samples_per_frame(c2->codec);
+ avctx->block_align = (codec2_bits_per_frame(c2->codec) + 7) / 8;
+
+ if (avctx->frame_size <= 0 || avctx->block_align <= 0) {
+ //codec2_create() may succeed for some modes but still fail at codec2_samples_per_frame()
+ //example is -mode 700C on libcodec2 0.4
+ codec2_destroy(c2->codec);
+ c2->codec = NULL;
+ goto libcodec2_init_common_error;
+ }
+
+ codec2_set_natural_or_gray(c2->codec, 1);
+
+ return 0;
+
+libcodec2_init_common_error:
+ av_log(avctx, AV_LOG_ERROR,
+ "Mode %i (%s) not supported with the linked version of libcodec2\n",
+ mode, modename);
+ return AVERROR(EINVAL);
+}
+
+static av_cold int libcodec2_init_decoder(AVCodecContext *avctx)
+{
+ avctx->sample_rate = 8000;
+ avctx->channels = 1;
+ avctx->sample_fmt = AV_SAMPLE_FMT_S16;
+ avctx->channel_layout = AV_CH_LAYOUT_MONO;
+
+ if (avctx->extradata_size != AVPRIV_CODEC2_EXTRADATA_SIZE) {
+ av_log(avctx, AV_LOG_ERROR, "must have exactly %i bytes of extradata (got %i)\n",
+ AVPRIV_CODEC2_EXTRADATA_SIZE, avctx->extradata_size);
+ return AVERROR_INVALIDDATA;
+ }
+
+ return libcodec2_init_common(avctx, avpriv_codec2_mode_from_extradata(avctx->extradata));
+}
+
+static av_cold int libcodec2_init_encoder(AVCodecContext *avctx)
+{
+ LibCodec2Context *c2 = avctx->priv_data;
+
+ //will need to be smarter once we get wideband support
+ if (avctx->sample_rate != 8000 ||
+ avctx->channels != 1 ||
+ avctx->sample_fmt != AV_SAMPLE_FMT_S16) {
+ av_log(avctx, AV_LOG_ERROR, "only 8 kHz 16-bit mono allowed\n");
+ return AVERROR(EINVAL);
+ }
+
+ avctx->extradata = av_mallocz(AVPRIV_CODEC2_EXTRADATA_SIZE + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!avctx->extradata) {
+ return AVERROR(ENOMEM);
+ }
+
+ avctx->extradata_size = AVPRIV_CODEC2_EXTRADATA_SIZE;
+ avpriv_codec2_make_extradata(avctx->extradata, c2->mode);
+
+ return libcodec2_init_common(avctx, c2->mode);
+}
+
+static av_cold int libcodec2_close(AVCodecContext *avctx)
+{
+ LibCodec2Context *c2 = avctx->priv_data;
+
+ codec2_destroy(c2->codec);
+ return 0;
+}
+
+static int libcodec2_decode(AVCodecContext *avctx, void *data,
+ int *got_frame_ptr, AVPacket *pkt)
+{
+ LibCodec2Context *c2 = avctx->priv_data;
+ AVFrame *frame = data;
+ int ret, nframes, i;
+ uint8_t *input;
+ int16_t *output;
+
+ nframes = pkt->size / avctx->block_align;
+ frame->nb_samples = avctx->frame_size * nframes;
+
+ ret = ff_get_buffer(avctx, frame, 0);
+ if (ret < 0) {
+ return ret;
+ }
+
+ input = pkt->data;
+ output = (int16_t *)frame->data[0];
+
+ for (i = 0; i < nframes; i++) {
+ codec2_decode(c2->codec, output, input);
+ input += avctx->block_align;
+ output += avctx->frame_size;
+ }
+
+ *got_frame_ptr = nframes > 0;
+ return nframes * avctx->block_align;
+}
+
+static int libcodec2_encode(AVCodecContext *avctx, AVPacket *avpkt,
+ const AVFrame *frame, int *got_packet_ptr)
+{
+ LibCodec2Context *c2 = avctx->priv_data;
+ int16_t *samples = (int16_t *)frame->data[0];
+
+ int ret = ff_alloc_packet2(avctx, avpkt, avctx->block_align, 0);
+ if (ret < 0) {
+ return ret;
+ }
+
+ codec2_encode(c2->codec, avpkt->data, samples);
+ *got_packet_ptr = 1;
+
+ return 0;
+}
+
+AVCodec ff_libcodec2_decoder = {
+ .name = "libcodec2",
+ .long_name = NULL_IF_CONFIG_SMALL("codec2 decoder using libcodec2"),
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = AV_CODEC_ID_CODEC2,
+ .priv_data_size = sizeof(LibCodec2Context),
+ .init = libcodec2_init_decoder,
+ .close = libcodec2_close,
+ .decode = libcodec2_decode,
+ .capabilities = 0,
+ .supported_samplerates = (const int[]){ 8000, 0 },
+ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE },
+ .channel_layouts = (const uint64_t[]) { AV_CH_LAYOUT_MONO, 0 },
+ .priv_class = &libcodec2_dec_class,
+};
+
+AVCodec ff_libcodec2_encoder = {
+ .name = "libcodec2",
+ .long_name = NULL_IF_CONFIG_SMALL("codec2 encoder using libcodec2"),
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = AV_CODEC_ID_CODEC2,
+ .priv_data_size = sizeof(LibCodec2Context),
+ .init = libcodec2_init_encoder,
+ .close = libcodec2_close,
+ .encode2 = libcodec2_encode,
+ .capabilities = 0,
+ .supported_samplerates = (const int[]){ 8000, 0 },
+ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE },
+ .channel_layouts = (const uint64_t[]) { AV_CH_LAYOUT_MONO, 0 },
+ .priv_class = &libcodec2_enc_class,
+};
diff --git a/chromium/third_party/ffmpeg/libavcodec/libopusdec.c b/chromium/third_party/ffmpeg/libavcodec/libopusdec.c
index 4f7f4755c24..2a97811d187 100644
--- a/chromium/third_party/ffmpeg/libavcodec/libopusdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/libopusdec.c
@@ -25,6 +25,7 @@
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/ffmath.h"
+#include "libavutil/opt.h"
#include "avcodec.h"
#include "internal.h"
@@ -33,11 +34,15 @@
#include "libopus.h"
struct libopus_context {
+ AVClass *class;
OpusMSDecoder *dec;
int pre_skip;
#ifndef OPUS_SET_GAIN
union { int i; double d; } gain;
#endif
+#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST
+ int apply_phase_inv;
+#endif
};
#define OPUS_HEAD_SIZE 19
@@ -136,6 +141,15 @@ static av_cold int libopus_decode_init(AVCodecContext *avc)
}
#endif
+#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST
+ ret = opus_multistream_decoder_ctl(opus->dec,
+ OPUS_SET_PHASE_INVERSION_DISABLED(!opus->apply_phase_inv));
+ if (ret != OPUS_OK)
+ av_log(avc, AV_LOG_WARNING,
+ "Unable to set phase inversion: %s\n",
+ opus_strerror(ret));
+#endif
+
/* Decoder delay (in samples) at 48kHz */
avc->delay = avc->internal->skip_samples = opus->pre_skip;
@@ -146,7 +160,10 @@ static av_cold int libopus_decode_close(AVCodecContext *avc)
{
struct libopus_context *opus = avc->priv_data;
- opus_multistream_decoder_destroy(opus->dec);
+ if (opus->dec) {
+ opus_multistream_decoder_destroy(opus->dec);
+ opus->dec = NULL;
+ }
return 0;
}
@@ -209,6 +226,24 @@ static void libopus_flush(AVCodecContext *avc)
avc->internal->skip_samples = opus->pre_skip;
}
+
+#define OFFSET(x) offsetof(struct libopus_context, x)
+#define FLAGS AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_DECODING_PARAM
+static const AVOption libopusdec_options[] = {
+#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST
+ { "apply_phase_inv", "Apply intensity stereo phase inversion", OFFSET(apply_phase_inv), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, FLAGS },
+#endif
+ { NULL },
+};
+
+static const AVClass libopusdec_class = {
+ .class_name = "libopusdec",
+ .item_name = av_default_item_name,
+ .option = libopusdec_options,
+ .version = LIBAVUTIL_VERSION_INT,
+};
+
+
AVCodec ff_libopus_decoder = {
.name = "libopus",
.long_name = NULL_IF_CONFIG_SMALL("libopus Opus"),
@@ -220,8 +255,10 @@ AVCodec ff_libopus_decoder = {
.decode = libopus_decode,
.flush = libopus_flush,
.capabilities = AV_CODEC_CAP_DR1,
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_FLT,
AV_SAMPLE_FMT_S16,
AV_SAMPLE_FMT_NONE },
+ .priv_class = &libopusdec_class,
.wrapper_name = "libopus",
};
diff --git a/chromium/third_party/ffmpeg/libavcodec/libopusenc.c b/chromium/third_party/ffmpeg/libavcodec/libopusenc.c
index b449497d15f..4ae81b0bb2e 100644
--- a/chromium/third_party/ffmpeg/libavcodec/libopusenc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/libopusenc.c
@@ -39,6 +39,9 @@ typedef struct LibopusEncOpts {
int packet_size;
int max_bandwidth;
int mapping_family;
+#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST
+ int apply_phase_inv;
+#endif
} LibopusEncOpts;
typedef struct LibopusEncContext {
@@ -154,6 +157,14 @@ static int libopus_configure_encoder(AVCodecContext *avctx, OpusMSEncoder *enc,
"Unable to set maximum bandwidth: %s\n", opus_strerror(ret));
}
+#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST
+ ret = opus_multistream_encoder_ctl(enc,
+ OPUS_SET_PHASE_INVERSION_DISABLED(!opts->apply_phase_inv));
+ if (ret != OPUS_OK)
+ av_log(avctx, AV_LOG_WARNING,
+ "Unable to set phase inversion: %s\n",
+ opus_strerror(ret));
+#endif
return OPUS_OK;
}
@@ -530,6 +541,9 @@ static const AVOption libopus_options[] = {
{ "on", "Use variable bit rate", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, FLAGS, "vbr" },
{ "constrained", "Use constrained VBR", 0, AV_OPT_TYPE_CONST, { .i64 = 2 }, 0, 0, FLAGS, "vbr" },
{ "mapping_family", "Channel Mapping Family", OFFSET(mapping_family), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 255, FLAGS, "mapping_family" },
+#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST
+ { "apply_phase_inv", "Apply intensity stereo phase inversion", OFFSET(apply_phase_inv), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, FLAGS },
+#endif
{ NULL },
};
diff --git a/chromium/third_party/ffmpeg/libavcodec/librsvgdec.c b/chromium/third_party/ffmpeg/libavcodec/librsvgdec.c
index e57070f8e44..66977850261 100644
--- a/chromium/third_party/ffmpeg/libavcodec/librsvgdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/librsvgdec.c
@@ -82,8 +82,10 @@ static int librsvg_decode_frame(AVCodecContext *avctx, void *data, int *got_fram
crender = cairo_create(image);
- cairo_set_source_rgba(crender, 0.0, 0.0, 0.0, 1.0f);
- cairo_paint_with_alpha(crender, 0.0f);
+ cairo_save(crender);
+ cairo_set_operator(crender, CAIRO_OPERATOR_CLEAR);
+ cairo_paint(crender);
+ cairo_restore(crender);
cairo_scale(crender, dimensions.width / (double)unscaled_dimensions.width,
dimensions.height / (double)unscaled_dimensions.height);
diff --git a/chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.c b/chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.c
index 5cc4934c0ef..ed70329628a 100644
--- a/chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.c
+++ b/chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.c
@@ -74,10 +74,25 @@ static void sub_median_pred_c(uint8_t *dst, const uint8_t *src1,
*left_top = lt;
}
+static void sub_left_predict_c(uint8_t *dst, uint8_t *src,
+ ptrdiff_t stride, ptrdiff_t width, int height)
+{
+ int i, j;
+ uint8_t prev = 0x80; /* Set the initial value */
+ for (j = 0; j < height; j++) {
+ for (i = 0; i < width; i++) {
+ *dst++ = src[i] - prev;
+ prev = src[i];
+ }
+ src += stride;
+ }
+}
+
av_cold void ff_llvidencdsp_init(LLVidEncDSPContext *c)
{
c->diff_bytes = diff_bytes_c;
c->sub_median_pred = sub_median_pred_c;
+ c->sub_left_predict = sub_left_predict_c;
if (ARCH_X86)
ff_llvidencdsp_init_x86(c);
diff --git a/chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.h b/chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.h
index 3d645b159ad..faa6c325512 100644
--- a/chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.h
+++ b/chromium/third_party/ffmpeg/libavcodec/lossless_videoencdsp.h
@@ -21,6 +21,8 @@
#include <stdint.h>
+#include "avcodec.h"
+
typedef struct LLVidEncDSPContext {
void (*diff_bytes)(uint8_t *dst /* align 16 */,
const uint8_t *src1 /* align 16 */,
@@ -33,6 +35,9 @@ typedef struct LLVidEncDSPContext {
void (*sub_median_pred)(uint8_t *dst, const uint8_t *src1,
const uint8_t *src2, intptr_t w,
int *left, int *left_top);
+
+ void (*sub_left_predict)(uint8_t *dst, uint8_t *src,
+ ptrdiff_t stride, ptrdiff_t width, int height);
} LLVidEncDSPContext;
void ff_llvidencdsp_init(LLVidEncDSPContext *c);
diff --git a/chromium/third_party/ffmpeg/libavcodec/me_cmp.c b/chromium/third_party/ffmpeg/libavcodec/me_cmp.c
index 5e34a11593d..465d3ccb2af 100644
--- a/chromium/third_party/ffmpeg/libavcodec/me_cmp.c
+++ b/chromium/third_party/ffmpeg/libavcodec/me_cmp.c
@@ -29,13 +29,47 @@
#include "mpegvideo.h"
#include "config.h"
-uint32_t ff_square_tab[512] = { 0, };
+/* (i - 256) * (i - 256) */
+const uint32_t ff_square_tab[512] = {
+ 65536, 65025, 64516, 64009, 63504, 63001, 62500, 62001, 61504, 61009, 60516, 60025, 59536, 59049, 58564, 58081,
+ 57600, 57121, 56644, 56169, 55696, 55225, 54756, 54289, 53824, 53361, 52900, 52441, 51984, 51529, 51076, 50625,
+ 50176, 49729, 49284, 48841, 48400, 47961, 47524, 47089, 46656, 46225, 45796, 45369, 44944, 44521, 44100, 43681,
+ 43264, 42849, 42436, 42025, 41616, 41209, 40804, 40401, 40000, 39601, 39204, 38809, 38416, 38025, 37636, 37249,
+ 36864, 36481, 36100, 35721, 35344, 34969, 34596, 34225, 33856, 33489, 33124, 32761, 32400, 32041, 31684, 31329,
+ 30976, 30625, 30276, 29929, 29584, 29241, 28900, 28561, 28224, 27889, 27556, 27225, 26896, 26569, 26244, 25921,
+ 25600, 25281, 24964, 24649, 24336, 24025, 23716, 23409, 23104, 22801, 22500, 22201, 21904, 21609, 21316, 21025,
+ 20736, 20449, 20164, 19881, 19600, 19321, 19044, 18769, 18496, 18225, 17956, 17689, 17424, 17161, 16900, 16641,
+ 16384, 16129, 15876, 15625, 15376, 15129, 14884, 14641, 14400, 14161, 13924, 13689, 13456, 13225, 12996, 12769,
+ 12544, 12321, 12100, 11881, 11664, 11449, 11236, 11025, 10816, 10609, 10404, 10201, 10000, 9801, 9604, 9409,
+ 9216, 9025, 8836, 8649, 8464, 8281, 8100, 7921, 7744, 7569, 7396, 7225, 7056, 6889, 6724, 6561,
+ 6400, 6241, 6084, 5929, 5776, 5625, 5476, 5329, 5184, 5041, 4900, 4761, 4624, 4489, 4356, 4225,
+ 4096, 3969, 3844, 3721, 3600, 3481, 3364, 3249, 3136, 3025, 2916, 2809, 2704, 2601, 2500, 2401,
+ 2304, 2209, 2116, 2025, 1936, 1849, 1764, 1681, 1600, 1521, 1444, 1369, 1296, 1225, 1156, 1089,
+ 1024, 961, 900, 841, 784, 729, 676, 625, 576, 529, 484, 441, 400, 361, 324, 289,
+ 256, 225, 196, 169, 144, 121, 100, 81, 64, 49, 36, 25, 16, 9, 4, 1,
+ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225,
+ 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961,
+ 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209,
+ 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969,
+ 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241,
+ 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025,
+ 9216, 9409, 9604, 9801, 10000, 10201, 10404, 10609, 10816, 11025, 11236, 11449, 11664, 11881, 12100, 12321,
+ 12544, 12769, 12996, 13225, 13456, 13689, 13924, 14161, 14400, 14641, 14884, 15129, 15376, 15625, 15876, 16129,
+ 16384, 16641, 16900, 17161, 17424, 17689, 17956, 18225, 18496, 18769, 19044, 19321, 19600, 19881, 20164, 20449,
+ 20736, 21025, 21316, 21609, 21904, 22201, 22500, 22801, 23104, 23409, 23716, 24025, 24336, 24649, 24964, 25281,
+ 25600, 25921, 26244, 26569, 26896, 27225, 27556, 27889, 28224, 28561, 28900, 29241, 29584, 29929, 30276, 30625,
+ 30976, 31329, 31684, 32041, 32400, 32761, 33124, 33489, 33856, 34225, 34596, 34969, 35344, 35721, 36100, 36481,
+ 36864, 37249, 37636, 38025, 38416, 38809, 39204, 39601, 40000, 40401, 40804, 41209, 41616, 42025, 42436, 42849,
+ 43264, 43681, 44100, 44521, 44944, 45369, 45796, 46225, 46656, 47089, 47524, 47961, 48400, 48841, 49284, 49729,
+ 50176, 50625, 51076, 51529, 51984, 52441, 52900, 53361, 53824, 54289, 54756, 55225, 55696, 56169, 56644, 57121,
+ 57600, 58081, 58564, 59049, 59536, 60025, 60516, 61009, 61504, 62001, 62500, 63001, 63504, 64009, 64516, 65025,
+};
static int sse4_c(MpegEncContext *v, uint8_t *pix1, uint8_t *pix2,
ptrdiff_t stride, int h)
{
int s = 0, i;
- uint32_t *sq = ff_square_tab + 256;
+ const uint32_t *sq = ff_square_tab + 256;
for (i = 0; i < h; i++) {
s += sq[pix1[0] - pix2[0]];
@@ -52,7 +86,7 @@ static int sse8_c(MpegEncContext *v, uint8_t *pix1, uint8_t *pix2,
ptrdiff_t stride, int h)
{
int s = 0, i;
- uint32_t *sq = ff_square_tab + 256;
+ const uint32_t *sq = ff_square_tab + 256;
for (i = 0; i < h; i++) {
s += sq[pix1[0] - pix2[0]];
@@ -73,7 +107,7 @@ static int sse16_c(MpegEncContext *v, uint8_t *pix1, uint8_t *pix2,
ptrdiff_t stride, int h)
{
int s = 0, i;
- uint32_t *sq = ff_square_tab + 256;
+ const uint32_t *sq = ff_square_tab + 256;
for (i = 0; i < h; i++) {
s += sq[pix1[0] - pix2[0]];
@@ -977,14 +1011,6 @@ WRAPPER8_16_SQ(quant_psnr8x8_c, quant_psnr16_c)
WRAPPER8_16_SQ(rd8x8_c, rd16_c)
WRAPPER8_16_SQ(bit8x8_c, bit16_c)
-av_cold void ff_me_cmp_init_static(void)
-{
- int i;
-
- for (i = 0; i < 512; i++)
- ff_square_tab[i] = (i - 256) * (i - 256);
-}
-
int ff_check_alignment(void)
{
static int did_fail = 0;
diff --git a/chromium/third_party/ffmpeg/libavcodec/me_cmp.h b/chromium/third_party/ffmpeg/libavcodec/me_cmp.h
index 0dbbcbb1d9a..0a589e3c3da 100644
--- a/chromium/third_party/ffmpeg/libavcodec/me_cmp.h
+++ b/chromium/third_party/ffmpeg/libavcodec/me_cmp.h
@@ -23,7 +23,7 @@
#include "avcodec.h"
-extern uint32_t ff_square_tab[512];
+extern const uint32_t ff_square_tab[512];
/* minimum alignment rules ;)
@@ -79,8 +79,6 @@ typedef struct MECmpContext {
me_cmp_func median_sad[6];
} MECmpContext;
-void ff_me_cmp_init_static(void);
-
int ff_check_alignment(void);
void ff_me_cmp_init(MECmpContext *c, AVCodecContext *avctx);
diff --git a/chromium/third_party/ffmpeg/libavcodec/mediacodec.c b/chromium/third_party/ffmpeg/libavcodec/mediacodec.c
index d492eefe0b5..b0aae43a879 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mediacodec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mediacodec.c
@@ -91,7 +91,11 @@ int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render)
MediaCodecDecContext *ctx = buffer->ctx;
int released = atomic_fetch_add(&buffer->released, 1);
- if (!released) {
+ if (!released && (ctx->delay_flush || buffer->serial == atomic_load(&ctx->serial))) {
+ atomic_fetch_sub(&ctx->hw_buffer_count, 1);
+ av_log(ctx->avctx, AV_LOG_DEBUG,
+ "Releasing output buffer %zd (%p) ts=%"PRId64" with render=%d [%d pending]\n",
+ buffer->index, buffer, buffer->pts, render, atomic_load(&ctx->hw_buffer_count));
return ff_AMediaCodec_releaseOutputBuffer(ctx->codec, buffer->index, render);
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/mediacodec_wrapper.c b/chromium/third_party/ffmpeg/libavcodec/mediacodec_wrapper.c
index dbc37bf4639..11d7f665c77 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mediacodec_wrapper.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mediacodec_wrapper.c
@@ -111,6 +111,8 @@ struct JNIAMediaFormatFields {
jmethodID init_id;
+ jmethodID contains_key_id;
+
jmethodID get_integer_id;
jmethodID get_long_id;
jmethodID get_float_id;
@@ -132,6 +134,8 @@ static const struct FFJniField jni_amediaformat_mapping[] = {
{ "android/media/MediaFormat", "<init>", "()V", FF_JNI_METHOD, offsetof(struct JNIAMediaFormatFields, init_id), 1 },
+ { "android/media/MediaFormat", "containsKey", "(Ljava/lang/String;)Z", FF_JNI_METHOD,offsetof(struct JNIAMediaFormatFields, contains_key_id), 1 },
+
{ "android/media/MediaFormat", "getInteger", "(Ljava/lang/String;)I", FF_JNI_METHOD, offsetof(struct JNIAMediaFormatFields, get_integer_id), 1 },
{ "android/media/MediaFormat", "getLong", "(Ljava/lang/String;)J", FF_JNI_METHOD, offsetof(struct JNIAMediaFormatFields, get_long_id), 1 },
{ "android/media/MediaFormat", "getFloat", "(Ljava/lang/String;)F", FF_JNI_METHOD, offsetof(struct JNIAMediaFormatFields, get_float_id), 1 },
@@ -465,7 +469,12 @@ char *ff_AMediaCodecList_getCodecNameByType(const char *mime, int profile, int e
goto done;
}
- if (strstr(name, "OMX.google")) {
+ /* Skip software decoders */
+ if (
+ strstr(name, "OMX.google") ||
+ strstr(name, "OMX.ffmpeg") ||
+ (strstr(name, "OMX.SEC") && strstr(name, ".sw.")) ||
+ !strcmp(name, "OMX.qcom.video.decoder.hevcswvdec")) {
av_freep(&name);
goto done_with_type;
}
@@ -738,6 +747,7 @@ int ff_AMediaFormat_getInt32(FFAMediaFormat* format, const char *name, int32_t *
JNIEnv *env = NULL;
jstring key = NULL;
+ jboolean contains_key;
av_assert0(format != NULL);
@@ -749,6 +759,12 @@ int ff_AMediaFormat_getInt32(FFAMediaFormat* format, const char *name, int32_t *
goto fail;
}
+ contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key);
+ if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) {
+ ret = 0;
+ goto fail;
+ }
+
*out = (*env)->CallIntMethod(env, format->object, format->jfields.get_integer_id, key);
if ((ret = ff_jni_exception_check(env, 1, format)) < 0) {
ret = 0;
@@ -770,6 +786,7 @@ int ff_AMediaFormat_getInt64(FFAMediaFormat* format, const char *name, int64_t *
JNIEnv *env = NULL;
jstring key = NULL;
+ jboolean contains_key;
av_assert0(format != NULL);
@@ -781,6 +798,12 @@ int ff_AMediaFormat_getInt64(FFAMediaFormat* format, const char *name, int64_t *
goto fail;
}
+ contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key);
+ if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) {
+ ret = 0;
+ goto fail;
+ }
+
*out = (*env)->CallLongMethod(env, format->object, format->jfields.get_long_id, key);
if ((ret = ff_jni_exception_check(env, 1, format)) < 0) {
ret = 0;
@@ -802,6 +825,7 @@ int ff_AMediaFormat_getFloat(FFAMediaFormat* format, const char *name, float *ou
JNIEnv *env = NULL;
jstring key = NULL;
+ jboolean contains_key;
av_assert0(format != NULL);
@@ -813,6 +837,12 @@ int ff_AMediaFormat_getFloat(FFAMediaFormat* format, const char *name, float *ou
goto fail;
}
+ contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key);
+ if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) {
+ ret = 0;
+ goto fail;
+ }
+
*out = (*env)->CallFloatMethod(env, format->object, format->jfields.get_float_id, key);
if ((ret = ff_jni_exception_check(env, 1, format)) < 0) {
ret = 0;
@@ -834,6 +864,7 @@ int ff_AMediaFormat_getBuffer(FFAMediaFormat* format, const char *name, void** d
JNIEnv *env = NULL;
jstring key = NULL;
+ jboolean contains_key;
jobject result = NULL;
av_assert0(format != NULL);
@@ -846,6 +877,12 @@ int ff_AMediaFormat_getBuffer(FFAMediaFormat* format, const char *name, void** d
goto fail;
}
+ contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key);
+ if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) {
+ ret = 0;
+ goto fail;
+ }
+
result = (*env)->CallObjectMethod(env, format->object, format->jfields.get_bytebuffer_id, key);
if ((ret = ff_jni_exception_check(env, 1, format)) < 0) {
ret = 0;
@@ -885,6 +922,7 @@ int ff_AMediaFormat_getString(FFAMediaFormat* format, const char *name, const ch
JNIEnv *env = NULL;
jstring key = NULL;
+ jboolean contains_key;
jstring result = NULL;
av_assert0(format != NULL);
@@ -897,6 +935,12 @@ int ff_AMediaFormat_getString(FFAMediaFormat* format, const char *name, const ch
goto fail;
}
+ contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key);
+ if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) {
+ ret = 0;
+ goto fail;
+ }
+
result = (*env)->CallObjectMethod(env, format->object, format->jfields.get_string_id, key);
if ((ret = ff_jni_exception_check(env, 1, format)) < 0) {
ret = 0;
diff --git a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec.c b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec.c
index 6c5d3ddd799..89d2421ae90 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec.c
@@ -25,10 +25,10 @@
#include "libavutil/avassert.h"
#include "libavutil/common.h"
-#include "libavutil/fifo.h"
#include "libavutil/opt.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/pixfmt.h"
+#include "libavutil/internal.h"
#include "avcodec.h"
#include "decode.h"
@@ -41,12 +41,14 @@
typedef struct MediaCodecH264DecContext {
- MediaCodecDecContext *ctx;
+ AVClass *avclass;
- AVFifoBuffer *fifo;
+ MediaCodecDecContext *ctx;
AVPacket buffered_pkt;
+ int delay_flush;
+
} MediaCodecH264DecContext;
static av_cold int mediacodec_decode_close(AVCodecContext *avctx)
@@ -56,8 +58,6 @@ static av_cold int mediacodec_decode_close(AVCodecContext *avctx)
ff_mediacodec_dec_close(avctx, s->ctx);
s->ctx = NULL;
- av_fifo_free(s->fifo);
-
av_packet_unref(&s->buffered_pkt);
return 0;
@@ -258,6 +258,8 @@ static int hevc_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format)
}
done:
+ ff_hevc_ps_uninit(&ps);
+
av_freep(&vps_data);
av_freep(&sps_data);
av_freep(&pps_data);
@@ -266,34 +268,11 @@ done:
}
#endif
-#if CONFIG_MPEG2_MEDIACODEC_DECODER
-static int mpeg2_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format)
-{
- int ret = 0;
-
- if (avctx->extradata) {
- ff_AMediaFormat_setBuffer(format, "csd-0", avctx->extradata, avctx->extradata_size);
- }
-
- return ret;
-}
-#endif
-
-#if CONFIG_MPEG4_MEDIACODEC_DECODER
-static int mpeg4_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format)
-{
- int ret = 0;
-
- if (avctx->extradata) {
- ff_AMediaFormat_setBuffer(format, "csd-0", avctx->extradata, avctx->extradata_size);
- }
-
- return ret;
-}
-#endif
-
-#if CONFIG_VP8_MEDIACODEC_DECODER || CONFIG_VP9_MEDIACODEC_DECODER
-static int vpx_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format)
+#if CONFIG_MPEG2_MEDIACODEC_DECODER || \
+ CONFIG_MPEG4_MEDIACODEC_DECODER || \
+ CONFIG_VP8_MEDIACODEC_DECODER || \
+ CONFIG_VP9_MEDIACODEC_DECODER
+static int common_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format)
{
int ret = 0;
@@ -344,7 +323,7 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx)
case AV_CODEC_ID_MPEG2VIDEO:
codec_mime = "video/mpeg2";
- ret = mpeg2_set_extradata(avctx, format);
+ ret = common_set_extradata(avctx, format);
if (ret < 0)
goto done;
break;
@@ -353,7 +332,7 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx)
case AV_CODEC_ID_MPEG4:
codec_mime = "video/mp4v-es",
- ret = mpeg4_set_extradata(avctx, format);
+ ret = common_set_extradata(avctx, format);
if (ret < 0)
goto done;
break;
@@ -362,7 +341,7 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx)
case AV_CODEC_ID_VP8:
codec_mime = "video/x-vnd.on2.vp8";
- ret = vpx_set_extradata(avctx, format);
+ ret = common_set_extradata(avctx, format);
if (ret < 0)
goto done;
break;
@@ -371,7 +350,7 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx)
case AV_CODEC_ID_VP9:
codec_mime = "video/x-vnd.on2.vp9";
- ret = vpx_set_extradata(avctx, format);
+ ret = common_set_extradata(avctx, format);
if (ret < 0)
goto done;
break;
@@ -391,6 +370,8 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx)
goto done;
}
+ s->ctx->delay_flush = s->delay_flush;
+
if ((ret = ff_mediacodec_dec_init(avctx, s->ctx, codec_mime, format)) < 0) {
s->ctx = NULL;
goto done;
@@ -398,12 +379,6 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx)
av_log(avctx, AV_LOG_INFO, "MediaCodec started successfully, ret = %d\n", ret);
- s->fifo = av_fifo_alloc(sizeof(AVPacket));
- if (!s->fifo) {
- ret = AVERROR(ENOMEM);
- goto done;
- }
-
done:
if (format) {
ff_AMediaFormat_delete(format);
@@ -416,13 +391,33 @@ done:
return ret;
}
+static int mediacodec_send_receive(AVCodecContext *avctx,
+ MediaCodecH264DecContext *s,
+ AVFrame *frame, bool wait)
+{
+ int ret;
+
+ /* send any pending data from buffered packet */
+ while (s->buffered_pkt.size) {
+ ret = ff_mediacodec_dec_send(avctx, s->ctx, &s->buffered_pkt);
+ if (ret == AVERROR(EAGAIN))
+ break;
+ else if (ret < 0)
+ return ret;
+ s->buffered_pkt.size -= ret;
+ s->buffered_pkt.data += ret;
+ if (s->buffered_pkt.size <= 0)
+ av_packet_unref(&s->buffered_pkt);
+ }
+
+ /* check for new frame */
+ return ff_mediacodec_dec_receive(avctx, s->ctx, frame, wait);
+}
+
static int mediacodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
{
MediaCodecH264DecContext *s = avctx->priv_data;
int ret;
- int got_frame = 0;
- int is_eof = 0;
- AVPacket pkt = { 0 };
/*
* MediaCodec.flush() discards both input and output buffers, thus we
@@ -450,74 +445,34 @@ static int mediacodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
}
}
- ret = ff_decode_get_packet(avctx, &pkt);
- if (ret == AVERROR_EOF)
- is_eof = 1;
- else if (ret == AVERROR(EAGAIN))
- ; /* no input packet, but fallthrough to check for pending frames */
- else if (ret < 0)
+ /* flush buffered packet and check for new frame */
+ ret = mediacodec_send_receive(avctx, s, frame, false);
+ if (ret != AVERROR(EAGAIN))
return ret;
- /* buffer the input packet */
- if (pkt.size) {
- if (av_fifo_space(s->fifo) < sizeof(pkt)) {
- ret = av_fifo_realloc2(s->fifo,
- av_fifo_size(s->fifo) + sizeof(pkt));
- if (ret < 0) {
- av_packet_unref(&pkt);
- return ret;
- }
- }
- av_fifo_generic_write(s->fifo, &pkt, sizeof(pkt), NULL);
- }
+ /* skip fetching new packet if we still have one buffered */
+ if (s->buffered_pkt.size > 0)
+ return AVERROR(EAGAIN);
- /* process buffered data */
- while (!got_frame) {
- /* prepare the input data */
- if (s->buffered_pkt.size <= 0) {
- av_packet_unref(&s->buffered_pkt);
-
- /* no more data */
- if (av_fifo_size(s->fifo) < sizeof(AVPacket)) {
- AVPacket null_pkt = { 0 };
- if (is_eof) {
- ret = ff_mediacodec_dec_decode(avctx, s->ctx, frame,
- &got_frame, &null_pkt);
- if (ret < 0)
- return ret;
- else if (got_frame)
- return 0;
- else
- return AVERROR_EOF;
- }
- return AVERROR(EAGAIN);
- }
-
- av_fifo_generic_read(s->fifo, &s->buffered_pkt, sizeof(s->buffered_pkt), NULL);
- }
-
- ret = ff_mediacodec_dec_decode(avctx, s->ctx, frame, &got_frame, &s->buffered_pkt);
+ /* fetch new packet or eof */
+ ret = ff_decode_get_packet(avctx, &s->buffered_pkt);
+ if (ret == AVERROR_EOF) {
+ AVPacket null_pkt = { 0 };
+ ret = ff_mediacodec_dec_send(avctx, s->ctx, &null_pkt);
if (ret < 0)
return ret;
-
- s->buffered_pkt.size -= ret;
- s->buffered_pkt.data += ret;
}
+ else if (ret < 0)
+ return ret;
- return 0;
+ /* crank decoder with new packet */
+ return mediacodec_send_receive(avctx, s, frame, true);
}
static void mediacodec_decode_flush(AVCodecContext *avctx)
{
MediaCodecH264DecContext *s = avctx->priv_data;
- while (av_fifo_size(s->fifo)) {
- AVPacket pkt;
- av_fifo_generic_read(s->fifo, &pkt, sizeof(pkt), NULL);
- av_packet_unref(&pkt);
- }
- av_fifo_reset(s->fifo);
-
av_packet_unref(&s->buffered_pkt);
ff_mediacodec_dec_flush(avctx, s->ctx);
@@ -536,112 +491,62 @@ static const AVCodecHWConfigInternal *mediacodec_hw_configs[] = {
NULL
};
-#if CONFIG_H264_MEDIACODEC_DECODER
-AVCodec ff_h264_mediacodec_decoder = {
- .name = "h264_mediacodec",
- .long_name = NULL_IF_CONFIG_SMALL("H.264 Android MediaCodec decoder"),
- .type = AVMEDIA_TYPE_VIDEO,
- .id = AV_CODEC_ID_H264,
- .priv_data_size = sizeof(MediaCodecH264DecContext),
- .init = mediacodec_decode_init,
- .receive_frame = mediacodec_receive_frame,
- .flush = mediacodec_decode_flush,
- .close = mediacodec_decode_close,
- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HARDWARE,
- .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS,
- .bsfs = "h264_mp4toannexb",
- .hw_configs = mediacodec_hw_configs,
- .wrapper_name = "mediacodec",
+#define OFFSET(x) offsetof(MediaCodecH264DecContext, x)
+#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
+static const AVOption ff_mediacodec_vdec_options[] = {
+ { "delay_flush", "Delay flush until hw output buffers are returned to the decoder",
+ OFFSET(delay_flush), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, VD },
+ { NULL }
+};
+
+#define DECLARE_MEDIACODEC_VCLASS(short_name) \
+static const AVClass ff_##short_name##_mediacodec_dec_class = { \
+ .class_name = #short_name "_mediacodec", \
+ .item_name = av_default_item_name, \
+ .option = ff_mediacodec_vdec_options, \
+ .version = LIBAVUTIL_VERSION_INT, \
};
+
+#define DECLARE_MEDIACODEC_VDEC(short_name, full_name, codec_id, bsf) \
+DECLARE_MEDIACODEC_VCLASS(short_name) \
+AVCodec ff_##short_name##_mediacodec_decoder = { \
+ .name = #short_name "_mediacodec", \
+ .long_name = NULL_IF_CONFIG_SMALL(full_name " Android MediaCodec decoder"), \
+ .type = AVMEDIA_TYPE_VIDEO, \
+ .id = codec_id, \
+ .priv_class = &ff_##short_name##_mediacodec_dec_class, \
+ .priv_data_size = sizeof(MediaCodecH264DecContext), \
+ .init = mediacodec_decode_init, \
+ .receive_frame = mediacodec_receive_frame, \
+ .flush = mediacodec_decode_flush, \
+ .close = mediacodec_decode_close, \
+ .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HARDWARE, \
+ .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS, \
+ .bsfs = bsf, \
+ .hw_configs = mediacodec_hw_configs, \
+ .wrapper_name = "mediacodec", \
+}; \
+
+#if CONFIG_H264_MEDIACODEC_DECODER
+DECLARE_MEDIACODEC_VDEC(h264, "H.264", AV_CODEC_ID_H264, "h264_mp4toannexb")
#endif
#if CONFIG_HEVC_MEDIACODEC_DECODER
-AVCodec ff_hevc_mediacodec_decoder = {
- .name = "hevc_mediacodec",
- .long_name = NULL_IF_CONFIG_SMALL("H.265 Android MediaCodec decoder"),
- .type = AVMEDIA_TYPE_VIDEO,
- .id = AV_CODEC_ID_HEVC,
- .priv_data_size = sizeof(MediaCodecH264DecContext),
- .init = mediacodec_decode_init,
- .receive_frame = mediacodec_receive_frame,
- .flush = mediacodec_decode_flush,
- .close = mediacodec_decode_close,
- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HARDWARE,
- .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS,
- .bsfs = "hevc_mp4toannexb",
- .hw_configs = mediacodec_hw_configs,
- .wrapper_name = "mediacodec",
-};
+DECLARE_MEDIACODEC_VDEC(hevc, "H.265", AV_CODEC_ID_HEVC, "hevc_mp4toannexb")
#endif
#if CONFIG_MPEG2_MEDIACODEC_DECODER
-AVCodec ff_mpeg2_mediacodec_decoder = {
- .name = "mpeg2_mediacodec",
- .long_name = NULL_IF_CONFIG_SMALL("MPEG-2 Android MediaCodec decoder"),
- .type = AVMEDIA_TYPE_VIDEO,
- .id = AV_CODEC_ID_MPEG2VIDEO,
- .priv_data_size = sizeof(MediaCodecH264DecContext),
- .init = mediacodec_decode_init,
- .receive_frame = mediacodec_receive_frame,
- .flush = mediacodec_decode_flush,
- .close = mediacodec_decode_close,
- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HARDWARE,
- .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS,
- .hw_configs = mediacodec_hw_configs,
- .wrapper_name = "mediacodec",
-};
+DECLARE_MEDIACODEC_VDEC(mpeg2, "MPEG-2", AV_CODEC_ID_MPEG2VIDEO, NULL)
#endif
#if CONFIG_MPEG4_MEDIACODEC_DECODER
-AVCodec ff_mpeg4_mediacodec_decoder = {
- .name = "mpeg4_mediacodec",
- .long_name = NULL_IF_CONFIG_SMALL("MPEG-4 Android MediaCodec decoder"),
- .type = AVMEDIA_TYPE_VIDEO,
- .id = AV_CODEC_ID_MPEG4,
- .priv_data_size = sizeof(MediaCodecH264DecContext),
- .init = mediacodec_decode_init,
- .receive_frame = mediacodec_receive_frame,
- .flush = mediacodec_decode_flush,
- .close = mediacodec_decode_close,
- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HARDWARE,
- .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS,
- .hw_configs = mediacodec_hw_configs,
- .wrapper_name = "mediacodec",
-};
+DECLARE_MEDIACODEC_VDEC(mpeg4, "MPEG-4", AV_CODEC_ID_MPEG4, NULL)
#endif
#if CONFIG_VP8_MEDIACODEC_DECODER
-AVCodec ff_vp8_mediacodec_decoder = {
- .name = "vp8_mediacodec",
- .long_name = NULL_IF_CONFIG_SMALL("VP8 Android MediaCodec decoder"),
- .type = AVMEDIA_TYPE_VIDEO,
- .id = AV_CODEC_ID_VP8,
- .priv_data_size = sizeof(MediaCodecH264DecContext),
- .init = mediacodec_decode_init,
- .receive_frame = mediacodec_receive_frame,
- .flush = mediacodec_decode_flush,
- .close = mediacodec_decode_close,
- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HARDWARE,
- .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS,
- .hw_configs = mediacodec_hw_configs,
- .wrapper_name = "mediacodec",
-};
+DECLARE_MEDIACODEC_VDEC(vp8, "VP8", AV_CODEC_ID_VP8, NULL)
#endif
#if CONFIG_VP9_MEDIACODEC_DECODER
-AVCodec ff_vp9_mediacodec_decoder = {
- .name = "vp9_mediacodec",
- .long_name = NULL_IF_CONFIG_SMALL("VP9 Android MediaCodec decoder"),
- .type = AVMEDIA_TYPE_VIDEO,
- .id = AV_CODEC_ID_VP9,
- .priv_data_size = sizeof(MediaCodecH264DecContext),
- .init = mediacodec_decode_init,
- .receive_frame = mediacodec_receive_frame,
- .flush = mediacodec_decode_flush,
- .close = mediacodec_decode_close,
- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HARDWARE,
- .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS,
- .hw_configs = mediacodec_hw_configs,
- .wrapper_name = "mediacodec",
-};
+DECLARE_MEDIACODEC_VDEC(vp9, "VP9", AV_CODEC_ID_VP9, NULL)
#endif
diff --git a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c
index a9147f3a086..635ee73486d 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c
@@ -178,11 +178,16 @@ static void mediacodec_buffer_release(void *opaque, uint8_t *data)
MediaCodecDecContext *ctx = buffer->ctx;
int released = atomic_load(&buffer->released);
- if (!released) {
+ if (!released && (ctx->delay_flush || buffer->serial == atomic_load(&ctx->serial))) {
+ atomic_fetch_sub(&ctx->hw_buffer_count, 1);
+ av_log(ctx->avctx, AV_LOG_DEBUG,
+ "Releasing output buffer %zd (%p) ts=%"PRId64" on free() [%d pending]\n",
+ buffer->index, buffer, buffer->pts, atomic_load(&ctx->hw_buffer_count));
ff_AMediaCodec_releaseOutputBuffer(ctx->codec, buffer->index, 0);
}
- ff_mediacodec_dec_unref(ctx);
+ if (ctx->delay_flush)
+ ff_mediacodec_dec_unref(ctx);
av_freep(&buffer);
}
@@ -236,13 +241,20 @@ FF_ENABLE_DEPRECATION_WARNINGS
}
buffer->ctx = s;
- ff_mediacodec_dec_ref(s);
+ buffer->serial = atomic_load(&s->serial);
+ if (s->delay_flush)
+ ff_mediacodec_dec_ref(s);
buffer->index = index;
buffer->pts = info->presentationTimeUs;
frame->data[3] = (uint8_t *)buffer;
+ atomic_fetch_add(&s->hw_buffer_count, 1);
+ av_log(avctx, AV_LOG_DEBUG,
+ "Wrapping output buffer %zd (%p) ts=%"PRId64" [%d pending]\n",
+ buffer->index, buffer, buffer->pts, atomic_load(&s->hw_buffer_count));
+
return 0;
fail:
av_freep(buffer);
@@ -297,7 +309,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
#endif
frame->pkt_dts = AV_NOPTS_VALUE;
- av_log(avctx, AV_LOG_DEBUG,
+ av_log(avctx, AV_LOG_TRACE,
"Frame: width=%d stride=%d height=%d slice-height=%d "
"crop-top=%d crop-bottom=%d crop-left=%d crop-right=%d encoder=%s\n"
"destination linesizes=%d,%d,%d\n" ,
@@ -339,11 +351,22 @@ done:
return ret;
}
+#define AMEDIAFORMAT_GET_INT32(name, key, mandatory) do { \
+ int32_t value = 0; \
+ if (ff_AMediaFormat_getInt32(s->format, key, &value)) { \
+ (name) = value; \
+ } else if (mandatory) { \
+ av_log(avctx, AV_LOG_ERROR, "Could not get %s from format %s\n", key, format); \
+ ret = AVERROR_EXTERNAL; \
+ goto fail; \
+ } \
+} while (0) \
+
static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecContext *s)
{
+ int ret = 0;
int width = 0;
int height = 0;
- int32_t value = 0;
char *format = NULL;
if (!s->format) {
@@ -356,40 +379,16 @@ static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecConte
return AVERROR_EXTERNAL;
}
av_log(avctx, AV_LOG_DEBUG, "Parsing MediaFormat %s\n", format);
- av_freep(&format);
/* Mandatory fields */
- if (!ff_AMediaFormat_getInt32(s->format, "width", &value)) {
- format = ff_AMediaFormat_toString(s->format);
- av_log(avctx, AV_LOG_ERROR, "Could not get %s from format %s\n", "width", format);
- av_freep(&format);
- return AVERROR_EXTERNAL;
- }
- s->width = value;
+ AMEDIAFORMAT_GET_INT32(s->width, "width", 1);
+ AMEDIAFORMAT_GET_INT32(s->height, "height", 1);
- if (!ff_AMediaFormat_getInt32(s->format, "height", &value)) {
- format = ff_AMediaFormat_toString(s->format);
- av_log(avctx, AV_LOG_ERROR, "Could not get %s from format %s\n", "height", format);
- av_freep(&format);
- return AVERROR_EXTERNAL;
- }
- s->height = value;
+ AMEDIAFORMAT_GET_INT32(s->stride, "stride", 1);
+ s->stride = s->stride > 0 ? s->stride : s->width;
- if (!ff_AMediaFormat_getInt32(s->format, "stride", &value)) {
- format = ff_AMediaFormat_toString(s->format);
- av_log(avctx, AV_LOG_ERROR, "Could not get %s from format %s\n", "stride", format);
- av_freep(&format);
- return AVERROR_EXTERNAL;
- }
- s->stride = value > 0 ? value : s->width;
-
- if (!ff_AMediaFormat_getInt32(s->format, "slice-height", &value)) {
- format = ff_AMediaFormat_toString(s->format);
- av_log(avctx, AV_LOG_ERROR, "Could not get %s from format %s\n", "slice-height", format);
- av_freep(&format);
- return AVERROR_EXTERNAL;
- }
- s->slice_height = value > 0 ? value : s->height;
+ AMEDIAFORMAT_GET_INT32(s->slice_height, "slice-height", 1);
+ s->slice_height = s->slice_height > 0 ? s->slice_height : s->height;
if (strstr(s->codec_name, "OMX.Nvidia.")) {
s->slice_height = FFALIGN(s->height, 16);
@@ -398,32 +397,19 @@ static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecConte
s->stride = avctx->width;
}
- if (!ff_AMediaFormat_getInt32(s->format, "color-format", &value)) {
- format = ff_AMediaFormat_toString(s->format);
- av_log(avctx, AV_LOG_ERROR, "Could not get %s from format %s\n", "color-format", format);
- av_freep(&format);
- return AVERROR_EXTERNAL;
- }
- s->color_format = value;
-
- s->pix_fmt = avctx->pix_fmt = mcdec_map_color_format(avctx, s, value);
+ AMEDIAFORMAT_GET_INT32(s->color_format, "color-format", 1);
+ avctx->pix_fmt = mcdec_map_color_format(avctx, s, s->color_format);
if (avctx->pix_fmt == AV_PIX_FMT_NONE) {
av_log(avctx, AV_LOG_ERROR, "Output color format is not supported\n");
- return AVERROR(EINVAL);
+ ret = AVERROR(EINVAL);
+ goto fail;
}
/* Optional fields */
- if (ff_AMediaFormat_getInt32(s->format, "crop-top", &value))
- s->crop_top = value;
-
- if (ff_AMediaFormat_getInt32(s->format, "crop-bottom", &value))
- s->crop_bottom = value;
-
- if (ff_AMediaFormat_getInt32(s->format, "crop-left", &value))
- s->crop_left = value;
-
- if (ff_AMediaFormat_getInt32(s->format, "crop-right", &value))
- s->crop_right = value;
+ AMEDIAFORMAT_GET_INT32(s->crop_top, "crop-top", 0);
+ AMEDIAFORMAT_GET_INT32(s->crop_bottom, "crop-bottom", 0);
+ AMEDIAFORMAT_GET_INT32(s->crop_left, "crop-left", 0);
+ AMEDIAFORMAT_GET_INT32(s->crop_right, "crop-right", 0);
width = s->crop_right + 1 - s->crop_left;
height = s->crop_bottom + 1 - s->crop_top;
@@ -434,10 +420,13 @@ static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecConte
s->crop_top, s->crop_bottom, s->crop_left, s->crop_right,
width, height);
+ av_freep(&format);
return ff_set_dimensions(avctx, width, height);
+fail:
+ av_freep(&format);
+ return ret;
}
-
static int mediacodec_dec_flush_codec(AVCodecContext *avctx, MediaCodecDecContext *s)
{
FFAMediaCodec *codec = s->codec;
@@ -448,6 +437,8 @@ static int mediacodec_dec_flush_codec(AVCodecContext *avctx, MediaCodecDecContex
s->draining = 0;
s->flushing = 0;
s->eos = 0;
+ atomic_fetch_add(&s->serial, 1);
+ atomic_init(&s->hw_buffer_count, 0);
status = ff_AMediaCodec_flush(codec);
if (status < 0) {
@@ -471,7 +462,10 @@ int ff_mediacodec_dec_init(AVCodecContext *avctx, MediaCodecDecContext *s,
AV_PIX_FMT_NONE,
};
+ s->avctx = avctx;
atomic_init(&s->refcount, 1);
+ atomic_init(&s->hw_buffer_count, 0);
+ atomic_init(&s->serial, 1);
pix_fmt = ff_get_format(avctx, pix_fmts);
if (pix_fmt == AV_PIX_FMT_MEDIACODEC) {
@@ -555,23 +549,17 @@ fail:
return ret;
}
-int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
- AVFrame *frame, int *got_frame,
- AVPacket *pkt)
+int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s,
+ AVPacket *pkt)
{
- int ret;
int offset = 0;
int need_draining = 0;
uint8_t *data;
ssize_t index;
size_t size;
FFAMediaCodec *codec = s->codec;
- FFAMediaCodecBufferInfo info = { 0 };
-
int status;
-
int64_t input_dequeue_timeout_us = INPUT_DEQUEUE_TIMEOUT_US;
- int64_t output_dequeue_timeout_us = OUTPUT_DEQUEUE_TIMEOUT_US;
if (s->flushing) {
av_log(avctx, AV_LOG_ERROR, "Decoder is flushing and cannot accept new buffer "
@@ -584,13 +572,14 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
}
if (s->draining && s->eos) {
- return 0;
+ return AVERROR_EOF;
}
while (offset < pkt->size || (need_draining && !s->draining)) {
index = ff_AMediaCodec_dequeueInputBuffer(codec, input_dequeue_timeout_us);
if (ff_AMediaCodec_infoTryAgainLater(codec, index)) {
+ av_log(avctx, AV_LOG_TRACE, "No input buffer available, try again later\n");
break;
}
@@ -621,13 +610,15 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
return AVERROR_EXTERNAL;
}
+ av_log(avctx, AV_LOG_TRACE,
+ "Queued input buffer %zd size=%zd ts=%"PRIi64"\n", index, size, pts);
+
s->draining = 1;
break;
} else {
int64_t pts = pkt->pts;
size = FFMIN(pkt->size - offset, size);
-
memcpy(data, pkt->data + offset, size);
offset += size;
@@ -640,14 +631,38 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
av_log(avctx, AV_LOG_ERROR, "Failed to queue input buffer (status = %d)\n", status);
return AVERROR_EXTERNAL;
}
+
+ av_log(avctx, AV_LOG_TRACE,
+ "Queued input buffer %zd size=%zd ts=%"PRIi64"\n", index, size, pts);
}
}
- if (need_draining || s->draining) {
+ if (offset == 0)
+ return AVERROR(EAGAIN);
+ return offset;
+}
+
+int ff_mediacodec_dec_receive(AVCodecContext *avctx, MediaCodecDecContext *s,
+ AVFrame *frame, bool wait)
+{
+ int ret;
+ uint8_t *data;
+ ssize_t index;
+ size_t size;
+ FFAMediaCodec *codec = s->codec;
+ FFAMediaCodecBufferInfo info = { 0 };
+ int status;
+ int64_t output_dequeue_timeout_us = OUTPUT_DEQUEUE_TIMEOUT_US;
+
+ if (s->draining && s->eos) {
+ return AVERROR_EOF;
+ }
+
+ if (s->draining) {
/* If the codec is flushing or need to be flushed, block for a fair
* amount of time to ensure we got a frame */
output_dequeue_timeout_us = OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US;
- } else if (s->output_buffer_count == 0) {
+ } else if (s->output_buffer_count == 0 || !wait) {
/* If the codec hasn't produced any frames, do not block so we
* can push data to it as fast as possible, and get the first
* frame */
@@ -656,9 +671,7 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
index = ff_AMediaCodec_dequeueOutputBuffer(codec, &info, output_dequeue_timeout_us);
if (index >= 0) {
- int ret;
-
- av_log(avctx, AV_LOG_DEBUG, "Got output buffer %zd"
+ av_log(avctx, AV_LOG_TRACE, "Got output buffer %zd"
" offset=%" PRIi32 " size=%" PRIi32 " ts=%" PRIi64
" flags=%" PRIu32 "\n", index, info.offset, info.size,
info.presentationTimeUs, info.flags);
@@ -686,8 +699,8 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
}
}
- *got_frame = 1;
s->output_buffer_count++;
+ return 0;
} else {
status = ff_AMediaCodec_releaseOutputBuffer(codec, index, 0);
if (status < 0) {
@@ -730,14 +743,14 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
"while draining remaining frames, output will probably lack frames\n",
output_dequeue_timeout_us / 1000);
} else {
- av_log(avctx, AV_LOG_DEBUG, "No output buffer available, try again later\n");
+ av_log(avctx, AV_LOG_TRACE, "No output buffer available, try again later\n");
}
} else {
av_log(avctx, AV_LOG_ERROR, "Failed to dequeue output buffer (status=%zd)\n", index);
return AVERROR_EXTERNAL;
}
- return offset;
+ return AVERROR(EAGAIN);
}
int ff_mediacodec_dec_flush(AVCodecContext *avctx, MediaCodecDecContext *s)
diff --git a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h
index 10f38277b54..4f3b4f9fa58 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h
+++ b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h
@@ -25,6 +25,7 @@
#include <stdint.h>
#include <stdatomic.h>
+#include <stdbool.h>
#include <sys/types.h>
#include "libavutil/frame.h"
@@ -35,7 +36,9 @@
typedef struct MediaCodecDecContext {
+ AVCodecContext *avctx;
atomic_int refcount;
+ atomic_int hw_buffer_count;
char *codec_name;
@@ -54,7 +57,6 @@ typedef struct MediaCodecDecContext {
int stride;
int slice_height;
int color_format;
- enum AVPixelFormat pix_fmt;
int crop_top;
int crop_bottom;
int crop_left;
@@ -62,6 +64,9 @@ typedef struct MediaCodecDecContext {
uint64_t output_buffer_count;
+ bool delay_flush;
+ atomic_int serial;
+
} MediaCodecDecContext;
int ff_mediacodec_dec_init(AVCodecContext *avctx,
@@ -69,11 +74,14 @@ int ff_mediacodec_dec_init(AVCodecContext *avctx,
const char *mime,
FFAMediaFormat *format);
-int ff_mediacodec_dec_decode(AVCodecContext *avctx,
- MediaCodecDecContext *s,
- AVFrame *frame,
- int *got_frame,
- AVPacket *pkt);
+int ff_mediacodec_dec_send(AVCodecContext *avctx,
+ MediaCodecDecContext *s,
+ AVPacket *pkt);
+
+int ff_mediacodec_dec_receive(AVCodecContext *avctx,
+ MediaCodecDecContext *s,
+ AVFrame *frame,
+ bool wait);
int ff_mediacodec_dec_flush(AVCodecContext *avctx,
MediaCodecDecContext *s);
@@ -90,6 +98,7 @@ typedef struct MediaCodecBuffer {
ssize_t index;
int64_t pts;
atomic_int released;
+ int serial;
} MediaCodecBuffer;
diff --git a/chromium/third_party/ffmpeg/libavcodec/mjpegdec.c b/chromium/third_party/ffmpeg/libavcodec/mjpegdec.c
index e005dd0cd3b..beef174618f 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mjpegdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mjpegdec.c
@@ -36,6 +36,7 @@
#include "avcodec.h"
#include "blockdsp.h"
#include "copy_block.h"
+#include "hwaccel.h"
#include "idctdsp.h"
#include "internal.h"
#include "jpegtables.h"
@@ -147,6 +148,7 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx)
s->org_height = avctx->coded_height;
avctx->chroma_sample_location = AVCHROMA_LOC_CENTER;
avctx->colorspace = AVCOL_SPC_BT470BG;
+ s->hwaccel_pix_fmt = s->hwaccel_sw_pix_fmt = AV_PIX_FMT_NONE;
if ((ret = build_basic_mjpeg_vlc(s)) < 0)
return ret;
@@ -279,13 +281,18 @@ int ff_mjpeg_decode_dht(MJpegDecodeContext *s)
code_max + 1, 0, 0)) < 0)
return ret;
}
+
+ for (i = 0; i < 16; i++)
+ s->raw_huffman_lengths[class][index][i] = bits_table[i + 1];
+ for (i = 0; i < 256; i++)
+ s->raw_huffman_values[class][index][i] = val_table[i];
}
return 0;
}
int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
{
- int len, nb_components, i, width, height, bits, ret;
+ int len, nb_components, i, width, height, bits, ret, size_change;
unsigned pix_fmt_id;
int h_count[MAX_COMPONENTS] = { 0 };
int v_count[MAX_COMPONENTS] = { 0 };
@@ -392,6 +399,7 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
if (width != s->width || height != s->height || bits != s->bits ||
memcmp(s->h_count, h_count, sizeof(h_count)) ||
memcmp(s->v_count, v_count, sizeof(v_count))) {
+ size_change = 1;
s->width = width;
s->height = height;
@@ -418,6 +426,8 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
return ret;
s->first_picture = 0;
+ } else {
+ size_change = 0;
}
if (s->got_picture && s->interlaced && (s->bottom_field == !s->interlace_polarity)) {
@@ -636,6 +646,27 @@ unk_pixfmt:
return AVERROR_BUG;
}
+ if (s->avctx->pix_fmt == s->hwaccel_sw_pix_fmt && !size_change) {
+ s->avctx->pix_fmt = s->hwaccel_pix_fmt;
+ } else {
+ enum AVPixelFormat pix_fmts[] = {
+#if CONFIG_MJPEG_NVDEC_HWACCEL
+ AV_PIX_FMT_CUDA,
+#endif
+#if CONFIG_MJPEG_VAAPI_HWACCEL
+ AV_PIX_FMT_VAAPI,
+#endif
+ s->avctx->pix_fmt,
+ AV_PIX_FMT_NONE,
+ };
+ s->hwaccel_pix_fmt = ff_get_format(s->avctx, pix_fmts);
+ if (s->hwaccel_pix_fmt < 0)
+ return AVERROR(EINVAL);
+
+ s->hwaccel_sw_pix_fmt = s->avctx->pix_fmt;
+ s->avctx->pix_fmt = s->hwaccel_pix_fmt;
+ }
+
if (s->avctx->skip_frame == AVDISCARD_ALL) {
s->picture_ptr->pict_type = AV_PICTURE_TYPE_I;
s->picture_ptr->key_frame = 1;
@@ -683,6 +714,19 @@ unk_pixfmt:
}
memset(s->coefs_finished, 0, sizeof(s->coefs_finished));
}
+
+ if (s->avctx->hwaccel) {
+ s->hwaccel_picture_private =
+ av_mallocz(s->avctx->hwaccel->frame_priv_data_size);
+ if (!s->hwaccel_picture_private)
+ return AVERROR(ENOMEM);
+
+ ret = s->avctx->hwaccel->start_frame(s->avctx, s->raw_image_buffer,
+ s->raw_image_buffer_size);
+ if (ret < 0)
+ return ret;
+ }
+
return 0;
}
@@ -715,7 +759,7 @@ static int decode_block(MJpegDecodeContext *s, int16_t *block, int component,
av_log(s->avctx, AV_LOG_ERROR, "error dc\n");
return AVERROR_INVALIDDATA;
}
- val = val * quant_matrix[0] + s->last_dc[component];
+ val = val * (unsigned)quant_matrix[0] + s->last_dc[component];
val = av_clip_int16(val);
s->last_dc[component] = val;
block[0] = val;
@@ -1510,7 +1554,6 @@ int ff_mjpeg_decode_sos(MJpegDecodeContext *s, const uint8_t *mb_bitmask,
}
}
- av_assert0(s->picture_ptr->data[0]);
/* XXX: verify len field validity */
len = get_bits(&s->gb, 16);
nb_components = get_bits(&s->gb, 8);
@@ -1600,7 +1643,18 @@ next_field:
for (i = 0; i < nb_components; i++)
s->last_dc[i] = (4 << s->bits);
- if (s->lossless) {
+ if (s->avctx->hwaccel) {
+ int bytes_to_start = get_bits_count(&s->gb) / 8;
+ av_assert0(bytes_to_start >= 0 &&
+ s->raw_scan_buffer_size >= bytes_to_start);
+
+ ret = s->avctx->hwaccel->decode_slice(s->avctx,
+ s->raw_scan_buffer + bytes_to_start,
+ s->raw_scan_buffer_size - bytes_to_start);
+ if (ret < 0)
+ return ret;
+
+ } else if (s->lossless) {
av_assert0(s->picture_ptr == s->picture);
if (CONFIG_JPEGLS_DECODER && s->ls) {
// for () {
@@ -2278,6 +2332,8 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
case SOI:
s->restart_interval = 0;
s->restart_count = 0;
+ s->raw_image_buffer = buf_ptr;
+ s->raw_image_buffer_size = buf_end - buf_ptr;
/* nothing to do on SOI */
break;
case DHT:
@@ -2288,6 +2344,10 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
break;
case SOF0:
case SOF1:
+ if (start_code == SOF0)
+ s->avctx->profile = FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT;
+ else
+ s->avctx->profile = FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT;
s->lossless = 0;
s->ls = 0;
s->progressive = 0;
@@ -2295,6 +2355,7 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
goto fail;
break;
case SOF2:
+ s->avctx->profile = FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT;
s->lossless = 0;
s->ls = 0;
s->progressive = 1;
@@ -2302,6 +2363,7 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
goto fail;
break;
case SOF3:
+ s->avctx->profile = FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS;
s->avctx->properties |= FF_CODEC_PROPERTY_LOSSLESS;
s->lossless = 1;
s->ls = 0;
@@ -2310,6 +2372,7 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
goto fail;
break;
case SOF48:
+ s->avctx->profile = FF_PROFILE_MJPEG_JPEG_LS;
s->avctx->properties |= FF_CODEC_PROPERTY_LOSSLESS;
s->lossless = 1;
s->ls = 1;
@@ -2324,7 +2387,8 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
break;
case EOI:
eoi_parser:
- if (avctx->skip_frame != AVDISCARD_ALL && s->progressive && s->cur_scan && s->got_picture)
+ if (!avctx->hwaccel && avctx->skip_frame != AVDISCARD_ALL &&
+ s->progressive && s->cur_scan && s->got_picture)
mjpeg_idct_scan_progressive_ac(s);
s->cur_scan = 0;
if (!s->got_picture) {
@@ -2342,6 +2406,13 @@ eoi_parser:
s->got_picture = 0;
goto the_end_no_picture;
}
+ if (s->avctx->hwaccel) {
+ ret = s->avctx->hwaccel->end_frame(s->avctx);
+ if (ret < 0)
+ return ret;
+
+ av_freep(&s->hwaccel_picture_private);
+ }
if ((ret = av_frame_ref(frame, s->picture_ptr)) < 0)
return ret;
*got_frame = 1;
@@ -2364,6 +2435,9 @@ eoi_parser:
goto the_end;
case SOS:
+ s->raw_scan_buffer = buf_ptr;
+ s->raw_scan_buffer_size = buf_end - buf_ptr;
+
s->cur_scan++;
if (avctx->skip_frame == AVDISCARD_ALL) {
skip_bits(&s->gb, get_bits_left(&s->gb));
@@ -2666,6 +2740,8 @@ av_cold int ff_mjpeg_decode_end(AVCodecContext *avctx)
reset_icc_profile(s);
+ av_freep(&s->hwaccel_picture_private);
+
return 0;
}
@@ -2706,6 +2782,15 @@ AVCodec ff_mjpeg_decoder = {
.priv_class = &mjpegdec_class,
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM,
+ .hw_configs = (const AVCodecHWConfigInternal*[]) {
+#if CONFIG_MJPEG_NVDEC_HWACCEL
+ HWACCEL_NVDEC(mjpeg),
+#endif
+#if CONFIG_MJPEG_VAAPI_HWACCEL
+ HWACCEL_VAAPI(mjpeg),
+#endif
+ NULL
+ },
};
#endif
#if CONFIG_THP_DECODER
diff --git a/chromium/third_party/ffmpeg/libavcodec/mjpegdec.h b/chromium/third_party/ffmpeg/libavcodec/mjpegdec.h
index c36fba5f228..ff301bcb937 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mjpegdec.h
+++ b/chromium/third_party/ffmpeg/libavcodec/mjpegdec.h
@@ -137,6 +137,19 @@ typedef struct MJpegDecodeContext {
int *iccdatalens;
int iccnum;
int iccread;
+
+ // Raw stream data for hwaccel use.
+ const uint8_t *raw_image_buffer;
+ size_t raw_image_buffer_size;
+ const uint8_t *raw_scan_buffer;
+ size_t raw_scan_buffer_size;
+
+ uint8_t raw_huffman_lengths[2][4][16];
+ uint8_t raw_huffman_values[2][4][256];
+
+ enum AVPixelFormat hwaccel_sw_pix_fmt;
+ enum AVPixelFormat hwaccel_pix_fmt;
+ void *hwaccel_picture_private;
} MJpegDecodeContext;
int ff_mjpeg_decode_init(AVCodecContext *avctx);
diff --git a/chromium/third_party/ffmpeg/libavcodec/mlp_parser.c b/chromium/third_party/ffmpeg/libavcodec/mlp_parser.c
index 3c0330f777c..185bd4d667f 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mlp_parser.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mlp_parser.c
@@ -256,66 +256,70 @@ static int mlp_parse(AVCodecParserContext *s,
if (buf_size == 0)
return 0;
- if (!mp->in_sync) {
- // Not in sync - find a major sync header
-
- for (i = 0; i < buf_size; i++) {
- mp->pc.state = (mp->pc.state << 8) | buf[i];
- if ((mp->pc.state & 0xfffffffe) == 0xf8726fba &&
- // ignore if we do not have the data for the start of header
- mp->pc.index + i >= 7) {
- mp->in_sync = 1;
- mp->bytes_left = 0;
- break;
+ if (s->flags & PARSER_FLAG_COMPLETE_FRAMES) {
+ next = buf_size;
+ } else {
+ if (!mp->in_sync) {
+ // Not in sync - find a major sync header
+
+ for (i = 0; i < buf_size; i++) {
+ mp->pc.state = (mp->pc.state << 8) | buf[i];
+ if ((mp->pc.state & 0xfffffffe) == 0xf8726fba &&
+ // ignore if we do not have the data for the start of header
+ mp->pc.index + i >= 7) {
+ mp->in_sync = 1;
+ mp->bytes_left = 0;
+ break;
+ }
}
- }
- if (!mp->in_sync) {
- if (ff_combine_frame(&mp->pc, END_NOT_FOUND, &buf, &buf_size) != -1)
+ if (!mp->in_sync) {
+ if (ff_combine_frame(&mp->pc, END_NOT_FOUND, &buf, &buf_size) != -1)
+ av_log(avctx, AV_LOG_WARNING, "ff_combine_frame failed\n");
+ return buf_size;
+ }
+
+ if ((ret = ff_combine_frame(&mp->pc, i - 7, &buf, &buf_size)) < 0) {
av_log(avctx, AV_LOG_WARNING, "ff_combine_frame failed\n");
- return buf_size;
- }
+ return ret;
+ }
- if ((ret = ff_combine_frame(&mp->pc, i - 7, &buf, &buf_size)) < 0) {
- av_log(avctx, AV_LOG_WARNING, "ff_combine_frame failed\n");
- return ret;
+ return i - 7;
}
- return i - 7;
- }
+ if (mp->bytes_left == 0) {
+ // Find length of this packet
+
+ /* Copy overread bytes from last frame into buffer. */
+ for(; mp->pc.overread>0; mp->pc.overread--) {
+ mp->pc.buffer[mp->pc.index++]= mp->pc.buffer[mp->pc.overread_index++];
+ }
- if (mp->bytes_left == 0) {
- // Find length of this packet
+ if (mp->pc.index + buf_size < 2) {
+ if (ff_combine_frame(&mp->pc, END_NOT_FOUND, &buf, &buf_size) != -1)
+ av_log(avctx, AV_LOG_WARNING, "ff_combine_frame failed\n");
+ return buf_size;
+ }
- /* Copy overread bytes from last frame into buffer. */
- for(; mp->pc.overread>0; mp->pc.overread--) {
- mp->pc.buffer[mp->pc.index++]= mp->pc.buffer[mp->pc.overread_index++];
+ mp->bytes_left = ((mp->pc.index > 0 ? mp->pc.buffer[0] : buf[0]) << 8)
+ | (mp->pc.index > 1 ? mp->pc.buffer[1] : buf[1-mp->pc.index]);
+ mp->bytes_left = (mp->bytes_left & 0xfff) * 2;
+ if (mp->bytes_left <= 0) { // prevent infinite loop
+ goto lost_sync;
+ }
+ mp->bytes_left -= mp->pc.index;
}
- if (mp->pc.index + buf_size < 2) {
- if (ff_combine_frame(&mp->pc, END_NOT_FOUND, &buf, &buf_size) != -1)
- av_log(avctx, AV_LOG_WARNING, "ff_combine_frame failed\n");
- return buf_size;
- }
+ next = (mp->bytes_left > buf_size) ? END_NOT_FOUND : mp->bytes_left;
- mp->bytes_left = ((mp->pc.index > 0 ? mp->pc.buffer[0] : buf[0]) << 8)
- | (mp->pc.index > 1 ? mp->pc.buffer[1] : buf[1-mp->pc.index]);
- mp->bytes_left = (mp->bytes_left & 0xfff) * 2;
- if (mp->bytes_left <= 0) { // prevent infinite loop
- goto lost_sync;
+ if (ff_combine_frame(&mp->pc, next, &buf, &buf_size) < 0) {
+ mp->bytes_left -= buf_size;
+ return buf_size;
}
- mp->bytes_left -= mp->pc.index;
- }
- next = (mp->bytes_left > buf_size) ? END_NOT_FOUND : mp->bytes_left;
-
- if (ff_combine_frame(&mp->pc, next, &buf, &buf_size) < 0) {
- mp->bytes_left -= buf_size;
- return buf_size;
+ mp->bytes_left = 0;
}
- mp->bytes_left = 0;
-
sync_present = (AV_RB32(buf + 4) & 0xfffffffe) == 0xf8726fba;
if (!sync_present) {
diff --git a/chromium/third_party/ffmpeg/libavcodec/movsub_bsf.c b/chromium/third_party/ffmpeg/libavcodec/movsub_bsf.c
index 3cb1183cd89..5878607061e 100644
--- a/chromium/third_party/ffmpeg/libavcodec/movsub_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/movsub_bsf.c
@@ -62,35 +62,23 @@ const AVBitStreamFilter ff_text2movsub_bsf = {
.filter = text2movsub,
};
-static int mov2textsub(AVBSFContext *ctx, AVPacket *out)
+static int mov2textsub(AVBSFContext *ctx, AVPacket *pkt)
{
- AVPacket *in;
int ret = 0;
- ret = ff_bsf_get_packet(ctx, &in);
+ ret = ff_bsf_get_packet_ref(ctx, pkt);
if (ret < 0)
return ret;
- if (in->size < 2) {
- ret = AVERROR_INVALIDDATA;
- goto fail;
+ if (pkt->size < 2) {
+ av_packet_unref(pkt);
+ return AVERROR_INVALIDDATA;
}
- ret = av_new_packet(out, FFMIN(in->size - 2, AV_RB16(in->data)));
- if (ret < 0)
- goto fail;
-
- ret = av_packet_copy_props(out, in);
- if (ret < 0)
- goto fail;
-
- memcpy(out->data, in->data + 2, out->size);
+ pkt->data += 2;
+ pkt->size = FFMIN(pkt->size - 2, AV_RB16(pkt->data));
-fail:
- if (ret < 0)
- av_packet_unref(out);
- av_packet_free(&in);
- return ret;
+ return 0;
}
const AVBitStreamFilter ff_mov2textsub_bsf = {
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpeg12dec.c b/chromium/third_party/ffmpeg/libavcodec/mpeg12dec.c
index 2e32efc84f0..c67d3648873 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpeg12dec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mpeg12dec.c
@@ -1968,6 +1968,8 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y,
s->mv[0][0][1] = s->last_mv[0][0][1];
s->mv[1][0][0] = s->last_mv[1][0][0];
s->mv[1][0][1] = s->last_mv[1][0][1];
+ s->field_select[0][0] = (s->picture_structure - 1) & 1;
+ s->field_select[1][0] = (s->picture_structure - 1) & 1;
}
}
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpeg12enc.c b/chromium/third_party/ffmpeg/libavcodec/mpeg12enc.c
index 0084f544f27..d0b458e34bd 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpeg12enc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mpeg12enc.c
@@ -348,12 +348,13 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s)
height != s->height ||
s->avctx->color_primaries != AVCOL_PRI_UNSPECIFIED ||
s->avctx->color_trc != AVCOL_TRC_UNSPECIFIED ||
- s->avctx->colorspace != AVCOL_SPC_UNSPECIFIED);
+ s->avctx->colorspace != AVCOL_SPC_UNSPECIFIED ||
+ s->video_format != VIDEO_FORMAT_UNSPECIFIED);
if (s->seq_disp_ext == 1 || (s->seq_disp_ext == -1 && use_seq_disp_ext)) {
put_header(s, EXT_START_CODE);
put_bits(&s->pb, 4, 2); // sequence display extension
- put_bits(&s->pb, 3, 5); // video_format: 5 is unspecified
+ put_bits(&s->pb, 3, s->video_format); // video_format
put_bits(&s->pb, 1, 1); // colour_description
put_bits(&s->pb, 8, s->avctx->color_primaries); // colour_primaries
put_bits(&s->pb, 8, s->avctx->color_trc); // transfer_characteristics
@@ -1125,6 +1126,13 @@ static const AVOption mpeg2_options[] = {
{ "auto", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = -1}, 0, 0, VE, "seq_disp_ext" },
{ "never", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = 0 }, 0, 0, VE, "seq_disp_ext" },
{ "always", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = 1 }, 0, 0, VE, "seq_disp_ext" },
+ { "video_format", "Video_format in the sequence_display_extension indicating the source of the video.", OFFSET(video_format), AV_OPT_TYPE_INT, { .i64 = VIDEO_FORMAT_UNSPECIFIED }, 0, 7, VE, "video_format" },
+ { "component", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VIDEO_FORMAT_COMPONENT }, 0, 0, VE, "video_format" },
+ { "pal", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VIDEO_FORMAT_PAL }, 0, 0, VE, "video_format" },
+ { "ntsc", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VIDEO_FORMAT_NTSC }, 0, 0, VE, "video_format" },
+ { "secam", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VIDEO_FORMAT_SECAM }, 0, 0, VE, "video_format" },
+ { "mac", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VIDEO_FORMAT_MAC }, 0, 0, VE, "video_format" },
+ { "unspecified", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VIDEO_FORMAT_UNSPECIFIED}, 0, 0, VE, "video_format" },
FF_MPV_COMMON_OPTS
{ NULL },
};
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpeg2_metadata_bsf.c b/chromium/third_party/ffmpeg/libavcodec/mpeg2_metadata_bsf.c
index b9a49ab9436..3bb6c1d549c 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpeg2_metadata_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mpeg2_metadata_bsf.c
@@ -167,7 +167,8 @@ static int mpeg2_metadata_update_fragment(AVBSFContext *bsf,
err = ff_cbs_insert_unit_content(ctx->cbc, frag, se_pos + 1,
MPEG2_START_EXTENSION,
- &ctx->sequence_display_extension);
+ &ctx->sequence_display_extension,
+ NULL);
if (err < 0) {
av_log(bsf, AV_LOG_ERROR, "Failed to insert new sequence "
"display extension.\n");
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c b/chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c
index 58cd6ddf00d..588f4d8e133 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c
@@ -463,7 +463,7 @@ int ff_mpeg4_decode_video_packet_header(Mpeg4DecContext *ctx)
}
mb_num = get_bits(&s->gb, mb_num_bits);
- if (mb_num >= s->mb_num) {
+ if (mb_num >= s->mb_num || !mb_num) {
av_log(s->avctx, AV_LOG_ERROR,
"illegal mb_num in video packet (%d %d) \n", mb_num, s->mb_num);
return -1;
@@ -1254,10 +1254,12 @@ not_coded:
*/
static int mpeg4_decode_partitioned_mb(MpegEncContext *s, int16_t block[6][64])
{
- Mpeg4DecContext *ctx = (Mpeg4DecContext *)s;
+ Mpeg4DecContext *ctx = s->avctx->priv_data;
int cbp, mb_type;
const int xy = s->mb_x + s->mb_y * s->mb_stride;
+ av_assert2(s == (void*)ctx);
+
mb_type = s->current_picture.mb_type[xy];
cbp = s->cbp_table[xy];
@@ -1339,12 +1341,13 @@ static int mpeg4_decode_partitioned_mb(MpegEncContext *s, int16_t block[6][64])
static int mpeg4_decode_mb(MpegEncContext *s, int16_t block[6][64])
{
- Mpeg4DecContext *ctx = (Mpeg4DecContext *)s;
+ Mpeg4DecContext *ctx = s->avctx->priv_data;
int cbpc, cbpy, i, cbp, pred_x, pred_y, mx, my, dquant;
int16_t *mot_val;
static const int8_t quant_tab[4] = { -1, -2, 1, 2 };
const int xy = s->mb_x + s->mb_y * s->mb_stride;
+ av_assert2(s == (void*)ctx);
av_assert2(s->h263_pred);
if (s->pict_type == AV_PICTURE_TYPE_P ||
@@ -2702,8 +2705,8 @@ int ff_mpeg4_decode_picture_header(Mpeg4DecContext *ctx, GetBitContext *gb)
if (startcode >= 0x120 && startcode <= 0x12F) {
if (vol) {
- av_log(s->avctx, AV_LOG_ERROR, "Multiple VOL headers");
- return AVERROR_INVALIDDATA;
+ av_log(s->avctx, AV_LOG_WARNING, "Ignoring multiple VOL headers\n");
+ continue;
}
vol++;
if ((ret = decode_vol_header(ctx, gb)) < 0)
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpegvideo.h b/chromium/third_party/ffmpeg/libavcodec/mpegvideo.h
index c5e3359458d..e800e4a3b8d 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpegvideo.h
+++ b/chromium/third_party/ffmpeg/libavcodec/mpegvideo.h
@@ -464,6 +464,13 @@ typedef struct MpegEncContext {
int intra_vlc_format;
int alternate_scan;
int seq_disp_ext;
+ int video_format;
+#define VIDEO_FORMAT_COMPONENT 0
+#define VIDEO_FORMAT_PAL 1
+#define VIDEO_FORMAT_NTSC 2
+#define VIDEO_FORMAT_SECAM 3
+#define VIDEO_FORMAT_MAC 4
+#define VIDEO_FORMAT_UNSPECIFIED 5
int repeat_first_field;
int chroma_420_type;
int chroma_format;
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpegvideo_enc.c b/chromium/third_party/ffmpeg/libavcodec/mpegvideo_enc.c
index f1f4989231d..979e138b889 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpegvideo_enc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mpegvideo_enc.c
@@ -2713,7 +2713,7 @@ static inline void encode_mb_hq(MpegEncContext *s, MpegEncContext *backup, MpegE
}
static int sse(MpegEncContext *s, uint8_t *src1, uint8_t *src2, int w, int h, int stride){
- uint32_t *sq = ff_square_tab + 256;
+ const uint32_t *sq = ff_square_tab + 256;
int acc=0;
int x,y;
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpegvideo_motion.c b/chromium/third_party/ffmpeg/libavcodec/mpegvideo_motion.c
index c913504a657..5624c106297 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpegvideo_motion.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mpegvideo_motion.c
@@ -239,20 +239,22 @@ void mpeg_motion_internal(MpegEncContext *s,
int motion_y,
int h,
int is_mpeg12,
+ int is_16x8,
int mb_y)
{
uint8_t *ptr_y, *ptr_cb, *ptr_cr;
int dxy, uvdxy, mx, my, src_x, src_y,
- uvsrc_x, uvsrc_y, v_edge_pos;
+ uvsrc_x, uvsrc_y, v_edge_pos, block_y_half;
ptrdiff_t uvlinesize, linesize;
v_edge_pos = s->v_edge_pos >> field_based;
linesize = s->current_picture.f->linesize[0] << field_based;
uvlinesize = s->current_picture.f->linesize[1] << field_based;
+ block_y_half = (field_based | is_16x8);
dxy = ((motion_y & 1) << 1) | (motion_x & 1);
src_x = s->mb_x * 16 + (motion_x >> 1);
- src_y = (mb_y << (4 - field_based)) + (motion_y >> 1);
+ src_y = (mb_y << (4 - block_y_half)) + (motion_y >> 1);
if (!is_mpeg12 && s->out_format == FMT_H263) {
if ((s->workaround_bugs & FF_BUG_HPEL_CHROMA) && field_based) {
@@ -260,7 +262,7 @@ void mpeg_motion_internal(MpegEncContext *s,
my = motion_y >> 1;
uvdxy = ((my & 1) << 1) | (mx & 1);
uvsrc_x = s->mb_x * 8 + (mx >> 1);
- uvsrc_y = (mb_y << (3 - field_based)) + (my >> 1);
+ uvsrc_y = (mb_y << (3 - block_y_half)) + (my >> 1);
} else {
uvdxy = dxy | (motion_y & 2) | ((motion_x & 2) >> 1);
uvsrc_x = src_x >> 1;
@@ -279,7 +281,7 @@ void mpeg_motion_internal(MpegEncContext *s,
my = motion_y / 2;
uvdxy = ((my & 1) << 1) | (mx & 1);
uvsrc_x = s->mb_x * 8 + (mx >> 1);
- uvsrc_y = (mb_y << (3 - field_based)) + (my >> 1);
+ uvsrc_y = (mb_y << (3 - block_y_half)) + (my >> 1);
} else {
if (s->chroma_x_shift) {
// Chroma422
@@ -370,18 +372,18 @@ static void mpeg_motion(MpegEncContext *s,
uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr,
int field_select, uint8_t **ref_picture,
op_pixels_func (*pix_op)[4],
- int motion_x, int motion_y, int h, int mb_y)
+ int motion_x, int motion_y, int h, int is_16x8, int mb_y)
{
#if !CONFIG_SMALL
if (s->out_format == FMT_MPEG1)
mpeg_motion_internal(s, dest_y, dest_cb, dest_cr, 0, 0,
field_select, ref_picture, pix_op,
- motion_x, motion_y, h, 1, mb_y);
+ motion_x, motion_y, h, 1, is_16x8, mb_y);
else
#endif
mpeg_motion_internal(s, dest_y, dest_cb, dest_cr, 0, 0,
field_select, ref_picture, pix_op,
- motion_x, motion_y, h, 0, mb_y);
+ motion_x, motion_y, h, 0, is_16x8, mb_y);
}
static void mpeg_motion_field(MpegEncContext *s, uint8_t *dest_y,
@@ -395,12 +397,12 @@ static void mpeg_motion_field(MpegEncContext *s, uint8_t *dest_y,
if (s->out_format == FMT_MPEG1)
mpeg_motion_internal(s, dest_y, dest_cb, dest_cr, 1,
bottom_field, field_select, ref_picture, pix_op,
- motion_x, motion_y, h, 1, mb_y);
+ motion_x, motion_y, h, 1, 0, mb_y);
else
#endif
mpeg_motion_internal(s, dest_y, dest_cb, dest_cr, 1,
bottom_field, field_select, ref_picture, pix_op,
- motion_x, motion_y, h, 0, mb_y);
+ motion_x, motion_y, h, 0, 0, mb_y);
}
// FIXME: SIMDify, avg variant, 16x16 version
@@ -870,7 +872,7 @@ static av_always_inline void mpv_motion_internal(MpegEncContext *s,
} else {
mpeg_motion(s, dest_y, dest_cb, dest_cr, 0,
ref_picture, pix_op,
- s->mv[dir][0][0], s->mv[dir][0][1], 16, mb_y);
+ s->mv[dir][0][0], s->mv[dir][0][1], 16, 0, mb_y);
}
break;
case MV_TYPE_8X8:
@@ -907,7 +909,7 @@ static av_always_inline void mpv_motion_internal(MpegEncContext *s,
mpeg_motion(s, dest_y, dest_cb, dest_cr,
s->field_select[dir][0],
ref_picture, pix_op,
- s->mv[dir][0][0], s->mv[dir][0][1], 16, mb_y >> 1);
+ s->mv[dir][0][0], s->mv[dir][0][1], 16, 0, mb_y >> 1);
}
break;
case MV_TYPE_16X8:
@@ -924,8 +926,8 @@ static av_always_inline void mpv_motion_internal(MpegEncContext *s,
mpeg_motion(s, dest_y, dest_cb, dest_cr,
s->field_select[dir][i],
ref2picture, pix_op,
- s->mv[dir][i][0], s->mv[dir][i][1] + 16 * i,
- 8, mb_y >> 1);
+ s->mv[dir][i][0], s->mv[dir][i][1],
+ 8, 1, (mb_y & ~1) + i);
dest_y += 16 * s->linesize;
dest_cb += (16 >> s->chroma_y_shift) * s->uvlinesize;
@@ -952,7 +954,7 @@ static av_always_inline void mpv_motion_internal(MpegEncContext *s,
s->picture_structure != i + 1,
ref_picture, pix_op,
s->mv[dir][2 * i][0], s->mv[dir][2 * i][1],
- 16, mb_y >> 1);
+ 16, 0, mb_y >> 1);
// after put we make avg of the same block
pix_op = s->hdsp.avg_pixels_tab;
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpegvideo_parser.c b/chromium/third_party/ffmpeg/libavcodec/mpegvideo_parser.c
index be240b68908..7a3c7abdb24 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpegvideo_parser.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mpegvideo_parser.c
@@ -61,7 +61,7 @@ static void mpegvideo_extract_headers(AVCodecParserContext *s,
if (bytes_left >= 2) {
s->pict_type = (buf[1] >> 3) & 7;
if (bytes_left >= 4)
- vbv_delay = ((buf[1] & 0x07) << 13) | (buf[2] << 5) | (buf[3] >> 3);
+ vbv_delay = ((buf[1] & 0x07) << 13) | (buf[2] << 5) | (buf[3] >> 3);
}
break;
case SEQ_START_CODE:
diff --git a/chromium/third_party/ffmpeg/libavcodec/mpegvideoencdsp.c b/chromium/third_party/ffmpeg/libavcodec/mpegvideoencdsp.c
index 0af3d8bef8b..a34ab3553e3 100644
--- a/chromium/third_party/ffmpeg/libavcodec/mpegvideoencdsp.c
+++ b/chromium/third_party/ffmpeg/libavcodec/mpegvideoencdsp.c
@@ -81,7 +81,7 @@ static int pix_sum_c(uint8_t *pix, int line_size)
static int pix_norm1_c(uint8_t *pix, int line_size)
{
int s = 0, i, j;
- uint32_t *sq = ff_square_tab + 256;
+ const uint32_t *sq = ff_square_tab + 256;
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j += 8) {
diff --git a/chromium/third_party/ffmpeg/libavcodec/msmpeg4dec.c b/chromium/third_party/ffmpeg/libavcodec/msmpeg4dec.c
index 4105d4ba7d0..457a37e7458 100644
--- a/chromium/third_party/ffmpeg/libavcodec/msmpeg4dec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/msmpeg4dec.c
@@ -208,6 +208,9 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t block[6][64])
uint8_t *coded_val;
uint32_t * const mb_type_ptr = &s->current_picture.mb_type[s->mb_x + s->mb_y*s->mb_stride];
+ if (get_bits_left(&s->gb) <= 0)
+ return AVERROR_INVALIDDATA;
+
if (s->pict_type == AV_PICTURE_TYPE_P) {
if (s->use_skip_mb_code) {
if (get_bits1(&s->gb)) {
diff --git a/chromium/third_party/ffmpeg/libavcodec/nuv.c b/chromium/third_party/ffmpeg/libavcodec/nuv.c
index ad6c029e500..32ed65899b1 100644
--- a/chromium/third_party/ffmpeg/libavcodec/nuv.c
+++ b/chromium/third_party/ffmpeg/libavcodec/nuv.c
@@ -161,6 +161,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
int orig_size = buf_size;
int keyframe, ret;
int size_change = 0;
+ int minsize = 0;
int result, init_frame = !avctx->frame_number;
enum {
NUV_UNCOMPRESSED = '0',
@@ -198,6 +199,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
case NUV_RTJPEG_IN_LZO:
case NUV_RTJPEG:
keyframe = !buf[2];
+ if (c->width < 16 || c->height < 16) {
+ return AVERROR_INVALIDDATA;
+ }
break;
case NUV_COPY_LAST:
keyframe = 0;
@@ -206,6 +210,16 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
keyframe = 1;
break;
}
+ switch (comptype) {
+ case NUV_UNCOMPRESSED:
+ minsize = c->width * c->height * 3 / 2;
+ break;
+ case NUV_RTJPEG:
+ minsize = c->width/16 * (c->height/16) * 6;
+ break;
+ }
+ if (buf_size < minsize / 4)
+ return AVERROR_INVALIDDATA;
retry:
// Skip the rest of the frame header.
buf = &buf[12];
diff --git a/chromium/third_party/ffmpeg/libavcodec/nvdec.c b/chromium/third_party/ffmpeg/libavcodec/nvdec.c
index e9e6ea0f8b9..ab3cb88b275 100644
--- a/chromium/third_party/ffmpeg/libavcodec/nvdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/nvdec.c
@@ -54,6 +54,7 @@ static int map_avcodec_id(enum AVCodecID id)
switch (id) {
case AV_CODEC_ID_H264: return cudaVideoCodec_H264;
case AV_CODEC_ID_HEVC: return cudaVideoCodec_HEVC;
+ case AV_CODEC_ID_MJPEG: return cudaVideoCodec_JPEG;
case AV_CODEC_ID_MPEG1VIDEO: return cudaVideoCodec_MPEG1;
case AV_CODEC_ID_MPEG2VIDEO: return cudaVideoCodec_MPEG2;
case AV_CODEC_ID_MPEG4: return cudaVideoCodec_MPEG4;
diff --git a/chromium/third_party/ffmpeg/libavcodec/nvdec_mjpeg.c b/chromium/third_party/ffmpeg/libavcodec/nvdec_mjpeg.c
new file mode 100644
index 00000000000..7e404246cec
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/nvdec_mjpeg.c
@@ -0,0 +1,86 @@
+/*
+ * MJPEG HW decode acceleration through NVDEC
+ *
+ * Copyright (c) 2017 Philip Langdale
+ *
+ * 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 "avcodec.h"
+#include "internal.h"
+#include "mjpegdec.h"
+#include "nvdec.h"
+#include "decode.h"
+
+static int nvdec_mjpeg_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
+{
+ MJpegDecodeContext *s = avctx->priv_data;
+
+ NVDECContext *ctx = avctx->internal->hwaccel_priv_data;
+ CUVIDPICPARAMS *pp = &ctx->pic_params;
+ FrameDecodeData *fdd;
+ NVDECFrame *cf;
+ AVFrame *cur_frame = s->picture;
+
+ int ret;
+
+ ret = ff_nvdec_start_frame(avctx, cur_frame);
+ if (ret < 0)
+ return ret;
+
+ fdd = (FrameDecodeData*)cur_frame->private_ref->data;
+ cf = (NVDECFrame*)fdd->hwaccel_priv;
+
+ *pp = (CUVIDPICPARAMS) {
+ .PicWidthInMbs = (cur_frame->width + 15) / 16,
+ .FrameHeightInMbs = (cur_frame->height + 15) / 16,
+ .CurrPicIdx = cf->idx,
+
+ .intra_pic_flag = 1,
+ .ref_pic_flag = 0,
+ };
+
+ return ff_nvdec_simple_decode_slice(avctx, buffer, size);
+}
+
+static int nvdec_mjpeg_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
+{
+ return 0;
+}
+
+static int nvdec_mjpeg_frame_params(AVCodecContext *avctx,
+ AVBufferRef *hw_frames_ctx)
+{
+ // Only need storage for the current frame
+ return ff_nvdec_frame_params(avctx, hw_frames_ctx, 1);
+}
+
+#if CONFIG_MJPEG_NVDEC_HWACCEL
+AVHWAccel ff_mjpeg_nvdec_hwaccel = {
+ .name = "mjpeg_nvdec",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .id = AV_CODEC_ID_MJPEG,
+ .pix_fmt = AV_PIX_FMT_CUDA,
+ .start_frame = nvdec_mjpeg_start_frame,
+ .end_frame = ff_nvdec_simple_end_frame,
+ .decode_slice = nvdec_mjpeg_decode_slice,
+ .frame_params = nvdec_mjpeg_frame_params,
+ .init = ff_nvdec_decode_init,
+ .uninit = ff_nvdec_decode_uninit,
+ .priv_data_size = sizeof(NVDECContext),
+};
+#endif
diff --git a/chromium/third_party/ffmpeg/libavcodec/nvenc.c b/chromium/third_party/ffmpeg/libavcodec/nvenc.c
index 4a91d997201..1f601a63bda 100644
--- a/chromium/third_party/ffmpeg/libavcodec/nvenc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/nvenc.c
@@ -41,7 +41,8 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = {
AV_PIX_FMT_NV12,
AV_PIX_FMT_P010,
AV_PIX_FMT_YUV444P,
- AV_PIX_FMT_YUV444P16,
+ AV_PIX_FMT_P016, // Truncated to 10bits
+ AV_PIX_FMT_YUV444P16, // Truncated to 10bits
AV_PIX_FMT_0RGB32,
AV_PIX_FMT_0BGR32,
AV_PIX_FMT_CUDA,
@@ -52,6 +53,7 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = {
};
#define IS_10BIT(pix_fmt) (pix_fmt == AV_PIX_FMT_P010 || \
+ pix_fmt == AV_PIX_FMT_P016 || \
pix_fmt == AV_PIX_FMT_YUV444P16)
#define IS_YUV444(pix_fmt) (pix_fmt == AV_PIX_FMT_YUV444P || \
@@ -1219,6 +1221,7 @@ static NV_ENC_BUFFER_FORMAT nvenc_map_buffer_format(enum AVPixelFormat pix_fmt)
case AV_PIX_FMT_NV12:
return NV_ENC_BUFFER_FORMAT_NV12_PL;
case AV_PIX_FMT_P010:
+ case AV_PIX_FMT_P016:
return NV_ENC_BUFFER_FORMAT_YUV420_10BIT;
case AV_PIX_FMT_YUV444P:
return NV_ENC_BUFFER_FORMAT_YUV444_PL;
@@ -1389,12 +1392,9 @@ av_cold int ff_nvenc_encode_close(AVCodecContext *avctx)
av_fifo_freep(&ctx->unused_surface_queue);
if (ctx->surfaces && (avctx->pix_fmt == AV_PIX_FMT_CUDA || avctx->pix_fmt == AV_PIX_FMT_D3D11)) {
- for (i = 0; i < ctx->nb_surfaces; ++i) {
- if (ctx->surfaces[i].input_surface) {
- p_nvenc->nvEncUnmapInputResource(ctx->nvencoder, ctx->surfaces[i].in_map.mappedResource);
- }
- }
for (i = 0; i < ctx->nb_registered_frames; i++) {
+ if (ctx->registered_frames[i].mapped)
+ p_nvenc->nvEncUnmapInputResource(ctx->nvencoder, ctx->registered_frames[i].in_map.mappedResource);
if (ctx->registered_frames[i].regptr)
p_nvenc->nvEncUnregisterResource(ctx->nvencoder, ctx->registered_frames[i].regptr);
}
@@ -1532,6 +1532,7 @@ static int nvenc_find_free_reg_resource(AVCodecContext *avctx)
NvencContext *ctx = avctx->priv_data;
NvencDynLoadFunctions *dl_fn = &ctx->nvenc_dload_funcs;
NV_ENCODE_API_FUNCTION_LIST *p_nvenc = &dl_fn->nvenc_funcs;
+ NVENCSTATUS nv_status;
int i;
@@ -1539,8 +1540,10 @@ static int nvenc_find_free_reg_resource(AVCodecContext *avctx)
for (i = 0; i < ctx->nb_registered_frames; i++) {
if (!ctx->registered_frames[i].mapped) {
if (ctx->registered_frames[i].regptr) {
- p_nvenc->nvEncUnregisterResource(ctx->nvencoder,
- ctx->registered_frames[i].regptr);
+ nv_status = p_nvenc->nvEncUnregisterResource(ctx->nvencoder, ctx->registered_frames[i].regptr);
+ if (nv_status != NV_ENC_SUCCESS)
+ return nvenc_print_error(avctx, nv_status, "Failed unregistering unused input resource");
+ ctx->registered_frames[i].ptr = NULL;
ctx->registered_frames[i].regptr = NULL;
}
return i;
@@ -1629,19 +1632,23 @@ static int nvenc_upload_frame(AVCodecContext *avctx, const AVFrame *frame,
if (res < 0)
return res;
- nvenc_frame->in_map.version = NV_ENC_MAP_INPUT_RESOURCE_VER;
- nvenc_frame->in_map.registeredResource = ctx->registered_frames[reg_idx].regptr;
- nv_status = p_nvenc->nvEncMapInputResource(ctx->nvencoder, &nvenc_frame->in_map);
- if (nv_status != NV_ENC_SUCCESS) {
- av_frame_unref(nvenc_frame->in_ref);
- return nvenc_print_error(avctx, nv_status, "Error mapping an input resource");
+ if (!ctx->registered_frames[reg_idx].mapped) {
+ ctx->registered_frames[reg_idx].in_map.version = NV_ENC_MAP_INPUT_RESOURCE_VER;
+ ctx->registered_frames[reg_idx].in_map.registeredResource = ctx->registered_frames[reg_idx].regptr;
+ nv_status = p_nvenc->nvEncMapInputResource(ctx->nvencoder, &ctx->registered_frames[reg_idx].in_map);
+ if (nv_status != NV_ENC_SUCCESS) {
+ av_frame_unref(nvenc_frame->in_ref);
+ return nvenc_print_error(avctx, nv_status, "Error mapping an input resource");
+ }
}
- ctx->registered_frames[reg_idx].mapped = 1;
+ ctx->registered_frames[reg_idx].mapped += 1;
+
nvenc_frame->reg_idx = reg_idx;
- nvenc_frame->input_surface = nvenc_frame->in_map.mappedResource;
- nvenc_frame->format = nvenc_frame->in_map.mappedBufferFmt;
+ nvenc_frame->input_surface = ctx->registered_frames[reg_idx].in_map.mappedResource;
+ nvenc_frame->format = ctx->registered_frames[reg_idx].in_map.mappedBufferFmt;
nvenc_frame->pitch = frame->linesize[0];
+
return 0;
} else {
NV_ENC_LOCK_INPUT_BUFFER lockBufferParams = { 0 };
@@ -1788,14 +1795,33 @@ static int process_output_surface(AVCodecContext *avctx, AVPacket *pkt, NvencSur
memcpy(pkt->data, lock_params.bitstreamBufferPtr, lock_params.bitstreamSizeInBytes);
nv_status = p_nvenc->nvEncUnlockBitstream(ctx->nvencoder, tmpoutsurf->output_surface);
- if (nv_status != NV_ENC_SUCCESS)
- nvenc_print_error(avctx, nv_status, "Failed unlocking bitstream buffer, expect the gates of mordor to open");
+ if (nv_status != NV_ENC_SUCCESS) {
+ res = nvenc_print_error(avctx, nv_status, "Failed unlocking bitstream buffer, expect the gates of mordor to open");
+ goto error;
+ }
if (avctx->pix_fmt == AV_PIX_FMT_CUDA || avctx->pix_fmt == AV_PIX_FMT_D3D11) {
- p_nvenc->nvEncUnmapInputResource(ctx->nvencoder, tmpoutsurf->in_map.mappedResource);
+ ctx->registered_frames[tmpoutsurf->reg_idx].mapped -= 1;
+ if (ctx->registered_frames[tmpoutsurf->reg_idx].mapped == 0) {
+ nv_status = p_nvenc->nvEncUnmapInputResource(ctx->nvencoder, ctx->registered_frames[tmpoutsurf->reg_idx].in_map.mappedResource);
+ if (nv_status != NV_ENC_SUCCESS) {
+ res = nvenc_print_error(avctx, nv_status, "Failed unmapping input resource");
+ goto error;
+ }
+ nv_status = p_nvenc->nvEncUnregisterResource(ctx->nvencoder, ctx->registered_frames[tmpoutsurf->reg_idx].regptr);
+ if (nv_status != NV_ENC_SUCCESS) {
+ res = nvenc_print_error(avctx, nv_status, "Failed unregistering input resource");
+ goto error;
+ }
+ ctx->registered_frames[tmpoutsurf->reg_idx].ptr = NULL;
+ ctx->registered_frames[tmpoutsurf->reg_idx].regptr = NULL;
+ } else if (ctx->registered_frames[tmpoutsurf->reg_idx].mapped < 0) {
+ res = AVERROR_BUG;
+ goto error;
+ }
+
av_frame_unref(tmpoutsurf->in_ref);
- ctx->registered_frames[tmpoutsurf->reg_idx].mapped = 0;
tmpoutsurf->input_surface = NULL;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/nvenc.h b/chromium/third_party/ffmpeg/libavcodec/nvenc.h
index 2e51f1e946f..bff25dfc3ca 100644
--- a/chromium/third_party/ffmpeg/libavcodec/nvenc.h
+++ b/chromium/third_party/ffmpeg/libavcodec/nvenc.h
@@ -28,7 +28,7 @@
typedef void ID3D11Device;
#endif
-#include "compat/nvenc/nvEncodeAPI.h"
+#include <ffnvcodec/nvEncodeAPI.h>
#include "compat/cuda/dynlink_loader.h"
#include "libavutil/fifo.h"
@@ -44,7 +44,6 @@ typedef struct NvencSurface
{
NV_ENC_INPUT_PTR input_surface;
AVFrame *in_ref;
- NV_ENC_MAP_INPUT_RESOURCE in_map;
int reg_idx;
int width;
int height;
@@ -131,6 +130,7 @@ typedef struct NvencContext
int ptr_index;
NV_ENC_REGISTERED_PTR regptr;
int mapped;
+ NV_ENC_MAP_INPUT_RESOURCE in_map;
} registered_frames[MAX_REGISTERED_FRAMES];
int nb_registered_frames;
diff --git a/chromium/third_party/ffmpeg/libavcodec/options_table.h b/chromium/third_party/ffmpeg/libavcodec/options_table.h
index d89f58d5403..5a5eae65fba 100644
--- a/chromium/third_party/ffmpeg/libavcodec/options_table.h
+++ b/chromium/third_party/ffmpeg/libavcodec/options_table.h
@@ -300,6 +300,7 @@ static const AVOption avcodec_options[] = {
{"mpeg4_main", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_MAIN }, INT_MIN, INT_MAX, V|E, "profile"},
{"mpeg4_asp", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_ADVANCED_SIMPLE }, INT_MIN, INT_MAX, V|E, "profile"},
{"main10", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_HEVC_MAIN_10 }, INT_MIN, INT_MAX, V|E, "profile"},
+{"msbc", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_SBC_MSBC }, INT_MIN, INT_MAX, A|E, "profile"},
{"level", NULL, OFFSET(level), AV_OPT_TYPE_INT, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"},
{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"},
{"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, V|A|D},
@@ -476,6 +477,7 @@ static const AVOption avcodec_options[] = {
{"ignore_level", "ignore level even if the codec level used is unknown or higher than the maximum supported level reported by the hardware driver", 0, AV_OPT_TYPE_CONST, { .i64 = AV_HWACCEL_FLAG_IGNORE_LEVEL }, INT_MIN, INT_MAX, V | D, "hwaccel_flags" },
{"allow_high_depth", "allow to output YUV pixel formats with a different chroma sampling than 4:2:0 and/or other than 8 bits per component", 0, AV_OPT_TYPE_CONST, {.i64 = AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH }, INT_MIN, INT_MAX, V | D, "hwaccel_flags"},
{"allow_profile_mismatch", "attempt to decode anyway if HW accelerated decoder's supported profiles do not exactly match the stream", 0, AV_OPT_TYPE_CONST, {.i64 = AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH }, INT_MIN, INT_MAX, V | D, "hwaccel_flags"},
+{"extra_hw_frames", "Number of extra hardware frames to allocate for the user", OFFSET(extra_hw_frames), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, V|D },
{NULL},
};
diff --git a/chromium/third_party/ffmpeg/libavcodec/pafvideo.c b/chromium/third_party/ffmpeg/libavcodec/pafvideo.c
index 6980ae1b352..7c5861dfaf6 100644
--- a/chromium/third_party/ffmpeg/libavcodec/pafvideo.c
+++ b/chromium/third_party/ffmpeg/libavcodec/pafvideo.c
@@ -78,6 +78,7 @@ static av_cold int paf_video_init(AVCodecContext *avctx)
{
PAFVideoDecContext *c = avctx->priv_data;
int i;
+ int ret;
c->width = avctx->width;
c->height = avctx->height;
@@ -90,6 +91,9 @@ static av_cold int paf_video_init(AVCodecContext *avctx)
}
avctx->pix_fmt = AV_PIX_FMT_PAL8;
+ ret = av_image_check_size2(avctx->width, FFALIGN(avctx->height, 256), avctx->max_pixels, avctx->pix_fmt, 0, avctx);
+ if (ret < 0)
+ return ret;
c->pic = av_frame_alloc();
if (!c->pic)
diff --git a/chromium/third_party/ffmpeg/libavcodec/parser.c b/chromium/third_party/ffmpeg/libavcodec/parser.c
index 747ea2ee8aa..f43b197d5ea 100644
--- a/chromium/third_party/ffmpeg/libavcodec/parser.c
+++ b/chromium/third_party/ffmpeg/libavcodec/parser.c
@@ -32,36 +32,101 @@
#include "internal.h"
#include "parser.h"
-static AVCodecParser *av_first_parser = NULL;
+/* Parsers */
+extern AVCodecParser ff_aac_parser;
+extern AVCodecParser ff_aac_latm_parser;
+extern AVCodecParser ff_ac3_parser;
+extern AVCodecParser ff_adx_parser;
+extern AVCodecParser ff_bmp_parser;
+extern AVCodecParser ff_cavsvideo_parser;
+extern AVCodecParser ff_cook_parser;
+extern AVCodecParser ff_dca_parser;
+extern AVCodecParser ff_dirac_parser;
+extern AVCodecParser ff_dnxhd_parser;
+extern AVCodecParser ff_dpx_parser;
+extern AVCodecParser ff_dvaudio_parser;
+extern AVCodecParser ff_dvbsub_parser;
+extern AVCodecParser ff_dvdsub_parser;
+extern AVCodecParser ff_dvd_nav_parser;
+extern AVCodecParser ff_flac_parser;
+extern AVCodecParser ff_g729_parser;
+extern AVCodecParser ff_gsm_parser;
+extern AVCodecParser ff_h261_parser;
+extern AVCodecParser ff_h263_parser;
+extern AVCodecParser ff_h264_parser;
+extern AVCodecParser ff_hevc_parser;
+extern AVCodecParser ff_mjpeg_parser;
+extern AVCodecParser ff_mlp_parser;
+extern AVCodecParser ff_mpeg4video_parser;
+extern AVCodecParser ff_mpegaudio_parser;
+extern AVCodecParser ff_mpegvideo_parser;
+extern AVCodecParser ff_opus_parser;
+extern AVCodecParser ff_png_parser;
+extern AVCodecParser ff_pnm_parser;
+extern AVCodecParser ff_rv30_parser;
+extern AVCodecParser ff_rv40_parser;
+extern AVCodecParser ff_sbc_parser;
+extern AVCodecParser ff_sipr_parser;
+extern AVCodecParser ff_tak_parser;
+extern AVCodecParser ff_vc1_parser;
+extern AVCodecParser ff_vorbis_parser;
+extern AVCodecParser ff_vp3_parser;
+extern AVCodecParser ff_vp8_parser;
+extern AVCodecParser ff_vp9_parser;
+extern AVCodecParser ff_xma_parser;
+
+#include "libavcodec/parser_list.c"
+
+static AVOnce av_parser_next_init = AV_ONCE_INIT;
+
+static void av_parser_init_next(void)
+{
+ AVCodecParser *prev = NULL, *p;
+ int i = 0;
+ while ((p = (AVCodecParser*)parser_list[i++])) {
+ if (prev)
+ prev->next = p;
+ prev = p;
+ }
+}
AVCodecParser *av_parser_next(const AVCodecParser *p)
{
+ ff_thread_once(&av_parser_next_init, av_parser_init_next);
+
if (p)
return p->next;
else
- return av_first_parser;
+ return (AVCodecParser*)parser_list[0];
}
-static AVMutex parser_register_mutex = AV_MUTEX_INITIALIZER;
+const AVCodecParser *av_parser_iterate(void **opaque)
+{
+ uintptr_t i = (uintptr_t)*opaque;
+ const AVCodecParser *p = parser_list[i];
+
+ if (p)
+ *opaque = (void*)(i + 1);
+
+ return p;
+}
void av_register_codec_parser(AVCodecParser *parser)
{
- ff_mutex_lock(&parser_register_mutex);
- parser->next = av_first_parser;
- av_first_parser = parser;
- ff_mutex_unlock(&parser_register_mutex);
+ ff_thread_once(&av_parser_next_init, av_parser_init_next);
}
AVCodecParserContext *av_parser_init(int codec_id)
{
AVCodecParserContext *s = NULL;
- AVCodecParser *parser;
+ const AVCodecParser *parser;
+ void *i = 0;
int ret;
if (codec_id == AV_CODEC_ID_NONE)
return NULL;
- for (parser = av_first_parser; parser; parser = parser->next) {
+ while ((parser = av_parser_iterate(&i))) {
if (parser->codec_ids[0] == codec_id ||
parser->codec_ids[1] == codec_id ||
parser->codec_ids[2] == codec_id ||
@@ -75,7 +140,7 @@ found:
s = av_mallocz(sizeof(AVCodecParserContext));
if (!s)
goto err_out;
- s->parser = parser;
+ s->parser = (AVCodecParser*)parser;
s->priv_data = av_mallocz(parser->priv_data_size);
if (!s->priv_data)
goto err_out;
diff --git a/chromium/third_party/ffmpeg/libavcodec/profiles.c b/chromium/third_party/ffmpeg/libavcodec/profiles.c
index 30498efedfc..721587b3a6a 100644
--- a/chromium/third_party/ffmpeg/libavcodec/profiles.c
+++ b/chromium/third_party/ffmpeg/libavcodec/profiles.c
@@ -140,4 +140,9 @@ const AVProfile ff_vp9_profiles[] = {
{ FF_PROFILE_UNKNOWN },
};
+const AVProfile ff_sbc_profiles[] = {
+ { FF_PROFILE_SBC_MSBC, "mSBC" },
+ { FF_PROFILE_UNKNOWN },
+};
+
#endif /* !CONFIG_SMALL */
diff --git a/chromium/third_party/ffmpeg/libavcodec/profiles.h b/chromium/third_party/ffmpeg/libavcodec/profiles.h
index eb18b406af4..3783c10c397 100644
--- a/chromium/third_party/ffmpeg/libavcodec/profiles.h
+++ b/chromium/third_party/ffmpeg/libavcodec/profiles.h
@@ -31,5 +31,6 @@ extern const AVProfile ff_mpeg2_video_profiles[];
extern const AVProfile ff_mpeg4_video_profiles[];
extern const AVProfile ff_vc1_profiles[];
extern const AVProfile ff_vp9_profiles[];
+extern const AVProfile ff_sbc_profiles[];
#endif /* AVCODEC_PROFILES_H */
diff --git a/chromium/third_party/ffmpeg/libavcodec/pthread_frame.c b/chromium/third_party/ffmpeg/libavcodec/pthread_frame.c
index 25aa3e2cd22..5104b1beba4 100644
--- a/chromium/third_party/ffmpeg/libavcodec/pthread_frame.c
+++ b/chromium/third_party/ffmpeg/libavcodec/pthread_frame.c
@@ -886,8 +886,6 @@ static int thread_get_buffer_internal(AVCodecContext *avctx, ThreadFrame *f, int
f->owner[0] = f->owner[1] = avctx;
- ff_init_buffer_info(avctx, f->f);
-
if (!(avctx->active_thread_type & FF_THREAD_FRAME))
return ff_get_buffer(avctx, f->f, flags);
diff --git a/chromium/third_party/ffmpeg/libavcodec/qdmc.c b/chromium/third_party/ffmpeg/libavcodec/qdmc.c
index 1c8952b97be..f1f86accd83 100644
--- a/chromium/third_party/ffmpeg/libavcodec/qdmc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/qdmc.c
@@ -26,6 +26,7 @@
#define BITSTREAM_READER_LE
#include "libavutil/channel_layout.h"
+#include "libavutil/thread.h"
#include "avcodec.h"
#include "bytestream.h"
@@ -204,7 +205,7 @@ static const uint8_t phase_diff_codes[] = {
INIT_VLC_LE | INIT_VLC_USE_NEW_STATIC); \
} while (0)
-static av_cold void qdmc_init_static_data(AVCodec *codec)
+static av_cold void qdmc_init_static_data(void)
{
int i;
@@ -250,10 +251,13 @@ static void make_noises(QDMCContext *s)
static av_cold int qdmc_decode_init(AVCodecContext *avctx)
{
+ static AVOnce init_static_once = AV_ONCE_INIT;
QDMCContext *s = avctx->priv_data;
int fft_size, fft_order, size, g, j, x;
GetByteContext b;
+ ff_thread_once(&init_static_once, qdmc_init_static_data);
+
if (!avctx->extradata || (avctx->extradata_size < 48)) {
av_log(avctx, AV_LOG_ERROR, "extradata missing or truncated\n");
return AVERROR_INVALIDDATA;
@@ -775,7 +779,6 @@ AVCodec ff_qdmc_decoder = {
.id = AV_CODEC_ID_QDMC,
.priv_data_size = sizeof(QDMCContext),
.init = qdmc_decode_init,
- .init_static_data = qdmc_init_static_data,
.close = qdmc_decode_close,
.decode = qdmc_decode_frame,
.flush = qdmc_flush,
diff --git a/chromium/third_party/ffmpeg/libavcodec/qsv.c b/chromium/third_party/ffmpeg/libavcodec/qsv.c
index 250b4e61e36..5217adfa9d1 100644
--- a/chromium/third_party/ffmpeg/libavcodec/qsv.c
+++ b/chromium/third_party/ffmpeg/libavcodec/qsv.c
@@ -389,7 +389,7 @@ static mfxStatus qsv_frame_alloc(mfxHDL pthis, mfxFrameAllocRequest *req,
mfxFrameInfo *i = &req->Info;
mfxFrameInfo *i1 = &frames_hwctx->surfaces[0].Info;
- if (i->Width != i1->Width || i->Height != i1->Height ||
+ if (i->Width > i1->Width || i->Height > i1->Height ||
i->FourCC != i1->FourCC || i->ChromaFormat != i1->ChromaFormat) {
av_log(ctx->logctx, AV_LOG_ERROR, "Mismatching surface properties in an "
"allocation request: %dx%d %d %d vs %dx%d %d %d\n",
diff --git a/chromium/third_party/ffmpeg/libavcodec/qsvdec.c b/chromium/third_party/ffmpeg/libavcodec/qsvdec.c
index abbede5d978..45bedf9a7b3 100644
--- a/chromium/third_party/ffmpeg/libavcodec/qsvdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/qsvdec.c
@@ -149,9 +149,6 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q)
else if (frames_hwctx->frame_type & MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET)
iopattern = MFX_IOPATTERN_OUT_VIDEO_MEMORY;
}
-
- frame_width = frames_hwctx->surfaces[0].Info.Width;
- frame_height = frames_hwctx->surfaces[0].Info.Height;
}
if (!iopattern)
diff --git a/chromium/third_party/ffmpeg/libavcodec/qsvdec_h2645.c b/chromium/third_party/ffmpeg/libavcodec/qsvdec_h2645.c
index 5e0067335e8..831252f2d78 100644
--- a/chromium/third_party/ffmpeg/libavcodec/qsvdec_h2645.c
+++ b/chromium/third_party/ffmpeg/libavcodec/qsvdec_h2645.c
@@ -153,8 +153,12 @@ static int qsv_decode_frame(AVCodecContext *avctx, void *data,
}
ret = ff_qsv_process_data(avctx, &s->qsv, frame, got_frame, &s->buffer_pkt);
- if (ret < 0)
+ if (ret < 0){
+ /* Drop buffer_pkt when failed to decode the packet. Otherwise,
+ the decoder will keep decoding the failure packet. */
+ av_packet_unref(&s->buffer_pkt);
return ret;
+ }
s->buffer_pkt.size -= ret;
s->buffer_pkt.data += ret;
diff --git a/chromium/third_party/ffmpeg/libavcodec/qsvenc.c b/chromium/third_party/ffmpeg/libavcodec/qsvenc.c
index fee2f9f0e82..9710f5b4161 100644
--- a/chromium/third_party/ffmpeg/libavcodec/qsvenc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/qsvenc.c
@@ -85,7 +85,9 @@ static const struct {
{ MFX_RATECONTROL_CBR, "CBR" },
{ MFX_RATECONTROL_VBR, "VBR" },
{ MFX_RATECONTROL_CQP, "CQP" },
+#if QSV_HAVE_AVBR
{ MFX_RATECONTROL_AVBR, "AVBR" },
+#endif
#if QSV_HAVE_LA
{ MFX_RATECONTROL_LA, "LA" },
#endif
@@ -161,11 +163,14 @@ static void dump_video_param(AVCodecContext *avctx, QSVEncContext *q,
} else if (info->RateControlMethod == MFX_RATECONTROL_CQP) {
av_log(avctx, AV_LOG_VERBOSE, "QPI: %"PRIu16"; QPP: %"PRIu16"; QPB: %"PRIu16"\n",
info->QPI, info->QPP, info->QPB);
- } else if (info->RateControlMethod == MFX_RATECONTROL_AVBR) {
+ }
+#if QSV_HAVE_AVBR
+ else if (info->RateControlMethod == MFX_RATECONTROL_AVBR) {
av_log(avctx, AV_LOG_VERBOSE,
"TargetKbps: %"PRIu16"; Accuracy: %"PRIu16"; Convergence: %"PRIu16"\n",
info->TargetKbps, info->Accuracy, info->Convergence);
}
+#endif
#if QSV_HAVE_LA
else if (info->RateControlMethod == MFX_RATECONTROL_LA
#if QSV_HAVE_LA_HRD
@@ -325,10 +330,14 @@ static int select_rc_mode(AVCodecContext *avctx, QSVEncContext *q)
else if (avctx->rc_max_rate == avctx->bit_rate) {
rc_mode = MFX_RATECONTROL_CBR;
rc_desc = "constant bitrate (CBR)";
- } else if (!avctx->rc_max_rate) {
+ }
+#if QSV_HAVE_AVBR
+ else if (!avctx->rc_max_rate) {
rc_mode = MFX_RATECONTROL_AVBR;
rc_desc = "average variable bitrate (AVBR)";
- } else {
+ }
+#endif
+ else {
rc_mode = MFX_RATECONTROL_VBR;
rc_desc = "variable bitrate (VBR)";
}
@@ -339,15 +348,34 @@ static int select_rc_mode(AVCodecContext *avctx, QSVEncContext *q)
return 0;
}
-static int rc_supported(QSVEncContext *q)
+static int check_enc_param(AVCodecContext *avctx, QSVEncContext *q)
{
mfxVideoParam param_out = { .mfx.CodecId = q->param.mfx.CodecId };
mfxStatus ret;
+#define UNMATCH(x) (param_out.mfx.x != q->param.mfx.x)
+
ret = MFXVideoENCODE_Query(q->session, &q->param, &param_out);
- if (ret < 0 ||
- param_out.mfx.RateControlMethod != q->param.mfx.RateControlMethod)
+
+ if (ret < 0) {
+ if (UNMATCH(CodecId))
+ av_log(avctx, AV_LOG_ERROR, "Current codec type is unsupported\n");
+ if (UNMATCH(CodecProfile))
+ av_log(avctx, AV_LOG_ERROR, "Current profile is unsupported\n");
+ if (UNMATCH(RateControlMethod))
+ av_log(avctx, AV_LOG_ERROR, "Selected ratecontrol mode is unsupported\n");
+ if (UNMATCH(LowPower))
+ av_log(avctx, AV_LOG_ERROR, "Low power mode is unsupported\n");
+ if (UNMATCH(FrameInfo.FrameRateExtN) || UNMATCH(FrameInfo.FrameRateExtN))
+ av_log(avctx, AV_LOG_ERROR, "Current frame rate is unsupported\n");
+ if (UNMATCH(FrameInfo.PicStruct))
+ av_log(avctx, AV_LOG_ERROR, "Current picture structure is unsupported\n");
+ if (UNMATCH(FrameInfo.Width) || UNMATCH(FrameInfo.Height))
+ av_log(avctx, AV_LOG_ERROR, "Current resolution is unsupported\n");
+ if (UNMATCH(FrameInfo.FourCC))
+ av_log(avctx, AV_LOG_ERROR, "Current pixel format is unsupported\n");
return 0;
+ }
return 1;
}
@@ -514,11 +542,13 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
q->param.mfx.QPB = av_clip(quant * fabs(avctx->b_quant_factor) + avctx->b_quant_offset, 0, 51);
break;
+#if QSV_HAVE_AVBR
case MFX_RATECONTROL_AVBR:
q->param.mfx.TargetKbps = avctx->bit_rate / 1000;
q->param.mfx.Convergence = q->avbr_convergence;
q->param.mfx.Accuracy = q->avbr_accuracy;
break;
+#endif
#if QSV_HAVE_LA
case MFX_RATECONTROL_LA:
q->param.mfx.TargetKbps = avctx->bit_rate / 1000;
@@ -623,10 +653,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
#endif
}
- if (!rc_supported(q)) {
+ if (!check_enc_param(avctx,q)) {
av_log(avctx, AV_LOG_ERROR,
- "Selected ratecontrol mode is not supported by the QSV "
- "runtime. Choose a different mode.\n");
+ "some encoding parameters are not supported by the QSV "
+ "runtime. Please double check the input parameters.\n");
return AVERROR(ENOSYS);
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/qsvenc.h b/chromium/third_party/ffmpeg/libavcodec/qsvenc.h
index 88e07281101..fb5fd68edcf 100644
--- a/chromium/third_party/ffmpeg/libavcodec/qsvenc.h
+++ b/chromium/third_party/ffmpeg/libavcodec/qsvenc.h
@@ -46,10 +46,12 @@
#define QSV_HAVE_LA_HRD QSV_VERSION_ATLEAST(1, 11)
#if defined(_WIN32)
+#define QSV_HAVE_AVBR QSV_VERSION_ATLEAST(1, 3)
#define QSV_HAVE_ICQ QSV_VERSION_ATLEAST(1, 8)
#define QSV_HAVE_VCM QSV_VERSION_ATLEAST(1, 8)
#define QSV_HAVE_QVBR QSV_VERSION_ATLEAST(1, 11)
#else
+#define QSV_HAVE_AVBR 0
#define QSV_HAVE_ICQ 0
#define QSV_HAVE_VCM 0
#define QSV_HAVE_QVBR 0
diff --git a/chromium/third_party/ffmpeg/libavcodec/qsvenc_h264.c b/chromium/third_party/ffmpeg/libavcodec/qsvenc_h264.c
index 09e4c0e599d..e01a2a33693 100644
--- a/chromium/third_party/ffmpeg/libavcodec/qsvenc_h264.c
+++ b/chromium/third_party/ffmpeg/libavcodec/qsvenc_h264.c
@@ -109,7 +109,7 @@ static const AVOption options[] = {
{ "max_dec_frame_buffering", "Maximum number of frames buffered in the DPB", OFFSET(qsv.max_dec_frame_buffering), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, UINT16_MAX, VE },
#if QSV_HAVE_LA
- { "look_ahead", "Use VBR algorithm with look ahead", OFFSET(qsv.look_ahead), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, VE },
+ { "look_ahead", "Use VBR algorithm with look ahead", OFFSET(qsv.look_ahead), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE },
{ "look_ahead_depth", "Depth of look ahead in number frames", OFFSET(qsv.look_ahead_depth), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 100, VE },
#endif
#if QSV_HAVE_LA_DS
diff --git a/chromium/third_party/ffmpeg/libavcodec/remove_extradata_bsf.c b/chromium/third_party/ffmpeg/libavcodec/remove_extradata_bsf.c
index a54bbdbacfc..d74391e547a 100644
--- a/chromium/third_party/ffmpeg/libavcodec/remove_extradata_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/remove_extradata_bsf.c
@@ -38,30 +38,26 @@ typedef struct RemoveExtradataContext {
AVCodecContext *avctx;
} RemoveExtradataContext;
-static int remove_extradata(AVBSFContext *ctx, AVPacket *out)
+static int remove_extradata(AVBSFContext *ctx, AVPacket *pkt)
{
RemoveExtradataContext *s = ctx->priv_data;
- AVPacket *in;
int ret;
- ret = ff_bsf_get_packet(ctx, &in);
+ ret = ff_bsf_get_packet_ref(ctx, pkt);
if (ret < 0)
return ret;
if (s->parser && s->parser->parser->split) {
if (s->freq == REMOVE_FREQ_ALL ||
- (s->freq == REMOVE_FREQ_NONKEYFRAME && !(in->flags & AV_PKT_FLAG_KEY)) ||
- (s->freq == REMOVE_FREQ_KEYFRAME && in->flags & AV_PKT_FLAG_KEY)) {
- int i = s->parser->parser->split(s->avctx, in->data, in->size);
- in->data += i;
- in->size -= i;
+ (s->freq == REMOVE_FREQ_NONKEYFRAME && !(pkt->flags & AV_PKT_FLAG_KEY)) ||
+ (s->freq == REMOVE_FREQ_KEYFRAME && pkt->flags & AV_PKT_FLAG_KEY)) {
+ int i = s->parser->parser->split(s->avctx, pkt->data, pkt->size);
+ pkt->data += i;
+ pkt->size -= i;
}
}
- av_packet_move_ref(out, in);
- av_packet_free(&in);
-
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/rscc.c b/chromium/third_party/ffmpeg/libavcodec/rscc.c
index f270cd53511..dae5e846345 100644
--- a/chromium/third_party/ffmpeg/libavcodec/rscc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/rscc.c
@@ -157,6 +157,12 @@ static int rscc_decode_frame(AVCodecContext *avctx, void *data,
/* Read number of tiles, and allocate the array */
tiles_nb = bytestream2_get_le16(gbc);
+
+ if (tiles_nb == 0) {
+ av_log(avctx, AV_LOG_DEBUG, "no tiles\n");
+ return avpkt->size;
+ }
+
av_fast_malloc(&ctx->tiles, &ctx->tiles_size,
tiles_nb * sizeof(*ctx->tiles));
if (!ctx->tiles) {
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbc.c b/chromium/third_party/ffmpeg/libavcodec/sbc.c
new file mode 100644
index 00000000000..f7dba79f4fe
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbc.c
@@ -0,0 +1,271 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2012-2013 Intel Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2008 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC common functions for the encoder and decoder
+ */
+
+#include "avcodec.h"
+#include "sbc.h"
+
+/* A2DP specification: Appendix B, page 69 */
+static const int sbc_offset4[4][4] = {
+ { -1, 0, 0, 0 },
+ { -2, 0, 0, 1 },
+ { -2, 0, 0, 1 },
+ { -2, 0, 0, 1 }
+};
+
+/* A2DP specification: Appendix B, page 69 */
+static const int sbc_offset8[4][8] = {
+ { -2, 0, 0, 0, 0, 0, 0, 1 },
+ { -3, 0, 0, 0, 0, 0, 1, 2 },
+ { -4, 0, 0, 0, 0, 0, 1, 2 },
+ { -4, 0, 0, 0, 0, 0, 1, 2 }
+};
+
+/*
+ * Calculates the CRC-8 of the first len bits in data
+ */
+uint8_t sbc_crc8(const AVCRC *ctx, const uint8_t *data, size_t len)
+{
+ size_t byte_length = len >> 3;
+ int bit_length = len & 7;
+ uint8_t crc;
+
+ crc = av_crc(ctx, 0x0F, data, byte_length);
+
+ if (bit_length) {
+ uint8_t bits = data[byte_length];
+ while (bit_length--) {
+ int8_t mask = bits ^ crc;
+ crc = (crc << 1) ^ ((mask >> 7) & 0x1D);
+ bits <<= 1;
+ }
+ }
+
+ return crc;
+}
+
+/*
+ * Code straight from the spec to calculate the bits array
+ * Takes a pointer to the frame in question and a pointer to the bits array
+ */
+void ff_sbc_calculate_bits(const struct sbc_frame *frame, int (*bits)[8])
+{
+ int subbands = frame->subbands;
+ uint8_t sf = frame->frequency;
+
+ if (frame->mode == MONO || frame->mode == DUAL_CHANNEL) {
+ int bitneed[2][8], loudness, max_bitneed, bitcount, slicecount, bitslice;
+ int ch, sb;
+
+ for (ch = 0; ch < frame->channels; ch++) {
+ max_bitneed = 0;
+ if (frame->allocation == SNR) {
+ for (sb = 0; sb < subbands; sb++) {
+ bitneed[ch][sb] = frame->scale_factor[ch][sb];
+ if (bitneed[ch][sb] > max_bitneed)
+ max_bitneed = bitneed[ch][sb];
+ }
+ } else {
+ for (sb = 0; sb < subbands; sb++) {
+ if (frame->scale_factor[ch][sb] == 0)
+ bitneed[ch][sb] = -5;
+ else {
+ if (subbands == 4)
+ loudness = frame->scale_factor[ch][sb] - sbc_offset4[sf][sb];
+ else
+ loudness = frame->scale_factor[ch][sb] - sbc_offset8[sf][sb];
+ if (loudness > 0)
+ bitneed[ch][sb] = loudness / 2;
+ else
+ bitneed[ch][sb] = loudness;
+ }
+ if (bitneed[ch][sb] > max_bitneed)
+ max_bitneed = bitneed[ch][sb];
+ }
+ }
+
+ bitcount = 0;
+ slicecount = 0;
+ bitslice = max_bitneed + 1;
+ do {
+ bitslice--;
+ bitcount += slicecount;
+ slicecount = 0;
+ for (sb = 0; sb < subbands; sb++) {
+ if ((bitneed[ch][sb] > bitslice + 1) && (bitneed[ch][sb] < bitslice + 16))
+ slicecount++;
+ else if (bitneed[ch][sb] == bitslice + 1)
+ slicecount += 2;
+ }
+ } while (bitcount + slicecount < frame->bitpool);
+
+ if (bitcount + slicecount == frame->bitpool) {
+ bitcount += slicecount;
+ bitslice--;
+ }
+
+ for (sb = 0; sb < subbands; sb++) {
+ if (bitneed[ch][sb] < bitslice + 2)
+ bits[ch][sb] = 0;
+ else {
+ bits[ch][sb] = bitneed[ch][sb] - bitslice;
+ if (bits[ch][sb] > 16)
+ bits[ch][sb] = 16;
+ }
+ }
+
+ for (sb = 0; bitcount < frame->bitpool &&
+ sb < subbands; sb++) {
+ if ((bits[ch][sb] >= 2) && (bits[ch][sb] < 16)) {
+ bits[ch][sb]++;
+ bitcount++;
+ } else if ((bitneed[ch][sb] == bitslice + 1) && (frame->bitpool > bitcount + 1)) {
+ bits[ch][sb] = 2;
+ bitcount += 2;
+ }
+ }
+
+ for (sb = 0; bitcount < frame->bitpool &&
+ sb < subbands; sb++) {
+ if (bits[ch][sb] < 16) {
+ bits[ch][sb]++;
+ bitcount++;
+ }
+ }
+
+ }
+
+ } else if (frame->mode == STEREO || frame->mode == JOINT_STEREO) {
+ int bitneed[2][8], loudness, max_bitneed, bitcount, slicecount, bitslice;
+ int ch, sb;
+
+ max_bitneed = 0;
+ if (frame->allocation == SNR) {
+ for (ch = 0; ch < 2; ch++) {
+ for (sb = 0; sb < subbands; sb++) {
+ bitneed[ch][sb] = frame->scale_factor[ch][sb];
+ if (bitneed[ch][sb] > max_bitneed)
+ max_bitneed = bitneed[ch][sb];
+ }
+ }
+ } else {
+ for (ch = 0; ch < 2; ch++) {
+ for (sb = 0; sb < subbands; sb++) {
+ if (frame->scale_factor[ch][sb] == 0)
+ bitneed[ch][sb] = -5;
+ else {
+ if (subbands == 4)
+ loudness = frame->scale_factor[ch][sb] - sbc_offset4[sf][sb];
+ else
+ loudness = frame->scale_factor[ch][sb] - sbc_offset8[sf][sb];
+ if (loudness > 0)
+ bitneed[ch][sb] = loudness / 2;
+ else
+ bitneed[ch][sb] = loudness;
+ }
+ if (bitneed[ch][sb] > max_bitneed)
+ max_bitneed = bitneed[ch][sb];
+ }
+ }
+ }
+
+ bitcount = 0;
+ slicecount = 0;
+ bitslice = max_bitneed + 1;
+ do {
+ bitslice--;
+ bitcount += slicecount;
+ slicecount = 0;
+ for (ch = 0; ch < 2; ch++) {
+ for (sb = 0; sb < subbands; sb++) {
+ if ((bitneed[ch][sb] > bitslice + 1) && (bitneed[ch][sb] < bitslice + 16))
+ slicecount++;
+ else if (bitneed[ch][sb] == bitslice + 1)
+ slicecount += 2;
+ }
+ }
+ } while (bitcount + slicecount < frame->bitpool);
+
+ if (bitcount + slicecount == frame->bitpool) {
+ bitcount += slicecount;
+ bitslice--;
+ }
+
+ for (ch = 0; ch < 2; ch++) {
+ for (sb = 0; sb < subbands; sb++) {
+ if (bitneed[ch][sb] < bitslice + 2) {
+ bits[ch][sb] = 0;
+ } else {
+ bits[ch][sb] = bitneed[ch][sb] - bitslice;
+ if (bits[ch][sb] > 16)
+ bits[ch][sb] = 16;
+ }
+ }
+ }
+
+ ch = 0;
+ sb = 0;
+ while (bitcount < frame->bitpool) {
+ if ((bits[ch][sb] >= 2) && (bits[ch][sb] < 16)) {
+ bits[ch][sb]++;
+ bitcount++;
+ } else if ((bitneed[ch][sb] == bitslice + 1) && (frame->bitpool > bitcount + 1)) {
+ bits[ch][sb] = 2;
+ bitcount += 2;
+ }
+ if (ch == 1) {
+ ch = 0;
+ sb++;
+ if (sb >= subbands)
+ break;
+ } else
+ ch = 1;
+ }
+
+ ch = 0;
+ sb = 0;
+ while (bitcount < frame->bitpool) {
+ if (bits[ch][sb] < 16) {
+ bits[ch][sb]++;
+ bitcount++;
+ }
+ if (ch == 1) {
+ ch = 0;
+ sb++;
+ if (sb >= subbands)
+ break;
+ } else
+ ch = 1;
+ }
+
+ }
+
+}
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbc.h b/chromium/third_party/ffmpeg/libavcodec/sbc.h
new file mode 100644
index 00000000000..405fadc3a62
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbc.h
@@ -0,0 +1,118 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2012-2014 Intel Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC common definitions for the encoder and decoder
+ */
+
+#ifndef AVCODEC_SBC_H
+#define AVCODEC_SBC_H
+
+#include "avcodec.h"
+#include "libavutil/crc.h"
+
+#define MSBC_BLOCKS 15
+
+/* sampling frequency */
+#define SBC_FREQ_16000 0x00
+#define SBC_FREQ_32000 0x01
+#define SBC_FREQ_44100 0x02
+#define SBC_FREQ_48000 0x03
+
+/* blocks */
+#define SBC_BLK_4 0x00
+#define SBC_BLK_8 0x01
+#define SBC_BLK_12 0x02
+#define SBC_BLK_16 0x03
+
+/* channel mode */
+#define SBC_MODE_MONO 0x00
+#define SBC_MODE_DUAL_CHANNEL 0x01
+#define SBC_MODE_STEREO 0x02
+#define SBC_MODE_JOINT_STEREO 0x03
+
+/* allocation method */
+#define SBC_AM_LOUDNESS 0x00
+#define SBC_AM_SNR 0x01
+
+/* subbands */
+#define SBC_SB_4 0x00
+#define SBC_SB_8 0x01
+
+/* synchronisation words */
+#define SBC_SYNCWORD 0x9C
+#define MSBC_SYNCWORD 0xAD
+
+/* extra bits of precision for the synthesis filter input data */
+#define SBCDEC_FIXED_EXTRA_BITS 2
+
+/*
+ * Enforce 16 byte alignment for the data, which is supposed to be used
+ * with SIMD optimized code.
+ */
+#define SBC_ALIGN 16
+
+/* This structure contains an unpacked SBC frame.
+ Yes, there is probably quite some unused space herein */
+struct sbc_frame {
+ uint8_t frequency;
+ uint8_t blocks;
+ enum {
+ MONO = SBC_MODE_MONO,
+ DUAL_CHANNEL = SBC_MODE_DUAL_CHANNEL,
+ STEREO = SBC_MODE_STEREO,
+ JOINT_STEREO = SBC_MODE_JOINT_STEREO
+ } mode;
+ uint8_t channels;
+ enum {
+ LOUDNESS = SBC_AM_LOUDNESS,
+ SNR = SBC_AM_SNR
+ } allocation;
+ uint8_t subbands;
+ uint8_t bitpool;
+ uint16_t codesize;
+
+ /* bit number x set means joint stereo has been used in subband x */
+ uint8_t joint;
+
+ /* only the lower 4 bits of every element are to be used */
+ DECLARE_ALIGNED(SBC_ALIGN, uint32_t, scale_factor)[2][8];
+
+ /* raw integer subband samples in the frame */
+ DECLARE_ALIGNED(SBC_ALIGN, int32_t, sb_sample_f)[16][2][8];
+
+ /* modified subband samples */
+ DECLARE_ALIGNED(SBC_ALIGN, int32_t, sb_sample)[16][2][8];
+
+ const AVCRC *crc_ctx;
+};
+
+uint8_t sbc_crc8(const AVCRC *crc_ctx, const uint8_t *data, size_t len);
+void ff_sbc_calculate_bits(const struct sbc_frame *frame, int (*bits)[8]);
+
+#endif /* AVCODEC_SBC_H */
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbc_parser.c b/chromium/third_party/ffmpeg/libavcodec/sbc_parser.c
new file mode 100644
index 00000000000..f56564147a4
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbc_parser.c
@@ -0,0 +1,122 @@
+/*
+ * SBC parser
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU 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 "sbc.h"
+#include "parser.h"
+
+typedef struct SBCParseContext {
+ ParseContext pc;
+ uint8_t header[3];
+ int header_size;
+ int buffered_size;
+} SBCParseContext;
+
+static int sbc_parse_header(AVCodecParserContext *s, AVCodecContext *avctx,
+ const uint8_t *data, size_t len)
+{
+ static const int sample_rates[4] = { 16000, 32000, 44100, 48000 };
+ int sr, blocks, mode, subbands, bitpool, channels, joint;
+ int length;
+
+ if (len < 3)
+ return -1;
+
+ if (data[0] == MSBC_SYNCWORD && data[1] == 0 && data[2] == 0) {
+ avctx->channels = 1;
+ avctx->sample_fmt = AV_SAMPLE_FMT_S16;
+ avctx->sample_rate = 16000;
+ avctx->frame_size = 120;
+ s->duration = avctx->frame_size;
+ return 57;
+ }
+
+ if (data[0] != SBC_SYNCWORD)
+ return -2;
+
+ sr = (data[1] >> 6) & 0x03;
+ blocks = (((data[1] >> 4) & 0x03) + 1) << 2;
+ mode = (data[1] >> 2) & 0x03;
+ subbands = (((data[1] >> 0) & 0x01) + 1) << 2;
+ bitpool = data[2];
+
+ channels = mode == SBC_MODE_MONO ? 1 : 2;
+ joint = mode == SBC_MODE_JOINT_STEREO;
+
+ length = 4 + (subbands * channels) / 2
+ + ((((mode == SBC_MODE_DUAL_CHANNEL) + 1) * blocks * bitpool
+ + (joint * subbands)) + 7) / 8;
+
+ avctx->channels = channels;
+ avctx->sample_fmt = AV_SAMPLE_FMT_S16;
+ avctx->sample_rate = sample_rates[sr];
+ avctx->frame_size = subbands * blocks;
+ s->duration = avctx->frame_size;
+ return length;
+}
+
+static int sbc_parse(AVCodecParserContext *s, AVCodecContext *avctx,
+ const uint8_t **poutbuf, int *poutbuf_size,
+ const uint8_t *buf, int buf_size)
+{
+ SBCParseContext *pc = s->priv_data;
+ int next;
+
+ if (s->flags & PARSER_FLAG_COMPLETE_FRAMES) {
+ next = buf_size;
+ } else {
+ if (pc->header_size) {
+ memcpy(pc->header + pc->header_size, buf,
+ sizeof(pc->header) - pc->header_size);
+ next = sbc_parse_header(s, avctx, pc->header, sizeof(pc->header))
+ - pc->buffered_size;
+ pc->header_size = 0;
+ } else {
+ next = sbc_parse_header(s, avctx, buf, buf_size);
+ if (next >= buf_size)
+ next = -1;
+ }
+
+ if (next < 0) {
+ pc->header_size = FFMIN(sizeof(pc->header), buf_size);
+ memcpy(pc->header, buf, pc->header_size);
+ pc->buffered_size = buf_size;
+ next = END_NOT_FOUND;
+ }
+
+ if (ff_combine_frame(&pc->pc, next, &buf, &buf_size) < 0) {
+ *poutbuf = NULL;
+ *poutbuf_size = 0;
+ return buf_size;
+ }
+ }
+
+ *poutbuf = buf;
+ *poutbuf_size = buf_size;
+ return next;
+}
+
+AVCodecParser ff_sbc_parser = {
+ .codec_ids = { AV_CODEC_ID_SBC },
+ .priv_data_size = sizeof(SBCParseContext),
+ .parser_parse = sbc_parse,
+ .parser_close = ff_parse_close,
+};
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbcdec.c b/chromium/third_party/ffmpeg/libavcodec/sbcdec.c
new file mode 100644
index 00000000000..be703382ff5
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbcdec.c
@@ -0,0 +1,379 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2012-2013 Intel Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2008 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC decoder implementation
+ */
+
+#include <stdbool.h>
+#include "avcodec.h"
+#include "internal.h"
+#include "libavutil/intreadwrite.h"
+#include "sbc.h"
+#include "sbcdec_data.h"
+
+struct sbc_decoder_state {
+ int32_t V[2][170];
+ int offset[2][16];
+};
+
+typedef struct SBCDecContext {
+ AVClass *class;
+ DECLARE_ALIGNED(SBC_ALIGN, struct sbc_frame, frame);
+ DECLARE_ALIGNED(SBC_ALIGN, struct sbc_decoder_state, dsp);
+} SBCDecContext;
+
+/*
+ * Unpacks a SBC frame at the beginning of the stream in data,
+ * which has at most len bytes into frame.
+ * Returns the length in bytes of the packed frame, or a negative
+ * value on error. The error codes are:
+ *
+ * -1 Data stream too short
+ * -2 Sync byte incorrect
+ * -3 CRC8 incorrect
+ * -4 Bitpool value out of bounds
+ */
+static int sbc_unpack_frame(const uint8_t *data, struct sbc_frame *frame,
+ size_t len)
+{
+ unsigned int consumed;
+ /* Will copy the parts of the header that are relevant to crc
+ * calculation here */
+ uint8_t crc_header[11] = { 0 };
+ int crc_pos;
+ int32_t temp;
+
+ uint32_t audio_sample;
+ int ch, sb, blk, bit; /* channel, subband, block and bit standard
+ counters */
+ int bits[2][8]; /* bits distribution */
+ uint32_t levels[2][8]; /* levels derived from that */
+
+ if (len < 4)
+ return -1;
+
+ if (data[0] == MSBC_SYNCWORD) {
+ if (data[1] != 0)
+ return -2;
+ if (data[2] != 0)
+ return -2;
+
+ frame->frequency = SBC_FREQ_16000;
+ frame->blocks = MSBC_BLOCKS;
+ frame->allocation = LOUDNESS;
+ frame->mode = MONO;
+ frame->channels = 1;
+ frame->subbands = 8;
+ frame->bitpool = 26;
+ } else if (data[0] == SBC_SYNCWORD) {
+ frame->frequency = (data[1] >> 6) & 0x03;
+ frame->blocks = 4 * ((data[1] >> 4) & 0x03) + 4;
+ frame->mode = (data[1] >> 2) & 0x03;
+ frame->channels = frame->mode == MONO ? 1 : 2;
+ frame->allocation = (data[1] >> 1) & 0x01;
+ frame->subbands = data[1] & 0x01 ? 8 : 4;
+ frame->bitpool = data[2];
+
+ if ((frame->mode == MONO || frame->mode == DUAL_CHANNEL) &&
+ frame->bitpool > 16 * frame->subbands)
+ return -4;
+
+ if ((frame->mode == STEREO || frame->mode == JOINT_STEREO) &&
+ frame->bitpool > 32 * frame->subbands)
+ return -4;
+ } else
+ return -2;
+
+ consumed = 32;
+ crc_header[0] = data[1];
+ crc_header[1] = data[2];
+ crc_pos = 16;
+
+ if (frame->mode == JOINT_STEREO) {
+ if (len * 8 < consumed + frame->subbands)
+ return -1;
+
+ frame->joint = 0x00;
+ for (sb = 0; sb < frame->subbands - 1; sb++)
+ frame->joint |= ((data[4] >> (7 - sb)) & 0x01) << sb;
+ if (frame->subbands == 4)
+ crc_header[crc_pos / 8] = data[4] & 0xf0;
+ else
+ crc_header[crc_pos / 8] = data[4];
+
+ consumed += frame->subbands;
+ crc_pos += frame->subbands;
+ }
+
+ if (len * 8 < consumed + (4 * frame->subbands * frame->channels))
+ return -1;
+
+ for (ch = 0; ch < frame->channels; ch++) {
+ for (sb = 0; sb < frame->subbands; sb++) {
+ /* FIXME assert(consumed % 4 == 0); */
+ frame->scale_factor[ch][sb] =
+ (data[consumed >> 3] >> (4 - (consumed & 0x7))) & 0x0F;
+ crc_header[crc_pos >> 3] |=
+ frame->scale_factor[ch][sb] << (4 - (crc_pos & 0x7));
+
+ consumed += 4;
+ crc_pos += 4;
+ }
+ }
+
+ if (data[3] != sbc_crc8(frame->crc_ctx, crc_header, crc_pos))
+ return -3;
+
+ ff_sbc_calculate_bits(frame, bits);
+
+ for (ch = 0; ch < frame->channels; ch++) {
+ for (sb = 0; sb < frame->subbands; sb++)
+ levels[ch][sb] = (1 << bits[ch][sb]) - 1;
+ }
+
+ for (blk = 0; blk < frame->blocks; blk++) {
+ for (ch = 0; ch < frame->channels; ch++) {
+ for (sb = 0; sb < frame->subbands; sb++) {
+ uint32_t shift;
+
+ if (levels[ch][sb] == 0) {
+ frame->sb_sample[blk][ch][sb] = 0;
+ continue;
+ }
+
+ shift = frame->scale_factor[ch][sb] +
+ 1 + SBCDEC_FIXED_EXTRA_BITS;
+
+ audio_sample = 0;
+ for (bit = 0; bit < bits[ch][sb]; bit++) {
+ if (consumed > len * 8)
+ return -1;
+
+ if ((data[consumed >> 3] >> (7 - (consumed & 0x7))) & 0x01)
+ audio_sample |= 1 << (bits[ch][sb] - bit - 1);
+
+ consumed++;
+ }
+
+ frame->sb_sample[blk][ch][sb] = (int32_t)
+ (((((uint64_t) audio_sample << 1) | 1) << shift) /
+ levels[ch][sb]) - (1 << shift);
+ }
+ }
+ }
+
+ if (frame->mode == JOINT_STEREO) {
+ for (blk = 0; blk < frame->blocks; blk++) {
+ for (sb = 0; sb < frame->subbands; sb++) {
+ if (frame->joint & (0x01 << sb)) {
+ temp = frame->sb_sample[blk][0][sb] +
+ frame->sb_sample[blk][1][sb];
+ frame->sb_sample[blk][1][sb] =
+ frame->sb_sample[blk][0][sb] -
+ frame->sb_sample[blk][1][sb];
+ frame->sb_sample[blk][0][sb] = temp;
+ }
+ }
+ }
+ }
+
+ if ((consumed & 0x7) != 0)
+ consumed += 8 - (consumed & 0x7);
+
+ return consumed >> 3;
+}
+
+static inline void sbc_synthesize_four(struct sbc_decoder_state *state,
+ struct sbc_frame *frame,
+ int ch, int blk, AVFrame *output_frame)
+{
+ int i, k, idx;
+ int32_t *v = state->V[ch];
+ int *offset = state->offset[ch];
+
+ for (i = 0; i < 8; i++) {
+ /* Shifting */
+ offset[i]--;
+ if (offset[i] < 0) {
+ offset[i] = 79;
+ memcpy(v + 80, v, 9 * sizeof(*v));
+ }
+
+ /* Distribute the new matrix value to the shifted position */
+ v[offset[i]] =
+ ( ff_synmatrix4[i][0] * frame->sb_sample[blk][ch][0] +
+ ff_synmatrix4[i][1] * frame->sb_sample[blk][ch][1] +
+ ff_synmatrix4[i][2] * frame->sb_sample[blk][ch][2] +
+ ff_synmatrix4[i][3] * frame->sb_sample[blk][ch][3] ) >> 15;
+ }
+
+ /* Compute the samples */
+ for (idx = 0, i = 0; i < 4; i++, idx += 5) {
+ k = (i + 4) & 0xf;
+
+ /* Store in output, Q0 */
+ AV_WN16A(&output_frame->data[ch][blk * 8 + i * 2], av_clip_int16(
+ ( v[offset[i] + 0] * ff_sbc_proto_4_40m0[idx + 0] +
+ v[offset[k] + 1] * ff_sbc_proto_4_40m1[idx + 0] +
+ v[offset[i] + 2] * ff_sbc_proto_4_40m0[idx + 1] +
+ v[offset[k] + 3] * ff_sbc_proto_4_40m1[idx + 1] +
+ v[offset[i] + 4] * ff_sbc_proto_4_40m0[idx + 2] +
+ v[offset[k] + 5] * ff_sbc_proto_4_40m1[idx + 2] +
+ v[offset[i] + 6] * ff_sbc_proto_4_40m0[idx + 3] +
+ v[offset[k] + 7] * ff_sbc_proto_4_40m1[idx + 3] +
+ v[offset[i] + 8] * ff_sbc_proto_4_40m0[idx + 4] +
+ v[offset[k] + 9] * ff_sbc_proto_4_40m1[idx + 4] ) >> 15));
+ }
+}
+
+static inline void sbc_synthesize_eight(struct sbc_decoder_state *state,
+ struct sbc_frame *frame,
+ int ch, int blk, AVFrame *output_frame)
+{
+ int i, k, idx;
+ int32_t *v = state->V[ch];
+ int *offset = state->offset[ch];
+
+ for (i = 0; i < 16; i++) {
+ /* Shifting */
+ offset[i]--;
+ if (offset[i] < 0) {
+ offset[i] = 159;
+ memcpy(v + 160, v, 9 * sizeof(*v));
+ }
+
+ /* Distribute the new matrix value to the shifted position */
+ v[offset[i]] =
+ ( ff_synmatrix8[i][0] * frame->sb_sample[blk][ch][0] +
+ ff_synmatrix8[i][1] * frame->sb_sample[blk][ch][1] +
+ ff_synmatrix8[i][2] * frame->sb_sample[blk][ch][2] +
+ ff_synmatrix8[i][3] * frame->sb_sample[blk][ch][3] +
+ ff_synmatrix8[i][4] * frame->sb_sample[blk][ch][4] +
+ ff_synmatrix8[i][5] * frame->sb_sample[blk][ch][5] +
+ ff_synmatrix8[i][6] * frame->sb_sample[blk][ch][6] +
+ ff_synmatrix8[i][7] * frame->sb_sample[blk][ch][7] ) >> 15;
+ }
+
+ /* Compute the samples */
+ for (idx = 0, i = 0; i < 8; i++, idx += 5) {
+ k = (i + 8) & 0xf;
+
+ /* Store in output, Q0 */
+ AV_WN16A(&output_frame->data[ch][blk * 16 + i * 2], av_clip_int16(
+ ( v[offset[i] + 0] * ff_sbc_proto_8_80m0[idx + 0] +
+ v[offset[k] + 1] * ff_sbc_proto_8_80m1[idx + 0] +
+ v[offset[i] + 2] * ff_sbc_proto_8_80m0[idx + 1] +
+ v[offset[k] + 3] * ff_sbc_proto_8_80m1[idx + 1] +
+ v[offset[i] + 4] * ff_sbc_proto_8_80m0[idx + 2] +
+ v[offset[k] + 5] * ff_sbc_proto_8_80m1[idx + 2] +
+ v[offset[i] + 6] * ff_sbc_proto_8_80m0[idx + 3] +
+ v[offset[k] + 7] * ff_sbc_proto_8_80m1[idx + 3] +
+ v[offset[i] + 8] * ff_sbc_proto_8_80m0[idx + 4] +
+ v[offset[k] + 9] * ff_sbc_proto_8_80m1[idx + 4] ) >> 15));
+ }
+}
+
+static void sbc_synthesize_audio(struct sbc_decoder_state *state,
+ struct sbc_frame *frame, AVFrame *output_frame)
+{
+ int ch, blk;
+
+ switch (frame->subbands) {
+ case 4:
+ for (ch = 0; ch < frame->channels; ch++)
+ for (blk = 0; blk < frame->blocks; blk++)
+ sbc_synthesize_four(state, frame, ch, blk, output_frame);
+ break;
+
+ case 8:
+ for (ch = 0; ch < frame->channels; ch++)
+ for (blk = 0; blk < frame->blocks; blk++)
+ sbc_synthesize_eight(state, frame, ch, blk, output_frame);
+ break;
+ }
+}
+
+static int sbc_decode_init(AVCodecContext *avctx)
+{
+ SBCDecContext *sbc = avctx->priv_data;
+ int i, ch;
+
+ sbc->frame.crc_ctx = av_crc_get_table(AV_CRC_8_EBU);
+
+ memset(sbc->dsp.V, 0, sizeof(sbc->dsp.V));
+ for (ch = 0; ch < 2; ch++)
+ for (i = 0; i < FF_ARRAY_ELEMS(sbc->dsp.offset[0]); i++)
+ sbc->dsp.offset[ch][i] = (10 * i + 10);
+ return 0;
+}
+
+static int sbc_decode_frame(AVCodecContext *avctx,
+ void *data, int *got_frame_ptr,
+ AVPacket *avpkt)
+{
+ SBCDecContext *sbc = avctx->priv_data;
+ AVFrame *frame = data;
+ int ret, frame_length;
+
+ if (!sbc)
+ return AVERROR(EIO);
+
+ frame_length = sbc_unpack_frame(avpkt->data, &sbc->frame, avpkt->size);
+ if (frame_length <= 0)
+ return frame_length;
+
+ frame->channels = sbc->frame.channels;
+ frame->format = AV_SAMPLE_FMT_S16P;
+ frame->nb_samples = sbc->frame.blocks * sbc->frame.subbands;
+ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
+ return ret;
+
+ sbc_synthesize_audio(&sbc->dsp, &sbc->frame, frame);
+
+ *got_frame_ptr = 1;
+
+ return frame_length;
+}
+
+AVCodec ff_sbc_decoder = {
+ .name = "sbc",
+ .long_name = NULL_IF_CONFIG_SMALL("SBC (low-complexity subband codec)"),
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = AV_CODEC_ID_SBC,
+ .priv_data_size = sizeof(SBCDecContext),
+ .init = sbc_decode_init,
+ .decode = sbc_decode_frame,
+ .capabilities = AV_CODEC_CAP_DR1,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .channel_layouts = (const uint64_t[]) { AV_CH_LAYOUT_MONO,
+ AV_CH_LAYOUT_STEREO, 0},
+ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P,
+ AV_SAMPLE_FMT_NONE },
+ .supported_samplerates = (const int[]) { 16000, 32000, 44100, 48000, 0 },
+};
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbcdec_data.c b/chromium/third_party/ffmpeg/libavcodec/sbcdec_data.c
new file mode 100644
index 00000000000..21521622075
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbcdec_data.c
@@ -0,0 +1,127 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC decoder tables
+ */
+
+#include <stdint.h>
+#include "sbcdec_data.h"
+#include "sbc.h"
+
+#define SS4(val) ((int32_t)val >> 12)
+#define SS8(val) ((int32_t)val >> 14)
+#define SN4(val) ((int32_t)val >> 11 + 1 + SBCDEC_FIXED_EXTRA_BITS)
+#define SN8(val) ((int32_t)val >> 11 + 1 + SBCDEC_FIXED_EXTRA_BITS)
+
+const int32_t ff_sbc_proto_4_40m0[] = {
+ SS4(0x00000000), SS4(0xffa6982f), SS4(0xfba93848), SS4(0x0456c7b8),
+ SS4(0x005967d1), SS4(0xfffb9ac7), SS4(0xff589157), SS4(0xf9c2a8d8),
+ SS4(0x027c1434), SS4(0x0019118b), SS4(0xfff3c74c), SS4(0xff137330),
+ SS4(0xf81b8d70), SS4(0x00ec1b8b), SS4(0xfff0b71a), SS4(0xffe99b00),
+ SS4(0xfef84470), SS4(0xf6fb4370), SS4(0xffcdc351), SS4(0xffe01dc7)
+};
+
+const int32_t ff_sbc_proto_4_40m1[] = {
+ SS4(0xffe090ce), SS4(0xff2c0475), SS4(0xf694f800), SS4(0xff2c0475),
+ SS4(0xffe090ce), SS4(0xffe01dc7), SS4(0xffcdc351), SS4(0xf6fb4370),
+ SS4(0xfef84470), SS4(0xffe99b00), SS4(0xfff0b71a), SS4(0x00ec1b8b),
+ SS4(0xf81b8d70), SS4(0xff137330), SS4(0xfff3c74c), SS4(0x0019118b),
+ SS4(0x027c1434), SS4(0xf9c2a8d8), SS4(0xff589157), SS4(0xfffb9ac7)
+};
+
+const int32_t ff_sbc_proto_8_80m0[] = {
+ SS8(0x00000000), SS8(0xfe8d1970), SS8(0xee979f00), SS8(0x11686100),
+ SS8(0x0172e690), SS8(0xfff5bd1a), SS8(0xfdf1c8d4), SS8(0xeac182c0),
+ SS8(0x0d9daee0), SS8(0x00e530da), SS8(0xffe9811d), SS8(0xfd52986c),
+ SS8(0xe7054ca0), SS8(0x0a00d410), SS8(0x006c1de4), SS8(0xffdba705),
+ SS8(0xfcbc98e8), SS8(0xe3889d20), SS8(0x06af2308), SS8(0x000bb7db),
+ SS8(0xffca00ed), SS8(0xfc3fbb68), SS8(0xe071bc00), SS8(0x03bf7948),
+ SS8(0xffc4e05c), SS8(0xffb54b3b), SS8(0xfbedadc0), SS8(0xdde26200),
+ SS8(0x0142291c), SS8(0xff960e94), SS8(0xff9f3e17), SS8(0xfbd8f358),
+ SS8(0xdbf79400), SS8(0xff405e01), SS8(0xff7d4914), SS8(0xff8b1a31),
+ SS8(0xfc1417b8), SS8(0xdac7bb40), SS8(0xfdbb828c), SS8(0xff762170)
+};
+
+const int32_t ff_sbc_proto_8_80m1[] = {
+ SS8(0xff7c272c), SS8(0xfcb02620), SS8(0xda612700), SS8(0xfcb02620),
+ SS8(0xff7c272c), SS8(0xff762170), SS8(0xfdbb828c), SS8(0xdac7bb40),
+ SS8(0xfc1417b8), SS8(0xff8b1a31), SS8(0xff7d4914), SS8(0xff405e01),
+ SS8(0xdbf79400), SS8(0xfbd8f358), SS8(0xff9f3e17), SS8(0xff960e94),
+ SS8(0x0142291c), SS8(0xdde26200), SS8(0xfbedadc0), SS8(0xffb54b3b),
+ SS8(0xffc4e05c), SS8(0x03bf7948), SS8(0xe071bc00), SS8(0xfc3fbb68),
+ SS8(0xffca00ed), SS8(0x000bb7db), SS8(0x06af2308), SS8(0xe3889d20),
+ SS8(0xfcbc98e8), SS8(0xffdba705), SS8(0x006c1de4), SS8(0x0a00d410),
+ SS8(0xe7054ca0), SS8(0xfd52986c), SS8(0xffe9811d), SS8(0x00e530da),
+ SS8(0x0d9daee0), SS8(0xeac182c0), SS8(0xfdf1c8d4), SS8(0xfff5bd1a)
+};
+
+const int32_t ff_synmatrix4[8][4] = {
+ { SN4(0x05a82798), SN4(0xfa57d868), SN4(0xfa57d868), SN4(0x05a82798) },
+ { SN4(0x030fbc54), SN4(0xf89be510), SN4(0x07641af0), SN4(0xfcf043ac) },
+ { SN4(0x00000000), SN4(0x00000000), SN4(0x00000000), SN4(0x00000000) },
+ { SN4(0xfcf043ac), SN4(0x07641af0), SN4(0xf89be510), SN4(0x030fbc54) },
+ { SN4(0xfa57d868), SN4(0x05a82798), SN4(0x05a82798), SN4(0xfa57d868) },
+ { SN4(0xf89be510), SN4(0xfcf043ac), SN4(0x030fbc54), SN4(0x07641af0) },
+ { SN4(0xf8000000), SN4(0xf8000000), SN4(0xf8000000), SN4(0xf8000000) },
+ { SN4(0xf89be510), SN4(0xfcf043ac), SN4(0x030fbc54), SN4(0x07641af0) }
+};
+
+const int32_t ff_synmatrix8[16][8] = {
+ { SN8(0x05a82798), SN8(0xfa57d868), SN8(0xfa57d868), SN8(0x05a82798),
+ SN8(0x05a82798), SN8(0xfa57d868), SN8(0xfa57d868), SN8(0x05a82798) },
+ { SN8(0x0471ced0), SN8(0xf8275a10), SN8(0x018f8b84), SN8(0x06a6d988),
+ SN8(0xf9592678), SN8(0xfe70747c), SN8(0x07d8a5f0), SN8(0xfb8e3130) },
+ { SN8(0x030fbc54), SN8(0xf89be510), SN8(0x07641af0), SN8(0xfcf043ac),
+ SN8(0xfcf043ac), SN8(0x07641af0), SN8(0xf89be510), SN8(0x030fbc54) },
+ { SN8(0x018f8b84), SN8(0xfb8e3130), SN8(0x06a6d988), SN8(0xf8275a10),
+ SN8(0x07d8a5f0), SN8(0xf9592678), SN8(0x0471ced0), SN8(0xfe70747c) },
+ { SN8(0x00000000), SN8(0x00000000), SN8(0x00000000), SN8(0x00000000),
+ SN8(0x00000000), SN8(0x00000000), SN8(0x00000000), SN8(0x00000000) },
+ { SN8(0xfe70747c), SN8(0x0471ced0), SN8(0xf9592678), SN8(0x07d8a5f0),
+ SN8(0xf8275a10), SN8(0x06a6d988), SN8(0xfb8e3130), SN8(0x018f8b84) },
+ { SN8(0xfcf043ac), SN8(0x07641af0), SN8(0xf89be510), SN8(0x030fbc54),
+ SN8(0x030fbc54), SN8(0xf89be510), SN8(0x07641af0), SN8(0xfcf043ac) },
+ { SN8(0xfb8e3130), SN8(0x07d8a5f0), SN8(0xfe70747c), SN8(0xf9592678),
+ SN8(0x06a6d988), SN8(0x018f8b84), SN8(0xf8275a10), SN8(0x0471ced0) },
+ { SN8(0xfa57d868), SN8(0x05a82798), SN8(0x05a82798), SN8(0xfa57d868),
+ SN8(0xfa57d868), SN8(0x05a82798), SN8(0x05a82798), SN8(0xfa57d868) },
+ { SN8(0xf9592678), SN8(0x018f8b84), SN8(0x07d8a5f0), SN8(0x0471ced0),
+ SN8(0xfb8e3130), SN8(0xf8275a10), SN8(0xfe70747c), SN8(0x06a6d988) },
+ { SN8(0xf89be510), SN8(0xfcf043ac), SN8(0x030fbc54), SN8(0x07641af0),
+ SN8(0x07641af0), SN8(0x030fbc54), SN8(0xfcf043ac), SN8(0xf89be510) },
+ { SN8(0xf8275a10), SN8(0xf9592678), SN8(0xfb8e3130), SN8(0xfe70747c),
+ SN8(0x018f8b84), SN8(0x0471ced0), SN8(0x06a6d988), SN8(0x07d8a5f0) },
+ { SN8(0xf8000000), SN8(0xf8000000), SN8(0xf8000000), SN8(0xf8000000),
+ SN8(0xf8000000), SN8(0xf8000000), SN8(0xf8000000), SN8(0xf8000000) },
+ { SN8(0xf8275a10), SN8(0xf9592678), SN8(0xfb8e3130), SN8(0xfe70747c),
+ SN8(0x018f8b84), SN8(0x0471ced0), SN8(0x06a6d988), SN8(0x07d8a5f0) },
+ { SN8(0xf89be510), SN8(0xfcf043ac), SN8(0x030fbc54), SN8(0x07641af0),
+ SN8(0x07641af0), SN8(0x030fbc54), SN8(0xfcf043ac), SN8(0xf89be510) },
+ { SN8(0xf9592678), SN8(0x018f8b84), SN8(0x07d8a5f0), SN8(0x0471ced0),
+ SN8(0xfb8e3130), SN8(0xf8275a10), SN8(0xfe70747c), SN8(0x06a6d988) }
+};
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbcdec_data.h b/chromium/third_party/ffmpeg/libavcodec/sbcdec_data.h
new file mode 100644
index 00000000000..1b79d1de237
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbcdec_data.h
@@ -0,0 +1,44 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC decoder tables
+ */
+
+#ifndef AVCODEC_SBCDEC_DATA_H
+#define AVCODEC_SBCDEC_DATA_H
+
+#include <stdint.h>
+
+extern const int32_t ff_sbc_proto_4_40m0[];
+extern const int32_t ff_sbc_proto_4_40m1[];
+extern const int32_t ff_sbc_proto_8_80m0[];
+extern const int32_t ff_sbc_proto_8_80m1[];
+extern const int32_t ff_synmatrix4[8][4];
+extern const int32_t ff_synmatrix8[16][8];
+
+#endif /* AVCODEC_SBCDEC_DATA_H */
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbcdsp.c b/chromium/third_party/ffmpeg/libavcodec/sbcdsp.c
new file mode 100644
index 00000000000..e745595da01
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbcdsp.c
@@ -0,0 +1,387 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2012-2013 Intel Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC basic "building bricks"
+ */
+
+#include <stdint.h>
+#include <limits.h>
+#include <string.h>
+#include "libavutil/common.h"
+#include "libavutil/intmath.h"
+#include "libavutil/intreadwrite.h"
+#include "sbc.h"
+#include "sbcdsp.h"
+#include "sbcdsp_data.h"
+
+/*
+ * A reference C code of analysis filter with SIMD-friendly tables
+ * reordering and code layout. This code can be used to develop platform
+ * specific SIMD optimizations. Also it may be used as some kind of test
+ * for compiler autovectorization capabilities (who knows, if the compiler
+ * is very good at this stuff, hand optimized assembly may be not strictly
+ * needed for some platform).
+ *
+ * Note: It is also possible to make a simple variant of analysis filter,
+ * which needs only a single constants table without taking care about
+ * even/odd cases. This simple variant of filter can be implemented without
+ * input data permutation. The only thing that would be lost is the
+ * possibility to use pairwise SIMD multiplications. But for some simple
+ * CPU cores without SIMD extensions it can be useful. If anybody is
+ * interested in implementing such variant of a filter, sourcecode from
+ * bluez versions 4.26/4.27 can be used as a reference and the history of
+ * the changes in git repository done around that time may be worth checking.
+ */
+
+static av_always_inline void sbc_analyze_simd(const int16_t *in, int32_t *out,
+ const int16_t *consts,
+ unsigned subbands)
+{
+ int32_t t1[8];
+ int16_t t2[8];
+ int i, j, hop = 0;
+
+ /* rounding coefficient */
+ for (i = 0; i < subbands; i++)
+ t1[i] = 1 << (SBC_PROTO_FIXED_SCALE - 1);
+
+ /* low pass polyphase filter */
+ for (hop = 0; hop < 10*subbands; hop += 2*subbands)
+ for (i = 0; i < 2*subbands; i++)
+ t1[i >> 1] += in[hop + i] * consts[hop + i];
+
+ /* scaling */
+ for (i = 0; i < subbands; i++)
+ t2[i] = t1[i] >> SBC_PROTO_FIXED_SCALE;
+
+ memset(t1, 0, sizeof(t1));
+
+ /* do the cos transform */
+ for (i = 0; i < subbands/2; i++)
+ for (j = 0; j < 2*subbands; j++)
+ t1[j>>1] += t2[i * 2 + (j&1)] * consts[10*subbands + i*2*subbands + j];
+
+ for (i = 0; i < subbands; i++)
+ out[i] = t1[i] >> (SBC_COS_TABLE_FIXED_SCALE - SCALE_OUT_BITS);
+}
+
+static void sbc_analyze_4_simd(const int16_t *in, int32_t *out,
+ const int16_t *consts)
+{
+ sbc_analyze_simd(in, out, consts, 4);
+}
+
+static void sbc_analyze_8_simd(const int16_t *in, int32_t *out,
+ const int16_t *consts)
+{
+ sbc_analyze_simd(in, out, consts, 8);
+}
+
+static inline void sbc_analyze_4b_4s_simd(SBCDSPContext *s,
+ int16_t *x, int32_t *out, int out_stride)
+{
+ /* Analyze blocks */
+ s->sbc_analyze_4(x + 12, out, ff_sbcdsp_analysis_consts_fixed4_simd_odd);
+ out += out_stride;
+ s->sbc_analyze_4(x + 8, out, ff_sbcdsp_analysis_consts_fixed4_simd_even);
+ out += out_stride;
+ s->sbc_analyze_4(x + 4, out, ff_sbcdsp_analysis_consts_fixed4_simd_odd);
+ out += out_stride;
+ s->sbc_analyze_4(x + 0, out, ff_sbcdsp_analysis_consts_fixed4_simd_even);
+}
+
+static inline void sbc_analyze_4b_8s_simd(SBCDSPContext *s,
+ int16_t *x, int32_t *out, int out_stride)
+{
+ /* Analyze blocks */
+ s->sbc_analyze_8(x + 24, out, ff_sbcdsp_analysis_consts_fixed8_simd_odd);
+ out += out_stride;
+ s->sbc_analyze_8(x + 16, out, ff_sbcdsp_analysis_consts_fixed8_simd_even);
+ out += out_stride;
+ s->sbc_analyze_8(x + 8, out, ff_sbcdsp_analysis_consts_fixed8_simd_odd);
+ out += out_stride;
+ s->sbc_analyze_8(x + 0, out, ff_sbcdsp_analysis_consts_fixed8_simd_even);
+}
+
+static inline void sbc_analyze_1b_8s_simd_even(SBCDSPContext *s,
+ int16_t *x, int32_t *out,
+ int out_stride);
+
+static inline void sbc_analyze_1b_8s_simd_odd(SBCDSPContext *s,
+ int16_t *x, int32_t *out,
+ int out_stride)
+{
+ s->sbc_analyze_8(x, out, ff_sbcdsp_analysis_consts_fixed8_simd_odd);
+ s->sbc_analyze_8s = sbc_analyze_1b_8s_simd_even;
+}
+
+static inline void sbc_analyze_1b_8s_simd_even(SBCDSPContext *s,
+ int16_t *x, int32_t *out,
+ int out_stride)
+{
+ s->sbc_analyze_8(x, out, ff_sbcdsp_analysis_consts_fixed8_simd_even);
+ s->sbc_analyze_8s = sbc_analyze_1b_8s_simd_odd;
+}
+
+/*
+ * Input data processing functions. The data is endian converted if needed,
+ * channels are deintrleaved and audio samples are reordered for use in
+ * SIMD-friendly analysis filter function. The results are put into "X"
+ * array, getting appended to the previous data (or it is better to say
+ * prepended, as the buffer is filled from top to bottom). Old data is
+ * discarded when neededed, but availability of (10 * nrof_subbands)
+ * contiguous samples is always guaranteed for the input to the analysis
+ * filter. This is achieved by copying a sufficient part of old data
+ * to the top of the buffer on buffer wraparound.
+ */
+
+static int sbc_enc_process_input_4s(int position, const uint8_t *pcm,
+ int16_t X[2][SBC_X_BUFFER_SIZE],
+ int nsamples, int nchannels)
+{
+ int c;
+
+ /* handle X buffer wraparound */
+ if (position < nsamples) {
+ for (c = 0; c < nchannels; c++)
+ memcpy(&X[c][SBC_X_BUFFER_SIZE - 40], &X[c][position],
+ 36 * sizeof(int16_t));
+ position = SBC_X_BUFFER_SIZE - 40;
+ }
+
+ /* copy/permutate audio samples */
+ for (; nsamples >= 8; nsamples -= 8, pcm += 16 * nchannels) {
+ position -= 8;
+ for (c = 0; c < nchannels; c++) {
+ int16_t *x = &X[c][position];
+ x[0] = AV_RN16(pcm + 14*nchannels + 2*c);
+ x[1] = AV_RN16(pcm + 6*nchannels + 2*c);
+ x[2] = AV_RN16(pcm + 12*nchannels + 2*c);
+ x[3] = AV_RN16(pcm + 8*nchannels + 2*c);
+ x[4] = AV_RN16(pcm + 0*nchannels + 2*c);
+ x[5] = AV_RN16(pcm + 4*nchannels + 2*c);
+ x[6] = AV_RN16(pcm + 2*nchannels + 2*c);
+ x[7] = AV_RN16(pcm + 10*nchannels + 2*c);
+ }
+ }
+
+ return position;
+}
+
+static int sbc_enc_process_input_8s(int position, const uint8_t *pcm,
+ int16_t X[2][SBC_X_BUFFER_SIZE],
+ int nsamples, int nchannels)
+{
+ int c;
+
+ /* handle X buffer wraparound */
+ if (position < nsamples) {
+ for (c = 0; c < nchannels; c++)
+ memcpy(&X[c][SBC_X_BUFFER_SIZE - 72], &X[c][position],
+ 72 * sizeof(int16_t));
+ position = SBC_X_BUFFER_SIZE - 72;
+ }
+
+ if (position % 16 == 8) {
+ position -= 8;
+ nsamples -= 8;
+ for (c = 0; c < nchannels; c++) {
+ int16_t *x = &X[c][position];
+ x[0] = AV_RN16(pcm + 14*nchannels + 2*c);
+ x[2] = AV_RN16(pcm + 12*nchannels + 2*c);
+ x[3] = AV_RN16(pcm + 0*nchannels + 2*c);
+ x[4] = AV_RN16(pcm + 10*nchannels + 2*c);
+ x[5] = AV_RN16(pcm + 2*nchannels + 2*c);
+ x[6] = AV_RN16(pcm + 8*nchannels + 2*c);
+ x[7] = AV_RN16(pcm + 4*nchannels + 2*c);
+ x[8] = AV_RN16(pcm + 6*nchannels + 2*c);
+ }
+ pcm += 16 * nchannels;
+ }
+
+ /* copy/permutate audio samples */
+ for (; nsamples >= 16; nsamples -= 16, pcm += 32 * nchannels) {
+ position -= 16;
+ for (c = 0; c < nchannels; c++) {
+ int16_t *x = &X[c][position];
+ x[0] = AV_RN16(pcm + 30*nchannels + 2*c);
+ x[1] = AV_RN16(pcm + 14*nchannels + 2*c);
+ x[2] = AV_RN16(pcm + 28*nchannels + 2*c);
+ x[3] = AV_RN16(pcm + 16*nchannels + 2*c);
+ x[4] = AV_RN16(pcm + 26*nchannels + 2*c);
+ x[5] = AV_RN16(pcm + 18*nchannels + 2*c);
+ x[6] = AV_RN16(pcm + 24*nchannels + 2*c);
+ x[7] = AV_RN16(pcm + 20*nchannels + 2*c);
+ x[8] = AV_RN16(pcm + 22*nchannels + 2*c);
+ x[9] = AV_RN16(pcm + 6*nchannels + 2*c);
+ x[10] = AV_RN16(pcm + 12*nchannels + 2*c);
+ x[11] = AV_RN16(pcm + 0*nchannels + 2*c);
+ x[12] = AV_RN16(pcm + 10*nchannels + 2*c);
+ x[13] = AV_RN16(pcm + 2*nchannels + 2*c);
+ x[14] = AV_RN16(pcm + 8*nchannels + 2*c);
+ x[15] = AV_RN16(pcm + 4*nchannels + 2*c);
+ }
+ }
+
+ if (nsamples == 8) {
+ position -= 8;
+ for (c = 0; c < nchannels; c++) {
+ int16_t *x = &X[c][position];
+ x[-7] = AV_RN16(pcm + 14*nchannels + 2*c);
+ x[1] = AV_RN16(pcm + 6*nchannels + 2*c);
+ x[2] = AV_RN16(pcm + 12*nchannels + 2*c);
+ x[3] = AV_RN16(pcm + 0*nchannels + 2*c);
+ x[4] = AV_RN16(pcm + 10*nchannels + 2*c);
+ x[5] = AV_RN16(pcm + 2*nchannels + 2*c);
+ x[6] = AV_RN16(pcm + 8*nchannels + 2*c);
+ x[7] = AV_RN16(pcm + 4*nchannels + 2*c);
+ }
+ }
+
+ return position;
+}
+
+static void sbc_calc_scalefactors(int32_t sb_sample_f[16][2][8],
+ uint32_t scale_factor[2][8],
+ int blocks, int channels, int subbands)
+{
+ int ch, sb, blk;
+ for (ch = 0; ch < channels; ch++) {
+ for (sb = 0; sb < subbands; sb++) {
+ uint32_t x = 1 << SCALE_OUT_BITS;
+ for (blk = 0; blk < blocks; blk++) {
+ int32_t tmp = FFABS(sb_sample_f[blk][ch][sb]);
+ if (tmp != 0)
+ x |= tmp - 1;
+ }
+ scale_factor[ch][sb] = (31 - SCALE_OUT_BITS) - ff_clz(x);
+ }
+ }
+}
+
+static int sbc_calc_scalefactors_j(int32_t sb_sample_f[16][2][8],
+ uint32_t scale_factor[2][8],
+ int blocks, int subbands)
+{
+ int blk, joint = 0;
+ int32_t tmp0, tmp1;
+ uint32_t x, y;
+
+ /* last subband does not use joint stereo */
+ int sb = subbands - 1;
+ x = 1 << SCALE_OUT_BITS;
+ y = 1 << SCALE_OUT_BITS;
+ for (blk = 0; blk < blocks; blk++) {
+ tmp0 = FFABS(sb_sample_f[blk][0][sb]);
+ tmp1 = FFABS(sb_sample_f[blk][1][sb]);
+ if (tmp0 != 0)
+ x |= tmp0 - 1;
+ if (tmp1 != 0)
+ y |= tmp1 - 1;
+ }
+ scale_factor[0][sb] = (31 - SCALE_OUT_BITS) - ff_clz(x);
+ scale_factor[1][sb] = (31 - SCALE_OUT_BITS) - ff_clz(y);
+
+ /* the rest of subbands can use joint stereo */
+ while (--sb >= 0) {
+ int32_t sb_sample_j[16][2];
+ x = 1 << SCALE_OUT_BITS;
+ y = 1 << SCALE_OUT_BITS;
+ for (blk = 0; blk < blocks; blk++) {
+ tmp0 = sb_sample_f[blk][0][sb];
+ tmp1 = sb_sample_f[blk][1][sb];
+ sb_sample_j[blk][0] = (tmp0 >> 1) + (tmp1 >> 1);
+ sb_sample_j[blk][1] = (tmp0 >> 1) - (tmp1 >> 1);
+ tmp0 = FFABS(tmp0);
+ tmp1 = FFABS(tmp1);
+ if (tmp0 != 0)
+ x |= tmp0 - 1;
+ if (tmp1 != 0)
+ y |= tmp1 - 1;
+ }
+ scale_factor[0][sb] = (31 - SCALE_OUT_BITS) -
+ ff_clz(x);
+ scale_factor[1][sb] = (31 - SCALE_OUT_BITS) -
+ ff_clz(y);
+ x = 1 << SCALE_OUT_BITS;
+ y = 1 << SCALE_OUT_BITS;
+ for (blk = 0; blk < blocks; blk++) {
+ tmp0 = FFABS(sb_sample_j[blk][0]);
+ tmp1 = FFABS(sb_sample_j[blk][1]);
+ if (tmp0 != 0)
+ x |= tmp0 - 1;
+ if (tmp1 != 0)
+ y |= tmp1 - 1;
+ }
+ x = (31 - SCALE_OUT_BITS) - ff_clz(x);
+ y = (31 - SCALE_OUT_BITS) - ff_clz(y);
+
+ /* decide whether to use joint stereo for this subband */
+ if ((scale_factor[0][sb] + scale_factor[1][sb]) > x + y) {
+ joint |= 1 << (subbands - 1 - sb);
+ scale_factor[0][sb] = x;
+ scale_factor[1][sb] = y;
+ for (blk = 0; blk < blocks; blk++) {
+ sb_sample_f[blk][0][sb] = sb_sample_j[blk][0];
+ sb_sample_f[blk][1][sb] = sb_sample_j[blk][1];
+ }
+ }
+ }
+
+ /* bitmask with the information about subbands using joint stereo */
+ return joint;
+}
+
+/*
+ * Detect CPU features and setup function pointers
+ */
+av_cold void ff_sbcdsp_init(SBCDSPContext *s)
+{
+ /* Default implementation for analyze functions */
+ s->sbc_analyze_4 = sbc_analyze_4_simd;
+ s->sbc_analyze_8 = sbc_analyze_8_simd;
+ s->sbc_analyze_4s = sbc_analyze_4b_4s_simd;
+ if (s->increment == 1)
+ s->sbc_analyze_8s = sbc_analyze_1b_8s_simd_odd;
+ else
+ s->sbc_analyze_8s = sbc_analyze_4b_8s_simd;
+
+ /* Default implementation for input reordering / deinterleaving */
+ s->sbc_enc_process_input_4s = sbc_enc_process_input_4s;
+ s->sbc_enc_process_input_8s = sbc_enc_process_input_8s;
+
+ /* Default implementation for scale factors calculation */
+ s->sbc_calc_scalefactors = sbc_calc_scalefactors;
+ s->sbc_calc_scalefactors_j = sbc_calc_scalefactors_j;
+
+ if (ARCH_ARM)
+ ff_sbcdsp_init_arm(s);
+ if (ARCH_X86)
+ ff_sbcdsp_init_x86(s);
+}
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbcdsp.h b/chromium/third_party/ffmpeg/libavcodec/sbcdsp.h
new file mode 100644
index 00000000000..334c058e6de
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbcdsp.h
@@ -0,0 +1,86 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC basic "building bricks"
+ */
+
+#ifndef AVCODEC_SBCDSP_H
+#define AVCODEC_SBCDSP_H
+
+#include "sbc.h"
+#include "sbcdsp_data.h"
+
+#define SCALE_OUT_BITS 15
+#define SBC_X_BUFFER_SIZE 328
+
+typedef struct sbc_dsp_context SBCDSPContext;
+
+struct sbc_dsp_context {
+ int position;
+ /* Number of consecutive blocks handled by the encoder */
+ uint8_t increment;
+ DECLARE_ALIGNED(SBC_ALIGN, int16_t, X)[2][SBC_X_BUFFER_SIZE];
+ void (*sbc_analyze_4)(const int16_t *in, int32_t *out, const int16_t *consts);
+ void (*sbc_analyze_8)(const int16_t *in, int32_t *out, const int16_t *consts);
+ /* Polyphase analysis filter for 4 subbands configuration,
+ * it handles "increment" blocks at once */
+ void (*sbc_analyze_4s)(SBCDSPContext *s,
+ int16_t *x, int32_t *out, int out_stride);
+ /* Polyphase analysis filter for 8 subbands configuration,
+ * it handles "increment" blocks at once */
+ void (*sbc_analyze_8s)(SBCDSPContext *s,
+ int16_t *x, int32_t *out, int out_stride);
+ /* Process input data (deinterleave, endian conversion, reordering),
+ * depending on the number of subbands and input data byte order */
+ int (*sbc_enc_process_input_4s)(int position, const uint8_t *pcm,
+ int16_t X[2][SBC_X_BUFFER_SIZE],
+ int nsamples, int nchannels);
+ int (*sbc_enc_process_input_8s)(int position, const uint8_t *pcm,
+ int16_t X[2][SBC_X_BUFFER_SIZE],
+ int nsamples, int nchannels);
+ /* Scale factors calculation */
+ void (*sbc_calc_scalefactors)(int32_t sb_sample_f[16][2][8],
+ uint32_t scale_factor[2][8],
+ int blocks, int channels, int subbands);
+ /* Scale factors calculation with joint stereo support */
+ int (*sbc_calc_scalefactors_j)(int32_t sb_sample_f[16][2][8],
+ uint32_t scale_factor[2][8],
+ int blocks, int subbands);
+};
+
+/*
+ * Initialize pointers to the functions which are the basic "building bricks"
+ * of SBC codec. Best implementation is selected based on target CPU
+ * capabilities.
+ */
+void ff_sbcdsp_init(SBCDSPContext *s);
+
+void ff_sbcdsp_init_arm(SBCDSPContext *s);
+void ff_sbcdsp_init_x86(SBCDSPContext *s);
+
+#endif /* AVCODEC_SBCDSP_H */
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbcdsp_data.c b/chromium/third_party/ffmpeg/libavcodec/sbcdsp_data.c
new file mode 100644
index 00000000000..78c07c00771
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbcdsp_data.c
@@ -0,0 +1,329 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * miscellaneous SBC tables
+ */
+
+#include "sbcdsp_data.h"
+
+#define F_PROTO(x) ((int32_t) (((x) * 2) * ((int32_t) 1 << 15) + 0.5))
+#define F_COS(x) ((int32_t) (((x) ) * ((int32_t) 1 << 15) + 0.5))
+
+/*
+ * Constant tables for the use in SIMD optimized analysis filters
+ * Each table consists of two parts:
+ * 1. reordered "proto" table
+ * 2. reordered "cos" table
+ *
+ * Due to non-symmetrical reordering, separate tables for "even"
+ * and "odd" cases are needed
+ */
+
+DECLARE_ALIGNED(SBC_ALIGN, const int16_t, ff_sbcdsp_analysis_consts_fixed4_simd_even)[40 + 16] = {
+#define C0 1.0932568993
+#define C1 1.3056875580
+#define C2 1.3056875580
+#define C3 1.6772280856
+
+#define F(x) F_PROTO(x)
+ F(0.00000000E+00 * C0), F(3.83720193E-03 * C0),
+ F(5.36548976E-04 * C1), F(2.73370904E-03 * C1),
+ F(3.06012286E-03 * C2), F(3.89205149E-03 * C2),
+ F(0.00000000E+00 * C3), -F(1.49188357E-03 * C3),
+ F(1.09137620E-02 * C0), F(2.58767811E-02 * C0),
+ F(2.04385087E-02 * C1), F(3.21939290E-02 * C1),
+ F(7.76463494E-02 * C2), F(6.13245186E-03 * C2),
+ F(0.00000000E+00 * C3), -F(2.88757392E-02 * C3),
+ F(1.35593274E-01 * C0), F(2.94315332E-01 * C0),
+ F(1.94987841E-01 * C1), F(2.81828203E-01 * C1),
+ -F(1.94987841E-01 * C2), F(2.81828203E-01 * C2),
+ F(0.00000000E+00 * C3), -F(2.46636662E-01 * C3),
+ -F(1.35593274E-01 * C0), F(2.58767811E-02 * C0),
+ -F(7.76463494E-02 * C1), F(6.13245186E-03 * C1),
+ -F(2.04385087E-02 * C2), F(3.21939290E-02 * C2),
+ F(0.00000000E+00 * C3), F(2.88217274E-02 * C3),
+ -F(1.09137620E-02 * C0), F(3.83720193E-03 * C0),
+ -F(3.06012286E-03 * C1), F(3.89205149E-03 * C1),
+ -F(5.36548976E-04 * C2), F(2.73370904E-03 * C2),
+ F(0.00000000E+00 * C3), -F(1.86581691E-03 * C3),
+#undef F
+#define F(x) F_COS(x)
+ F(0.7071067812 / C0), F(0.9238795325 / C1),
+ -F(0.7071067812 / C0), F(0.3826834324 / C1),
+ -F(0.7071067812 / C0), -F(0.3826834324 / C1),
+ F(0.7071067812 / C0), -F(0.9238795325 / C1),
+ F(0.3826834324 / C2), -F(1.0000000000 / C3),
+ -F(0.9238795325 / C2), -F(1.0000000000 / C3),
+ F(0.9238795325 / C2), -F(1.0000000000 / C3),
+ -F(0.3826834324 / C2), -F(1.0000000000 / C3),
+#undef F
+
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+};
+
+DECLARE_ALIGNED(SBC_ALIGN, const int16_t, ff_sbcdsp_analysis_consts_fixed4_simd_odd)[40 + 16] = {
+#define C0 1.3056875580
+#define C1 1.6772280856
+#define C2 1.0932568993
+#define C3 1.3056875580
+
+#define F(x) F_PROTO(x)
+ F(2.73370904E-03 * C0), F(5.36548976E-04 * C0),
+ -F(1.49188357E-03 * C1), F(0.00000000E+00 * C1),
+ F(3.83720193E-03 * C2), F(1.09137620E-02 * C2),
+ F(3.89205149E-03 * C3), F(3.06012286E-03 * C3),
+ F(3.21939290E-02 * C0), F(2.04385087E-02 * C0),
+ -F(2.88757392E-02 * C1), F(0.00000000E+00 * C1),
+ F(2.58767811E-02 * C2), F(1.35593274E-01 * C2),
+ F(6.13245186E-03 * C3), F(7.76463494E-02 * C3),
+ F(2.81828203E-01 * C0), F(1.94987841E-01 * C0),
+ -F(2.46636662E-01 * C1), F(0.00000000E+00 * C1),
+ F(2.94315332E-01 * C2), -F(1.35593274E-01 * C2),
+ F(2.81828203E-01 * C3), -F(1.94987841E-01 * C3),
+ F(6.13245186E-03 * C0), -F(7.76463494E-02 * C0),
+ F(2.88217274E-02 * C1), F(0.00000000E+00 * C1),
+ F(2.58767811E-02 * C2), -F(1.09137620E-02 * C2),
+ F(3.21939290E-02 * C3), -F(2.04385087E-02 * C3),
+ F(3.89205149E-03 * C0), -F(3.06012286E-03 * C0),
+ -F(1.86581691E-03 * C1), F(0.00000000E+00 * C1),
+ F(3.83720193E-03 * C2), F(0.00000000E+00 * C2),
+ F(2.73370904E-03 * C3), -F(5.36548976E-04 * C3),
+#undef F
+#define F(x) F_COS(x)
+ F(0.9238795325 / C0), -F(1.0000000000 / C1),
+ F(0.3826834324 / C0), -F(1.0000000000 / C1),
+ -F(0.3826834324 / C0), -F(1.0000000000 / C1),
+ -F(0.9238795325 / C0), -F(1.0000000000 / C1),
+ F(0.7071067812 / C2), F(0.3826834324 / C3),
+ -F(0.7071067812 / C2), -F(0.9238795325 / C3),
+ -F(0.7071067812 / C2), F(0.9238795325 / C3),
+ F(0.7071067812 / C2), -F(0.3826834324 / C3),
+#undef F
+
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+};
+
+DECLARE_ALIGNED(SBC_ALIGN, const int16_t, ff_sbcdsp_analysis_consts_fixed8_simd_even)[80 + 64] = {
+#define C0 2.7906148894
+#define C1 2.4270044280
+#define C2 2.8015616024
+#define C3 3.1710363741
+#define C4 2.5377944043
+#define C5 2.4270044280
+#define C6 2.8015616024
+#define C7 3.1710363741
+
+#define F(x) F_PROTO(x)
+ F(0.00000000E+00 * C0), F(2.01182542E-03 * C0),
+ F(1.56575398E-04 * C1), F(1.78371725E-03 * C1),
+ F(3.43256425E-04 * C2), F(1.47640169E-03 * C2),
+ F(5.54620202E-04 * C3), F(1.13992507E-03 * C3),
+ -F(8.23919506E-04 * C4), F(0.00000000E+00 * C4),
+ F(2.10371989E-03 * C5), F(3.49717454E-03 * C5),
+ F(1.99454554E-03 * C6), F(1.64973098E-03 * C6),
+ F(1.61656283E-03 * C7), F(1.78805361E-04 * C7),
+ F(5.65949473E-03 * C0), F(1.29371806E-02 * C0),
+ F(8.02941163E-03 * C1), F(1.53184106E-02 * C1),
+ F(1.04584443E-02 * C2), F(1.62208471E-02 * C2),
+ F(1.27472335E-02 * C3), F(1.59045603E-02 * C3),
+ -F(1.46525263E-02 * C4), F(0.00000000E+00 * C4),
+ F(8.85757540E-03 * C5), F(5.31873032E-02 * C5),
+ F(2.92408442E-03 * C6), F(3.90751381E-02 * C6),
+ -F(4.91578024E-03 * C7), F(2.61098752E-02 * C7),
+ F(6.79989431E-02 * C0), F(1.46955068E-01 * C0),
+ F(8.29847578E-02 * C1), F(1.45389847E-01 * C1),
+ F(9.75753918E-02 * C2), F(1.40753505E-01 * C2),
+ F(1.11196689E-01 * C3), F(1.33264415E-01 * C3),
+ -F(1.23264548E-01 * C4), F(0.00000000E+00 * C4),
+ F(1.45389847E-01 * C5), -F(8.29847578E-02 * C5),
+ F(1.40753505E-01 * C6), -F(9.75753918E-02 * C6),
+ F(1.33264415E-01 * C7), -F(1.11196689E-01 * C7),
+ -F(6.79989431E-02 * C0), F(1.29371806E-02 * C0),
+ -F(5.31873032E-02 * C1), F(8.85757540E-03 * C1),
+ -F(3.90751381E-02 * C2), F(2.92408442E-03 * C2),
+ -F(2.61098752E-02 * C3), -F(4.91578024E-03 * C3),
+ F(1.46404076E-02 * C4), F(0.00000000E+00 * C4),
+ F(1.53184106E-02 * C5), -F(8.02941163E-03 * C5),
+ F(1.62208471E-02 * C6), -F(1.04584443E-02 * C6),
+ F(1.59045603E-02 * C7), -F(1.27472335E-02 * C7),
+ -F(5.65949473E-03 * C0), F(2.01182542E-03 * C0),
+ -F(3.49717454E-03 * C1), F(2.10371989E-03 * C1),
+ -F(1.64973098E-03 * C2), F(1.99454554E-03 * C2),
+ -F(1.78805361E-04 * C3), F(1.61656283E-03 * C3),
+ -F(9.02154502E-04 * C4), F(0.00000000E+00 * C4),
+ F(1.78371725E-03 * C5), -F(1.56575398E-04 * C5),
+ F(1.47640169E-03 * C6), -F(3.43256425E-04 * C6),
+ F(1.13992507E-03 * C7), -F(5.54620202E-04 * C7),
+#undef F
+#define F(x) F_COS(x)
+ F(0.7071067812 / C0), F(0.8314696123 / C1),
+ -F(0.7071067812 / C0), -F(0.1950903220 / C1),
+ -F(0.7071067812 / C0), -F(0.9807852804 / C1),
+ F(0.7071067812 / C0), -F(0.5555702330 / C1),
+ F(0.7071067812 / C0), F(0.5555702330 / C1),
+ -F(0.7071067812 / C0), F(0.9807852804 / C1),
+ -F(0.7071067812 / C0), F(0.1950903220 / C1),
+ F(0.7071067812 / C0), -F(0.8314696123 / C1),
+ F(0.9238795325 / C2), F(0.9807852804 / C3),
+ F(0.3826834324 / C2), F(0.8314696123 / C3),
+ -F(0.3826834324 / C2), F(0.5555702330 / C3),
+ -F(0.9238795325 / C2), F(0.1950903220 / C3),
+ -F(0.9238795325 / C2), -F(0.1950903220 / C3),
+ -F(0.3826834324 / C2), -F(0.5555702330 / C3),
+ F(0.3826834324 / C2), -F(0.8314696123 / C3),
+ F(0.9238795325 / C2), -F(0.9807852804 / C3),
+ -F(1.0000000000 / C4), F(0.5555702330 / C5),
+ -F(1.0000000000 / C4), -F(0.9807852804 / C5),
+ -F(1.0000000000 / C4), F(0.1950903220 / C5),
+ -F(1.0000000000 / C4), F(0.8314696123 / C5),
+ -F(1.0000000000 / C4), -F(0.8314696123 / C5),
+ -F(1.0000000000 / C4), -F(0.1950903220 / C5),
+ -F(1.0000000000 / C4), F(0.9807852804 / C5),
+ -F(1.0000000000 / C4), -F(0.5555702330 / C5),
+ F(0.3826834324 / C6), F(0.1950903220 / C7),
+ -F(0.9238795325 / C6), -F(0.5555702330 / C7),
+ F(0.9238795325 / C6), F(0.8314696123 / C7),
+ -F(0.3826834324 / C6), -F(0.9807852804 / C7),
+ -F(0.3826834324 / C6), F(0.9807852804 / C7),
+ F(0.9238795325 / C6), -F(0.8314696123 / C7),
+ -F(0.9238795325 / C6), F(0.5555702330 / C7),
+ F(0.3826834324 / C6), -F(0.1950903220 / C7),
+#undef F
+
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+#undef C4
+#undef C5
+#undef C6
+#undef C7
+};
+
+DECLARE_ALIGNED(SBC_ALIGN, const int16_t, ff_sbcdsp_analysis_consts_fixed8_simd_odd)[80 + 64] = {
+#define C0 2.5377944043
+#define C1 2.4270044280
+#define C2 2.8015616024
+#define C3 3.1710363741
+#define C4 2.7906148894
+#define C5 2.4270044280
+#define C6 2.8015616024
+#define C7 3.1710363741
+
+#define F(x) F_PROTO(x)
+ F(0.00000000E+00 * C0), -F(8.23919506E-04 * C0),
+ F(1.56575398E-04 * C1), F(1.78371725E-03 * C1),
+ F(3.43256425E-04 * C2), F(1.47640169E-03 * C2),
+ F(5.54620202E-04 * C3), F(1.13992507E-03 * C3),
+ F(2.01182542E-03 * C4), F(5.65949473E-03 * C4),
+ F(2.10371989E-03 * C5), F(3.49717454E-03 * C5),
+ F(1.99454554E-03 * C6), F(1.64973098E-03 * C6),
+ F(1.61656283E-03 * C7), F(1.78805361E-04 * C7),
+ F(0.00000000E+00 * C0), -F(1.46525263E-02 * C0),
+ F(8.02941163E-03 * C1), F(1.53184106E-02 * C1),
+ F(1.04584443E-02 * C2), F(1.62208471E-02 * C2),
+ F(1.27472335E-02 * C3), F(1.59045603E-02 * C3),
+ F(1.29371806E-02 * C4), F(6.79989431E-02 * C4),
+ F(8.85757540E-03 * C5), F(5.31873032E-02 * C5),
+ F(2.92408442E-03 * C6), F(3.90751381E-02 * C6),
+ -F(4.91578024E-03 * C7), F(2.61098752E-02 * C7),
+ F(0.00000000E+00 * C0), -F(1.23264548E-01 * C0),
+ F(8.29847578E-02 * C1), F(1.45389847E-01 * C1),
+ F(9.75753918E-02 * C2), F(1.40753505E-01 * C2),
+ F(1.11196689E-01 * C3), F(1.33264415E-01 * C3),
+ F(1.46955068E-01 * C4), -F(6.79989431E-02 * C4),
+ F(1.45389847E-01 * C5), -F(8.29847578E-02 * C5),
+ F(1.40753505E-01 * C6), -F(9.75753918E-02 * C6),
+ F(1.33264415E-01 * C7), -F(1.11196689E-01 * C7),
+ F(0.00000000E+00 * C0), F(1.46404076E-02 * C0),
+ -F(5.31873032E-02 * C1), F(8.85757540E-03 * C1),
+ -F(3.90751381E-02 * C2), F(2.92408442E-03 * C2),
+ -F(2.61098752E-02 * C3), -F(4.91578024E-03 * C3),
+ F(1.29371806E-02 * C4), -F(5.65949473E-03 * C4),
+ F(1.53184106E-02 * C5), -F(8.02941163E-03 * C5),
+ F(1.62208471E-02 * C6), -F(1.04584443E-02 * C6),
+ F(1.59045603E-02 * C7), -F(1.27472335E-02 * C7),
+ F(0.00000000E+00 * C0), -F(9.02154502E-04 * C0),
+ -F(3.49717454E-03 * C1), F(2.10371989E-03 * C1),
+ -F(1.64973098E-03 * C2), F(1.99454554E-03 * C2),
+ -F(1.78805361E-04 * C3), F(1.61656283E-03 * C3),
+ F(2.01182542E-03 * C4), F(0.00000000E+00 * C4),
+ F(1.78371725E-03 * C5), -F(1.56575398E-04 * C5),
+ F(1.47640169E-03 * C6), -F(3.43256425E-04 * C6),
+ F(1.13992507E-03 * C7), -F(5.54620202E-04 * C7),
+#undef F
+#define F(x) F_COS(x)
+ -F(1.0000000000 / C0), F(0.8314696123 / C1),
+ -F(1.0000000000 / C0), -F(0.1950903220 / C1),
+ -F(1.0000000000 / C0), -F(0.9807852804 / C1),
+ -F(1.0000000000 / C0), -F(0.5555702330 / C1),
+ -F(1.0000000000 / C0), F(0.5555702330 / C1),
+ -F(1.0000000000 / C0), F(0.9807852804 / C1),
+ -F(1.0000000000 / C0), F(0.1950903220 / C1),
+ -F(1.0000000000 / C0), -F(0.8314696123 / C1),
+ F(0.9238795325 / C2), F(0.9807852804 / C3),
+ F(0.3826834324 / C2), F(0.8314696123 / C3),
+ -F(0.3826834324 / C2), F(0.5555702330 / C3),
+ -F(0.9238795325 / C2), F(0.1950903220 / C3),
+ -F(0.9238795325 / C2), -F(0.1950903220 / C3),
+ -F(0.3826834324 / C2), -F(0.5555702330 / C3),
+ F(0.3826834324 / C2), -F(0.8314696123 / C3),
+ F(0.9238795325 / C2), -F(0.9807852804 / C3),
+ F(0.7071067812 / C4), F(0.5555702330 / C5),
+ -F(0.7071067812 / C4), -F(0.9807852804 / C5),
+ -F(0.7071067812 / C4), F(0.1950903220 / C5),
+ F(0.7071067812 / C4), F(0.8314696123 / C5),
+ F(0.7071067812 / C4), -F(0.8314696123 / C5),
+ -F(0.7071067812 / C4), -F(0.1950903220 / C5),
+ -F(0.7071067812 / C4), F(0.9807852804 / C5),
+ F(0.7071067812 / C4), -F(0.5555702330 / C5),
+ F(0.3826834324 / C6), F(0.1950903220 / C7),
+ -F(0.9238795325 / C6), -F(0.5555702330 / C7),
+ F(0.9238795325 / C6), F(0.8314696123 / C7),
+ -F(0.3826834324 / C6), -F(0.9807852804 / C7),
+ -F(0.3826834324 / C6), F(0.9807852804 / C7),
+ F(0.9238795325 / C6), -F(0.8314696123 / C7),
+ -F(0.9238795325 / C6), F(0.5555702330 / C7),
+ F(0.3826834324 / C6), -F(0.1950903220 / C7),
+#undef F
+
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+#undef C4
+#undef C5
+#undef C6
+#undef C7
+};
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbcdsp_data.h b/chromium/third_party/ffmpeg/libavcodec/sbcdsp_data.h
new file mode 100644
index 00000000000..10fad5caa5e
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbcdsp_data.h
@@ -0,0 +1,55 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * miscellaneous SBC tables
+ */
+
+#ifndef AVCODEC_SBCDSP_DATA_H
+#define AVCODEC_SBCDSP_DATA_H
+
+#include "sbc.h"
+
+#define SBC_PROTO_FIXED_SCALE 16
+#define SBC_COS_TABLE_FIXED_SCALE 15
+
+/*
+ * Constant tables for the use in SIMD optimized analysis filters
+ * Each table consists of two parts:
+ * 1. reordered "proto" table
+ * 2. reordered "cos" table
+ *
+ * Due to non-symmetrical reordering, separate tables for "even"
+ * and "odd" cases are needed
+ */
+
+extern const int16_t ff_sbcdsp_analysis_consts_fixed4_simd_even[];
+extern const int16_t ff_sbcdsp_analysis_consts_fixed4_simd_odd[];
+extern const int16_t ff_sbcdsp_analysis_consts_fixed8_simd_even[];
+extern const int16_t ff_sbcdsp_analysis_consts_fixed8_simd_odd[];
+
+#endif /* AVCODEC_SBCDSP_DATA_H */
diff --git a/chromium/third_party/ffmpeg/libavcodec/sbcenc.c b/chromium/third_party/ffmpeg/libavcodec/sbcenc.c
new file mode 100644
index 00000000000..a0064c0e8c7
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/sbcenc.c
@@ -0,0 +1,361 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2012-2013 Intel Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2008 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC encoder implementation
+ */
+
+#include <stdbool.h>
+#include "libavutil/opt.h"
+#include "avcodec.h"
+#include "internal.h"
+#include "profiles.h"
+#include "put_bits.h"
+#include "sbc.h"
+#include "sbcdsp.h"
+
+typedef struct SBCEncContext {
+ AVClass *class;
+ int64_t max_delay;
+ int msbc;
+ DECLARE_ALIGNED(SBC_ALIGN, struct sbc_frame, frame);
+ DECLARE_ALIGNED(SBC_ALIGN, SBCDSPContext, dsp);
+} SBCEncContext;
+
+static int sbc_analyze_audio(SBCDSPContext *s, struct sbc_frame *frame)
+{
+ int ch, blk;
+ int16_t *x;
+
+ switch (frame->subbands) {
+ case 4:
+ for (ch = 0; ch < frame->channels; ch++) {
+ x = &s->X[ch][s->position - 4 *
+ s->increment + frame->blocks * 4];
+ for (blk = 0; blk < frame->blocks;
+ blk += s->increment) {
+ s->sbc_analyze_4s(
+ s, x,
+ frame->sb_sample_f[blk][ch],
+ frame->sb_sample_f[blk + 1][ch] -
+ frame->sb_sample_f[blk][ch]);
+ x -= 4 * s->increment;
+ }
+ }
+ return frame->blocks * 4;
+
+ case 8:
+ for (ch = 0; ch < frame->channels; ch++) {
+ x = &s->X[ch][s->position - 8 *
+ s->increment + frame->blocks * 8];
+ for (blk = 0; blk < frame->blocks;
+ blk += s->increment) {
+ s->sbc_analyze_8s(
+ s, x,
+ frame->sb_sample_f[blk][ch],
+ frame->sb_sample_f[blk + 1][ch] -
+ frame->sb_sample_f[blk][ch]);
+ x -= 8 * s->increment;
+ }
+ }
+ return frame->blocks * 8;
+
+ default:
+ return AVERROR(EIO);
+ }
+}
+
+/*
+ * Packs the SBC frame from frame into the memory in avpkt.
+ * Returns the length of the packed frame.
+ */
+static size_t sbc_pack_frame(AVPacket *avpkt, struct sbc_frame *frame,
+ int joint, bool msbc)
+{
+ PutBitContext pb;
+
+ /* Will copy the header parts for CRC-8 calculation here */
+ uint8_t crc_header[11] = { 0 };
+ int crc_pos;
+
+ uint32_t audio_sample;
+
+ int ch, sb, blk; /* channel, subband, block and bit counters */
+ int bits[2][8]; /* bits distribution */
+ uint32_t levels[2][8]; /* levels are derived from that */
+ uint32_t sb_sample_delta[2][8];
+
+ if (msbc) {
+ avpkt->data[0] = MSBC_SYNCWORD;
+ avpkt->data[1] = 0;
+ avpkt->data[2] = 0;
+ } else {
+ avpkt->data[0] = SBC_SYNCWORD;
+
+ avpkt->data[1] = (frame->frequency & 0x03) << 6;
+ avpkt->data[1] |= (((frame->blocks >> 2) - 1) & 0x03) << 4;
+ avpkt->data[1] |= (frame->mode & 0x03) << 2;
+ avpkt->data[1] |= (frame->allocation & 0x01) << 1;
+ avpkt->data[1] |= ((frame->subbands == 8) & 0x01) << 0;
+
+ avpkt->data[2] = frame->bitpool;
+
+ if (frame->bitpool > frame->subbands << (4 + (frame->mode == STEREO
+ || frame->mode == JOINT_STEREO)))
+ return -5;
+ }
+
+ /* Can't fill in crc yet */
+ crc_header[0] = avpkt->data[1];
+ crc_header[1] = avpkt->data[2];
+ crc_pos = 16;
+
+ init_put_bits(&pb, avpkt->data + 4, avpkt->size);
+
+ if (frame->mode == JOINT_STEREO) {
+ put_bits(&pb, frame->subbands, joint);
+ crc_header[crc_pos >> 3] = joint;
+ crc_pos += frame->subbands;
+ }
+
+ for (ch = 0; ch < frame->channels; ch++) {
+ for (sb = 0; sb < frame->subbands; sb++) {
+ put_bits(&pb, 4, frame->scale_factor[ch][sb] & 0x0F);
+ crc_header[crc_pos >> 3] <<= 4;
+ crc_header[crc_pos >> 3] |= frame->scale_factor[ch][sb] & 0x0F;
+ crc_pos += 4;
+ }
+ }
+
+ /* align the last crc byte */
+ if (crc_pos % 8)
+ crc_header[crc_pos >> 3] <<= 8 - (crc_pos % 8);
+
+ avpkt->data[3] = sbc_crc8(frame->crc_ctx, crc_header, crc_pos);
+
+ ff_sbc_calculate_bits(frame, bits);
+
+ for (ch = 0; ch < frame->channels; ch++) {
+ for (sb = 0; sb < frame->subbands; sb++) {
+ levels[ch][sb] = ((1 << bits[ch][sb]) - 1) <<
+ (32 - (frame->scale_factor[ch][sb] +
+ SCALE_OUT_BITS + 2));
+ sb_sample_delta[ch][sb] = (uint32_t) 1 <<
+ (frame->scale_factor[ch][sb] +
+ SCALE_OUT_BITS + 1);
+ }
+ }
+
+ for (blk = 0; blk < frame->blocks; blk++) {
+ for (ch = 0; ch < frame->channels; ch++) {
+ for (sb = 0; sb < frame->subbands; sb++) {
+
+ if (bits[ch][sb] == 0)
+ continue;
+
+ audio_sample = ((uint64_t) levels[ch][sb] *
+ (sb_sample_delta[ch][sb] +
+ frame->sb_sample_f[blk][ch][sb])) >> 32;
+
+ put_bits(&pb, bits[ch][sb], audio_sample);
+ }
+ }
+ }
+
+ flush_put_bits(&pb);
+
+ return (put_bits_count(&pb) + 7) / 8;
+}
+
+static int sbc_encode_init(AVCodecContext *avctx)
+{
+ SBCEncContext *sbc = avctx->priv_data;
+ struct sbc_frame *frame = &sbc->frame;
+
+ if (avctx->profile == FF_PROFILE_SBC_MSBC)
+ sbc->msbc = 1;
+
+ if (sbc->msbc) {
+ if (avctx->channels != 1) {
+ av_log(avctx, AV_LOG_ERROR, "mSBC require mono channel.\n");
+ return AVERROR(EINVAL);
+ }
+
+ if (avctx->sample_rate != 16000) {
+ av_log(avctx, AV_LOG_ERROR, "mSBC require 16 kHz samplerate.\n");
+ return AVERROR(EINVAL);
+ }
+
+ frame->mode = SBC_MODE_MONO;
+ frame->subbands = 8;
+ frame->blocks = MSBC_BLOCKS;
+ frame->allocation = SBC_AM_LOUDNESS;
+ frame->bitpool = 26;
+
+ avctx->frame_size = 8 * MSBC_BLOCKS;
+ } else {
+ int d;
+
+ if (avctx->global_quality > 255*FF_QP2LAMBDA) {
+ av_log(avctx, AV_LOG_ERROR, "bitpool > 255 is not allowed.\n");
+ return AVERROR(EINVAL);
+ }
+
+ if (avctx->channels == 1) {
+ frame->mode = SBC_MODE_MONO;
+ if (sbc->max_delay <= 3000 || avctx->bit_rate > 270000)
+ frame->subbands = 4;
+ else
+ frame->subbands = 8;
+ } else {
+ if (avctx->bit_rate < 180000 || avctx->bit_rate > 420000)
+ frame->mode = SBC_MODE_JOINT_STEREO;
+ else
+ frame->mode = SBC_MODE_STEREO;
+ if (sbc->max_delay <= 4000 || avctx->bit_rate > 420000)
+ frame->subbands = 4;
+ else
+ frame->subbands = 8;
+ }
+ /* sbc algorithmic delay is ((blocks + 10) * subbands - 2) / sample_rate */
+ frame->blocks = av_clip(((sbc->max_delay * avctx->sample_rate + 2)
+ / (1000000 * frame->subbands)) - 10, 4, 16) & ~3;
+
+ frame->allocation = SBC_AM_LOUDNESS;
+
+ d = frame->blocks * ((frame->mode == SBC_MODE_DUAL_CHANNEL) + 1);
+ frame->bitpool = (((avctx->bit_rate * frame->subbands * frame->blocks) / avctx->sample_rate)
+ - 4 * frame->subbands * avctx->channels
+ - (frame->mode == SBC_MODE_JOINT_STEREO)*frame->subbands - 32 + d/2) / d;
+ if (avctx->global_quality > 0)
+ frame->bitpool = avctx->global_quality / FF_QP2LAMBDA;
+
+ avctx->frame_size = 4*((frame->subbands >> 3) + 1) * 4*(frame->blocks >> 2);
+ }
+
+ for (int i = 0; avctx->codec->supported_samplerates[i]; i++)
+ if (avctx->sample_rate == avctx->codec->supported_samplerates[i])
+ frame->frequency = i;
+
+ frame->channels = avctx->channels;
+ frame->codesize = frame->subbands * frame->blocks * avctx->channels * 2;
+ frame->crc_ctx = av_crc_get_table(AV_CRC_8_EBU);
+
+ memset(&sbc->dsp.X, 0, sizeof(sbc->dsp.X));
+ sbc->dsp.position = (SBC_X_BUFFER_SIZE - frame->subbands * 9) & ~7;
+ sbc->dsp.increment = sbc->msbc ? 1 : 4;
+ ff_sbcdsp_init(&sbc->dsp);
+
+ return 0;
+}
+
+static int sbc_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
+ const AVFrame *av_frame, int *got_packet_ptr)
+{
+ SBCEncContext *sbc = avctx->priv_data;
+ struct sbc_frame *frame = &sbc->frame;
+ uint8_t joint = frame->mode == SBC_MODE_JOINT_STEREO;
+ uint8_t dual = frame->mode == SBC_MODE_DUAL_CHANNEL;
+ int ret, j = 0;
+
+ int frame_length = 4 + (4 * frame->subbands * frame->channels) / 8
+ + ((frame->blocks * frame->bitpool * (1 + dual)
+ + joint * frame->subbands) + 7) / 8;
+
+ /* input must be large enough to encode a complete frame */
+ if (av_frame->nb_samples * frame->channels * 2 < frame->codesize)
+ return 0;
+
+ if ((ret = ff_alloc_packet2(avctx, avpkt, frame_length, 0)) < 0)
+ return ret;
+
+ /* Select the needed input data processing function and call it */
+ if (frame->subbands == 8)
+ sbc->dsp.position = sbc->dsp.sbc_enc_process_input_8s(
+ sbc->dsp.position, av_frame->data[0], sbc->dsp.X,
+ frame->subbands * frame->blocks, frame->channels);
+ else
+ sbc->dsp.position = sbc->dsp.sbc_enc_process_input_4s(
+ sbc->dsp.position, av_frame->data[0], sbc->dsp.X,
+ frame->subbands * frame->blocks, frame->channels);
+
+ sbc_analyze_audio(&sbc->dsp, &sbc->frame);
+
+ if (frame->mode == JOINT_STEREO)
+ j = sbc->dsp.sbc_calc_scalefactors_j(frame->sb_sample_f,
+ frame->scale_factor,
+ frame->blocks,
+ frame->subbands);
+ else
+ sbc->dsp.sbc_calc_scalefactors(frame->sb_sample_f,
+ frame->scale_factor,
+ frame->blocks,
+ frame->channels,
+ frame->subbands);
+ emms_c();
+ sbc_pack_frame(avpkt, frame, j, sbc->msbc);
+
+ *got_packet_ptr = 1;
+ return 0;
+}
+
+#define OFFSET(x) offsetof(SBCEncContext, x)
+#define AE AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
+static const AVOption options[] = {
+ { "sbc_delay", "set maximum algorithmic latency",
+ OFFSET(max_delay), AV_OPT_TYPE_DURATION, {.i64 = 13000}, 1000,13000, AE },
+ { "msbc", "use mSBC mode (wideband speech mono SBC)",
+ OFFSET(msbc), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AE },
+ { NULL },
+};
+
+static const AVClass sbc_class = {
+ .class_name = "sbc encoder",
+ .item_name = av_default_item_name,
+ .option = options,
+ .version = LIBAVUTIL_VERSION_INT,
+};
+
+AVCodec ff_sbc_encoder = {
+ .name = "sbc",
+ .long_name = NULL_IF_CONFIG_SMALL("SBC (low-complexity subband codec)"),
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = AV_CODEC_ID_SBC,
+ .priv_data_size = sizeof(SBCEncContext),
+ .init = sbc_encode_init,
+ .encode2 = sbc_encode_frame,
+ .capabilities = AV_CODEC_CAP_SMALL_LAST_FRAME,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .channel_layouts = (const uint64_t[]) { AV_CH_LAYOUT_MONO,
+ AV_CH_LAYOUT_STEREO, 0},
+ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16,
+ AV_SAMPLE_FMT_NONE },
+ .supported_samplerates = (const int[]) { 16000, 32000, 44100, 48000, 0 },
+ .priv_class = &sbc_class,
+ .profiles = NULL_IF_CONFIG_SMALL(ff_sbc_profiles),
+};
diff --git a/chromium/third_party/ffmpeg/libavcodec/scpr.c b/chromium/third_party/ffmpeg/libavcodec/scpr.c
index cbe1bc40d9c..ad6073dbf01 100644
--- a/chromium/third_party/ffmpeg/libavcodec/scpr.c
+++ b/chromium/third_party/ffmpeg/libavcodec/scpr.c
@@ -681,6 +681,8 @@ static int decompress_p(AVCodecContext *avctx,
return AVERROR_INVALIDDATA;
if (bx == 0) {
+ if (by < 2)
+ return AVERROR_INVALIDDATA;
z = backstep;
} else {
z = 0;
@@ -710,6 +712,8 @@ static int decompress_p(AVCodecContext *avctx,
return AVERROR_INVALIDDATA;
if (bx == 0) {
+ if (by < 2)
+ return AVERROR_INVALIDDATA;
z = backstep;
} else {
z = 0;
diff --git a/chromium/third_party/ffmpeg/libavcodec/smc.c b/chromium/third_party/ffmpeg/libavcodec/smc.c
index 79f9a757a05..3cb48347378 100644
--- a/chromium/third_party/ffmpeg/libavcodec/smc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/smc.c
@@ -438,6 +438,10 @@ static int smc_decode_frame(AVCodecContext *avctx,
int pal_size;
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, &pal_size);
int ret;
+ int total_blocks = ((s->avctx->width + 3) / 4) * ((s->avctx->height + 3) / 4);
+
+ if (total_blocks / 1024 > avpkt->size)
+ return AVERROR_INVALIDDATA;
bytestream2_init(&s->gb, buf, buf_size);
diff --git a/chromium/third_party/ffmpeg/libavcodec/smvjpegdec.c b/chromium/third_party/ffmpeg/libavcodec/smvjpegdec.c
index 018e135b300..0b05d19f7b0 100644
--- a/chromium/third_party/ffmpeg/libavcodec/smvjpegdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/smvjpegdec.c
@@ -193,7 +193,6 @@ static int smvjpeg_decode_frame(AVCodecContext *avctx, void *data, int *data_siz
s->picture[1]->width = avctx->width;
s->picture[1]->height = avctx->height;
s->picture[1]->format = avctx->pix_fmt;
- /* ff_init_buffer_info(avctx, &s->picture[1]); */
smv_img_pnt(s->picture[1]->data, mjpeg_data->data, mjpeg_data->linesize,
avctx->pix_fmt, avctx->width, avctx->height, cur_frame);
for (i = 0; i < AV_NUM_DATA_POINTERS; i++)
diff --git a/chromium/third_party/ffmpeg/libavcodec/snowenc.c b/chromium/third_party/ffmpeg/libavcodec/snowenc.c
index 4fec3775911..61a658fa440 100644
--- a/chromium/third_party/ffmpeg/libavcodec/snowenc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/snowenc.c
@@ -179,7 +179,7 @@ static int pix_sum(uint8_t * pix, int line_size, int w, int h)
static int pix_norm1(uint8_t * pix, int line_size, int w)
{
int s, i, j;
- uint32_t *sq = ff_square_tab + 256;
+ const uint32_t *sq = ff_square_tab + 256;
s = 0;
for (i = 0; i < w; i++) {
diff --git a/chromium/third_party/ffmpeg/libavcodec/thread.h b/chromium/third_party/ffmpeg/libavcodec/thread.h
index 318619316c9..540135fbc92 100644
--- a/chromium/third_party/ffmpeg/libavcodec/thread.h
+++ b/chromium/third_party/ffmpeg/libavcodec/thread.h
@@ -29,7 +29,6 @@
#include "libavutil/buffer.h"
-#include "config.h"
#include "avcodec.h"
typedef struct ThreadFrame {
diff --git a/chromium/third_party/ffmpeg/libavcodec/trace_headers_bsf.c b/chromium/third_party/ffmpeg/libavcodec/trace_headers_bsf.c
index 93d04cb5097..0697e98943d 100644
--- a/chromium/third_party/ffmpeg/libavcodec/trace_headers_bsf.c
+++ b/chromium/third_party/ffmpeg/libavcodec/trace_headers_bsf.c
@@ -67,45 +67,43 @@ static void trace_headers_close(AVBSFContext *bsf)
ff_cbs_close(&ctx->cbc);
}
-static int trace_headers(AVBSFContext *bsf, AVPacket *out)
+static int trace_headers(AVBSFContext *bsf, AVPacket *pkt)
{
TraceHeadersContext *ctx = bsf->priv_data;
CodedBitstreamFragment au;
- AVPacket *in;
char tmp[256] = { 0 };
int err;
- err = ff_bsf_get_packet(bsf, &in);
+ err = ff_bsf_get_packet_ref(bsf, pkt);
if (err < 0)
return err;
- if (in->flags & AV_PKT_FLAG_KEY)
+ if (pkt->flags & AV_PKT_FLAG_KEY)
av_strlcat(tmp, ", key frame", sizeof(tmp));
- if (in->flags & AV_PKT_FLAG_CORRUPT)
+ if (pkt->flags & AV_PKT_FLAG_CORRUPT)
av_strlcat(tmp, ", corrupt", sizeof(tmp));
- if (in->pts != AV_NOPTS_VALUE)
- av_strlcatf(tmp, sizeof(tmp), ", pts %"PRId64, in->pts);
+ if (pkt->pts != AV_NOPTS_VALUE)
+ av_strlcatf(tmp, sizeof(tmp), ", pts %"PRId64, pkt->pts);
else
av_strlcat(tmp, ", no pts", sizeof(tmp));
- if (in->dts != AV_NOPTS_VALUE)
- av_strlcatf(tmp, sizeof(tmp), ", dts %"PRId64, in->dts);
+ if (pkt->dts != AV_NOPTS_VALUE)
+ av_strlcatf(tmp, sizeof(tmp), ", dts %"PRId64, pkt->dts);
else
av_strlcat(tmp, ", no dts", sizeof(tmp));
- if (in->duration > 0)
- av_strlcatf(tmp, sizeof(tmp), ", duration %"PRId64, in->duration);
+ if (pkt->duration > 0)
+ av_strlcatf(tmp, sizeof(tmp), ", duration %"PRId64, pkt->duration);
- av_log(bsf, AV_LOG_INFO, "Packet: %d bytes%s.\n", in->size, tmp);
+ av_log(bsf, AV_LOG_INFO, "Packet: %d bytes%s.\n", pkt->size, tmp);
- err = ff_cbs_read_packet(ctx->cbc, &au, in);
- if (err < 0)
+ err = ff_cbs_read_packet(ctx->cbc, &au, pkt);
+ if (err < 0) {
+ av_packet_unref(pkt);
return err;
+ }
ff_cbs_fragment_uninit(ctx->cbc, &au);
- av_packet_move_ref(out, in);
- av_packet_free(&in);
-
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/truemotion2rt.c b/chromium/third_party/ffmpeg/libavcodec/truemotion2rt.c
index d63918742db..9df0b527bbd 100644
--- a/chromium/third_party/ffmpeg/libavcodec/truemotion2rt.c
+++ b/chromium/third_party/ffmpeg/libavcodec/truemotion2rt.c
@@ -116,6 +116,9 @@ static int truemotion2rt_decode_frame(AVCodecContext *avctx, void *data,
if (ret < 0)
return ret;
+ if (avctx->width / s->hscale * avctx->height * s->delta_size > avpkt->size * 8LL * 4)
+ return AVERROR_INVALIDDATA;
+
ret = init_get_bits8(gb, avpkt->data + ret, avpkt->size - ret);
if (ret < 0)
return ret;
diff --git a/chromium/third_party/ffmpeg/libavcodec/utils.c b/chromium/third_party/ffmpeg/libavcodec/utils.c
index 4c718432ad0..8c7d056da64 100644
--- a/chromium/third_party/ffmpeg/libavcodec/utils.c
+++ b/chromium/third_party/ffmpeg/libavcodec/utils.c
@@ -46,7 +46,6 @@
#include "decode.h"
#include "hwaccel.h"
#include "libavutil/opt.h"
-#include "me_cmp.h"
#include "mpegvideo.h"
#include "thread.h"
#include "frame_thread_encoder.h"
@@ -92,30 +91,6 @@ void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size)
memset(*p, 0, min_size + AV_INPUT_BUFFER_PADDING_SIZE);
}
-/* encoder management */
-static AVCodec *first_avcodec = NULL;
-static AVCodec **last_avcodec = &first_avcodec;
-
-AVCodec *av_codec_next(const AVCodec *c)
-{
- if (c)
- return c->next;
- else
- return first_avcodec;
-}
-
-static av_cold void avcodec_init(void)
-{
- static int initialized = 0;
-
- if (initialized != 0)
- return;
- initialized = 1;
-
- if (CONFIG_ME_CMP)
- ff_me_cmp_init_static();
-}
-
int av_codec_is_encoder(const AVCodec *codec)
{
return codec && (codec->encode_sub || codec->encode2 ||codec->send_frame);
@@ -126,28 +101,6 @@ int av_codec_is_decoder(const AVCodec *codec)
return codec && (codec->decode || codec->receive_frame);
}
-static AVMutex codec_register_mutex = AV_MUTEX_INITIALIZER;
-
-av_cold void avcodec_register(AVCodec *codec)
-{
- AVCodec **p;
- avcodec_init();
-
- ff_mutex_lock(&codec_register_mutex);
- p = last_avcodec;
-
- while (*p)
- p = &(*p)->next;
- *p = codec;
- codec->next = NULL;
- last_avcodec = &codec->next;
-
- ff_mutex_unlock(&codec_register_mutex);
-
- if (codec->init_static_data)
- codec->init_static_data(codec);
-}
-
int ff_set_dimensions(AVCodecContext *s, int width, int height)
{
int ret = av_image_check_size2(width, height, s->max_pixels, AV_PIX_FMT_NONE, 0, s);
@@ -1168,71 +1121,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
return 0;
}
-static enum AVCodecID remap_deprecated_codec_id(enum AVCodecID id)
-{
- switch(id){
- //This is for future deprecatec codec ids, its empty since
- //last major bump but will fill up again over time, please don't remove it
- default : return id;
- }
-}
-
-static AVCodec *find_encdec(enum AVCodecID id, int encoder)
-{
- AVCodec *p, *experimental = NULL;
- p = first_avcodec;
- id= remap_deprecated_codec_id(id);
- while (p) {
- if ((encoder ? av_codec_is_encoder(p) : av_codec_is_decoder(p)) &&
- p->id == id) {
- if (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL && !experimental) {
- experimental = p;
- } else
- return p;
- }
- p = p->next;
- }
- return experimental;
-}
-
-AVCodec *avcodec_find_encoder(enum AVCodecID id)
-{
- return find_encdec(id, 1);
-}
-
-AVCodec *avcodec_find_encoder_by_name(const char *name)
-{
- AVCodec *p;
- if (!name)
- return NULL;
- p = first_avcodec;
- while (p) {
- if (av_codec_is_encoder(p) && strcmp(name, p->name) == 0)
- return p;
- p = p->next;
- }
- return NULL;
-}
-
-AVCodec *avcodec_find_decoder(enum AVCodecID id)
-{
- return find_encdec(id, 0);
-}
-
-AVCodec *avcodec_find_decoder_by_name(const char *name)
-{
- AVCodec *p;
- if (!name)
- return NULL;
- p = first_avcodec;
- while (p) {
- if (av_codec_is_decoder(p) && strcmp(name, p->name) == 0)
- return p;
- p = p->next;
- }
- return NULL;
-}
-
const char *avcodec_get_name(enum AVCodecID id)
{
const AVCodecDescriptor *cd;
diff --git a/chromium/third_party/ffmpeg/libavcodec/utvideodec.c b/chromium/third_party/ffmpeg/libavcodec/utvideodec.c
index 608c8c4998a..e09f467f229 100644
--- a/chromium/third_party/ffmpeg/libavcodec/utvideodec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/utvideodec.c
@@ -27,9 +27,8 @@
#include <inttypes.h>
#include <stdlib.h>
-#define UNCHECKED_BITSTREAM_READER 1
-
#include "libavutil/intreadwrite.h"
+#include "libavutil/pixdesc.h"
#include "avcodec.h"
#include "bswapdsp.h"
#include "bytestream.h"
@@ -268,6 +267,9 @@ static int decode_plane(UtvideoContext *c, int plane_no,
send = (height * (slice + 1) / c->slices) & cmask;
dest = dst + sstart * stride;
+ if (3 * ((dst + send * stride - dest + 7)/8) > get_bits_left(&cbit))
+ return AVERROR_INVALIDDATA;
+
for (p = dest; p < dst + send * stride; p += 8) {
int bits = get_bits_le(&cbit, 3);
@@ -277,6 +279,9 @@ static int decode_plane(UtvideoContext *c, int plane_no,
uint32_t sub = 0x80 >> (8 - (bits + 1)), add;
int k;
+ if ((bits + 1) * 8 > get_bits_left(&pbit))
+ return AVERROR_INVALIDDATA;
+
for (k = 0; k < 8; k++) {
p[k] = get_bits_le(&pbit, bits + 1);
@@ -639,9 +644,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
for (j = 0; j < c->slices; j++) {
c->packed_stream[i][j] = packed_stream;
c->packed_stream_size[i][j] = bytestream2_get_le32(&pb);
- left -= c->packed_stream_size[i][j];
- if (left < 0)
+ if (c->packed_stream_size[i][j] > left)
return AVERROR_INVALIDDATA;
+ left -= c->packed_stream_size[i][j];
packed_stream += c->packed_stream_size[i][j];
}
}
@@ -652,9 +657,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
for (j = 0; j < c->slices; j++) {
c->control_stream[i][j] = control_stream;
c->control_stream_size[i][j] = bytestream2_get_le32(&pb);
- left -= c->control_stream_size[i][j];
- if (left < 0)
+ if (c->control_stream_size[i][j] > left)
return AVERROR_INVALIDDATA;
+ left -= c->control_stream_size[i][j];
control_stream += c->control_stream_size[i][j];
}
}
@@ -676,7 +681,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
for (j = 0; j < c->slices; j++) {
slice_end = bytestream2_get_le32u(&gb);
if (slice_end < 0 || slice_end < slice_start ||
- bytestream2_get_bytes_left(&gb) < slice_end) {
+ bytestream2_get_bytes_left(&gb) < slice_end + 1024LL) {
av_log(avctx, AV_LOG_ERROR, "Incorrect slice size\n");
return AVERROR_INVALIDDATA;
}
@@ -906,6 +911,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
static av_cold int decode_init(AVCodecContext *avctx)
{
UtvideoContext * const c = avctx->priv_data;
+ int h_shift, v_shift;
c->avctx = avctx;
@@ -1006,6 +1012,13 @@ static av_cold int decode_init(AVCodecContext *avctx)
return AVERROR_INVALIDDATA;
}
+ av_pix_fmt_get_chroma_sub_sample(avctx->pix_fmt, &h_shift, &v_shift);
+ if ((avctx->width & ((1<<h_shift)-1)) ||
+ (avctx->height & ((1<<v_shift)-1))) {
+ avpriv_request_sample(avctx, "Odd dimensions");
+ return AVERROR_PATCHWELCOME;
+ }
+
if (c->pack && avctx->extradata_size >= 16) {
av_log(avctx, AV_LOG_DEBUG, "Encoder version %d.%d.%d.%d\n",
avctx->extradata[3], avctx->extradata[2],
diff --git a/chromium/third_party/ffmpeg/libavcodec/utvideoenc.c b/chromium/third_party/ffmpeg/libavcodec/utvideoenc.c
index a829b7aaac5..db00e1eff5f 100644
--- a/chromium/third_party/ffmpeg/libavcodec/utvideoenc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/utvideoenc.c
@@ -283,23 +283,6 @@ static void mangle_rgb_planes(uint8_t *dst[4], ptrdiff_t dst_stride,
}
}
-/* Write data to a plane with left prediction */
-static void left_predict(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
- int width, int height)
-{
- int i, j;
- uint8_t prev;
-
- prev = 0x80; /* Set the initial value */
- for (j = 0; j < height; j++) {
- for (i = 0; i < width; i++) {
- *dst++ = src[i] - prev;
- prev = src[i];
- }
- src += stride;
- }
-}
-
#undef A
#undef B
@@ -436,8 +419,7 @@ static int encode_plane(AVCodecContext *avctx, uint8_t *src,
for (i = 0; i < c->slices; i++) {
sstart = send;
send = height * (i + 1) / c->slices & cmask;
- left_predict(src + sstart * stride, dst + sstart * width,
- stride, width, send - sstart);
+ c->llvidencdsp.sub_left_predict(dst + sstart * width, src + sstart * stride, stride, width, send - sstart);
}
break;
case PRED_MEDIAN:
diff --git a/chromium/third_party/ffmpeg/libavcodec/v4l2_context.c b/chromium/third_party/ffmpeg/libavcodec/v4l2_context.c
index e0431b1b3e3..efcb0426e49 100644
--- a/chromium/third_party/ffmpeg/libavcodec/v4l2_context.c
+++ b/chromium/third_party/ffmpeg/libavcodec/v4l2_context.c
@@ -446,9 +446,7 @@ static int v4l2_get_raw_format(V4L2Context* ctx, enum AVPixelFormat *p)
if (pixfmt != AV_PIX_FMT_NONE) {
ret = v4l2_try_raw_format(ctx, pixfmt);
- if (ret)
- pixfmt = AV_PIX_FMT_NONE;
- else
+ if (!ret)
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_decode.c b/chromium/third_party/ffmpeg/libavcodec/vaapi_decode.c
index 572b3a40ac0..d0a6b5817d7 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vaapi_decode.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_decode.c
@@ -233,6 +233,132 @@ int ff_vaapi_decode_cancel(AVCodecContext *avctx,
}
static const struct {
+ uint32_t fourcc;
+ enum AVPixelFormat pix_fmt;
+} vaapi_format_map[] = {
+#define MAP(va, av) { VA_FOURCC_ ## va, AV_PIX_FMT_ ## av }
+ // 4:0:0
+ MAP(Y800, GRAY8),
+ // 4:2:0
+ MAP(NV12, NV12),
+ MAP(YV12, YUV420P),
+ MAP(IYUV, YUV420P),
+#ifdef VA_FOURCC_I420
+ MAP(I420, YUV420P),
+#endif
+ MAP(IMC3, YUV420P),
+ // 4:1:1
+ MAP(411P, YUV411P),
+ // 4:2:2
+ MAP(422H, YUV422P),
+#ifdef VA_FOURCC_YV16
+ MAP(YV16, YUV422P),
+#endif
+ // 4:4:0
+ MAP(422V, YUV440P),
+ // 4:4:4
+ MAP(444P, YUV444P),
+ // 4:2:0 10-bit
+#ifdef VA_FOURCC_P010
+ MAP(P010, P010),
+#endif
+#ifdef VA_FOURCC_I010
+ MAP(I010, YUV420P10),
+#endif
+#undef MAP
+};
+
+static int vaapi_decode_find_best_format(AVCodecContext *avctx,
+ AVHWDeviceContext *device,
+ VAConfigID config_id,
+ AVHWFramesContext *frames)
+{
+ AVVAAPIDeviceContext *hwctx = device->hwctx;
+ VAStatus vas;
+ VASurfaceAttrib *attr;
+ enum AVPixelFormat source_format, best_format, format;
+ uint32_t best_fourcc, fourcc;
+ int i, j, nb_attr;
+
+ source_format = avctx->sw_pix_fmt;
+ av_assert0(source_format != AV_PIX_FMT_NONE);
+
+ vas = vaQuerySurfaceAttributes(hwctx->display, config_id,
+ NULL, &nb_attr);
+ if (vas != VA_STATUS_SUCCESS) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to query surface attributes: "
+ "%d (%s).\n", vas, vaErrorStr(vas));
+ return AVERROR(ENOSYS);
+ }
+
+ attr = av_malloc_array(nb_attr, sizeof(*attr));
+ if (!attr)
+ return AVERROR(ENOMEM);
+
+ vas = vaQuerySurfaceAttributes(hwctx->display, config_id,
+ attr, &nb_attr);
+ if (vas != VA_STATUS_SUCCESS) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to query surface attributes: "
+ "%d (%s).\n", vas, vaErrorStr(vas));
+ av_freep(&attr);
+ return AVERROR(ENOSYS);
+ }
+
+ best_format = AV_PIX_FMT_NONE;
+
+ for (i = 0; i < nb_attr; i++) {
+ if (attr[i].type != VASurfaceAttribPixelFormat)
+ continue;
+
+ fourcc = attr[i].value.value.i;
+ for (j = 0; j < FF_ARRAY_ELEMS(vaapi_format_map); j++) {
+ if (fourcc == vaapi_format_map[j].fourcc)
+ break;
+ }
+ if (j >= FF_ARRAY_ELEMS(vaapi_format_map)) {
+ av_log(avctx, AV_LOG_DEBUG, "Ignoring unknown format %#x.\n",
+ fourcc);
+ continue;
+ }
+ format = vaapi_format_map[j].pix_fmt;
+ av_log(avctx, AV_LOG_DEBUG, "Considering format %#x -> %s.\n",
+ fourcc, av_get_pix_fmt_name(format));
+
+ best_format = av_find_best_pix_fmt_of_2(format, best_format,
+ source_format, 0, NULL);
+ if (format == best_format)
+ best_fourcc = fourcc;
+ }
+
+ av_freep(&attr);
+
+ if (best_format == AV_PIX_FMT_NONE) {
+ av_log(avctx, AV_LOG_ERROR, "No usable formats for decoding!\n");
+ return AVERROR(EINVAL);
+ }
+
+ av_log(avctx, AV_LOG_DEBUG, "Picked %s (%#x) as best match for %s.\n",
+ av_get_pix_fmt_name(best_format), best_fourcc,
+ av_get_pix_fmt_name(source_format));
+
+ frames->sw_format = best_format;
+ if (avctx->internal->hwaccel_priv_data) {
+ VAAPIDecodeContext *ctx = avctx->internal->hwaccel_priv_data;
+ AVVAAPIFramesContext *avfc = frames->hwctx;
+
+ ctx->pixel_format_attribute = (VASurfaceAttrib) {
+ .type = VASurfaceAttribPixelFormat,
+ .value.value.i = best_fourcc,
+ };
+
+ avfc->attributes = &ctx->pixel_format_attribute;
+ avfc->nb_attributes = 1;
+ }
+
+ return 0;
+}
+
+static const struct {
enum AVCodecID codec_id;
int codec_profile;
VAProfile va_profile;
@@ -253,6 +379,8 @@ static const struct {
MAP(HEVC, HEVC_MAIN, HEVCMain ),
MAP(HEVC, HEVC_MAIN_10, HEVCMain10 ),
#endif
+ MAP(MJPEG, MJPEG_HUFFMAN_BASELINE_DCT,
+ JPEGBaseline),
MAP(WMV3, VC1_SIMPLE, VC1Simple ),
MAP(WMV3, VC1_MAIN, VC1Main ),
MAP(WMV3, VC1_COMPLEX, VC1Advanced ),
@@ -289,7 +417,6 @@ static int vaapi_decode_make_config(AVCodecContext *avctx,
const AVCodecDescriptor *codec_desc;
VAProfile *profile_list = NULL, matched_va_profile;
int profile_count, exact_match, matched_ff_profile;
- const AVPixFmtDescriptor *sw_desc, *desc;
AVHWDeviceContext *device = (AVHWDeviceContext*)device_ref->data;
AVVAAPIDeviceContext *hwctx = device->hwctx;
@@ -417,27 +544,10 @@ static int vaapi_decode_make_config(AVCodecContext *avctx,
frames->width = avctx->coded_width;
frames->height = avctx->coded_height;
- // Find the first format in the list which matches the expected
- // bit depth and subsampling. If none are found (this can happen
- // when 10-bit streams are decoded to 8-bit surfaces, for example)
- // then just take the first format on the list.
- frames->sw_format = constraints->valid_sw_formats[0];
- sw_desc = av_pix_fmt_desc_get(avctx->sw_pix_fmt);
- for (i = 0; constraints->valid_sw_formats[i] != AV_PIX_FMT_NONE; i++) {
- desc = av_pix_fmt_desc_get(constraints->valid_sw_formats[i]);
- if (desc->nb_components != sw_desc->nb_components ||
- desc->log2_chroma_w != sw_desc->log2_chroma_w ||
- desc->log2_chroma_h != sw_desc->log2_chroma_h)
- continue;
- for (j = 0; j < desc->nb_components; j++) {
- if (desc->comp[j].depth != sw_desc->comp[j].depth)
- break;
- }
- if (j < desc->nb_components)
- continue;
- frames->sw_format = constraints->valid_sw_formats[i];
- break;
- }
+ err = vaapi_decode_find_best_format(avctx, device,
+ *va_config, frames);
+ if (err < 0)
+ goto fail;
frames->initial_pool_size = 1;
// Add per-codec number of surfaces used for storing reference frames.
diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_decode.h b/chromium/third_party/ffmpeg/libavcodec/vaapi_decode.h
index 1fcecac4682..6b415dd1d36 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vaapi_decode.h
+++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_decode.h
@@ -72,6 +72,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
enum AVPixelFormat surface_format;
int surface_count;
+
+ VASurfaceAttrib pixel_format_attribute;
} VAAPIDecodeContext;
diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_encode.c b/chromium/third_party/ffmpeg/libavcodec/vaapi_encode.c
index 550ea47991d..36c85a38154 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vaapi_encode.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_encode.c
@@ -321,10 +321,12 @@ static int vaapi_encode_issue(AVCodecContext *avctx,
}
}
- pic->slices = av_mallocz_array(pic->nb_slices, sizeof(*pic->slices));
- if (!pic->slices) {
- err = AVERROR(ENOMEM);
- goto fail;
+ if (pic->nb_slices > 0) {
+ pic->slices = av_mallocz_array(pic->nb_slices, sizeof(*pic->slices));
+ if (!pic->slices) {
+ err = AVERROR(ENOMEM);
+ goto fail;
+ }
}
for (i = 0; i < pic->nb_slices; i++) {
slice = &pic->slices[i];
@@ -1094,10 +1096,10 @@ static av_cold int vaapi_encode_config_attributes(AVCodecContext *avctx)
goto fail;
}
if (avctx->max_b_frames > 0 && ref_l1 < 1) {
- av_log(avctx, AV_LOG_ERROR, "B frames are not "
- "supported (%#x).\n", attr[i].value);
- err = AVERROR(EINVAL);
- goto fail;
+ av_log(avctx, AV_LOG_WARNING, "B frames are not "
+ "supported (%#x) by the underlying driver.\n",
+ attr[i].value);
+ avctx->max_b_frames = 0;
}
}
break;
@@ -1562,6 +1564,8 @@ av_cold int ff_vaapi_encode_close(AVCodecContext *avctx)
vaapi_encode_free(avctx, pic);
}
+ av_buffer_pool_uninit(&ctx->output_buffer_pool);
+
if (ctx->va_context != VA_INVALID_ID) {
vaDestroyContext(ctx->hwctx->display, ctx->va_context);
ctx->va_context = VA_INVALID_ID;
@@ -1572,8 +1576,6 @@ av_cold int ff_vaapi_encode_close(AVCodecContext *avctx)
ctx->va_config = VA_INVALID_ID;
}
- av_buffer_pool_uninit(&ctx->output_buffer_pool);
-
av_freep(&ctx->codec_sequence_params);
av_freep(&ctx->codec_picture_params);
diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h264.c b/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h264.c
index a7f9a602533..56ad217b4a5 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h264.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h264.c
@@ -135,7 +135,7 @@ static int vaapi_encode_h264_add_nal(AVCodecContext *avctx,
int err;
err = ff_cbs_insert_unit_content(priv->cbc, au, -1,
- header->nal_unit_type, nal_unit);
+ header->nal_unit_type, nal_unit, NULL);
if (err < 0) {
av_log(avctx, AV_LOG_ERROR, "Failed to add NAL unit: "
"type = %d.\n", header->nal_unit_type);
diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h265.c b/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h265.c
index f3b4f6c7e26..5203c6871dd 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h265.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_h265.c
@@ -105,7 +105,7 @@ static int vaapi_encode_h265_add_nal(AVCodecContext *avctx,
int err;
err = ff_cbs_insert_unit_content(priv->cbc, au, -1,
- header->nal_unit_type, nal_unit);
+ header->nal_unit_type, nal_unit, NULL);
if (err < 0) {
av_log(avctx, AV_LOG_ERROR, "Failed to add NAL unit: "
"type = %d.\n", header->nal_unit_type);
@@ -767,8 +767,6 @@ static int vaapi_encode_h265_init_slice_params(AVCodecContext *avctx,
.num_ref_idx_l0_active_minus1 = sh->num_ref_idx_l0_active_minus1,
.num_ref_idx_l1_active_minus1 = sh->num_ref_idx_l1_active_minus1,
- .ref_pic_list0[0] = vpic->reference_frames[0],
- .ref_pic_list1[0] = vpic->reference_frames[1],
.luma_log2_weight_denom = sh->luma_log2_weight_denom,
.delta_chroma_log2_weight_denom = sh->delta_chroma_log2_weight_denom,
@@ -802,6 +800,25 @@ static int vaapi_encode_h265_init_slice_params(AVCodecContext *avctx,
},
};
+ for (i = 0; i < FF_ARRAY_ELEMS(vslice->ref_pic_list0); i++) {
+ vslice->ref_pic_list0[i].picture_id = VA_INVALID_ID;
+ vslice->ref_pic_list0[i].flags = VA_PICTURE_HEVC_INVALID;
+ vslice->ref_pic_list1[i].picture_id = VA_INVALID_ID;
+ vslice->ref_pic_list1[i].flags = VA_PICTURE_HEVC_INVALID;
+ }
+
+ av_assert0(pic->nb_refs <= 2);
+ if (pic->nb_refs >= 1) {
+ // Backward reference for P- or B-frame.
+ av_assert0(pic->type == PICTURE_TYPE_P ||
+ pic->type == PICTURE_TYPE_B);
+ vslice->ref_pic_list0[0] = vpic->reference_frames[0];
+ }
+ if (pic->nb_refs >= 2) {
+ // Forward reference for B-frame.
+ av_assert0(pic->type == PICTURE_TYPE_B);
+ vslice->ref_pic_list1[0] = vpic->reference_frames[1];
+ }
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_mpeg2.c b/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_mpeg2.c
index 4537955c40a..42df77ea498 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_mpeg2.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_encode_mpeg2.c
@@ -92,7 +92,7 @@ static int vaapi_encode_mpeg2_add_header(AVCodecContext *avctx,
VAAPIEncodeMPEG2Context *priv = ctx->priv_data;
int err;
- err = ff_cbs_insert_unit_content(priv->cbc, frag, -1, type, header);
+ err = ff_cbs_insert_unit_content(priv->cbc, frag, -1, type, header, NULL);
if (err < 0) {
av_log(avctx, AV_LOG_ERROR, "Failed to add header: "
"type = %d.\n", type);
diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_mjpeg.c b/chromium/third_party/ffmpeg/libavcodec/vaapi_mjpeg.c
new file mode 100644
index 00000000000..14e0206ae1f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_mjpeg.c
@@ -0,0 +1,159 @@
+/*
+ * 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 <va/va.h>
+#include <va/va_dec_jpeg.h>
+
+#include "hwaccel.h"
+#include "vaapi_decode.h"
+#include "mjpegdec.h"
+
+static int vaapi_mjpeg_start_frame(AVCodecContext *avctx,
+ av_unused const uint8_t *buffer,
+ av_unused uint32_t size)
+{
+ const MJpegDecodeContext *s = avctx->priv_data;
+ VAAPIDecodePicture *pic = s->hwaccel_picture_private;
+ VAPictureParameterBufferJPEGBaseline pp;
+ int err, i;
+
+ pic->output_surface = ff_vaapi_get_surface_id(s->picture_ptr);
+
+ pp = (VAPictureParameterBufferJPEGBaseline) {
+ .picture_width = avctx->width,
+ .picture_height = avctx->height,
+
+ .num_components = s->nb_components,
+ };
+
+ for (i = 0; i < s->nb_components; i++) {
+ pp.components[i].component_id = s->component_id[i];
+ pp.components[i].h_sampling_factor = s->h_count[i];
+ pp.components[i].v_sampling_factor = s->v_count[i];
+ pp.components[i].quantiser_table_selector = s->quant_index[i];
+ }
+
+ err = ff_vaapi_decode_make_param_buffer(avctx, pic,
+ VAPictureParameterBufferType,
+ &pp, sizeof(pp));
+ if (err < 0)
+ goto fail;
+
+ return 0;
+
+fail:
+ ff_vaapi_decode_cancel(avctx, pic);
+ return err;
+}
+
+static int vaapi_mjpeg_end_frame(AVCodecContext *avctx)
+{
+ const MJpegDecodeContext *s = avctx->priv_data;
+ VAAPIDecodePicture *pic = s->hwaccel_picture_private;
+
+ return ff_vaapi_decode_issue(avctx, pic);
+}
+
+static int vaapi_mjpeg_decode_slice(AVCodecContext *avctx,
+ const uint8_t *buffer,
+ uint32_t size)
+{
+ const MJpegDecodeContext *s = avctx->priv_data;
+ VAAPIDecodePicture *pic = s->hwaccel_picture_private;
+ VAHuffmanTableBufferJPEGBaseline huff;
+ VAIQMatrixBufferJPEGBaseline quant;
+ VASliceParameterBufferJPEGBaseline sp;
+ int err, i, j;
+
+ memset(&huff, 0, sizeof(huff));
+ for (i = 0; i < 2; i++) {
+ huff.load_huffman_table[i] = 1;
+ for (j = 0; j < 16; j++)
+ huff.huffman_table[i].num_dc_codes[j] = s->raw_huffman_lengths[0][i][j];
+ for (j = 0; j < 12; j++)
+ huff.huffman_table[i].dc_values[j] = s->raw_huffman_values[0][i][j];
+ for (j = 0; j < 16; j++)
+ huff.huffman_table[i].num_ac_codes[j] = s->raw_huffman_lengths[1][i][j];
+ for (j = 0; j < 162; j++)
+ huff.huffman_table[i].ac_values[j] = s->raw_huffman_values[1][i][j];
+ }
+
+ err = ff_vaapi_decode_make_param_buffer(avctx, pic,
+ VAHuffmanTableBufferType,
+ &huff, sizeof(huff));
+ if (err < 0)
+ goto fail;
+
+ memset(&quant, 0, sizeof(quant));
+ for (i = 0; i < 4; i++) {
+ quant.load_quantiser_table[i] = 1;
+ for (j = 0; j < 64; j++)
+ quant.quantiser_table[i][j] = s->quant_matrixes[i][j];
+ }
+
+ err = ff_vaapi_decode_make_param_buffer(avctx, pic,
+ VAIQMatrixBufferType,
+ &quant, sizeof(quant));
+ if (err < 0)
+ goto fail;
+
+ sp = (VASliceParameterBufferJPEGBaseline) {
+ .slice_data_size = size,
+ .slice_data_offset = 0,
+ .slice_data_flag = VA_SLICE_DATA_FLAG_ALL,
+
+ .slice_horizontal_position = 0,
+ .slice_vertical_position = 0,
+
+ .restart_interval = s->restart_interval,
+ .num_mcus = s->mb_width * s->mb_height,
+ };
+
+ sp.num_components = s->nb_components;
+ for (i = 0; i < s->nb_components; i++) {
+ sp.components[i].component_selector = s->component_id[s->comp_index[i]];
+ sp.components[i].dc_table_selector = s->dc_index[i];
+ sp.components[i].ac_table_selector = s->ac_index[i];
+ }
+
+ err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, sizeof(sp), buffer, size);
+ if (err)
+ goto fail;
+
+ return 0;
+
+fail:
+ ff_vaapi_decode_cancel(avctx, pic);
+ return err;
+}
+
+const AVHWAccel ff_mjpeg_vaapi_hwaccel = {
+ .name = "mjpeg_vaapi",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .id = AV_CODEC_ID_MJPEG,
+ .pix_fmt = AV_PIX_FMT_VAAPI,
+ .start_frame = &vaapi_mjpeg_start_frame,
+ .end_frame = &vaapi_mjpeg_end_frame,
+ .decode_slice = &vaapi_mjpeg_decode_slice,
+ .frame_priv_data_size = sizeof(VAAPIDecodePicture),
+ .init = &ff_vaapi_decode_init,
+ .uninit = &ff_vaapi_decode_uninit,
+ .frame_params = &ff_vaapi_common_frame_params,
+ .priv_data_size = sizeof(VAAPIDecodeContext),
+ .caps_internal = HWACCEL_CAP_ASYNC_SAFE,
+};
diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c b/chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c
index 525376790ec..74ba7831416 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c
@@ -44,7 +44,8 @@ static inline int vc1_has_MVTYPEMB_bitplane(const VC1Context *v)
{
if (v->mv_type_is_raw)
return 0;
- return v->s.pict_type == AV_PICTURE_TYPE_P &&
+ return v->fcm == PROGRESSIVE &&
+ (v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) &&
(v->mv_mode == MV_PMODE_MIXED_MV ||
(v->mv_mode == MV_PMODE_INTENSITY_COMP &&
v->mv_mode2 == MV_PMODE_MIXED_MV));
@@ -55,8 +56,9 @@ static inline int vc1_has_SKIPMB_bitplane(const VC1Context *v)
{
if (v->skip_is_raw)
return 0;
- return v->s.pict_type == AV_PICTURE_TYPE_P ||
- (v->s.pict_type == AV_PICTURE_TYPE_B && !v->bi_type);
+ return (v->fcm == PROGRESSIVE || v->fcm == ILACE_FRAME) &&
+ ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) ||
+ (v->s.pict_type == AV_PICTURE_TYPE_B && !v->bi_type));
}
/** Check whether the DIRECTMB bitplane is present */
@@ -64,7 +66,8 @@ static inline int vc1_has_DIRECTMB_bitplane(const VC1Context *v)
{
if (v->dmb_is_raw)
return 0;
- return v->s.pict_type == AV_PICTURE_TYPE_B && !v->bi_type;
+ return (v->fcm == PROGRESSIVE || v->fcm == ILACE_FRAME) &&
+ (v->s.pict_type == AV_PICTURE_TYPE_B && !v->bi_type);
}
/** Check whether the ACPRED bitplane is present */
@@ -89,6 +92,25 @@ static inline int vc1_has_OVERFLAGS_bitplane(const VC1Context *v)
v->condover == CONDOVER_SELECT;
}
+/** Check whether the FIELDTX bitplane is present */
+static inline int vc1_has_FIELDTX_bitplane(const VC1Context *v)
+{
+ if (v->fieldtx_is_raw)
+ return 0;
+ return v->fcm == ILACE_FRAME &&
+ (v->s.pict_type == AV_PICTURE_TYPE_I ||
+ (v->s.pict_type == AV_PICTURE_TYPE_B && v->bi_type));
+}
+
+/** Check whether the FORWARDMB bitplane is present */
+static inline int vc1_has_FORWARDMB_bitplane(const VC1Context *v)
+{
+ if (v->fmb_is_raw)
+ return 0;
+ return v->fcm == ILACE_FIELD &&
+ (v->s.pict_type == AV_PICTURE_TYPE_B && !v->bi_type);
+}
+
/** Reconstruct bitstream PTYPE (7.1.1.4, index into Table-35) */
static int vc1_get_PTYPE(const VC1Context *v)
{
@@ -101,10 +123,22 @@ static int vc1_get_PTYPE(const VC1Context *v)
return 0;
}
+/** Reconstruct bitstream FPTYPE (9.1.1.42, index into Table-105) */
+static int vc1_get_FPTYPE(const VC1Context *v)
+{
+ const MpegEncContext *s = &v->s;
+ switch (s->pict_type) {
+ case AV_PICTURE_TYPE_I: return 0;
+ case AV_PICTURE_TYPE_P: return 3;
+ case AV_PICTURE_TYPE_B: return v->bi_type ? 7 : 4;
+ }
+ return 0;
+}
+
/** Reconstruct bitstream MVMODE (7.1.1.32) */
static inline VAMvModeVC1 vc1_get_MVMODE(const VC1Context *v)
{
- if (v->s.pict_type == AV_PICTURE_TYPE_P ||
+ if ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) ||
(v->s.pict_type == AV_PICTURE_TYPE_B && !v->bi_type))
return get_VAMvModeVC1(v->mv_mode);
return 0;
@@ -113,11 +147,77 @@ static inline VAMvModeVC1 vc1_get_MVMODE(const VC1Context *v)
/** Reconstruct bitstream MVMODE2 (7.1.1.33) */
static inline VAMvModeVC1 vc1_get_MVMODE2(const VC1Context *v)
{
- if (v->s.pict_type == AV_PICTURE_TYPE_P && v->mv_mode == MV_PMODE_INTENSITY_COMP)
+ if ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) &&
+ v->mv_mode == MV_PMODE_INTENSITY_COMP)
return get_VAMvModeVC1(v->mv_mode2);
return 0;
}
+av_unused static inline int vc1_get_INTCOMPFIELD(const VC1Context *v)
+{
+ if ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) &&
+ v->fcm == ILACE_FIELD &&
+ v->mv_mode == MV_PMODE_INTENSITY_COMP)
+ switch (v->intcompfield) {
+ case 1: return 1;
+ case 2: return 2;
+ case 3: return 0;
+ }
+ return 0;
+}
+
+static inline int vc1_get_LUMSCALE(const VC1Context *v)
+{
+ if (v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) {
+ if ((v->fcm == PROGRESSIVE && v->mv_mode == MV_PMODE_INTENSITY_COMP) ||
+ (v->fcm == ILACE_FRAME && v->intcomp))
+ return v->lumscale;
+ else if (v->fcm == ILACE_FIELD && v->mv_mode == MV_PMODE_INTENSITY_COMP)
+ switch (v->intcompfield) {
+ case 1: return v->lumscale;
+ case 2: return v->lumscale2;
+ case 3: return v->lumscale;
+ }
+ }
+ return 0;
+}
+
+static inline int vc1_get_LUMSHIFT(const VC1Context *v)
+{
+ if (v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) {
+ if ((v->fcm == PROGRESSIVE && v->mv_mode == MV_PMODE_INTENSITY_COMP) ||
+ (v->fcm == ILACE_FRAME && v->intcomp))
+ return v->lumshift;
+ else if (v->fcm == ILACE_FIELD && v->mv_mode == MV_PMODE_INTENSITY_COMP)
+ switch (v->intcompfield) {
+ case 1: return v->lumshift;
+ case 2: return v->lumshift2;
+ case 3: return v->lumshift;
+ }
+ }
+ return 0;
+}
+
+av_unused static inline int vc1_get_LUMSCALE2(const VC1Context *v)
+{
+ if ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) &&
+ v->fcm == ILACE_FIELD &&
+ v->mv_mode == MV_PMODE_INTENSITY_COMP &&
+ v->intcompfield == 3)
+ return v->lumscale2;
+ return 0;
+}
+
+av_unused static inline int vc1_get_LUMSHIFT2(const VC1Context *v)
+{
+ if ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) &&
+ v->fcm == ILACE_FIELD &&
+ v->mv_mode == MV_PMODE_INTENSITY_COMP &&
+ v->intcompfield == 3)
+ return v->lumshift2;
+ return 0;
+}
+
/** Reconstruct bitstream TTFRM (7.1.1.41, Table-53) */
static inline int vc1_get_TTFRM(const VC1Context *v)
{
@@ -189,27 +289,32 @@ static int vaapi_vc1_start_frame(AVCodecContext *avctx, av_unused const uint8_t
.chroma = v->range_mapuv,
},
.b_picture_fraction = v->bfraction_lut_index,
- .cbp_table = v->cbpcy_vlc ? v->cbpcy_vlc - ff_vc1_cbpcy_p_vlc : 0,
- .mb_mode_table = 0, /* XXX: interlaced frame */
+ .cbp_table = (v->fcm == PROGRESSIVE ? v->cbptab : v->icbptab),
+ .mb_mode_table = v->mbmodetab,
.range_reduction_frame = v->rangeredfrm,
.rounding_control = v->rnd,
.post_processing = v->postproc,
.picture_resolution_index = v->respic,
- .luma_scale = v->lumscale,
- .luma_shift = v->lumshift,
.picture_fields.bits = {
- .picture_type = vc1_get_PTYPE(v),
+ .picture_type = (v->fcm == ILACE_FIELD ? vc1_get_FPTYPE(v) : vc1_get_PTYPE(v)),
.frame_coding_mode = v->fcm,
.top_field_first = v->tff,
- .is_first_field = v->fcm == 0, /* XXX: interlaced frame */
- .intensity_compensation = v->mv_mode == MV_PMODE_INTENSITY_COMP,
+ .is_first_field = !v->second_field,
+ .intensity_compensation = v->intcomp,
},
+ .luma_scale = vc1_get_LUMSCALE(v),
+ .luma_shift = vc1_get_LUMSHIFT(v),
+#if VA_CHECK_VERSION(1, 1, 0)
+ .luma_scale2 = vc1_get_LUMSCALE2(v),
+ .luma_shift2 = vc1_get_LUMSHIFT2(v),
+ .intensity_compensation_field = vc1_get_INTCOMPFIELD(v),
+#endif
.raw_coding.flags = {
.mv_type_mb = v->mv_type_is_raw,
.direct_mb = v->dmb_is_raw,
.skip_mb = v->skip_is_raw,
- .field_tx = 0, /* XXX: interlaced frame */
- .forward_mb = 0, /* XXX: interlaced frame */
+ .field_tx = v->fieldtx_is_raw,
+ .forward_mb = v->fmb_is_raw,
.ac_pred = v->acpred_is_raw,
.overflags = v->overflg_is_raw,
},
@@ -217,28 +322,28 @@ static int vaapi_vc1_start_frame(AVCodecContext *avctx, av_unused const uint8_t
.bp_mv_type_mb = vc1_has_MVTYPEMB_bitplane(v),
.bp_direct_mb = vc1_has_DIRECTMB_bitplane(v),
.bp_skip_mb = vc1_has_SKIPMB_bitplane(v),
- .bp_field_tx = 0, /* XXX: interlaced frame */
- .bp_forward_mb = 0, /* XXX: interlaced frame */
+ .bp_field_tx = vc1_has_FIELDTX_bitplane(v),
+ .bp_forward_mb = vc1_has_FORWARDMB_bitplane(v),
.bp_ac_pred = vc1_has_ACPRED_bitplane(v),
.bp_overflags = vc1_has_OVERFLAGS_bitplane(v),
},
.reference_fields.bits = {
.reference_distance_flag = v->refdist_flag,
- .reference_distance = 0, /* XXX: interlaced frame */
- .num_reference_pictures = 0, /* XXX: interlaced frame */
- .reference_field_pic_indicator = 0, /* XXX: interlaced frame */
+ .reference_distance = v->refdist,
+ .num_reference_pictures = v->numref,
+ .reference_field_pic_indicator = v->reffield,
},
.mv_fields.bits = {
.mv_mode = vc1_get_MVMODE(v),
.mv_mode2 = vc1_get_MVMODE2(v),
- .mv_table = s->mv_table_index,
- .two_mv_block_pattern_table = 0, /* XXX: interlaced frame */
- .four_mv_switch = 0, /* XXX: interlaced frame */
- .four_mv_block_pattern_table = 0, /* XXX: interlaced frame */
+ .mv_table = (v->fcm == PROGRESSIVE ? s->mv_table_index : v->imvtab),
+ .two_mv_block_pattern_table = v->twomvbptab,
+ .four_mv_switch = v->fourmvswitch,
+ .four_mv_block_pattern_table = v->fourmvbptab,
.extended_mv_flag = v->extended_mv,
.extended_mv_range = v->mvrange,
.extended_dmv_flag = v->extended_dmv,
- .extended_dmv_range = 0, /* XXX: interlaced frame */
+ .extended_dmv_range = v->dmvrange,
},
.pic_quantizer_fields.bits = {
.dquant = v->dquant,
@@ -278,7 +383,7 @@ static int vaapi_vc1_start_frame(AVCodecContext *avctx, av_unused const uint8_t
if (err)
goto fail;
- if (pic_param.bitplane_present.value) {
+ if (pic_param.bitplane_present.value & 0x7f) {
uint8_t *bitplane;
const uint8_t *ff_bp[3];
int x, y, n;
@@ -298,14 +403,14 @@ static int vaapi_vc1_start_frame(AVCodecContext *avctx, av_unused const uint8_t
break;
case AV_PICTURE_TYPE_B:
if (!v->bi_type) {
- ff_bp[0] = pic_param.bitplane_present.flags.bp_direct_mb ? v->direct_mb_plane : NULL;
- ff_bp[1] = pic_param.bitplane_present.flags.bp_skip_mb ? s->mbskip_table : NULL;
- ff_bp[2] = NULL; /* XXX: interlaced frame (FORWARD plane) */
+ ff_bp[0] = pic_param.bitplane_present.flags.bp_direct_mb ? v->direct_mb_plane : NULL;
+ ff_bp[1] = pic_param.bitplane_present.flags.bp_skip_mb ? s->mbskip_table : NULL;
+ ff_bp[2] = pic_param.bitplane_present.flags.bp_forward_mb ? v->forward_mb_plane : NULL;
break;
}
/* fall-through (BI-type) */
case AV_PICTURE_TYPE_I:
- ff_bp[0] = NULL; /* XXX: interlaced frame (FIELDTX plane) */
+ ff_bp[0] = pic_param.bitplane_present.flags.bp_field_tx ? v->fieldtx_plane : NULL;
ff_bp[1] = pic_param.bitplane_present.flags.bp_ac_pred ? v->acpred_plane : NULL;
ff_bp[2] = pic_param.bitplane_present.flags.bp_overflags ? v->over_flags_plane : NULL;
break;
diff --git a/chromium/third_party/ffmpeg/libavcodec/vc1.c b/chromium/third_party/ffmpeg/libavcodec/vc1.c
index 48a2cc1e489..2b9f8db3ee9 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vc1.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vc1.c
@@ -629,7 +629,7 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
int pqindex, lowquant, status;
v->field_mode = 0;
- v->fcm = 0;
+ v->fcm = PROGRESSIVE;
if (v->finterpflag)
v->interpfrm = get_bits1(gb);
if (!v->s.avctx->codec)
@@ -766,7 +766,8 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
/* Hopefully this is correct for P-frames */
v->s.mv_table_index = get_bits(gb, 2); //but using ff_vc1_ tables
- v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)];
+ v->cbptab = get_bits(gb, 2);
+ v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[v->cbptab];
if (v->dquant) {
av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n");
@@ -804,7 +805,8 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
"Imode: %i, Invert: %i\n", status>>1, status&1);
v->s.mv_table_index = get_bits(gb, 2);
- v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)];
+ v->cbptab = get_bits(gb, 2);
+ v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[v->cbptab];
if (v->dquant) {
av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n");
@@ -845,7 +847,6 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
{
int pqindex, lowquant;
int status;
- int mbmodetab, imvtab, icbptab, twomvbptab, fourmvbptab; /* useful only for debugging */
int field_mode, fcm;
v->numref = 0;
@@ -1056,21 +1057,21 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
status = bitplane_decoding(v->s.mbskip_table, &v->skip_is_raw, v);
av_log(v->s.avctx, AV_LOG_DEBUG, "SKIPMB plane encoding: "
"Imode: %i, Invert: %i\n", status>>1, status&1);
- mbmodetab = get_bits(gb, 2);
+ v->mbmodetab = get_bits(gb, 2);
if (v->fourmvswitch)
- v->mbmode_vlc = &ff_vc1_intfr_4mv_mbmode_vlc[mbmodetab];
+ v->mbmode_vlc = &ff_vc1_intfr_4mv_mbmode_vlc[v->mbmodetab];
else
- v->mbmode_vlc = &ff_vc1_intfr_non4mv_mbmode_vlc[mbmodetab];
- imvtab = get_bits(gb, 2);
- v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[imvtab];
+ v->mbmode_vlc = &ff_vc1_intfr_non4mv_mbmode_vlc[v->mbmodetab];
+ v->imvtab = get_bits(gb, 2);
+ v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[v->imvtab];
// interlaced p-picture cbpcy range is [1, 63]
- icbptab = get_bits(gb, 3);
- v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[icbptab];
- twomvbptab = get_bits(gb, 2);
- v->twomvbp_vlc = &ff_vc1_2mv_block_pattern_vlc[twomvbptab];
+ v->icbptab = get_bits(gb, 3);
+ v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[v->icbptab];
+ v->twomvbptab = get_bits(gb, 2);
+ v->twomvbp_vlc = &ff_vc1_2mv_block_pattern_vlc[v->twomvbptab];
if (v->fourmvswitch) {
- fourmvbptab = get_bits(gb, 2);
- v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[fourmvbptab];
+ v->fourmvbptab = get_bits(gb, 2);
+ v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab];
}
}
}
@@ -1154,27 +1155,28 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
/* Hopefully this is correct for P-frames */
v->s.mv_table_index = get_bits(gb, 2); //but using ff_vc1_ tables
- v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)];
+ v->cbptab = get_bits(gb, 2);
+ v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[v->cbptab];
} else if (v->fcm == ILACE_FRAME) { // frame interlaced
v->qs_last = v->s.quarter_sample;
v->s.quarter_sample = 1;
v->s.mspel = 1;
} else { // field interlaced
- mbmodetab = get_bits(gb, 3);
- imvtab = get_bits(gb, 2 + v->numref);
+ v->mbmodetab = get_bits(gb, 3);
+ v->imvtab = get_bits(gb, 2 + v->numref);
if (!v->numref)
- v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[imvtab];
+ v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[v->imvtab];
else
- v->imv_vlc = &ff_vc1_2ref_mvdata_vlc[imvtab];
- icbptab = get_bits(gb, 3);
- v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[icbptab];
+ v->imv_vlc = &ff_vc1_2ref_mvdata_vlc[v->imvtab];
+ v->icbptab = get_bits(gb, 3);
+ v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[v->icbptab];
if ((v->mv_mode == MV_PMODE_INTENSITY_COMP &&
v->mv_mode2 == MV_PMODE_MIXED_MV) || v->mv_mode == MV_PMODE_MIXED_MV) {
- fourmvbptab = get_bits(gb, 2);
- v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[fourmvbptab];
- v->mbmode_vlc = &ff_vc1_if_mmv_mbmode_vlc[mbmodetab];
+ v->fourmvbptab = get_bits(gb, 2);
+ v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab];
+ v->mbmode_vlc = &ff_vc1_if_mmv_mbmode_vlc[v->mbmodetab];
} else {
- v->mbmode_vlc = &ff_vc1_if_1mv_mbmode_vlc[mbmodetab];
+ v->mbmode_vlc = &ff_vc1_if_1mv_mbmode_vlc[v->mbmodetab];
}
}
if (v->dquant) {
@@ -1228,18 +1230,18 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
return -1;
av_log(v->s.avctx, AV_LOG_DEBUG, "MB Forward Type plane encoding: "
"Imode: %i, Invert: %i\n", status>>1, status&1);
- mbmodetab = get_bits(gb, 3);
+ v->mbmodetab = get_bits(gb, 3);
if (v->mv_mode == MV_PMODE_MIXED_MV)
- v->mbmode_vlc = &ff_vc1_if_mmv_mbmode_vlc[mbmodetab];
+ v->mbmode_vlc = &ff_vc1_if_mmv_mbmode_vlc[v->mbmodetab];
else
- v->mbmode_vlc = &ff_vc1_if_1mv_mbmode_vlc[mbmodetab];
- imvtab = get_bits(gb, 3);
- v->imv_vlc = &ff_vc1_2ref_mvdata_vlc[imvtab];
- icbptab = get_bits(gb, 3);
- v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[icbptab];
+ v->mbmode_vlc = &ff_vc1_if_1mv_mbmode_vlc[v->mbmodetab];
+ v->imvtab = get_bits(gb, 3);
+ v->imv_vlc = &ff_vc1_2ref_mvdata_vlc[v->imvtab];
+ v->icbptab = get_bits(gb, 3);
+ v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[v->icbptab];
if (v->mv_mode == MV_PMODE_MIXED_MV) {
- fourmvbptab = get_bits(gb, 2);
- v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[fourmvbptab];
+ v->fourmvbptab = get_bits(gb, 2);
+ v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab];
}
v->numref = 1; // interlaced field B pictures are always 2-ref
} else if (v->fcm == ILACE_FRAME) {
@@ -1263,17 +1265,17 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
return -1;
av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: "
"Imode: %i, Invert: %i\n", status>>1, status&1);
- mbmodetab = get_bits(gb, 2);
- v->mbmode_vlc = &ff_vc1_intfr_non4mv_mbmode_vlc[mbmodetab];
- imvtab = get_bits(gb, 2);
- v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[imvtab];
+ v->mbmodetab = get_bits(gb, 2);
+ v->mbmode_vlc = &ff_vc1_intfr_non4mv_mbmode_vlc[v->mbmodetab];
+ v->imvtab = get_bits(gb, 2);
+ v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[v->imvtab];
// interlaced p/b-picture cbpcy range is [1, 63]
- icbptab = get_bits(gb, 3);
- v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[icbptab];
- twomvbptab = get_bits(gb, 2);
- v->twomvbp_vlc = &ff_vc1_2mv_block_pattern_vlc[twomvbptab];
- fourmvbptab = get_bits(gb, 2);
- v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[fourmvbptab];
+ v->icbptab = get_bits(gb, 3);
+ v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[v->icbptab];
+ v->twomvbptab = get_bits(gb, 2);
+ v->twomvbp_vlc = &ff_vc1_2mv_block_pattern_vlc[v->twomvbptab];
+ v->fourmvbptab = get_bits(gb, 2);
+ v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab];
} else {
v->mv_mode = get_bits1(gb) ? MV_PMODE_1MV : MV_PMODE_1MV_HPEL_BILIN;
v->qs_last = v->s.quarter_sample;
@@ -1290,7 +1292,8 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: "
"Imode: %i, Invert: %i\n", status>>1, status&1);
v->s.mv_table_index = get_bits(gb, 2);
- v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)];
+ v->cbptab = get_bits(gb, 2);
+ v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[v->cbptab];
}
if (v->dquant) {
diff --git a/chromium/third_party/ffmpeg/libavcodec/vc1.h b/chromium/third_party/ffmpeg/libavcodec/vc1.h
index 556906d4961..8fc0729cb8b 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vc1.h
+++ b/chromium/third_party/ffmpeg/libavcodec/vc1.h
@@ -296,6 +296,7 @@ typedef struct VC1Context{
uint8_t (*curr_luty)[256] ,(*curr_lutuv)[256];
int last_use_ic, *curr_use_ic, next_use_ic, aux_use_ic;
int rnd; ///< rounding control
+ int cbptab;
/** Frame decoding info for S/M profiles only */
//@{
@@ -367,6 +368,11 @@ typedef struct VC1Context{
int frfd, brfd; ///< reference frame distance (forward or backward)
int first_pic_header_flag;
int pic_header_flag;
+ int mbmodetab;
+ int icbptab;
+ int imvtab;
+ int twomvbptab;
+ int fourmvbptab;
/** Frame decoding info for sprite modes */
//@{
diff --git a/chromium/third_party/ffmpeg/libavcodec/vc2enc.c b/chromium/third_party/ffmpeg/libavcodec/vc2enc.c
index 2f08441d556..2e480ba8d0f 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vc2enc.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vc2enc.c
@@ -29,10 +29,6 @@
#include "vc2enc_dwt.h"
#include "diractab.h"
-/* Total range is -COEF_LUT_TAB to +COEFF_LUT_TAB, but total tab size is half
- * (COEF_LUT_TAB*DIRAC_MAX_QUANT_INDEX), as the sign is appended during encoding */
-#define COEF_LUT_TAB 2048
-
/* The limited size resolution of each slice forces us to do this */
#define SSIZE_ROUND(b) (FFALIGN((b), s->size_scaler) + 4 + s->prefix_bytes)
@@ -152,9 +148,8 @@ typedef struct VC2EncContext {
uint8_t quant[MAX_DWT_LEVELS][4];
int custom_quant_matrix;
- /* Coefficient LUT */
- uint32_t *coef_lut_val;
- uint8_t *coef_lut_len;
+ /* Division LUT */
+ uint32_t qmagic_lut[116][2];
int num_x; /* #slices horizontally */
int num_y; /* #slices vertically */
@@ -164,6 +159,7 @@ typedef struct VC2EncContext {
int chroma_y_shift;
/* Rate control stuff */
+ int frame_max_bytes;
int slice_max_bytes;
int slice_min_bytes;
int q_ceil;
@@ -228,37 +224,6 @@ static av_always_inline int count_vc2_ue_uint(uint32_t val)
return ff_log2(topbit)*2 + 1;
}
-static av_always_inline void get_vc2_ue_uint(int val, uint8_t *nbits,
- uint32_t *eval)
-{
- int i;
- int pbits = 0, bits = 0, topbit = 1, maxval = 1;
-
- if (!val++) {
- *nbits = 1;
- *eval = 1;
- return;
- }
-
- while (val > maxval) {
- topbit <<= 1;
- maxval <<= 1;
- maxval |= 1;
- }
-
- bits = ff_log2(topbit);
-
- for (i = 0; i < bits; i++) {
- topbit >>= 1;
- pbits <<= 2;
- if (val & topbit)
- pbits |= 0x1;
- }
-
- *nbits = bits*2 + 1;
- *eval = (pbits << 1) | 1;
-}
-
/* VC-2 10.4 - parse_info() */
static void encode_parse_info(VC2EncContext *s, enum DiracParseCodes pcode)
{
@@ -556,7 +521,7 @@ static void encode_picture_start(VC2EncContext *s)
encode_wavelet_transform(s);
}
-#define QUANT(c, qf) (((c) << 2)/(qf))
+#define QUANT(c, mul, add, shift) (((mul) * (c) + (add)) >> (shift))
/* VC-2 13.5.5.2 - slice_band() */
static void encode_subband(VC2EncContext *s, PutBitContext *pb, int sx, int sy,
@@ -569,24 +534,17 @@ static void encode_subband(VC2EncContext *s, PutBitContext *pb, int sx, int sy,
const int top = b->height * (sy+0) / s->num_y;
const int bottom = b->height * (sy+1) / s->num_y;
- const int qfactor = ff_dirac_qscale_tab[quant];
- const uint8_t *len_lut = &s->coef_lut_len[quant*COEF_LUT_TAB];
- const uint32_t *val_lut = &s->coef_lut_val[quant*COEF_LUT_TAB];
-
dwtcoef *coeff = b->buf + top * b->stride;
+ const uint64_t q_m = ((uint64_t)(s->qmagic_lut[quant][0])) << 2;
+ const uint64_t q_a = s->qmagic_lut[quant][1];
+ const int q_s = av_log2(ff_dirac_qscale_tab[quant]) + 32;
for (y = top; y < bottom; y++) {
for (x = left; x < right; x++) {
- const int neg = coeff[x] < 0;
- uint32_t c_abs = FFABS(coeff[x]);
- if (c_abs < COEF_LUT_TAB) {
- put_bits(pb, len_lut[c_abs], val_lut[c_abs] | neg);
- } else {
- c_abs = QUANT(c_abs, qfactor);
- put_vc2_ue_uint(pb, c_abs);
- if (c_abs)
- put_bits(pb, 1, neg);
- }
+ uint32_t c_abs = QUANT(FFABS(coeff[x]), q_m, q_a, q_s);
+ put_vc2_ue_uint(pb, c_abs);
+ if (c_abs)
+ put_bits(pb, 1, coeff[x] < 0);
}
coeff += b->stride;
}
@@ -618,8 +576,9 @@ static int count_hq_slice(SliceArgs *slice, int quant_idx)
SubBand *b = &s->plane[p].band[level][orientation];
const int q_idx = quants[level][orientation];
- const uint8_t *len_lut = &s->coef_lut_len[q_idx*COEF_LUT_TAB];
- const int qfactor = ff_dirac_qscale_tab[q_idx];
+ const uint64_t q_m = ((uint64_t)s->qmagic_lut[q_idx][0]) << 2;
+ const uint64_t q_a = s->qmagic_lut[q_idx][1];
+ const int q_s = av_log2(ff_dirac_qscale_tab[q_idx]) + 32;
const int left = b->width * slice->x / s->num_x;
const int right = b->width *(slice->x+1) / s->num_x;
@@ -630,14 +589,9 @@ static int count_hq_slice(SliceArgs *slice, int quant_idx)
for (y = top; y < bottom; y++) {
for (x = left; x < right; x++) {
- uint32_t c_abs = FFABS(buf[x]);
- if (c_abs < COEF_LUT_TAB) {
- bits += len_lut[c_abs];
- } else {
- c_abs = QUANT(c_abs, qfactor);
- bits += count_vc2_ue_uint(c_abs);
- bits += !!c_abs;
- }
+ uint32_t c_abs = QUANT(FFABS(buf[x]), q_m, q_a, q_s);
+ bits += count_vc2_ue_uint(c_abs);
+ bits += !!c_abs;
}
buf += b->stride;
}
@@ -715,7 +669,7 @@ static int calc_slice_sizes(VC2EncContext *s)
for (i = 0; i < s->num_x*s->num_y; i++) {
SliceArgs *args = &enc_args[i];
- bytes_left += s->slice_max_bytes - args->bytes;
+ bytes_left += args->bytes;
for (j = 0; j < slice_redist_range; j++) {
if (args->bytes > bytes_top[j]) {
bytes_top[j] = args->bytes;
@@ -725,8 +679,10 @@ static int calc_slice_sizes(VC2EncContext *s)
}
}
+ bytes_left = s->frame_max_bytes - bytes_left;
+
/* Second pass - distribute leftover bytes */
- while (1) {
+ while (bytes_left > 0) {
int distributed = 0;
for (i = 0; i < slice_redist_range; i++) {
SliceArgs *args;
@@ -994,13 +950,13 @@ static av_cold int vc2_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
const AVFrame *frame, int *got_packet)
{
int ret = 0;
- int sig_size = 256;
+ int slice_ceil, sig_size = 256;
VC2EncContext *s = avctx->priv_data;
const int bitexact = avctx->flags & AV_CODEC_FLAG_BITEXACT;
const char *aux_data = bitexact ? "Lavc" : LIBAVCODEC_IDENT;
const int aux_data_size = bitexact ? sizeof("Lavc") : sizeof(LIBAVCODEC_IDENT);
const int header_size = 100 + aux_data_size;
- int64_t max_frame_bytes, r_bitrate = avctx->bit_rate >> (s->interlaced);
+ int64_t r_bitrate = avctx->bit_rate >> (s->interlaced);
s->avctx = avctx;
s->size_scaler = 2;
@@ -1009,18 +965,21 @@ static av_cold int vc2_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
s->next_parse_offset = 0;
/* Rate control */
- max_frame_bytes = (av_rescale(r_bitrate, s->avctx->time_base.num,
- s->avctx->time_base.den) >> 3) - header_size;
- s->slice_max_bytes = av_rescale(max_frame_bytes, 1, s->num_x*s->num_y);
+ s->frame_max_bytes = (av_rescale(r_bitrate, s->avctx->time_base.num,
+ s->avctx->time_base.den) >> 3) - header_size;
+ s->slice_max_bytes = slice_ceil = av_rescale(s->frame_max_bytes, 1, s->num_x*s->num_y);
/* Find an appropriate size scaler */
while (sig_size > 255) {
int r_size = SSIZE_ROUND(s->slice_max_bytes);
+ if (r_size > slice_ceil) {
+ s->slice_max_bytes -= r_size - slice_ceil;
+ r_size = SSIZE_ROUND(s->slice_max_bytes);
+ }
sig_size = r_size/s->size_scaler; /* Signalled slize size */
s->size_scaler <<= 1;
}
- s->slice_max_bytes = SSIZE_ROUND(s->slice_max_bytes);
s->slice_min_bytes = s->slice_max_bytes - s->slice_max_bytes*(s->tolerance/100.0f);
ret = encode_frame(s, avpkt, frame, aux_data, header_size, s->interlaced);
@@ -1053,8 +1012,6 @@ static av_cold int vc2_encode_end(AVCodecContext *avctx)
}
av_freep(&s->slice_args);
- av_freep(&s->coef_lut_len);
- av_freep(&s->coef_lut_val);
return 0;
}
@@ -1063,7 +1020,7 @@ static av_cold int vc2_encode_init(AVCodecContext *avctx)
{
Plane *p;
SubBand *b;
- int i, j, level, o, shift, ret;
+ int i, level, o, shift, ret;
const AVPixFmtDescriptor *fmt = av_pix_fmt_desc_get(avctx->pix_fmt);
const int depth = fmt->comp[0].depth;
VC2EncContext *s = avctx->priv_data;
@@ -1205,27 +1162,20 @@ static av_cold int vc2_encode_init(AVCodecContext *avctx)
if (!s->slice_args)
goto alloc_fail;
- /* Lookup tables */
- s->coef_lut_len = av_malloc(COEF_LUT_TAB*(s->q_ceil+1)*sizeof(*s->coef_lut_len));
- if (!s->coef_lut_len)
- goto alloc_fail;
-
- s->coef_lut_val = av_malloc(COEF_LUT_TAB*(s->q_ceil+1)*sizeof(*s->coef_lut_val));
- if (!s->coef_lut_val)
- goto alloc_fail;
-
- for (i = 0; i < s->q_ceil; i++) {
- uint8_t *len_lut = &s->coef_lut_len[i*COEF_LUT_TAB];
- uint32_t *val_lut = &s->coef_lut_val[i*COEF_LUT_TAB];
- for (j = 0; j < COEF_LUT_TAB; j++) {
- get_vc2_ue_uint(QUANT(j, ff_dirac_qscale_tab[i]),
- &len_lut[j], &val_lut[j]);
- if (len_lut[j] != 1) {
- len_lut[j] += 1;
- val_lut[j] <<= 1;
- } else {
- val_lut[j] = 1;
- }
+ for (i = 0; i < 116; i++) {
+ const uint32_t qf = ff_dirac_qscale_tab[i];
+ const int m = av_log2(qf);
+ const uint32_t t = (1UL << (m + 32)) / qf;
+ const uint32_t r = (t*qf + qf) & ((1UL << 32) - 1);
+ if (!(qf & (qf - 1))) {
+ s->qmagic_lut[i][0] = 0xFFFFFFFF;
+ s->qmagic_lut[i][1] = 0xFFFFFFFF;
+ } else if (r <= 1UL << m) {
+ s->qmagic_lut[i][0] = t + 1;
+ s->qmagic_lut[i][1] = 0;
+ } else {
+ s->qmagic_lut[i][0] = t;
+ s->qmagic_lut[i][1] = t;
}
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/version.h b/chromium/third_party/ffmpeg/libavcodec/version.h
index 47a15d52b8f..ed34095c776 100644
--- a/chromium/third_party/ffmpeg/libavcodec/version.h
+++ b/chromium/third_party/ffmpeg/libavcodec/version.h
@@ -28,7 +28,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 58
-#define LIBAVCODEC_VERSION_MINOR 9
+#define LIBAVCODEC_VERSION_MINOR 14
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@@ -129,6 +129,9 @@
#ifndef FF_API_LOCKMGR
#define FF_API_LOCKMGR (LIBAVCODEC_VERSION_MAJOR < 59)
#endif
+#ifndef FF_API_NEXT
+#define FF_API_NEXT (LIBAVCODEC_VERSION_MAJOR < 59)
+#endif
#endif /* AVCODEC_VERSION_H */
diff --git a/chromium/third_party/ffmpeg/libavcodec/videotoolbox.c b/chromium/third_party/ffmpeg/libavcodec/videotoolbox.c
index afec1edf3f6..f82c31c5df6 100644
--- a/chromium/third_party/ffmpeg/libavcodec/videotoolbox.c
+++ b/chromium/third_party/ffmpeg/libavcodec/videotoolbox.c
@@ -45,8 +45,10 @@ enum { kCMVideoCodecType_HEVC = 'hvc1' };
static void videotoolbox_buffer_release(void *opaque, uint8_t *data)
{
- CVPixelBufferRef cv_buffer = (CVImageBufferRef)data;
+ CVPixelBufferRef cv_buffer = *(CVPixelBufferRef *)data;
CVPixelBufferRelease(cv_buffer);
+
+ av_free(data);
}
static int videotoolbox_buffer_copy(VTContext *vtctx,
@@ -69,19 +71,47 @@ static int videotoolbox_buffer_copy(VTContext *vtctx,
return 0;
}
+static int videotoolbox_postproc_frame(void *avctx, AVFrame *frame)
+{
+ CVPixelBufferRef ref = *(CVPixelBufferRef *)frame->buf[0]->data;
+
+ if (!ref) {
+ av_log(avctx, AV_LOG_ERROR, "No frame decoded?\n");
+ av_frame_unref(frame);
+ return AVERROR_EXTERNAL;
+ }
+
+ frame->data[3] = (uint8_t*)ref;
+
+ return 0;
+}
+
int ff_videotoolbox_alloc_frame(AVCodecContext *avctx, AVFrame *frame)
{
+ size_t size = sizeof(CVPixelBufferRef);
+ uint8_t *data = NULL;
+ AVBufferRef *buf = NULL;
int ret = ff_attach_decode_data(frame);
+ FrameDecodeData *fdd;
if (ret < 0)
return ret;
+ data = av_mallocz(size);
+ if (!data)
+ return AVERROR(ENOMEM);
+ buf = av_buffer_create(data, size, videotoolbox_buffer_release, NULL, 0);
+ if (!buf) {
+ av_freep(&data);
+ return AVERROR(ENOMEM);
+ }
+ frame->buf[0] = buf;
+
+ fdd = (FrameDecodeData*)frame->private_ref->data;
+ fdd->post_process = videotoolbox_postproc_frame;
+
frame->width = avctx->width;
frame->height = avctx->height;
frame->format = avctx->pix_fmt;
- frame->buf[0] = av_buffer_alloc(1);
-
- if (!frame->buf[0])
- return AVERROR(ENOMEM);
return 0;
}
@@ -285,20 +315,24 @@ CFDataRef ff_videotoolbox_hvcc_extradata_create(AVCodecContext *avctx)
return data;
}
-int ff_videotoolbox_buffer_create(VTContext *vtctx, AVFrame *frame)
+static int videotoolbox_set_frame(AVCodecContext *avctx, AVFrame *frame)
{
- av_buffer_unref(&frame->buf[0]);
-
- frame->buf[0] = av_buffer_create((uint8_t*)vtctx->frame,
- sizeof(vtctx->frame),
- videotoolbox_buffer_release,
- NULL,
- AV_BUFFER_FLAG_READONLY);
- if (!frame->buf[0]) {
- return AVERROR(ENOMEM);
+ VTContext *vtctx = avctx->internal->hwaccel_priv_data;
+ if (!frame->buf[0] || frame->data[3]) {
+ av_log(avctx, AV_LOG_ERROR, "videotoolbox: invalid state\n");
+ av_frame_unref(frame);
+ return AVERROR_EXTERNAL;
+ }
+
+ CVPixelBufferRef *ref = (CVPixelBufferRef *)frame->buf[0]->data;
+
+ if (*ref) {
+ av_log(avctx, AV_LOG_ERROR, "videotoolbox: frame already set?\n");
+ av_frame_unref(frame);
+ return AVERROR_EXTERNAL;
}
- frame->data[3] = (uint8_t*)vtctx->frame;
+ *ref = vtctx->frame;
vtctx->frame = NULL;
return 0;
@@ -406,7 +440,7 @@ static int videotoolbox_buffer_create(AVCodecContext *avctx, AVFrame *frame)
AVHWFramesContext *cached_frames;
int ret;
- ret = ff_videotoolbox_buffer_create(vtctx, frame);
+ ret = videotoolbox_set_frame(avctx, frame);
if (ret < 0)
return ret;
diff --git a/chromium/third_party/ffmpeg/libavcodec/vorbisdec.c b/chromium/third_party/ffmpeg/libavcodec/vorbisdec.c
index 2a4f482031e..00e9cd8a131 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vorbisdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vorbisdec.c
@@ -1862,6 +1862,7 @@ AVCodec ff_vorbis_decoder = {
.decode = vorbis_decode_frame,
.flush = vorbis_decode_flush,
.capabilities = AV_CODEC_CAP_DR1,
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.channel_layouts = ff_vorbis_channel_layouts,
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
AV_SAMPLE_FMT_NONE },
diff --git a/chromium/third_party/ffmpeg/libavcodec/vp3.c b/chromium/third_party/ffmpeg/libavcodec/vp3.c
index cf9c57f5faa..1d837533149 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vp3.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vp3.c
@@ -951,9 +951,11 @@ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb,
Vp3Fragment *all_fragments = s->all_fragments;
VLC_TYPE(*vlc_table)[2] = table->table;
- if (num_coeffs < 0)
+ if (num_coeffs < 0) {
av_log(s->avctx, AV_LOG_ERROR,
"Invalid number of coefficients at level %d\n", coeff_index);
+ return AVERROR_INVALIDDATA;
+ }
if (eob_run > num_coeffs) {
coeff_i =
@@ -978,6 +980,9 @@ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb,
if (eob_run_get_bits[token])
eob_run += get_bits(gb, eob_run_get_bits[token]);
+ if (!eob_run)
+ eob_run = INT_MAX;
+
// record only the number of blocks ended in this plane,
// any spill will be recorded in the next plane.
if (eob_run > num_coeffs - coeff_i) {
diff --git a/chromium/third_party/ffmpeg/libavcodec/vp8.c b/chromium/third_party/ffmpeg/libavcodec/vp8.c
index 7f71a75e4ba..62b9f8bc2da 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vp8.c
+++ b/chromium/third_party/ffmpeg/libavcodec/vp8.c
@@ -656,6 +656,8 @@ static int vp7_decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_si
s->fade_present = vp8_rac_get(c);
}
+ if (c->end <= c->buffer && c->bits >= 0)
+ return AVERROR_INVALIDDATA;
/* E. Fading information for previous frame */
if (s->fade_present && vp8_rac_get(c)) {
if ((ret = vp7_fade_frame(s ,c)) < 0)
diff --git a/chromium/third_party/ffmpeg/libavcodec/vt_internal.h b/chromium/third_party/ffmpeg/libavcodec/vt_internal.h
index 929fe423fcd..fb64735b8cd 100644
--- a/chromium/third_party/ffmpeg/libavcodec/vt_internal.h
+++ b/chromium/third_party/ffmpeg/libavcodec/vt_internal.h
@@ -46,7 +46,6 @@ typedef struct VTContext {
int ff_videotoolbox_alloc_frame(AVCodecContext *avctx, AVFrame *frame);
int ff_videotoolbox_uninit(AVCodecContext *avctx);
-int ff_videotoolbox_buffer_create(VTContext *vtctx, AVFrame *frame);
int ff_videotoolbox_h264_start_frame(AVCodecContext *avctx,
const uint8_t *buffer,
uint32_t size);
diff --git a/chromium/third_party/ffmpeg/libavcodec/wavpack.c b/chromium/third_party/ffmpeg/libavcodec/wavpack.c
index d5e1e07b743..0e40b298799 100644
--- a/chromium/third_party/ffmpeg/libavcodec/wavpack.c
+++ b/chromium/third_party/ffmpeg/libavcodec/wavpack.c
@@ -480,7 +480,7 @@ static inline int wv_unpack_stereo(WavpackFrameContext *s, GetBitContext *gb,
}
if (type == AV_SAMPLE_FMT_S16P) {
- if (FFABS(L) + (unsigned)FFABS(R) > (1<<19)) {
+ if (FFABS((int64_t)L) + FFABS((int64_t)R) > (1<<19)) {
av_log(s->avctx, AV_LOG_ERROR, "sample %d %d too large\n", L, R);
return AVERROR_INVALIDDATA;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/wmalosslessdec.c b/chromium/third_party/ffmpeg/libavcodec/wmalosslessdec.c
index 133a3e92d1a..59e89295867 100644
--- a/chromium/third_party/ffmpeg/libavcodec/wmalosslessdec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/wmalosslessdec.c
@@ -1148,6 +1148,7 @@ static void save_bits(WmallDecodeCtx *s, GetBitContext* gb, int len,
if (len <= 0 || buflen > s->max_frame_size) {
avpriv_request_sample(s->avctx, "Too small input buffer");
s->packet_loss = 1;
+ s->num_saved_bits = 0;
return;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/wmaprodec.c b/chromium/third_party/ffmpeg/libavcodec/wmaprodec.c
index 77a49c9db8c..9439bfa771c 100644
--- a/chromium/third_party/ffmpeg/libavcodec/wmaprodec.c
+++ b/chromium/third_party/ffmpeg/libavcodec/wmaprodec.c
@@ -107,8 +107,8 @@
#define MAX_BANDS 29 ///< max number of scale factor bands
#define MAX_FRAMESIZE 32768 ///< maximum compressed frame size
#define XMA_MAX_STREAMS 8
-#define XMA_MAX_CHANNELS 8
#define XMA_MAX_CHANNELS_STREAM 2
+#define XMA_MAX_CHANNELS (XMA_MAX_STREAMS * XMA_MAX_CHANNELS_STREAM)
#define WMAPRO_BLOCK_MIN_BITS 6 ///< log2 of min block size
#define WMAPRO_BLOCK_MAX_BITS 13 ///< log2 of max block size
diff --git a/chromium/third_party/ffmpeg/libavcodec/wmavoice.c b/chromium/third_party/ffmpeg/libavcodec/wmavoice.c
index 3f86d0da357..444e303b0df 100644
--- a/chromium/third_party/ffmpeg/libavcodec/wmavoice.c
+++ b/chromium/third_party/ffmpeg/libavcodec/wmavoice.c
@@ -30,6 +30,7 @@
#include "libavutil/channel_layout.h"
#include "libavutil/float_dsp.h"
#include "libavutil/mem.h"
+#include "libavutil/thread.h"
#include "avcodec.h"
#include "internal.h"
#include "get_bits.h"
@@ -310,7 +311,7 @@ static av_cold int decode_vbmtree(GetBitContext *gb, int8_t vbm_tree[25])
return 0;
}
-static av_cold void wmavoice_init_static_data(AVCodec *codec)
+static av_cold void wmavoice_init_static_data(void)
{
static const uint8_t bits[] = {
2, 2, 2, 4, 4, 4,
@@ -365,9 +366,12 @@ static av_cold void wmavoice_flush(AVCodecContext *ctx)
*/
static av_cold int wmavoice_decode_init(AVCodecContext *ctx)
{
+ static AVOnce init_static_once = AV_ONCE_INIT;
int n, flags, pitch_range, lsp16_flag;
WMAVoiceContext *s = ctx->priv_data;
+ ff_thread_once(&init_static_once, wmavoice_init_static_data);
+
/**
* Extradata layout:
* - byte 0-18: WMAPro-in-WMAVoice extradata (see wmaprodec.c),
@@ -1991,7 +1995,6 @@ AVCodec ff_wmavoice_decoder = {
.id = AV_CODEC_ID_WMAVOICE,
.priv_data_size = sizeof(WMAVoiceContext),
.init = wmavoice_decode_init,
- .init_static_data = wmavoice_init_static_data,
.close = wmavoice_decode_end,
.decode = wmavoice_decode_packet,
.capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY,
diff --git a/chromium/third_party/ffmpeg/libavcodec/x86/Makefile b/chromium/third_party/ffmpeg/libavcodec/x86/Makefile
index a805cd37b48..2350c8bbee6 100644
--- a/chromium/third_party/ffmpeg/libavcodec/x86/Makefile
+++ b/chromium/third_party/ffmpeg/libavcodec/x86/Makefile
@@ -63,6 +63,7 @@ OBJS-$(CONFIG_PNG_DECODER) += x86/pngdsp_init.o
OBJS-$(CONFIG_PRORES_DECODER) += x86/proresdsp_init.o
OBJS-$(CONFIG_PRORES_LGPL_DECODER) += x86/proresdsp_init.o
OBJS-$(CONFIG_RV40_DECODER) += x86/rv40dsp_init.o
+OBJS-$(CONFIG_SBC_ENCODER) += x86/sbcdsp_init.o
OBJS-$(CONFIG_SVQ1_ENCODER) += x86/svq1enc_init.o
OBJS-$(CONFIG_TAK_DECODER) += x86/takdsp_init.o
OBJS-$(CONFIG_TRUEHD_DECODER) += x86/mlpdsp_init.o
@@ -172,6 +173,7 @@ X86ASM-OBJS-$(CONFIG_PNG_DECODER) += x86/pngdsp.o
X86ASM-OBJS-$(CONFIG_PRORES_DECODER) += x86/proresdsp.o
X86ASM-OBJS-$(CONFIG_PRORES_LGPL_DECODER) += x86/proresdsp.o
X86ASM-OBJS-$(CONFIG_RV40_DECODER) += x86/rv40dsp.o
+X86ASM-OBJS-$(CONFIG_SBC_ENCODER) += x86/sbcdsp.o
X86ASM-OBJS-$(CONFIG_SVQ1_ENCODER) += x86/svq1enc.o
X86ASM-OBJS-$(CONFIG_TAK_DECODER) += x86/takdsp.o
X86ASM-OBJS-$(CONFIG_TRUEHD_DECODER) += x86/mlpdsp.o
diff --git a/chromium/third_party/ffmpeg/libavcodec/x86/h264_idct.asm b/chromium/third_party/ffmpeg/libavcodec/x86/h264_idct.asm
index 88046380913..c54f9f1a683 100644
--- a/chromium/third_party/ffmpeg/libavcodec/x86/h264_idct.asm
+++ b/chromium/third_party/ffmpeg/libavcodec/x86/h264_idct.asm
@@ -1144,7 +1144,11 @@ IDCT_DC_DEQUANT 0
INIT_MMX sse2
IDCT_DC_DEQUANT 7
-; %unmacro STORE_DIFFx2 8 ; remove macro from x86util.asm but yasm doesn't have this yet
+%ifdef __NASM_VER__
+%if __NASM_MAJOR__ >= 2 && __NASM_MINOR__ >= 4
+%unmacro STORE_DIFFx2 8 ; remove macro from x86util.asm but yasm doesn't have this yet
+%endif
+%endif
%macro STORE_DIFFx2 8 ; add1, add2, reg1, reg2, zero, shift, source, stride
movd %3, [%7]
movd %4, [%7+%8]
diff --git a/chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp.asm b/chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp.asm
index 4d79eee36ba..fb1204f0f1f 100644
--- a/chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp.asm
+++ b/chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp.asm
@@ -25,6 +25,8 @@
%include "libavutil/x86/x86util.asm"
+cextern pb_80
+
SECTION .text
; void ff_diff_bytes(uint8_t *dst, const uint8_t *src1, const uint8_t *src2,
@@ -149,3 +151,44 @@ DIFF_BYTES_PROLOGUE
DIFF_BYTES_BODY u, u
%undef i
%endif
+
+
+;--------------------------------------------------------------------------------------------------
+;void sub_left_predict(uint8_t *dst, uint8_t *src, ptrdiff_t stride, ptrdiff_t width, int height)
+;--------------------------------------------------------------------------------------------------
+
+INIT_XMM avx
+cglobal sub_left_predict, 5,6,5, dst, src, stride, width, height, x
+ mova m1, [pb_80] ; prev initial
+ add dstq, widthq
+ add srcq, widthq
+ lea xd, [widthq-1]
+ neg widthq
+ and xd, 15
+ pinsrb m4, m1, xd, 15
+ mov xq, widthq
+
+ .loop:
+ movu m0, [srcq + widthq]
+ palignr m2, m0, m1, 15
+ movu m1, [srcq + widthq + 16]
+ palignr m3, m1, m0, 15
+ psubb m2, m0, m2
+ psubb m3, m1, m3
+ movu [dstq + widthq], m2
+ movu [dstq + widthq + 16], m3
+ add widthq, 2 * 16
+ jl .loop
+
+ add srcq, strideq
+ sub dstq, xq ; dst + width
+ test xd, 16
+ jz .mod32
+ mova m1, m0
+
+.mod32:
+ pshufb m1, m4
+ mov widthq, xq
+ dec heightd
+ jg .loop
+ RET
diff --git a/chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp_init.c b/chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp_init.c
index fc728c9fd1e..40407add525 100644
--- a/chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp_init.c
+++ b/chromium/third_party/ffmpeg/libavcodec/x86/lossless_videoencdsp_init.c
@@ -36,6 +36,9 @@ void ff_diff_bytes_sse2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2,
void ff_diff_bytes_avx2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2,
intptr_t w);
+void ff_sub_left_predict_avx(uint8_t *dst, uint8_t *src,
+ ptrdiff_t stride, ptrdiff_t width, int height);
+
#if HAVE_INLINE_ASM
static void sub_median_pred_mmxext(uint8_t *dst, const uint8_t *src1,
@@ -98,6 +101,10 @@ av_cold void ff_llvidencdsp_init_x86(LLVidEncDSPContext *c)
c->diff_bytes = ff_diff_bytes_sse2;
}
+ if (EXTERNAL_AVX(cpu_flags)) {
+ c->sub_left_predict = ff_sub_left_predict_avx;
+ }
+
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
c->diff_bytes = ff_diff_bytes_avx2;
}
diff --git a/chromium/third_party/ffmpeg/libavcodec/x86/sbcdsp.asm b/chromium/third_party/ffmpeg/libavcodec/x86/sbcdsp.asm
new file mode 100644
index 00000000000..d68d3a9ae8c
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/x86/sbcdsp.asm
@@ -0,0 +1,168 @@
+;******************************************************************************
+;* SIMD optimized SBC encoder DSP functions
+;*
+;* Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+;* Copyright (C) 2008-2010 Nokia Corporation
+;* Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+;* Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+;* Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+;******************************************************************************
+
+%include "libavutil/x86/x86util.asm"
+
+SECTION_RODATA
+
+scale_mask: times 2 dd 0x8000 ; 1 << (SBC_PROTO_FIXED_SCALE - 1)
+
+SECTION .text
+
+%macro NIDN 3
+%ifnidn %2, %3
+ %1 %2, %3
+%endif
+%endmacro
+
+%macro ANALYZE_MAC 9 ; out1, out2, in1, in2, tmp1, tmp2, add1, add2, offset
+ NIDN movq, %5, %3
+ NIDN movq, %6, %4
+ pmaddwd %5, [constsq+%9]
+ pmaddwd %6, [constsq+%9+8]
+ NIDN paddd, %1, %7
+ NIDN paddd, %2, %8
+%endmacro
+
+%macro ANALYZE_MAC_IN 7 ; out1, out2, tmp1, tmp2, add1, add2, offset
+ ANALYZE_MAC %1, %2, [inq+%7], [inq+%7+8], %3, %4, %5, %6, %7
+%endmacro
+
+%macro ANALYZE_MAC_REG 7 ; out1, out2, in, tmp1, tmp2, offset, pack
+%ifidn %7, pack
+ psrad %3, 16 ; SBC_PROTO_FIXED_SCALE
+ packssdw %3, %3
+%endif
+ ANALYZE_MAC %1, %2, %3, %3, %4, %5, %4, %5, %6
+%endmacro
+
+;*******************************************************************
+;void ff_sbc_analyze_4(const int16_t *in, int32_t *out, const int16_t *consts);
+;*******************************************************************
+INIT_MMX mmx
+cglobal sbc_analyze_4, 3, 3, 4, in, out, consts
+ ANALYZE_MAC_IN m0, m1, m0, m1, [scale_mask], [scale_mask], 0
+ ANALYZE_MAC_IN m0, m1, m2, m3, m2, m3, 16
+ ANALYZE_MAC_IN m0, m1, m2, m3, m2, m3, 32
+ ANALYZE_MAC_IN m0, m1, m2, m3, m2, m3, 48
+ ANALYZE_MAC_IN m0, m1, m2, m3, m2, m3, 64
+
+ ANALYZE_MAC_REG m0, m2, m0, m0, m2, 80, pack
+ ANALYZE_MAC_REG m0, m2, m1, m1, m3, 96, pack
+
+ movq [outq ], m0
+ movq [outq+8], m2
+
+ RET
+
+
+;*******************************************************************
+;void ff_sbc_analyze_8(const int16_t *in, int32_t *out, const int16_t *consts);
+;*******************************************************************
+INIT_MMX mmx
+cglobal sbc_analyze_8, 3, 3, 4, in, out, consts
+ ANALYZE_MAC_IN m0, m1, m0, m1, [scale_mask], [scale_mask], 0
+ ANALYZE_MAC_IN m2, m3, m2, m3, [scale_mask], [scale_mask], 16
+ ANALYZE_MAC_IN m0, m1, m4, m5, m4, m5, 32
+ ANALYZE_MAC_IN m2, m3, m6, m7, m6, m7, 48
+ ANALYZE_MAC_IN m0, m1, m4, m5, m4, m5, 64
+ ANALYZE_MAC_IN m2, m3, m6, m7, m6, m7, 80
+ ANALYZE_MAC_IN m0, m1, m4, m5, m4, m5, 96
+ ANALYZE_MAC_IN m2, m3, m6, m7, m6, m7, 112
+ ANALYZE_MAC_IN m0, m1, m4, m5, m4, m5, 128
+ ANALYZE_MAC_IN m2, m3, m6, m7, m6, m7, 144
+
+ ANALYZE_MAC_REG m4, m5, m0, m4, m5, 160, pack
+ ANALYZE_MAC_REG m4, m5, m1, m6, m7, 192, pack
+ ANALYZE_MAC_REG m4, m5, m2, m6, m7, 224, pack
+ ANALYZE_MAC_REG m4, m5, m3, m6, m7, 256, pack
+
+ movq [outq ], m4
+ movq [outq+8], m5
+
+ ANALYZE_MAC_REG m0, m5, m0, m0, m5, 176, no
+ ANALYZE_MAC_REG m0, m5, m1, m1, m7, 208, no
+ ANALYZE_MAC_REG m0, m5, m2, m2, m7, 240, no
+ ANALYZE_MAC_REG m0, m5, m3, m3, m7, 272, no
+
+ movq [outq+16], m0
+ movq [outq+24], m5
+
+ RET
+
+
+;*******************************************************************
+;void ff_sbc_calc_scalefactors(int32_t sb_sample_f[16][2][8],
+; uint32_t scale_factor[2][8],
+; int blocks, int channels, int subbands)
+;*******************************************************************
+INIT_MMX mmx
+cglobal sbc_calc_scalefactors, 5, 7, 4, sb_sample_f, scale_factor, blocks, channels, subbands, ptr, blk
+ ; subbands = 4 * subbands * channels
+ movq m3, [scale_mask]
+ shl subbandsd, 2
+ cmp channelsd, 2
+ jl .loop_1
+ shl subbandsd, 1
+
+.loop_1:
+ sub subbandsq, 8
+ lea ptrq, [sb_sample_fq + subbandsq]
+
+ ; blk = (blocks - 1) * 64;
+ lea blkq, [blocksq - 1]
+ shl blkd, 6
+
+ movq m0, m3
+.loop_2:
+ movq m1, [ptrq+blkq]
+ pxor m2, m2
+ pcmpgtd m1, m2
+ paddd m1, [ptrq+blkq]
+ pcmpgtd m2, m1
+ pxor m1, m2
+
+ por m0, m1
+
+ sub blkq, 64
+ jns .loop_2
+
+ movd blkd, m0
+ psrlq m0, 32
+ bsr blkd, blkd
+ sub blkd, 15 ; SCALE_OUT_BITS
+ mov [scale_factorq + subbandsq], blkd
+
+ movd blkd, m0
+ bsr blkd, blkd
+ sub blkd, 15 ; SCALE_OUT_BITS
+ mov [scale_factorq + subbandsq + 4], blkd
+
+ cmp subbandsq, 0
+ jg .loop_1
+
+ emms
+ RET
diff --git a/chromium/third_party/ffmpeg/libavcodec/x86/sbcdsp_init.c b/chromium/third_party/ffmpeg/libavcodec/x86/sbcdsp_init.c
new file mode 100644
index 00000000000..86effecfdf5
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavcodec/x86/sbcdsp_init.c
@@ -0,0 +1,51 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
+ * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.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
+ */
+
+/**
+ * @file
+ * SBC MMX optimization for some basic "building bricks"
+ */
+
+#include "libavutil/cpu.h"
+#include "libavutil/x86/cpu.h"
+#include "libavcodec/sbcdsp.h"
+
+void ff_sbc_analyze_4_mmx(const int16_t *in, int32_t *out, const int16_t *consts);
+void ff_sbc_analyze_8_mmx(const int16_t *in, int32_t *out, const int16_t *consts);
+void ff_sbc_calc_scalefactors_mmx(int32_t sb_sample_f[16][2][8],
+ uint32_t scale_factor[2][8],
+ int blocks, int channels, int subbands);
+
+av_cold void ff_sbcdsp_init_x86(SBCDSPContext *s)
+{
+ int cpu_flags = av_get_cpu_flags();
+
+ if (EXTERNAL_MMX(cpu_flags)) {
+ s->sbc_analyze_4 = ff_sbc_analyze_4_mmx;
+ s->sbc_analyze_8 = ff_sbc_analyze_8_mmx;
+ s->sbc_calc_scalefactors = ff_sbc_calc_scalefactors_mmx;
+ }
+}
diff --git a/chromium/third_party/ffmpeg/libavdevice/Makefile b/chromium/third_party/ffmpeg/libavdevice/Makefile
index 8228d621479..f11a6f2a860 100644
--- a/chromium/third_party/ffmpeg/libavdevice/Makefile
+++ b/chromium/third_party/ffmpeg/libavdevice/Makefile
@@ -14,6 +14,7 @@ OBJS-$(CONFIG_SHARED) += reverse.o
# input/output devices
OBJS-$(CONFIG_ALSA_INDEV) += alsa_dec.o alsa.o timefilter.o
OBJS-$(CONFIG_ALSA_OUTDEV) += alsa_enc.o alsa.o
+OBJS-$(CONFIG_ANDROID_CAMERA_INDEV) += android_camera.o
OBJS-$(CONFIG_AVFOUNDATION_INDEV) += avfoundation.o
OBJS-$(CONFIG_BKTR_INDEV) += bktr.o
OBJS-$(CONFIG_CACA_OUTDEV) += caca.o
diff --git a/chromium/third_party/ffmpeg/libavdevice/alldevices.c b/chromium/third_party/ffmpeg/libavdevice/alldevices.c
index b767b6a7188..4c89649b972 100644
--- a/chromium/third_party/ffmpeg/libavdevice/alldevices.c
+++ b/chromium/third_party/ffmpeg/libavdevice/alldevices.c
@@ -22,57 +22,153 @@
#include "libavutil/thread.h"
#include "avdevice.h"
-#define REGISTER_OUTDEV(X, x) \
- { \
- extern AVOutputFormat ff_##x##_muxer; \
- if (CONFIG_##X##_OUTDEV) \
- av_register_output_format(&ff_##x##_muxer); \
+#if FF_API_NEXT
+#include "libavformat/internal.h"
+#endif
+
+/* devices */
+extern AVInputFormat ff_alsa_demuxer;
+extern AVOutputFormat ff_alsa_muxer;
+extern AVInputFormat ff_android_camera_demuxer;
+extern AVInputFormat ff_avfoundation_demuxer;
+extern AVInputFormat ff_bktr_demuxer;
+extern AVOutputFormat ff_caca_muxer;
+extern AVInputFormat ff_decklink_demuxer;
+extern AVOutputFormat ff_decklink_muxer;
+extern AVInputFormat ff_libndi_newtek_demuxer;
+extern AVOutputFormat ff_libndi_newtek_muxer;
+extern AVInputFormat ff_dshow_demuxer;
+extern AVInputFormat ff_fbdev_demuxer;
+extern AVOutputFormat ff_fbdev_muxer;
+extern AVInputFormat ff_gdigrab_demuxer;
+extern AVInputFormat ff_iec61883_demuxer;
+extern AVInputFormat ff_jack_demuxer;
+extern AVInputFormat ff_kmsgrab_demuxer;
+extern AVInputFormat ff_lavfi_demuxer;
+extern AVInputFormat ff_openal_demuxer;
+extern AVOutputFormat ff_opengl_muxer;
+extern AVInputFormat ff_oss_demuxer;
+extern AVOutputFormat ff_oss_muxer;
+extern AVInputFormat ff_pulse_demuxer;
+extern AVOutputFormat ff_pulse_muxer;
+extern AVOutputFormat ff_sdl2_muxer;
+extern AVInputFormat ff_sndio_demuxer;
+extern AVOutputFormat ff_sndio_muxer;
+extern AVInputFormat ff_v4l2_demuxer;
+extern AVOutputFormat ff_v4l2_muxer;
+extern AVInputFormat ff_vfwcap_demuxer;
+extern AVInputFormat ff_xcbgrab_demuxer;
+extern AVOutputFormat ff_xv_muxer;
+
+/* external libraries */
+extern AVInputFormat ff_libcdio_demuxer;
+extern AVInputFormat ff_libdc1394_demuxer;
+
+#include "libavdevice/outdev_list.c"
+#include "libavdevice/indev_list.c"
+
+const AVOutputFormat *av_outdev_iterate(void **opaque)
+{
+ uintptr_t i = (uintptr_t)*opaque;
+ const AVOutputFormat *f = outdev_list[i];
+
+ if (f)
+ *opaque = (void*)(i + 1);
+ return f;
+}
+
+const AVInputFormat *av_indev_iterate(void **opaque)
+{
+ uintptr_t i = (uintptr_t)*opaque;
+ const AVInputFormat *f = indev_list[i];
+
+ if (f)
+ *opaque = (void*)(i + 1);
+ return f;
+}
+
+#if FF_API_NEXT
+FF_DISABLE_DEPRECATION_WARNINGS
+static AVOnce av_device_next_init = AV_ONCE_INIT;
+
+static void av_device_init_next(void)
+{
+ AVOutputFormat *prevout = NULL, *out;
+ AVInputFormat *previn = NULL, *in;
+ void *i = 0;
+
+ while ((out = (AVOutputFormat*)av_outdev_iterate(&i))) {
+ if (prevout)
+ prevout->next = out;
+ prevout = out;
}
-#define REGISTER_INDEV(X, x) \
- { \
- extern AVInputFormat ff_##x##_demuxer; \
- if (CONFIG_##X##_INDEV) \
- av_register_input_format(&ff_##x##_demuxer); \
+ i = 0;
+ while ((in = (AVInputFormat*)av_indev_iterate(&i))) {
+ if (previn)
+ previn->next = in;
+ previn = in;
}
-#define REGISTER_INOUTDEV(X, x) REGISTER_OUTDEV(X, x); REGISTER_INDEV(X, x)
+ avpriv_register_devices(outdev_list, indev_list);
+}
-static void register_all(void)
+void avdevice_register_all(void)
{
- /* devices */
- REGISTER_INOUTDEV(ALSA, alsa);
- REGISTER_INDEV (AVFOUNDATION, avfoundation);
- REGISTER_INDEV (BKTR, bktr);
- REGISTER_OUTDEV (CACA, caca);
- REGISTER_INOUTDEV(DECKLINK, decklink);
- REGISTER_INOUTDEV(LIBNDI_NEWTEK, libndi_newtek);
- REGISTER_INDEV (DSHOW, dshow);
- REGISTER_INOUTDEV(FBDEV, fbdev);
- REGISTER_INDEV (GDIGRAB, gdigrab);
- REGISTER_INDEV (IEC61883, iec61883);
- REGISTER_INDEV (JACK, jack);
- REGISTER_INDEV (KMSGRAB, kmsgrab);
- REGISTER_INDEV (LAVFI, lavfi);
- REGISTER_INDEV (OPENAL, openal);
- REGISTER_OUTDEV (OPENGL, opengl);
- REGISTER_INOUTDEV(OSS, oss);
- REGISTER_INOUTDEV(PULSE, pulse);
- REGISTER_OUTDEV (SDL2, sdl2);
- REGISTER_INOUTDEV(SNDIO, sndio);
- REGISTER_INOUTDEV(V4L2, v4l2);
- REGISTER_INDEV (VFWCAP, vfwcap);
- REGISTER_INDEV (XCBGRAB, xcbgrab);
- REGISTER_OUTDEV (XV, xv);
-
- /* external libraries */
- REGISTER_INDEV (LIBCDIO, libcdio);
- REGISTER_INDEV (LIBDC1394, libdc1394);
+ ff_thread_once(&av_device_next_init, av_device_init_next);
}
-void avdevice_register_all(void)
+static void *device_next(void *prev, int output,
+ AVClassCategory c1, AVClassCategory c2)
+{
+ const AVClass *pc;
+ AVClassCategory category = AV_CLASS_CATEGORY_NA;
+
+ ff_thread_once(&av_device_next_init, av_device_init_next);
+
+ if (!prev && !(prev = (output ? (void*)outdev_list[0] : (void*)indev_list[0])))
+ return NULL;
+
+ do {
+ if (output) {
+ if (!(prev = ((AVOutputFormat *)prev)->next))
+ break;
+ pc = ((AVOutputFormat *)prev)->priv_class;
+ } else {
+ if (!(prev = ((AVInputFormat *)prev)->next))
+ break;
+ pc = ((AVInputFormat *)prev)->priv_class;
+ }
+ if (!pc)
+ continue;
+ category = pc->category;
+ } while (category != c1 && category != c2);
+ return prev;
+}
+
+AVInputFormat *av_input_audio_device_next(AVInputFormat *d)
+{
+ return device_next(d, 0, AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT,
+ AV_CLASS_CATEGORY_DEVICE_INPUT);
+}
+
+AVInputFormat *av_input_video_device_next(AVInputFormat *d)
+{
+ return device_next(d, 0, AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT,
+ AV_CLASS_CATEGORY_DEVICE_INPUT);
+}
+
+AVOutputFormat *av_output_audio_device_next(AVOutputFormat *d)
{
- static AVOnce control = AV_ONCE_INIT;
+ return device_next(d, 1, AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT,
+ AV_CLASS_CATEGORY_DEVICE_OUTPUT);
+}
- ff_thread_once(&control, register_all);
+AVOutputFormat *av_output_video_device_next(AVOutputFormat *d)
+{
+ return device_next(d, 1, AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT,
+ AV_CLASS_CATEGORY_DEVICE_OUTPUT);
}
+FF_DISABLE_DEPRECATION_WARNINGS
+#endif
+
diff --git a/chromium/third_party/ffmpeg/libavdevice/alsa.c b/chromium/third_party/ffmpeg/libavdevice/alsa.c
index 1bbff30d5cc..1b21beb6d51 100644
--- a/chromium/third_party/ffmpeg/libavdevice/alsa.c
+++ b/chromium/third_party/ffmpeg/libavdevice/alsa.c
@@ -177,8 +177,8 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, snd_pcm_stream_t mode,
snd_pcm_uframes_t buffer_size, period_size;
uint64_t layout = ctx->streams[0]->codecpar->channel_layout;
- if (ctx->filename[0] == 0) audio_device = "default";
- else audio_device = ctx->filename;
+ if (ctx->url[0] == 0) audio_device = "default";
+ else audio_device = ctx->url;
if (*codec_id == AV_CODEC_ID_NONE)
*codec_id = DEFAULT_CODEC_ID;
diff --git a/chromium/third_party/ffmpeg/libavdevice/android_camera.c b/chromium/third_party/ffmpeg/libavdevice/android_camera.c
new file mode 100644
index 00000000000..ff6caaa55e3
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavdevice/android_camera.c
@@ -0,0 +1,871 @@
+/*
+ * Android camera input device
+ *
+ * Copyright (C) 2017 Felix Matouschek
+ *
+ * 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 <errno.h>
+#include <pthread.h>
+#include <stdatomic.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#include <camera/NdkCameraDevice.h>
+#include <camera/NdkCameraManager.h>
+#include <media/NdkImage.h>
+#include <media/NdkImageReader.h>
+
+#include "libavformat/avformat.h"
+#include "libavformat/internal.h"
+#include "libavutil/avstring.h"
+#include "libavutil/display.h"
+#include "libavutil/imgutils.h"
+#include "libavutil/log.h"
+#include "libavutil/opt.h"
+#include "libavutil/parseutils.h"
+#include "libavutil/pixfmt.h"
+#include "libavutil/threadmessage.h"
+#include "libavutil/time.h"
+
+#include "version.h"
+
+/* This image format is available on all Android devices
+ * supporting the Camera2 API */
+#define IMAGE_FORMAT_ANDROID AIMAGE_FORMAT_YUV_420_888
+
+#define MAX_BUF_COUNT 2
+#define VIDEO_STREAM_INDEX 0
+#define VIDEO_TIMEBASE_ANDROID 1000000000
+
+#define RETURN_CASE(x) case x: return AV_STRINGIFY(x);
+#define RETURN_DEFAULT(x) default: return AV_STRINGIFY(x);
+
+typedef struct AndroidCameraCtx {
+ const AVClass *class;
+
+ int requested_width;
+ int requested_height;
+ AVRational framerate;
+ int camera_index;
+ int input_queue_size;
+
+ uint8_t lens_facing;
+ int32_t sensor_orientation;
+ int width;
+ int height;
+ int32_t framerate_range[2];
+ int image_format;
+
+ ACameraManager *camera_mgr;
+ char *camera_id;
+ ACameraMetadata *camera_metadata;
+ ACameraDevice *camera_dev;
+ ACameraDevice_StateCallbacks camera_state_callbacks;
+ AImageReader *image_reader;
+ AImageReader_ImageListener image_listener;
+ ANativeWindow *image_reader_window;
+ ACaptureSessionOutputContainer *capture_session_output_container;
+ ACaptureSessionOutput *capture_session_output;
+ ACameraOutputTarget *camera_output_target;
+ ACaptureRequest *capture_request;
+ ACameraCaptureSession_stateCallbacks capture_session_state_callbacks;
+ ACameraCaptureSession *capture_session;
+
+ AVThreadMessageQueue *input_queue;
+ atomic_int exit;
+ atomic_int got_image_format;
+} AndroidCameraCtx;
+
+static const char *camera_status_string(camera_status_t val)
+{
+ switch(val) {
+ RETURN_CASE(ACAMERA_OK)
+ RETURN_CASE(ACAMERA_ERROR_UNKNOWN)
+ RETURN_CASE(ACAMERA_ERROR_INVALID_PARAMETER)
+ RETURN_CASE(ACAMERA_ERROR_CAMERA_DISCONNECTED)
+ RETURN_CASE(ACAMERA_ERROR_NOT_ENOUGH_MEMORY)
+ RETURN_CASE(ACAMERA_ERROR_METADATA_NOT_FOUND)
+ RETURN_CASE(ACAMERA_ERROR_CAMERA_DEVICE)
+ RETURN_CASE(ACAMERA_ERROR_CAMERA_SERVICE)
+ RETURN_CASE(ACAMERA_ERROR_SESSION_CLOSED)
+ RETURN_CASE(ACAMERA_ERROR_INVALID_OPERATION)
+ RETURN_CASE(ACAMERA_ERROR_STREAM_CONFIGURE_FAIL)
+ RETURN_CASE(ACAMERA_ERROR_CAMERA_IN_USE)
+ RETURN_CASE(ACAMERA_ERROR_MAX_CAMERA_IN_USE)
+ RETURN_CASE(ACAMERA_ERROR_CAMERA_DISABLED)
+ RETURN_CASE(ACAMERA_ERROR_PERMISSION_DENIED)
+ RETURN_DEFAULT(ACAMERA_ERROR_UNKNOWN)
+ }
+}
+
+static const char *media_status_string(media_status_t val)
+{
+ switch(val) {
+ RETURN_CASE(AMEDIA_OK)
+ RETURN_CASE(AMEDIA_ERROR_UNKNOWN)
+ RETURN_CASE(AMEDIA_ERROR_MALFORMED)
+ RETURN_CASE(AMEDIA_ERROR_UNSUPPORTED)
+ RETURN_CASE(AMEDIA_ERROR_INVALID_OBJECT)
+ RETURN_CASE(AMEDIA_ERROR_INVALID_PARAMETER)
+ RETURN_CASE(AMEDIA_ERROR_INVALID_OPERATION)
+ RETURN_CASE(AMEDIA_DRM_NOT_PROVISIONED)
+ RETURN_CASE(AMEDIA_DRM_RESOURCE_BUSY)
+ RETURN_CASE(AMEDIA_DRM_DEVICE_REVOKED)
+ RETURN_CASE(AMEDIA_DRM_SHORT_BUFFER)
+ RETURN_CASE(AMEDIA_DRM_SESSION_NOT_OPENED)
+ RETURN_CASE(AMEDIA_DRM_TAMPER_DETECTED)
+ RETURN_CASE(AMEDIA_DRM_VERIFY_FAILED)
+ RETURN_CASE(AMEDIA_DRM_NEED_KEY)
+ RETURN_CASE(AMEDIA_DRM_LICENSE_EXPIRED)
+ RETURN_CASE(AMEDIA_IMGREADER_NO_BUFFER_AVAILABLE)
+ RETURN_CASE(AMEDIA_IMGREADER_MAX_IMAGES_ACQUIRED)
+ RETURN_CASE(AMEDIA_IMGREADER_CANNOT_LOCK_IMAGE)
+ RETURN_CASE(AMEDIA_IMGREADER_CANNOT_UNLOCK_IMAGE)
+ RETURN_CASE(AMEDIA_IMGREADER_IMAGE_NOT_LOCKED)
+ RETURN_DEFAULT(AMEDIA_ERROR_UNKNOWN)
+ }
+}
+
+static const char *error_state_callback_string(int val)
+{
+ switch(val) {
+ RETURN_CASE(ERROR_CAMERA_IN_USE)
+ RETURN_CASE(ERROR_MAX_CAMERAS_IN_USE)
+ RETURN_CASE(ERROR_CAMERA_DISABLED)
+ RETURN_CASE(ERROR_CAMERA_DEVICE)
+ RETURN_CASE(ERROR_CAMERA_SERVICE)
+ default:
+ return "ERROR_CAMERA_UNKNOWN";
+ }
+}
+
+static void camera_dev_disconnected(void *context, ACameraDevice *device)
+{
+ AVFormatContext *avctx = context;
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ atomic_store(&ctx->exit, 1);
+ av_log(avctx, AV_LOG_ERROR, "Camera with id %s disconnected.\n",
+ ACameraDevice_getId(device));
+}
+
+static void camera_dev_error(void *context, ACameraDevice *device, int error)
+{
+ AVFormatContext *avctx = context;
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ atomic_store(&ctx->exit, 1);
+ av_log(avctx, AV_LOG_ERROR, "Error %s on camera with id %s.\n",
+ error_state_callback_string(error), ACameraDevice_getId(device));
+}
+
+static int open_camera(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ camera_status_t ret;
+ ACameraIdList *camera_ids;
+
+ ret = ACameraManager_getCameraIdList(ctx->camera_mgr, &camera_ids);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to get camera id list, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ if (ctx->camera_index < camera_ids->numCameras) {
+ ctx->camera_id = av_strdup(camera_ids->cameraIds[ctx->camera_index]);
+ if (!ctx->camera_id) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to allocate memory for camera_id.\n");
+ return AVERROR(ENOMEM);
+ }
+ } else {
+ av_log(avctx, AV_LOG_ERROR, "No camera with index %d available.\n",
+ ctx->camera_index);
+ return AVERROR(ENXIO);
+ }
+
+ ACameraManager_deleteCameraIdList(camera_ids);
+
+ ret = ACameraManager_getCameraCharacteristics(ctx->camera_mgr,
+ ctx->camera_id, &ctx->camera_metadata);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to get metadata for camera with id %s, error: %s.\n",
+ ctx->camera_id, camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ctx->camera_state_callbacks.context = avctx;
+ ctx->camera_state_callbacks.onDisconnected = camera_dev_disconnected;
+ ctx->camera_state_callbacks.onError = camera_dev_error;
+
+ ret = ACameraManager_openCamera(ctx->camera_mgr, ctx->camera_id,
+ &ctx->camera_state_callbacks, &ctx->camera_dev);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to open camera with id %s, error: %s.\n",
+ ctx->camera_id, camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ return 0;
+}
+
+static void get_sensor_orientation(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ ACameraMetadata_const_entry lens_facing;
+ ACameraMetadata_const_entry sensor_orientation;
+
+ ACameraMetadata_getConstEntry(ctx->camera_metadata,
+ ACAMERA_LENS_FACING, &lens_facing);
+ ACameraMetadata_getConstEntry(ctx->camera_metadata,
+ ACAMERA_SENSOR_ORIENTATION, &sensor_orientation);
+
+ ctx->lens_facing = lens_facing.data.u8[0];
+ ctx->sensor_orientation = sensor_orientation.data.i32[0];
+}
+
+static void match_video_size(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ ACameraMetadata_const_entry available_configs;
+ int found = 0;
+
+ ACameraMetadata_getConstEntry(ctx->camera_metadata,
+ ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
+ &available_configs);
+
+ for (int i = 0; i < available_configs.count; i++) {
+ int32_t input = available_configs.data.i32[i * 4 + 3];
+ int32_t format = available_configs.data.i32[i * 4 + 0];
+
+ if (input) {
+ continue;
+ }
+
+ if (format == IMAGE_FORMAT_ANDROID) {
+ int32_t width = available_configs.data.i32[i * 4 + 1];
+ int32_t height = available_configs.data.i32[i * 4 + 2];
+
+ //Same ratio
+ if ((ctx->requested_width == width && ctx->requested_height == height) ||
+ (ctx->requested_width == height && ctx->requested_height == width)) {
+ ctx->width = width;
+ ctx->height = height;
+ found = 1;
+ break;
+ }
+ }
+ }
+
+ if (!found || ctx->width == 0 || ctx->height == 0) {
+ ctx->width = available_configs.data.i32[1];
+ ctx->height = available_configs.data.i32[2];
+
+ av_log(avctx, AV_LOG_WARNING,
+ "Requested video_size %dx%d not available, falling back to %dx%d\n",
+ ctx->requested_width, ctx->requested_height, ctx->width, ctx->height);
+ }
+
+ return;
+}
+
+static void match_framerate(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ ACameraMetadata_const_entry available_framerates;
+ int found = 0;
+ int current_best_match = -1;
+ int requested_framerate = av_q2d(ctx->framerate);
+
+ ACameraMetadata_getConstEntry(ctx->camera_metadata,
+ ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,
+ &available_framerates);
+
+ for (int i = 0; i < available_framerates.count; i++) {
+ int32_t min = available_framerates.data.i32[i * 2 + 0];
+ int32_t max = available_framerates.data.i32[i * 2 + 1];
+
+ if (requested_framerate == max) {
+ if (min == max) {
+ ctx->framerate_range[0] = min;
+ ctx->framerate_range[1] = max;
+ found = 1;
+ break;
+ } else if (current_best_match >= 0) {
+ int32_t current_best_match_min = available_framerates.data.i32[current_best_match * 2 + 0];
+ if (min > current_best_match_min) {
+ current_best_match = i;
+ }
+ } else {
+ current_best_match = i;
+ }
+ }
+ }
+
+ if (!found) {
+ if (current_best_match >= 0) {
+ ctx->framerate_range[0] = available_framerates.data.i32[current_best_match * 2 + 0];
+ ctx->framerate_range[1] = available_framerates.data.i32[current_best_match * 2 + 1];
+
+ } else {
+ ctx->framerate_range[0] = available_framerates.data.i32[0];
+ ctx->framerate_range[1] = available_framerates.data.i32[1];
+ }
+
+ av_log(avctx, AV_LOG_WARNING,
+ "Requested framerate %d not available, falling back to min: %d and max: %d fps\n",
+ requested_framerate, ctx->framerate_range[0], ctx->framerate_range[1]);
+ }
+
+ return;
+}
+
+static int get_image_format(AVFormatContext *avctx, AImage *image)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ int32_t image_pixelstrides[2];
+ uint8_t *image_plane_data[2];
+ int plane_data_length[2];
+
+ for (int i = 0; i < 2; i++) {
+ AImage_getPlanePixelStride(image, i + 1, &image_pixelstrides[i]);
+ AImage_getPlaneData(image, i + 1, &image_plane_data[i], &plane_data_length[i]);
+ }
+
+ if (image_pixelstrides[0] != image_pixelstrides[1]) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Pixel strides of U and V plane should have been the same.\n");
+ return AVERROR_EXTERNAL;
+ }
+
+ switch (image_pixelstrides[0]) {
+ case 1:
+ ctx->image_format = AV_PIX_FMT_YUV420P;
+ break;
+ case 2:
+ if (image_plane_data[0] < image_plane_data[1]) {
+ ctx->image_format = AV_PIX_FMT_NV12;
+ } else {
+ ctx->image_format = AV_PIX_FMT_NV21;
+ }
+ break;
+ default:
+ av_log(avctx, AV_LOG_ERROR,
+ "Unknown pixel stride %d of U and V plane, cannot determine camera image format.\n",
+ image_pixelstrides[0]);
+ return AVERROR(ENOSYS);
+ }
+
+ return 0;
+}
+
+static void image_available(void *context, AImageReader *reader)
+{
+ AVFormatContext *avctx = context;
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ media_status_t media_status;
+ int ret = 0;
+
+ AImage *image;
+ int64_t image_timestamp;
+ int32_t image_linestrides[4];
+ uint8_t *image_plane_data[4];
+ int plane_data_length[4];
+
+ AVPacket pkt;
+ int pkt_buffer_size = 0;
+
+ media_status = AImageReader_acquireLatestImage(reader, &image);
+ if (media_status != AMEDIA_OK) {
+ if (media_status == AMEDIA_IMGREADER_NO_BUFFER_AVAILABLE) {
+ av_log(avctx, AV_LOG_WARNING,
+ "An image reader frame was discarded");
+ } else {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to acquire latest image from image reader, error: %s.\n",
+ media_status_string(media_status));
+ ret = AVERROR_EXTERNAL;
+ }
+ goto error;
+ }
+
+ // Silently drop frames when exit is set
+ if (atomic_load(&ctx->exit)) {
+ goto error;
+ }
+
+ // Determine actual image format
+ if (!atomic_load(&ctx->got_image_format)) {
+ ret = get_image_format(avctx, image);
+ if (ret < 0) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Could not get image format of camera.\n");
+ goto error;
+ } else {
+ atomic_store(&ctx->got_image_format, 1);
+ }
+ }
+
+ pkt_buffer_size = av_image_get_buffer_size(ctx->image_format, ctx->width, ctx->height, 32);
+ AImage_getTimestamp(image, &image_timestamp);
+
+ AImage_getPlaneRowStride(image, 0, &image_linestrides[0]);
+ AImage_getPlaneData(image, 0, &image_plane_data[0], &plane_data_length[0]);
+
+ switch (ctx->image_format) {
+ case AV_PIX_FMT_YUV420P:
+ AImage_getPlaneRowStride(image, 1, &image_linestrides[1]);
+ AImage_getPlaneData(image, 1, &image_plane_data[1], &plane_data_length[1]);
+ AImage_getPlaneRowStride(image, 2, &image_linestrides[2]);
+ AImage_getPlaneData(image, 2, &image_plane_data[2], &plane_data_length[2]);
+ break;
+ case AV_PIX_FMT_NV12:
+ AImage_getPlaneRowStride(image, 1, &image_linestrides[1]);
+ AImage_getPlaneData(image, 1, &image_plane_data[1], &plane_data_length[1]);
+ break;
+ case AV_PIX_FMT_NV21:
+ AImage_getPlaneRowStride(image, 2, &image_linestrides[1]);
+ AImage_getPlaneData(image, 2, &image_plane_data[1], &plane_data_length[1]);
+ break;
+ default:
+ av_log(avctx, AV_LOG_ERROR, "Unsupported camera image format.\n");
+ ret = AVERROR(ENOSYS);
+ goto error;
+ }
+
+ ret = av_new_packet(&pkt, pkt_buffer_size);
+ if (ret < 0) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to create new av packet, error: %s.\n", av_err2str(ret));
+ goto error;
+ }
+
+ pkt.stream_index = VIDEO_STREAM_INDEX;
+ pkt.pts = image_timestamp;
+ av_image_copy_to_buffer(pkt.data, pkt_buffer_size,
+ (const uint8_t * const *) image_plane_data,
+ image_linestrides, ctx->image_format,
+ ctx->width, ctx->height, 32);
+
+ ret = av_thread_message_queue_send(ctx->input_queue, &pkt, AV_THREAD_MESSAGE_NONBLOCK);
+
+error:
+ if (ret < 0) {
+ if (ret != AVERROR(EAGAIN)) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Error while processing new image, error: %s.\n", av_err2str(ret));
+ av_thread_message_queue_set_err_recv(ctx->input_queue, ret);
+ atomic_store(&ctx->exit, 1);
+ } else {
+ av_log(avctx, AV_LOG_WARNING,
+ "Input queue was full, dropping frame, consider raising the input_queue_size option (current value: %d)\n",
+ ctx->input_queue_size);
+ }
+ if (pkt_buffer_size) {
+ av_packet_unref(&pkt);
+ }
+ }
+
+ AImage_delete(image);
+
+ return;
+}
+
+static int create_image_reader(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ media_status_t ret;
+
+ ret = AImageReader_new(ctx->width, ctx->height, IMAGE_FORMAT_ANDROID,
+ MAX_BUF_COUNT, &ctx->image_reader);
+ if (ret != AMEDIA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to create image reader, error: %s.\n", media_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ctx->image_listener.context = avctx;
+ ctx->image_listener.onImageAvailable = image_available;
+
+ ret = AImageReader_setImageListener(ctx->image_reader, &ctx->image_listener);
+ if (ret != AMEDIA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to set image listener on image reader, error: %s.\n",
+ media_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ret = AImageReader_getWindow(ctx->image_reader, &ctx->image_reader_window);
+ if (ret != AMEDIA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Could not get image reader window, error: %s.\n",
+ media_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ return 0;
+}
+
+static void capture_session_closed(void *context, ACameraCaptureSession *session)
+{
+ av_log(context, AV_LOG_INFO, "Android camera capture session was closed.\n");
+}
+
+static void capture_session_ready(void *context, ACameraCaptureSession *session)
+{
+ av_log(context, AV_LOG_INFO, "Android camera capture session is ready.\n");
+}
+
+static void capture_session_active(void *context, ACameraCaptureSession *session)
+{
+ av_log(context, AV_LOG_INFO, "Android camera capture session is active.\n");
+}
+
+static int create_capture_session(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ camera_status_t ret;
+
+ ret = ACaptureSessionOutputContainer_create(&ctx->capture_session_output_container);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to create capture session output container, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ANativeWindow_acquire(ctx->image_reader_window);
+
+ ret = ACaptureSessionOutput_create(ctx->image_reader_window, &ctx->capture_session_output);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to create capture session container, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ret = ACaptureSessionOutputContainer_add(ctx->capture_session_output_container,
+ ctx->capture_session_output);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to add output to output container, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ret = ACameraOutputTarget_create(ctx->image_reader_window, &ctx->camera_output_target);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to create camera output target, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ret = ACameraDevice_createCaptureRequest(ctx->camera_dev, TEMPLATE_RECORD, &ctx->capture_request);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to create capture request, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ret = ACaptureRequest_setEntry_i32(ctx->capture_request, ACAMERA_CONTROL_AE_TARGET_FPS_RANGE,
+ 2, ctx->framerate_range);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to set target fps range in capture request, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ret = ACaptureRequest_addTarget(ctx->capture_request, ctx->camera_output_target);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to add capture request capture request, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ctx->capture_session_state_callbacks.context = avctx;
+ ctx->capture_session_state_callbacks.onClosed = capture_session_closed;
+ ctx->capture_session_state_callbacks.onReady = capture_session_ready;
+ ctx->capture_session_state_callbacks.onActive = capture_session_active;
+
+ ret = ACameraDevice_createCaptureSession(ctx->camera_dev, ctx->capture_session_output_container,
+ &ctx->capture_session_state_callbacks, &ctx->capture_session);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to create capture session, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ ret = ACameraCaptureSession_setRepeatingRequest(ctx->capture_session, NULL, 1, &ctx->capture_request, NULL);
+ if (ret != ACAMERA_OK) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to set repeating request on capture session, error: %s.\n",
+ camera_status_string(ret));
+ return AVERROR_EXTERNAL;
+ }
+
+ return 0;
+}
+
+static int wait_for_image_format(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+
+ while (!atomic_load(&ctx->got_image_format) && !atomic_load(&ctx->exit)) {
+ //Wait until first frame arrived and actual image format was determined
+ usleep(1000);
+ }
+
+ return atomic_load(&ctx->got_image_format);
+}
+
+static int add_display_matrix(AVFormatContext *avctx, AVStream *st)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ uint8_t *side_data;
+ int32_t display_matrix[9];
+
+ av_display_rotation_set(display_matrix, ctx->sensor_orientation);
+
+ if (ctx->lens_facing == ACAMERA_LENS_FACING_FRONT) {
+ av_display_matrix_flip(display_matrix, 1, 0);
+ }
+
+ side_data = av_stream_new_side_data(st,
+ AV_PKT_DATA_DISPLAYMATRIX, sizeof(display_matrix));
+
+ if (!side_data) {
+ return AVERROR(ENOMEM);
+ }
+
+ memcpy(side_data, display_matrix, sizeof(display_matrix));
+
+ return 0;
+}
+
+static int add_video_stream(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ AVStream *st;
+ AVCodecParameters *codecpar;
+
+ st = avformat_new_stream(avctx, NULL);
+ if (!st) {
+ return AVERROR(ENOMEM);
+ }
+
+ st->id = VIDEO_STREAM_INDEX;
+ st->avg_frame_rate = (AVRational) { ctx->framerate_range[1], 1 };
+ st->r_frame_rate = (AVRational) { ctx->framerate_range[1], 1 };
+
+ if (!wait_for_image_format(avctx)) {
+ return AVERROR_EXTERNAL;
+ }
+
+ codecpar = st->codecpar;
+ codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
+ codecpar->codec_id = AV_CODEC_ID_RAWVIDEO;
+ codecpar->format = ctx->image_format;
+ codecpar->width = ctx->width;
+ codecpar->height = ctx->height;
+
+ avpriv_set_pts_info(st, 64, 1, VIDEO_TIMEBASE_ANDROID);
+
+ return add_display_matrix(avctx, st);
+}
+
+static int android_camera_read_close(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+
+ atomic_store(&ctx->exit, 1);
+
+ if (ctx->capture_session) {
+ ACameraCaptureSession_stopRepeating(ctx->capture_session);
+ // Following warning is emitted, after capture session closed callback is received:
+ // ACameraCaptureSession: Device is closed but session 0 is not notified
+ // Seems to be a bug in Android, we can ignore this
+ ACameraCaptureSession_close(ctx->capture_session);
+ ctx->capture_session = NULL;
+ }
+
+ if (ctx->capture_request) {
+ ACaptureRequest_removeTarget(ctx->capture_request, ctx->camera_output_target);
+ ACaptureRequest_free(ctx->capture_request);
+ ctx->capture_request = NULL;
+ }
+
+ if (ctx->camera_output_target) {
+ ACameraOutputTarget_free(ctx->camera_output_target);
+ ctx->camera_output_target = NULL;
+ }
+
+ if (ctx->capture_session_output) {
+ ACaptureSessionOutputContainer_remove(ctx->capture_session_output_container,
+ ctx->capture_session_output);
+ ACaptureSessionOutput_free(ctx->capture_session_output);
+ ctx->capture_session_output = NULL;
+ }
+
+ if (ctx->image_reader_window) {
+ ANativeWindow_release(ctx->image_reader_window);
+ ctx->image_reader_window = NULL;
+ }
+
+ if (ctx->capture_session_output_container) {
+ ACaptureSessionOutputContainer_free(ctx->capture_session_output_container);
+ ctx->capture_session_output_container = NULL;
+ }
+
+ if (ctx->camera_dev) {
+ ACameraDevice_close(ctx->camera_dev);
+ ctx->camera_dev = NULL;
+ }
+
+ if (ctx->image_reader) {
+ AImageReader_delete(ctx->image_reader);
+ ctx->image_reader = NULL;
+ }
+
+ if (ctx->camera_metadata) {
+ ACameraMetadata_free(ctx->camera_metadata);
+ ctx->camera_metadata = NULL;
+ }
+
+ av_freep(&ctx->camera_id);
+
+ if (ctx->camera_mgr) {
+ ACameraManager_delete(ctx->camera_mgr);
+ ctx->camera_mgr = NULL;
+ }
+
+ if (ctx->input_queue) {
+ AVPacket pkt;
+ av_thread_message_queue_set_err_send(ctx->input_queue, AVERROR_EOF);
+ while (av_thread_message_queue_recv(ctx->input_queue, &pkt, AV_THREAD_MESSAGE_NONBLOCK) >= 0) {
+ av_packet_unref(&pkt);
+ }
+ av_thread_message_queue_free(&ctx->input_queue);
+ }
+
+ return 0;
+}
+
+static int android_camera_read_header(AVFormatContext *avctx)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ int ret;
+
+ atomic_init(&ctx->got_image_format, 0);
+ atomic_init(&ctx->exit, 0);
+
+ ret = av_thread_message_queue_alloc(&ctx->input_queue, ctx->input_queue_size, sizeof(AVPacket));
+ if (ret < 0) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Failed to allocate input queue, error: %s.\n", av_err2str(ret));
+ goto error;
+ }
+
+ ctx->camera_mgr = ACameraManager_create();
+ if (!ctx->camera_mgr) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to create Android camera manager.\n");
+ ret = AVERROR_EXTERNAL;
+ goto error;
+ }
+
+ ret = open_camera(avctx);
+ if (ret < 0) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to open camera.\n");
+ goto error;
+ }
+
+ get_sensor_orientation(avctx);
+ match_video_size(avctx);
+ match_framerate(avctx);
+
+ ret = create_image_reader(avctx);
+ if (ret < 0) {
+ goto error;
+ }
+
+ ret = create_capture_session(avctx);
+ if (ret < 0) {
+ goto error;
+ }
+
+ ret = add_video_stream(avctx);
+
+error:
+ if (ret < 0) {
+ android_camera_read_close(avctx);
+ av_log(avctx, AV_LOG_ERROR, "Failed to open android_camera.\n");
+ }
+
+ return ret;
+}
+
+static int android_camera_read_packet(AVFormatContext *avctx, AVPacket *pkt)
+{
+ AndroidCameraCtx *ctx = avctx->priv_data;
+ int ret;
+
+ if (!atomic_load(&ctx->exit)) {
+ ret = av_thread_message_queue_recv(ctx->input_queue, pkt,
+ avctx->flags & AVFMT_FLAG_NONBLOCK ? AV_THREAD_MESSAGE_NONBLOCK : 0);
+ } else {
+ ret = AVERROR_EOF;
+ }
+
+ if (ret < 0) {
+ return ret;
+ } else {
+ return pkt->size;
+ }
+}
+
+#define OFFSET(x) offsetof(AndroidCameraCtx, x)
+#define DEC AV_OPT_FLAG_DECODING_PARAM
+static const AVOption options[] = {
+ { "video_size", "set video size given as a string such as 640x480 or hd720", OFFSET(requested_width), AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, DEC },
+ { "framerate", "set video frame rate", OFFSET(framerate), AV_OPT_TYPE_VIDEO_RATE, {.str = "30"}, 0, INT_MAX, DEC },
+ { "camera_index", "set index of camera to use", OFFSET(camera_index), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC },
+ { "input_queue_size", "set maximum number of frames to buffer", OFFSET(input_queue_size), AV_OPT_TYPE_INT, {.i64 = 5}, 0, INT_MAX, DEC },
+ { NULL },
+};
+
+static const AVClass android_camera_class = {
+ .class_name = "android_camera indev",
+ .item_name = av_default_item_name,
+ .option = options,
+ .version = LIBAVDEVICE_VERSION_INT,
+ .category = AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT,
+};
+
+AVInputFormat ff_android_camera_demuxer = {
+ .name = "android_camera",
+ .long_name = NULL_IF_CONFIG_SMALL("Android camera input device"),
+ .priv_data_size = sizeof(AndroidCameraCtx),
+ .read_header = android_camera_read_header,
+ .read_packet = android_camera_read_packet,
+ .read_close = android_camera_read_close,
+ .flags = AVFMT_NOFILE,
+ .priv_class = &android_camera_class,
+};
diff --git a/chromium/third_party/ffmpeg/libavdevice/avdevice.c b/chromium/third_party/ffmpeg/libavdevice/avdevice.c
index 72e1b67887f..a42d3498b56 100644
--- a/chromium/third_party/ffmpeg/libavdevice/avdevice.c
+++ b/chromium/third_party/ffmpeg/libavdevice/avdevice.c
@@ -78,52 +78,6 @@ const char * avdevice_license(void)
return LICENSE_PREFIX FFMPEG_LICENSE + sizeof(LICENSE_PREFIX) - 1;
}
-static void *device_next(void *prev, int output,
- AVClassCategory c1, AVClassCategory c2)
-{
- const AVClass *pc;
- AVClassCategory category = AV_CLASS_CATEGORY_NA;
- do {
- if (output) {
- if (!(prev = av_oformat_next(prev)))
- break;
- pc = ((AVOutputFormat *)prev)->priv_class;
- } else {
- if (!(prev = av_iformat_next(prev)))
- break;
- pc = ((AVInputFormat *)prev)->priv_class;
- }
- if (!pc)
- continue;
- category = pc->category;
- } while (category != c1 && category != c2);
- return prev;
-}
-
-AVInputFormat *av_input_audio_device_next(AVInputFormat *d)
-{
- return device_next(d, 0, AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT,
- AV_CLASS_CATEGORY_DEVICE_INPUT);
-}
-
-AVInputFormat *av_input_video_device_next(AVInputFormat *d)
-{
- return device_next(d, 0, AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT,
- AV_CLASS_CATEGORY_DEVICE_INPUT);
-}
-
-AVOutputFormat *av_output_audio_device_next(AVOutputFormat *d)
-{
- return device_next(d, 1, AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT,
- AV_CLASS_CATEGORY_DEVICE_OUTPUT);
-}
-
-AVOutputFormat *av_output_video_device_next(AVOutputFormat *d)
-{
- return device_next(d, 1, AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT,
- AV_CLASS_CATEGORY_DEVICE_OUTPUT);
-}
-
int avdevice_app_to_dev_control_message(struct AVFormatContext *s, enum AVAppToDevMessageType type,
void *data, size_t data_size)
{
diff --git a/chromium/third_party/ffmpeg/libavdevice/avdevice.h b/chromium/third_party/ffmpeg/libavdevice/avdevice.h
index ee9462480e2..dd6ad9365e2 100644
--- a/chromium/third_party/ffmpeg/libavdevice/avdevice.h
+++ b/chromium/third_party/ffmpeg/libavdevice/avdevice.h
@@ -66,6 +66,29 @@ const char *avdevice_configuration(void);
const char *avdevice_license(void);
/**
+ * Iterate over all registered output devices.
+ *
+ * @param opaque a pointer where libavdevice will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered output device or NULL when the iteration is
+ * finished
+ */
+const AVOutputFormat *av_outdev_iterate(void **opaque);
+
+/**
+ * Iterate over all registered input devices.
+ *
+ * @param opaque a pointer where libavdevice will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered input device or NULL when the iteration is
+ * finished
+ */
+const AVInputFormat *av_indev_iterate(void **opaque);
+
+#if FF_API_NEXT
+/**
* Initialize libavdevice and register all the input and output devices.
*/
void avdevice_register_all(void);
@@ -77,6 +100,7 @@ void avdevice_register_all(void);
* if d is non-NULL, returns the next registered input audio/video device after d
* or NULL if d is the last one.
*/
+attribute_deprecated
AVInputFormat *av_input_audio_device_next(AVInputFormat *d);
/**
@@ -86,6 +110,7 @@ AVInputFormat *av_input_audio_device_next(AVInputFormat *d);
* if d is non-NULL, returns the next registered input audio/video device after d
* or NULL if d is the last one.
*/
+attribute_deprecated
AVInputFormat *av_input_video_device_next(AVInputFormat *d);
/**
@@ -95,6 +120,7 @@ AVInputFormat *av_input_video_device_next(AVInputFormat *d);
* if d is non-NULL, returns the next registered output audio/video device after d
* or NULL if d is the last one.
*/
+attribute_deprecated
AVOutputFormat *av_output_audio_device_next(AVOutputFormat *d);
/**
@@ -104,7 +130,9 @@ AVOutputFormat *av_output_audio_device_next(AVOutputFormat *d);
* if d is non-NULL, returns the next registered output audio/video device after d
* or NULL if d is the last one.
*/
+attribute_deprecated
AVOutputFormat *av_output_video_device_next(AVOutputFormat *d);
+#endif
typedef struct AVDeviceRect {
int x; /**< x coordinate of top left corner */
diff --git a/chromium/third_party/ffmpeg/libavdevice/avfoundation.m b/chromium/third_party/ffmpeg/libavdevice/avfoundation.m
index e2ddf47dbe8..a540f6a0792 100644
--- a/chromium/third_party/ffmpeg/libavdevice/avfoundation.m
+++ b/chromium/third_party/ffmpeg/libavdevice/avfoundation.m
@@ -259,7 +259,7 @@ static void destroy_context(AVFContext* ctx)
static void parse_device_name(AVFormatContext *s)
{
AVFContext *ctx = (AVFContext*)s->priv_data;
- char *tmp = av_strdup(s->filename);
+ char *tmp = av_strdup(s->url);
char *save;
if (tmp[0] != ':') {
diff --git a/chromium/third_party/ffmpeg/libavdevice/bktr.c b/chromium/third_party/ffmpeg/libavdevice/bktr.c
index 418247dc4eb..993cc19ac7c 100644
--- a/chromium/third_party/ffmpeg/libavdevice/bktr.c
+++ b/chromium/third_party/ffmpeg/libavdevice/bktr.c
@@ -294,7 +294,7 @@ static int grab_read_header(AVFormatContext *s1)
st->codecpar->height = s->height;
st->avg_frame_rate = framerate;
- if (bktr_init(s1->filename, s->width, s->height, s->standard,
+ if (bktr_init(s1->url, s->width, s->height, s->standard,
&s->video_fd, &s->tuner_fd, -1, 0.0) < 0) {
ret = AVERROR(EIO);
goto out;
diff --git a/chromium/third_party/ffmpeg/libavdevice/caca.c b/chromium/third_party/ffmpeg/libavdevice/caca.c
index 93cc0ffd252..47de8247dcf 100644
--- a/chromium/third_party/ffmpeg/libavdevice/caca.c
+++ b/chromium/third_party/ffmpeg/libavdevice/caca.c
@@ -178,7 +178,7 @@ static int caca_write_header(AVFormatContext *s)
}
if (!c->window_title)
- c->window_title = av_strdup(s->filename);
+ c->window_title = av_strdup(s->url);
caca_set_display_title(c->display, c->window_title);
caca_set_display_time(c->display, av_rescale_q(1, st->codec->time_base, AV_TIME_BASE_Q));
diff --git a/chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp b/chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp
index d1576b85535..da414ed5f8b 100644
--- a/chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp
+++ b/chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp
@@ -404,7 +404,7 @@ int ff_decklink_list_formats(AVFormatContext *avctx, decklink_direction_t direct
}
av_log(avctx, AV_LOG_INFO, "Supported formats for '%s':\n\tformat_code\tdescription",
- avctx->filename);
+ avctx->url);
while (itermode->Next(&mode) == S_OK) {
BMDTimeValue tb_num, tb_den;
mode->GetFrameRate(&tb_num, &tb_den);
diff --git a/chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp b/chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp
index a69e28680be..28a748a28f8 100644
--- a/chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp
+++ b/chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp
@@ -149,6 +149,17 @@ static void extract_luma_from_v210(uint16_t *dst, const uint8_t *src, int width)
}
}
+static void unpack_v210(uint16_t *dst, const uint8_t *src, int width)
+{
+ int i;
+ for (i = 0; i < width * 2 / 3; i++) {
+ *dst++ = src[0] + ((src[1] & 3) << 8);
+ *dst++ = (src[1] >> 2) + ((src[2] & 15) << 6);
+ *dst++ = (src[2] >> 4) + ((src[3] & 63) << 4);
+ src += 4;
+ }
+}
+
static uint8_t calc_parity_and_line_offset(int line)
{
uint8_t ret = (line < 313) << 5;
@@ -752,9 +763,15 @@ HRESULT decklink_input_callback::VideoInputFrameArrived(
for (i = vanc_line_numbers[idx].vanc_start; i <= vanc_line_numbers[idx].vanc_end; i++) {
uint8_t *buf;
if (vanc->GetBufferForVerticalBlankingLine(i, (void**)&buf) == S_OK) {
- uint16_t luma_vanc[MAX_WIDTH_VANC];
- extract_luma_from_v210(luma_vanc, buf, videoFrame->GetWidth());
- txt_buf = get_metadata(avctx, luma_vanc, videoFrame->GetWidth(),
+ uint16_t vanc[MAX_WIDTH_VANC];
+ size_t vanc_size = videoFrame->GetWidth();
+ if (ctx->bmd_mode == bmdModeNTSC && videoFrame->GetWidth() * 2 <= MAX_WIDTH_VANC) {
+ vanc_size = vanc_size * 2;
+ unpack_v210(vanc, buf, videoFrame->GetWidth());
+ } else {
+ extract_luma_from_v210(vanc, buf, videoFrame->GetWidth());
+ }
+ txt_buf = get_metadata(avctx, vanc, vanc_size,
txt_buf, sizeof(txt_buf0) - (txt_buf - txt_buf0), &pkt);
}
if (i == vanc_line_numbers[idx].field0_vanc_end)
@@ -951,7 +968,7 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
cctx->raw_format = MKBETAG('v','2','1','0');
}
- strcpy (fname, avctx->filename);
+ av_strlcpy(fname, avctx->url, sizeof(fname));
tmp=strchr (fname, '@');
if (tmp != NULL) {
av_log(avctx, AV_LOG_WARNING, "The @mode syntax is deprecated and will be removed. Please use the -format_code option.\n");
@@ -966,7 +983,7 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
/* Get input device. */
if (ctx->dl->QueryInterface(IID_IDeckLinkInput, (void **) &ctx->dli) != S_OK) {
av_log(avctx, AV_LOG_ERROR, "Could not open input device from '%s'\n",
- avctx->filename);
+ avctx->url);
ret = AVERROR(EIO);
goto error;
}
@@ -1053,7 +1070,7 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
break;
case bmdFormat8BitARGB:
st->codecpar->codec_id = AV_CODEC_ID_RAWVIDEO;
- st->codecpar->codec_tag = avcodec_pix_fmt_to_codec_tag((enum AVPixelFormat)st->codecpar->format);;
+ st->codecpar->codec_tag = avcodec_pix_fmt_to_codec_tag((enum AVPixelFormat)st->codecpar->format);
st->codecpar->format = AV_PIX_FMT_0RGB;
st->codecpar->bit_rate = av_rescale(ctx->bmd_width * ctx->bmd_height * 32, st->time_base.den, st->time_base.num);
break;
diff --git a/chromium/third_party/ffmpeg/libavdevice/decklink_enc.cpp b/chromium/third_party/ffmpeg/libavdevice/decklink_enc.cpp
index 89b03f2bd56..28ab928cd50 100644
--- a/chromium/third_party/ffmpeg/libavdevice/decklink_enc.cpp
+++ b/chromium/third_party/ffmpeg/libavdevice/decklink_enc.cpp
@@ -400,14 +400,14 @@ av_cold int ff_decklink_write_header(AVFormatContext *avctx)
return AVERROR_EXIT;
}
- ret = ff_decklink_init_device(avctx, avctx->filename);
+ ret = ff_decklink_init_device(avctx, avctx->url);
if (ret < 0)
return ret;
/* Get output device. */
if (ctx->dl->QueryInterface(IID_IDeckLinkOutput, (void **) &ctx->dlo) != S_OK) {
av_log(avctx, AV_LOG_ERROR, "Could not open output device from '%s'\n",
- avctx->filename);
+ avctx->url);
ret = AVERROR(EIO);
goto error;
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/dshow.c b/chromium/third_party/ffmpeg/libavdevice/dshow.c
index f2453e61144..de910c09943 100644
--- a/chromium/third_party/ffmpeg/libavdevice/dshow.c
+++ b/chromium/third_party/ffmpeg/libavdevice/dshow.c
@@ -1033,7 +1033,7 @@ static int parse_device_name(AVFormatContext *avctx)
{
struct dshow_ctx *ctx = avctx->priv_data;
char **device_name = ctx->device_name;
- char *name = av_strdup(avctx->filename);
+ char *name = av_strdup(avctx->url);
char *tmp = name;
int ret = 1;
char *type;
diff --git a/chromium/third_party/ffmpeg/libavdevice/fbdev_dec.c b/chromium/third_party/ffmpeg/libavdevice/fbdev_dec.c
index d9c75df2029..6a518168681 100644
--- a/chromium/third_party/ffmpeg/libavdevice/fbdev_dec.c
+++ b/chromium/third_party/ffmpeg/libavdevice/fbdev_dec.c
@@ -78,8 +78,8 @@ static av_cold int fbdev_read_header(AVFormatContext *avctx)
if (avctx->flags & AVFMT_FLAG_NONBLOCK)
flags |= O_NONBLOCK;
- if (avctx->filename[0])
- device = avctx->filename;
+ if (avctx->url[0])
+ device = avctx->url;
else
device = ff_fbdev_default_device();
diff --git a/chromium/third_party/ffmpeg/libavdevice/fbdev_enc.c b/chromium/third_party/ffmpeg/libavdevice/fbdev_enc.c
index b4e5f849759..41915968250 100644
--- a/chromium/third_party/ffmpeg/libavdevice/fbdev_enc.c
+++ b/chromium/third_party/ffmpeg/libavdevice/fbdev_enc.c
@@ -53,8 +53,8 @@ static av_cold int fbdev_write_header(AVFormatContext *h)
return AVERROR(EINVAL);
}
- if (h->filename[0])
- device = h->filename;
+ if (h->url[0])
+ device = h->url;
else
device = ff_fbdev_default_device();
diff --git a/chromium/third_party/ffmpeg/libavdevice/gdigrab.c b/chromium/third_party/ffmpeg/libavdevice/gdigrab.c
index ff2ef3b1629..ab08c117884 100644
--- a/chromium/third_party/ffmpeg/libavdevice/gdigrab.c
+++ b/chromium/third_party/ffmpeg/libavdevice/gdigrab.c
@@ -230,7 +230,7 @@ gdigrab_read_header(AVFormatContext *s1)
HBITMAP hbmp = NULL;
void *buffer = NULL;
- const char *filename = s1->filename;
+ const char *filename = s1->url;
const char *name = NULL;
AVStream *st = NULL;
diff --git a/chromium/third_party/ffmpeg/libavdevice/iec61883.c b/chromium/third_party/ffmpeg/libavdevice/iec61883.c
index 721dca38eef..7d4d37847cb 100644
--- a/chromium/third_party/ffmpeg/libavdevice/iec61883.c
+++ b/chromium/third_party/ffmpeg/libavdevice/iec61883.c
@@ -259,14 +259,14 @@ static int iec61883_read_header(AVFormatContext *context)
goto fail;
}
- inport = strtol(context->filename, &endptr, 10);
- if (endptr != context->filename && *endptr == '\0') {
+ inport = strtol(context->url, &endptr, 10);
+ if (endptr != context->url && *endptr == '\0') {
av_log(context, AV_LOG_INFO, "Selecting IEEE1394 port: %d\n", inport);
j = inport;
nb_ports = inport + 1;
- } else if (strcmp(context->filename, "auto")) {
+ } else if (strcmp(context->url, "auto")) {
av_log(context, AV_LOG_ERROR, "Invalid input \"%s\", you should specify "
- "\"auto\" for auto-detection, or the port number.\n", context->filename);
+ "\"auto\" for auto-detection, or the port number.\n", context->url);
goto fail;
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/jack.c b/chromium/third_party/ffmpeg/libavdevice/jack.c
index e35a4a815ae..34f1c6de973 100644
--- a/chromium/third_party/ffmpeg/libavdevice/jack.c
+++ b/chromium/third_party/ffmpeg/libavdevice/jack.c
@@ -150,8 +150,8 @@ static int start_jack(AVFormatContext *context)
jack_status_t status;
int i, test;
- /* Register as a JACK client, using the context filename as client name. */
- self->client = jack_client_open(context->filename, JackNullOption, &status);
+ /* Register as a JACK client, using the context url as client name. */
+ self->client = jack_client_open(context->url, JackNullOption, &status);
if (!self->client) {
av_log(context, AV_LOG_ERROR, "Unable to register as a JACK client\n");
return AVERROR(EIO);
@@ -174,7 +174,7 @@ static int start_jack(AVFormatContext *context)
JackPortIsInput, 0);
if (!self->ports[i]) {
av_log(context, AV_LOG_ERROR, "Unable to register port %s:%s\n",
- context->filename, str);
+ context->url, str);
jack_client_close(self->client);
return AVERROR(EIO);
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/lavfi.c b/chromium/third_party/ffmpeg/libavdevice/lavfi.c
index 5273717e6b2..6f2ae958dcb 100644
--- a/chromium/third_party/ffmpeg/libavdevice/lavfi.c
+++ b/chromium/third_party/ffmpeg/libavdevice/lavfi.c
@@ -166,7 +166,7 @@ av_cold static int lavfi_read_header(AVFormatContext *avctx)
}
if (!lavfi->graph_str)
- lavfi->graph_str = av_strdup(avctx->filename);
+ lavfi->graph_str = av_strdup(avctx->url);
/* parse the graph, create a stream for each open output */
if (!(lavfi->graph = avfilter_graph_alloc()))
diff --git a/chromium/third_party/ffmpeg/libavdevice/libcdio.c b/chromium/third_party/ffmpeg/libavdevice/libcdio.c
index f6d4fce2562..a4c9f523373 100644
--- a/chromium/third_party/ffmpeg/libavdevice/libcdio.c
+++ b/chromium/third_party/ffmpeg/libavdevice/libcdio.c
@@ -60,9 +60,9 @@ static av_cold int read_header(AVFormatContext *ctx)
if (!(st = avformat_new_stream(ctx, NULL)))
return AVERROR(ENOMEM);
- s->drive = cdio_cddap_identify(ctx->filename, CDDA_MESSAGE_LOGIT, &err);
+ s->drive = cdio_cddap_identify(ctx->url, CDDA_MESSAGE_LOGIT, &err);
if (!s->drive) {
- av_log(ctx, AV_LOG_ERROR, "Could not open drive %s.\n", ctx->filename);
+ av_log(ctx, AV_LOG_ERROR, "Could not open drive %s.\n", ctx->url);
return AVERROR(EINVAL);
}
if (err) {
@@ -70,7 +70,7 @@ static av_cold int read_header(AVFormatContext *ctx)
free(err);
}
if ((ret = cdio_cddap_open(s->drive)) < 0 || !s->drive->opened) {
- av_log(ctx, AV_LOG_ERROR, "Could not open disk in drive %s.\n", ctx->filename);
+ av_log(ctx, AV_LOG_ERROR, "Could not open disk in drive %s.\n", ctx->url);
return AVERROR(EINVAL);
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/libndi_newtek_dec.c b/chromium/third_party/ffmpeg/libavdevice/libndi_newtek_dec.c
index 2f14f4b03fd..4fb719770e5 100644
--- a/chromium/third_party/ffmpeg/libavdevice/libndi_newtek_dec.c
+++ b/chromium/third_party/ffmpeg/libavdevice/libndi_newtek_dec.c
@@ -149,7 +149,7 @@ static int ndi_read_header(AVFormatContext *avctx)
}
/* Find available sources. */
- ret = ndi_find_sources(avctx, avctx->filename, &recv_create_desc.source_to_connect_to);
+ ret = ndi_find_sources(avctx, avctx->url, &recv_create_desc.source_to_connect_to);
if (ctx->find_sources) {
return AVERROR_EXIT;
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/libndi_newtek_enc.c b/chromium/third_party/ffmpeg/libavdevice/libndi_newtek_enc.c
index 6ca6f41b734..f3603f5a3ad 100644
--- a/chromium/third_party/ffmpeg/libavdevice/libndi_newtek_enc.c
+++ b/chromium/third_party/ffmpeg/libavdevice/libndi_newtek_enc.c
@@ -233,7 +233,7 @@ static int ndi_write_header(AVFormatContext *avctx)
int ret = 0;
unsigned int n;
struct NDIContext *ctx = avctx->priv_data;
- const NDIlib_send_create_t ndi_send_desc = { .p_ndi_name = avctx->filename,
+ const NDIlib_send_create_t ndi_send_desc = { .p_ndi_name = avctx->url,
.p_groups = NULL, .clock_video = ctx->clock_video, .clock_audio = ctx->clock_audio };
if (!NDIlib_initialize()) {
@@ -260,7 +260,7 @@ static int ndi_write_header(AVFormatContext *avctx)
ctx->ndi_send = NDIlib_send_create(&ndi_send_desc);
if (!ctx->ndi_send) {
- av_log(avctx, AV_LOG_ERROR, "Failed to create NDI output %s\n", avctx->filename);
+ av_log(avctx, AV_LOG_ERROR, "Failed to create NDI output %s\n", avctx->url);
ret = AVERROR_EXTERNAL;
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/openal-dec.c b/chromium/third_party/ffmpeg/libavdevice/openal-dec.c
index 6eb0efe38f1..c19048e15d3 100644
--- a/chromium/third_party/ffmpeg/libavdevice/openal-dec.c
+++ b/chromium/third_party/ffmpeg/libavdevice/openal-dec.c
@@ -139,7 +139,7 @@ static int read_header(AVFormatContext *ctx)
/* Open device for capture */
ad->device =
- alcCaptureOpenDevice(ctx->filename[0] ? ctx->filename : NULL,
+ alcCaptureOpenDevice(ctx->url[0] ? ctx->url : NULL,
ad->sample_rate,
ad->sample_format,
ad->sample_rate); /* Maximum 1 second of sample data to be read at once */
diff --git a/chromium/third_party/ffmpeg/libavdevice/opengl_enc.c b/chromium/third_party/ffmpeg/libavdevice/opengl_enc.c
index bb6787c6f13..54c7e610bd5 100644
--- a/chromium/third_party/ffmpeg/libavdevice/opengl_enc.c
+++ b/chromium/third_party/ffmpeg/libavdevice/opengl_enc.c
@@ -1070,7 +1070,7 @@ static av_cold int opengl_write_header(AVFormatContext *h)
opengl->window_height = opengl->height;
if (!opengl->window_title && !opengl->no_window)
- opengl->window_title = av_strdup(h->filename);
+ opengl->window_title = av_strdup(h->url);
if ((ret = opengl_create_window(h)))
goto fail;
diff --git a/chromium/third_party/ffmpeg/libavdevice/oss_dec.c b/chromium/third_party/ffmpeg/libavdevice/oss_dec.c
index 6fef96a4507..d0dc327dc62 100644
--- a/chromium/third_party/ffmpeg/libavdevice/oss_dec.c
+++ b/chromium/third_party/ffmpeg/libavdevice/oss_dec.c
@@ -52,7 +52,7 @@ static int audio_read_header(AVFormatContext *s1)
return AVERROR(ENOMEM);
}
- ret = ff_oss_audio_open(s1, 0, s1->filename);
+ ret = ff_oss_audio_open(s1, 0, s1->url);
if (ret < 0) {
return AVERROR(EIO);
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/oss_enc.c b/chromium/third_party/ffmpeg/libavdevice/oss_enc.c
index e7a7b6d4035..e3172afaa47 100644
--- a/chromium/third_party/ffmpeg/libavdevice/oss_enc.c
+++ b/chromium/third_party/ffmpeg/libavdevice/oss_enc.c
@@ -46,7 +46,7 @@ static int audio_write_header(AVFormatContext *s1)
st = s1->streams[0];
s->sample_rate = st->codecpar->sample_rate;
s->channels = st->codecpar->channels;
- ret = ff_oss_audio_open(s1, 1, s1->filename);
+ ret = ff_oss_audio_open(s1, 1, s1->url);
if (ret < 0) {
return AVERROR(EIO);
} else {
diff --git a/chromium/third_party/ffmpeg/libavdevice/pulse_audio_dec.c b/chromium/third_party/ffmpeg/libavdevice/pulse_audio_dec.c
index 95a1d6ecfa6..5977fb7e9e5 100644
--- a/chromium/third_party/ffmpeg/libavdevice/pulse_audio_dec.c
+++ b/chromium/third_party/ffmpeg/libavdevice/pulse_audio_dec.c
@@ -158,8 +158,8 @@ static av_cold int pulse_read_header(AVFormatContext *s)
attr.fragsize = pd->fragment_size;
- if (s->filename[0] != '\0' && strcmp(s->filename, "default"))
- device = s->filename;
+ if (s->url[0] != '\0' && strcmp(s->url, "default"))
+ device = s->url;
if (!(pd->mainloop = pa_threaded_mainloop_new())) {
pulse_close(s);
diff --git a/chromium/third_party/ffmpeg/libavdevice/pulse_audio_enc.c b/chromium/third_party/ffmpeg/libavdevice/pulse_audio_enc.c
index 0efcf0fe7e5..d430b772726 100644
--- a/chromium/third_party/ffmpeg/libavdevice/pulse_audio_enc.c
+++ b/chromium/third_party/ffmpeg/libavdevice/pulse_audio_enc.c
@@ -459,8 +459,8 @@ static av_cold int pulse_write_header(AVFormatContext *h)
st = h->streams[0];
if (!stream_name) {
- if (h->filename[0])
- stream_name = h->filename;
+ if (h->url[0])
+ stream_name = h->url;
else
stream_name = "Playback";
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/sdl2.c b/chromium/third_party/ffmpeg/libavdevice/sdl2.c
index 5d9e91ec213..48ed977bebd 100644
--- a/chromium/third_party/ffmpeg/libavdevice/sdl2.c
+++ b/chromium/third_party/ffmpeg/libavdevice/sdl2.c
@@ -165,7 +165,7 @@ static int sdl2_write_header(AVFormatContext *s)
int flags = 0;
if (!sdl->window_title)
- sdl->window_title = av_strdup(s->filename);
+ sdl->window_title = av_strdup(s->url);
if (SDL_WasInit(SDL_INIT_VIDEO)) {
av_log(s, AV_LOG_WARNING,
diff --git a/chromium/third_party/ffmpeg/libavdevice/sndio_dec.c b/chromium/third_party/ffmpeg/libavdevice/sndio_dec.c
index 2d13232bf17..ebb485a2c7b 100644
--- a/chromium/third_party/ffmpeg/libavdevice/sndio_dec.c
+++ b/chromium/third_party/ffmpeg/libavdevice/sndio_dec.c
@@ -41,7 +41,7 @@ static av_cold int audio_read_header(AVFormatContext *s1)
if (!st)
return AVERROR(ENOMEM);
- ret = ff_sndio_open(s1, 0, s1->filename);
+ ret = ff_sndio_open(s1, 0, s1->url);
if (ret < 0)
return ret;
diff --git a/chromium/third_party/ffmpeg/libavdevice/sndio_enc.c b/chromium/third_party/ffmpeg/libavdevice/sndio_enc.c
index 47f500d71e5..f6dd2901089 100644
--- a/chromium/third_party/ffmpeg/libavdevice/sndio_enc.c
+++ b/chromium/third_party/ffmpeg/libavdevice/sndio_enc.c
@@ -38,7 +38,7 @@ static av_cold int audio_write_header(AVFormatContext *s1)
s->sample_rate = st->codecpar->sample_rate;
s->channels = st->codecpar->channels;
- ret = ff_sndio_open(s1, 1, s1->filename);
+ ret = ff_sndio_open(s1, 1, s1->url);
return ret;
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/v4l2.c b/chromium/third_party/ffmpeg/libavdevice/v4l2.c
index f087badf5ca..10a0ff0dd61 100644
--- a/chromium/third_party/ffmpeg/libavdevice/v4l2.c
+++ b/chromium/third_party/ffmpeg/libavdevice/v4l2.c
@@ -106,7 +106,7 @@ struct buff_data {
int index;
};
-static int device_open(AVFormatContext *ctx)
+static int device_open(AVFormatContext *ctx, const char* device_path)
{
struct video_data *s = ctx->priv_data;
struct v4l2_capability cap;
@@ -147,11 +147,11 @@ static int device_open(AVFormatContext *ctx)
flags |= O_NONBLOCK;
}
- fd = v4l2_open(ctx->filename, flags, 0);
+ fd = v4l2_open(device_path, flags, 0);
if (fd < 0) {
err = AVERROR(errno);
av_log(ctx, AV_LOG_ERROR, "Cannot open video device %s: %s\n",
- ctx->filename, av_err2str(err));
+ device_path, av_err2str(err));
return err;
}
@@ -840,7 +840,7 @@ static int v4l2_read_header(AVFormatContext *ctx)
v4l2_log_file = fopen("/dev/null", "w");
#endif
- s->fd = device_open(ctx);
+ s->fd = device_open(ctx, ctx->url);
if (s->fd < 0)
return s->fd;
@@ -1042,11 +1042,13 @@ static int v4l2_get_device_list(AVFormatContext *ctx, AVDeviceInfoList *device_l
return ret;
}
while ((entry = readdir(dir))) {
+ char device_name[256];
+
if (!v4l2_is_v4l_dev(entry->d_name))
continue;
- snprintf(ctx->filename, sizeof(ctx->filename), "/dev/%s", entry->d_name);
- if ((s->fd = device_open(ctx)) < 0)
+ snprintf(device_name, sizeof(device_name), "/dev/%s", entry->d_name);
+ if ((s->fd = device_open(ctx, device_name)) < 0)
continue;
if (v4l2_ioctl(s->fd, VIDIOC_QUERYCAP, &cap) < 0) {
@@ -1060,7 +1062,7 @@ static int v4l2_get_device_list(AVFormatContext *ctx, AVDeviceInfoList *device_l
ret = AVERROR(ENOMEM);
goto fail;
}
- device->device_name = av_strdup(ctx->filename);
+ device->device_name = av_strdup(device_name);
device->device_description = av_strdup(cap.card);
if (!device->device_name || !device->device_description) {
ret = AVERROR(ENOMEM);
diff --git a/chromium/third_party/ffmpeg/libavdevice/v4l2enc.c b/chromium/third_party/ffmpeg/libavdevice/v4l2enc.c
index faf6e07f867..85200d0a363 100644
--- a/chromium/third_party/ffmpeg/libavdevice/v4l2enc.c
+++ b/chromium/third_party/ffmpeg/libavdevice/v4l2enc.c
@@ -39,10 +39,10 @@ static av_cold int write_header(AVFormatContext *s1)
if (s1->flags & AVFMT_FLAG_NONBLOCK)
flags |= O_NONBLOCK;
- s->fd = open(s1->filename, flags);
+ s->fd = open(s1->url, flags);
if (s->fd < 0) {
res = AVERROR(errno);
- av_log(s1, AV_LOG_ERROR, "Unable to open V4L2 device '%s'\n", s1->filename);
+ av_log(s1, AV_LOG_ERROR, "Unable to open V4L2 device '%s'\n", s1->url);
return res;
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/version.h b/chromium/third_party/ffmpeg/libavdevice/version.h
index 0d4477f82e2..80285a2611d 100644
--- a/chromium/third_party/ffmpeg/libavdevice/version.h
+++ b/chromium/third_party/ffmpeg/libavdevice/version.h
@@ -28,8 +28,8 @@
#include "libavutil/version.h"
#define LIBAVDEVICE_VERSION_MAJOR 58
-#define LIBAVDEVICE_VERSION_MINOR 0
-#define LIBAVDEVICE_VERSION_MICRO 101
+#define LIBAVDEVICE_VERSION_MINOR 2
+#define LIBAVDEVICE_VERSION_MICRO 100
#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
LIBAVDEVICE_VERSION_MINOR, \
@@ -47,4 +47,8 @@
* the public API and may change, break or disappear at any time.
*/
+#ifndef FF_API_NEXT
+#define FF_API_NEXT (LIBAVDEVICE_VERSION_MAJOR < 59)
+#endif
+
#endif /* AVDEVICE_VERSION_H */
diff --git a/chromium/third_party/ffmpeg/libavdevice/vfwcap.c b/chromium/third_party/ffmpeg/libavdevice/vfwcap.c
index f03d38ac262..6a923d99578 100644
--- a/chromium/third_party/ffmpeg/libavdevice/vfwcap.c
+++ b/chromium/third_party/ffmpeg/libavdevice/vfwcap.c
@@ -256,7 +256,7 @@ static int vfw_read_header(AVFormatContext *s)
int ret;
AVRational framerate_q;
- if (!strcmp(s->filename, "list")) {
+ if (!strcmp(s->url, "list")) {
for (devnum = 0; devnum <= 9; devnum++) {
char driver_name[256];
char driver_ver[256];
@@ -279,7 +279,7 @@ static int vfw_read_header(AVFormatContext *s)
}
/* If atoi fails, devnum==0 and the default device is used */
- devnum = atoi(s->filename);
+ devnum = atoi(s->url);
ret = SendMessage(ctx->hwnd, WM_CAP_DRIVER_CONNECT, devnum, 0);
if(!ret) {
diff --git a/chromium/third_party/ffmpeg/libavdevice/xcbgrab.c b/chromium/third_party/ffmpeg/libavdevice/xcbgrab.c
index 1968fe02d4f..6d142abd4fd 100644
--- a/chromium/third_party/ffmpeg/libavdevice/xcbgrab.c
+++ b/chromium/third_party/ffmpeg/libavdevice/xcbgrab.c
@@ -629,14 +629,14 @@ static av_cold int xcbgrab_read_header(AVFormatContext *s)
XCBGrabContext *c = s->priv_data;
int screen_num, ret;
const xcb_setup_t *setup;
- char *display_name = av_strdup(s->filename);
+ char *display_name = av_strdup(s->url);
if (!display_name)
return AVERROR(ENOMEM);
- if (!sscanf(s->filename, "%[^+]+%d,%d", display_name, &c->x, &c->y)) {
+ if (!sscanf(s->url, "%[^+]+%d,%d", display_name, &c->x, &c->y)) {
*display_name = 0;
- sscanf(s->filename, "+%d,%d", &c->x, &c->y);
+ sscanf(s->url, "+%d,%d", &c->x, &c->y);
}
c->conn = xcb_connect(display_name[0] ? display_name : NULL, &screen_num);
@@ -644,7 +644,7 @@ static av_cold int xcbgrab_read_header(AVFormatContext *s)
if ((ret = xcb_connection_has_error(c->conn))) {
av_log(s, AV_LOG_ERROR, "Cannot open display %s, error %d.\n",
- s->filename[0] ? s->filename : "default", ret);
+ s->url[0] ? s->url : "default", ret);
return AVERROR(EIO);
}
diff --git a/chromium/third_party/ffmpeg/libavdevice/xv.c b/chromium/third_party/ffmpeg/libavdevice/xv.c
index 185de7569e1..c3ed2e48bd2 100644
--- a/chromium/third_party/ffmpeg/libavdevice/xv.c
+++ b/chromium/third_party/ffmpeg/libavdevice/xv.c
@@ -151,7 +151,7 @@ static int xv_write_header(AVFormatContext *s)
xv->window_width, xv->window_height,
0, 0, 0);
if (!xv->window_title) {
- if (!(xv->window_title = av_strdup(s->filename))) {
+ if (!(xv->window_title = av_strdup(s->url))) {
ret = AVERROR(ENOMEM);
goto fail;
}
diff --git a/chromium/third_party/ffmpeg/libavfilter/Makefile b/chromium/third_party/ffmpeg/libavfilter/Makefile
index 34971ce6c1f..fc16512e2c3 100644
--- a/chromium/third_party/ffmpeg/libavfilter/Makefile
+++ b/chromium/third_party/ffmpeg/libavfilter/Makefile
@@ -87,6 +87,7 @@ OBJS-$(CONFIG_COMPENSATIONDELAY_FILTER) += af_compensationdelay.o
OBJS-$(CONFIG_CROSSFEED_FILTER) += af_crossfeed.o
OBJS-$(CONFIG_CRYSTALIZER_FILTER) += af_crystalizer.o
OBJS-$(CONFIG_DCSHIFT_FILTER) += af_dcshift.o
+OBJS-$(CONFIG_DRMETER_FILTER) += af_drmeter.o
OBJS-$(CONFIG_DYNAUDNORM_FILTER) += af_dynaudnorm.o
OBJS-$(CONFIG_EARWAX_FILTER) += af_earwax.o
OBJS-$(CONFIG_EBUR128_FILTER) += f_ebur128.o
@@ -413,6 +414,7 @@ OBJS-$(CONFIG_SHARED) += log2_tab.o
SKIPHEADERS-$(CONFIG_QSVVPP) += qsvvpp.h
SKIPHEADERS-$(CONFIG_OPENCL) += opencl.h
+SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_vpp.h
TOOLS = graph2dot
TESTPROGS = drawutils filtfmts formats integral
diff --git a/chromium/third_party/ffmpeg/libavfilter/af_alimiter.c b/chromium/third_party/ffmpeg/libavfilter/af_alimiter.c
index 0fc8e6baa3f..c41e95576f7 100644
--- a/chromium/third_party/ffmpeg/libavfilter/af_alimiter.c
+++ b/chromium/third_party/ffmpeg/libavfilter/af_alimiter.c
@@ -327,6 +327,11 @@ static int config_input(AVFilterLink *inlink)
s->buffer_size = inlink->sample_rate * s->attack * inlink->channels;
s->buffer_size -= s->buffer_size % inlink->channels;
+ if (s->buffer_size <= 0) {
+ av_log(ctx, AV_LOG_ERROR, "Attack is too small.\n");
+ return AVERROR(EINVAL);
+ }
+
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavfilter/af_drmeter.c b/chromium/third_party/ffmpeg/libavfilter/af_drmeter.c
new file mode 100644
index 00000000000..ecccb651863
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavfilter/af_drmeter.c
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2018 Paul B Mahol
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU 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 <float.h>
+
+#include "libavutil/ffmath.h"
+#include "libavutil/opt.h"
+#include "audio.h"
+#include "avfilter.h"
+#include "internal.h"
+
+typedef struct ChannelStats {
+ uint64_t nb_samples;
+ uint64_t blknum;
+ float peak;
+ float sum;
+ uint32_t peaks[10001];
+ uint32_t rms[10001];
+} ChannelStats;
+
+typedef struct DRMeterContext {
+ const AVClass *class;
+ ChannelStats *chstats;
+ int nb_channels;
+ uint64_t tc_samples;
+ double time_constant;
+} DRMeterContext;
+
+#define OFFSET(x) offsetof(DRMeterContext, x)
+#define FLAGS AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
+
+static const AVOption drmeter_options[] = {
+ { "length", "set the window length", OFFSET(time_constant), AV_OPT_TYPE_DOUBLE, {.dbl=3}, .01, 10, FLAGS },
+ { NULL }
+};
+
+AVFILTER_DEFINE_CLASS(drmeter);
+
+static int query_formats(AVFilterContext *ctx)
+{
+ AVFilterFormats *formats;
+ AVFilterChannelLayouts *layouts;
+ static const enum AVSampleFormat sample_fmts[] = {
+ AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_FLT,
+ AV_SAMPLE_FMT_NONE
+ };
+ int ret;
+
+ layouts = ff_all_channel_counts();
+ if (!layouts)
+ return AVERROR(ENOMEM);
+ ret = ff_set_common_channel_layouts(ctx, layouts);
+ if (ret < 0)
+ return ret;
+
+ formats = ff_make_format_list(sample_fmts);
+ if (!formats)
+ return AVERROR(ENOMEM);
+ ret = ff_set_common_formats(ctx, formats);
+ if (ret < 0)
+ return ret;
+
+ formats = ff_all_samplerates();
+ if (!formats)
+ return AVERROR(ENOMEM);
+ return ff_set_common_samplerates(ctx, formats);
+}
+
+static int config_output(AVFilterLink *outlink)
+{
+ DRMeterContext *s = outlink->src->priv;
+
+ s->chstats = av_calloc(sizeof(*s->chstats), outlink->channels);
+ if (!s->chstats)
+ return AVERROR(ENOMEM);
+ s->nb_channels = outlink->channels;
+ s->tc_samples = s->time_constant * outlink->sample_rate + .5;
+
+ return 0;
+}
+
+static void finish_block(ChannelStats *p)
+{
+ int peak_bin, rms_bin;
+ float peak, rms;
+
+ rms = sqrt(2 * p->sum / p->nb_samples);
+ peak = p->peak;
+ rms_bin = av_clip(rms * 10000, 0, 10000);
+ peak_bin = av_clip(peak * 10000, 0, 10000);
+ p->rms[rms_bin]++;
+ p->peaks[peak_bin]++;
+
+ p->peak = 0;
+ p->sum = 0;
+ p->nb_samples = 0;
+ p->blknum++;
+}
+
+static void update_stat(DRMeterContext *s, ChannelStats *p, float sample)
+{
+ if (p->nb_samples >= s->tc_samples) {
+ finish_block(p);
+ }
+
+ p->peak = FFMAX(FFABS(sample), p->peak);
+ p->sum += sample * sample;
+ p->nb_samples++;
+}
+
+static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
+{
+ DRMeterContext *s = inlink->dst->priv;
+ const int channels = s->nb_channels;
+ int i, c;
+
+ switch (inlink->format) {
+ case AV_SAMPLE_FMT_FLTP:
+ for (c = 0; c < channels; c++) {
+ ChannelStats *p = &s->chstats[c];
+ const float *src = (const float *)buf->extended_data[c];
+
+ for (i = 0; i < buf->nb_samples; i++, src++)
+ update_stat(s, p, *src);
+ }
+ break;
+ case AV_SAMPLE_FMT_FLT: {
+ const float *src = (const float *)buf->extended_data[0];
+
+ for (i = 0; i < buf->nb_samples; i++) {
+ for (c = 0; c < channels; c++, src++)
+ update_stat(s, &s->chstats[c], *src);
+ }}
+ break;
+ }
+
+ return ff_filter_frame(inlink->dst->outputs[0], buf);
+}
+
+#define SQR(a) ((a)*(a))
+
+static void print_stats(AVFilterContext *ctx)
+{
+ DRMeterContext *s = ctx->priv;
+ float dr = 0;
+ int ch;
+
+ for (ch = 0; ch < s->nb_channels; ch++) {
+ ChannelStats *p = &s->chstats[ch];
+ float chdr, secondpeak, rmssum = 0;
+ int i, j, first = 0;
+
+ finish_block(p);
+
+ for (i = 0; i <= 10000; i++) {
+ if (p->peaks[10000 - i]) {
+ if (first)
+ break;
+ first = 1;
+ }
+ }
+
+ secondpeak = (10000 - i) / 10000.;
+
+ for (i = 10000, j = 0; i >= 0 && j < 0.2 * p->blknum; i--) {
+ if (p->rms[i]) {
+ rmssum += SQR(i / 10000.) * p->rms[i];
+ j += p->rms[i];
+ }
+ }
+
+ chdr = 20 * log10(secondpeak / sqrt(rmssum / (0.2 * p->blknum)));
+ dr += chdr;
+ av_log(ctx, AV_LOG_INFO, "Channel %d: DR: %.1f\n", ch + 1, chdr);
+ }
+
+ av_log(ctx, AV_LOG_INFO, "Overall DR: %.1f\n", dr / s->nb_channels);
+}
+
+static av_cold void uninit(AVFilterContext *ctx)
+{
+ DRMeterContext *s = ctx->priv;
+
+ if (s->nb_channels)
+ print_stats(ctx);
+ av_freep(&s->chstats);
+}
+
+static const AVFilterPad drmeter_inputs[] = {
+ {
+ .name = "default",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .filter_frame = filter_frame,
+ },
+ { NULL }
+};
+
+static const AVFilterPad drmeter_outputs[] = {
+ {
+ .name = "default",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .config_props = config_output,
+ },
+ { NULL }
+};
+
+AVFilter ff_af_drmeter = {
+ .name = "drmeter",
+ .description = NULL_IF_CONFIG_SMALL("Measure audio dynamic range."),
+ .query_formats = query_formats,
+ .priv_size = sizeof(DRMeterContext),
+ .priv_class = &drmeter_class,
+ .uninit = uninit,
+ .inputs = drmeter_inputs,
+ .outputs = drmeter_outputs,
+};
diff --git a/chromium/third_party/ffmpeg/libavfilter/af_join.c b/chromium/third_party/ffmpeg/libavfilter/af_join.c
index cf5131e8dca..4f86e135584 100644
--- a/chromium/third_party/ffmpeg/libavfilter/af_join.c
+++ b/chromium/third_party/ffmpeg/libavfilter/af_join.c
@@ -485,6 +485,9 @@ static int activate(AVFilterContext *ctx)
return 0;
}
}
+ if (!s->input_frames[0]) {
+ return 0;
+ }
}
nb_samples = s->input_frames[0]->nb_samples;
diff --git a/chromium/third_party/ffmpeg/libavfilter/af_loudnorm.c b/chromium/third_party/ffmpeg/libavfilter/af_loudnorm.c
index a7f11cbe6e2..314b25fa39f 100644
--- a/chromium/third_party/ffmpeg/libavfilter/af_loudnorm.c
+++ b/chromium/third_party/ffmpeg/libavfilter/af_loudnorm.c
@@ -431,6 +431,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
av_frame_copy_props(out, in);
}
+ if (s->pts == AV_NOPTS_VALUE)
+ s->pts = in->pts;
+
out->pts = s->pts;
src = (const double *)in->data[0];
dst = (double *)out->data[0];
@@ -763,7 +766,7 @@ static int config_input(AVFilterLink *inlink)
inlink->partial_buf_size = frame_size(inlink->sample_rate, 3000);
}
- s->pts =
+ s->pts = AV_NOPTS_VALUE;
s->buf_index =
s->prev_buf_index =
s->limiter_buf_index = 0;
diff --git a/chromium/third_party/ffmpeg/libavfilter/allfilters.c b/chromium/third_party/ffmpeg/libavfilter/allfilters.c
index 9adb1090b7c..cc423af7381 100644
--- a/chromium/third_party/ffmpeg/libavfilter/allfilters.c
+++ b/chromium/third_party/ffmpeg/libavfilter/allfilters.c
@@ -98,6 +98,7 @@ static void register_all(void)
REGISTER_FILTER(CROSSFEED, crossfeed, af);
REGISTER_FILTER(CRYSTALIZER, crystalizer, af);
REGISTER_FILTER(DCSHIFT, dcshift, af);
+ REGISTER_FILTER(DRMETER, drmeter, af);
REGISTER_FILTER(DYNAUDNORM, dynaudnorm, af);
REGISTER_FILTER(EARWAX, earwax, af);
REGISTER_FILTER(EBUR128, ebur128, af);
diff --git a/chromium/third_party/ffmpeg/libavfilter/avf_avectorscope.c b/chromium/third_party/ffmpeg/libavfilter/avf_avectorscope.c
index 725ac8bbda1..75e0ee5e2a4 100644
--- a/chromium/third_party/ffmpeg/libavfilter/avf_avectorscope.c
+++ b/chromium/third_party/ffmpeg/libavfilter/avf_avectorscope.c
@@ -331,7 +331,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples)
src[1] = -src[1];
if (s->swap)
- FFSWAP(float, src[0], src[1]);;
+ FFSWAP(float, src[0], src[1]);
if (s->mode == LISSAJOUS) {
x = ((src[1] - src[0]) * zoom / 2 + 1) * hw;
diff --git a/chromium/third_party/ffmpeg/libavfilter/avf_concat.c b/chromium/third_party/ffmpeg/libavfilter/avf_concat.c
index 6198a33d535..46bd42359b3 100644
--- a/chromium/third_party/ffmpeg/libavfilter/avf_concat.c
+++ b/chromium/third_party/ffmpeg/libavfilter/avf_concat.c
@@ -418,6 +418,19 @@ static av_cold void uninit(AVFilterContext *ctx)
av_freep(&cat->in);
}
+static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
+ char *res, int res_len, int flags)
+{
+ int ret = AVERROR(ENOSYS);
+
+ if (!strcmp(cmd, "next")) {
+ av_log(ctx, AV_LOG_VERBOSE, "Command received: next\n");
+ return flush_segment(ctx);
+ }
+
+ return ret;
+}
+
AVFilter ff_avf_concat = {
.name = "concat",
.description = NULL_IF_CONFIG_SMALL("Concatenate audio and video streams."),
@@ -429,4 +442,5 @@ AVFilter ff_avf_concat = {
.outputs = NULL,
.priv_class = &concat_class,
.flags = AVFILTER_FLAG_DYNAMIC_INPUTS | AVFILTER_FLAG_DYNAMIC_OUTPUTS,
+ .process_command = process_command,
};
diff --git a/chromium/third_party/ffmpeg/libavfilter/avfilter.c b/chromium/third_party/ffmpeg/libavfilter/avfilter.c
index ea75467a758..7553f7c36a2 100644
--- a/chromium/third_party/ffmpeg/libavfilter/avfilter.c
+++ b/chromium/third_party/ffmpeg/libavfilter/avfilter.c
@@ -676,6 +676,8 @@ static const AVOption avfilter_options[] = {
{ "enable", "set enable expression", OFFSET(enable_str), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS },
{ "threads", "Allowed number of threads", OFFSET(nb_threads), AV_OPT_TYPE_INT,
{ .i64 = 0 }, 0, INT_MAX, FLAGS },
+ { "extra_hw_frames", "Number of extra hardware frames to allocate for the user",
+ OFFSET(extra_hw_frames), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, FLAGS },
{ NULL },
};
@@ -1663,3 +1665,24 @@ const AVClass *avfilter_get_class(void)
{
return &avfilter_class;
}
+
+int ff_filter_init_hw_frames(AVFilterContext *avctx, AVFilterLink *link,
+ int default_pool_size)
+{
+ AVHWFramesContext *frames;
+
+ // Must already be set by caller.
+ av_assert0(link->hw_frames_ctx);
+
+ frames = (AVHWFramesContext*)link->hw_frames_ctx->data;
+
+ if (frames->initial_pool_size == 0) {
+ // Dynamic allocation is necessarily supported.
+ } else if (avctx->extra_hw_frames >= 0) {
+ frames->initial_pool_size += avctx->extra_hw_frames;
+ } else {
+ frames->initial_pool_size = default_pool_size;
+ }
+
+ return 0;
+}
diff --git a/chromium/third_party/ffmpeg/libavfilter/avfilter.h b/chromium/third_party/ffmpeg/libavfilter/avfilter.h
index 62eed2168f0..2d1195eeeb7 100644
--- a/chromium/third_party/ffmpeg/libavfilter/avfilter.h
+++ b/chromium/third_party/ffmpeg/libavfilter/avfilter.h
@@ -406,6 +406,22 @@ struct AVFilterContext {
* a higher value suggests a more urgent activation.
*/
unsigned ready;
+
+ /**
+ * Sets the number of extra hardware frames which the filter will
+ * allocate on its output links for use in following filters or by
+ * the caller.
+ *
+ * Some hardware filters require all frames that they will use for
+ * output to be defined in advance before filtering starts. For such
+ * filters, any hardware frame pools used for output must therefore be
+ * of fixed size. The extra frames set here are on top of any number
+ * that the filter needs internally in order to operate normally.
+ *
+ * This field must be set before the graph containing this filter is
+ * configured.
+ */
+ int extra_hw_frames;
};
/**
diff --git a/chromium/third_party/ffmpeg/libavfilter/drawutils.c b/chromium/third_party/ffmpeg/libavfilter/drawutils.c
index 77ab86b7754..17e26c764ac 100644
--- a/chromium/third_party/ffmpeg/libavfilter/drawutils.c
+++ b/chromium/third_party/ffmpeg/libavfilter/drawutils.c
@@ -186,7 +186,7 @@ int ff_draw_init(FFDrawContext *draw, enum AVPixelFormat format, unsigned flags)
return AVERROR(EINVAL);
if (desc->flags & ~(AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL | AV_PIX_FMT_FLAG_ALPHA))
return AVERROR(ENOSYS);
- if (format == AV_PIX_FMT_P010LE || format == AV_PIX_FMT_P010BE)
+ if (format == AV_PIX_FMT_P010LE || format == AV_PIX_FMT_P010BE || format == AV_PIX_FMT_P016LE || format == AV_PIX_FMT_P016BE)
return AVERROR(ENOSYS);
for (i = 0; i < desc->nb_components; i++) {
c = &desc->comp[i];
diff --git a/chromium/third_party/ffmpeg/libavfilter/framerate.h b/chromium/third_party/ffmpeg/libavfilter/framerate.h
new file mode 100644
index 00000000000..a42d5af68a2
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavfilter/framerate.h
@@ -0,0 +1,74 @@
+/*
+ * 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
+ */
+
+#ifndef AVFILTER_FRAMERATE_H
+#define AVFILTER_FRAMERATE_H
+
+#include "libavutil/pixelutils.h"
+#include "avfilter.h"
+
+#define BLEND_FUNC_PARAMS const uint8_t *src1, ptrdiff_t src1_linesize, \
+ const uint8_t *src2, ptrdiff_t src2_linesize, \
+ uint8_t *dst, ptrdiff_t dst_linesize, \
+ ptrdiff_t width, ptrdiff_t height, \
+ int factor1, int factor2, int half
+
+#define BLEND_FACTOR_DEPTH8 7
+#define BLEND_FACTOR_DEPTH16 15
+
+typedef void (*blend_func)(BLEND_FUNC_PARAMS);
+
+typedef struct FrameRateContext {
+ const AVClass *class;
+ // parameters
+ AVRational dest_frame_rate; ///< output frames per second
+ int flags; ///< flags affecting frame rate conversion algorithm
+ double scene_score; ///< score that denotes a scene change has happened
+ int interp_start; ///< start of range to apply linear interpolation
+ int interp_end; ///< end of range to apply linear interpolation
+
+ int line_size[4]; ///< bytes of pixel data per line for each plane
+ int vsub;
+
+ AVRational srce_time_base; ///< timebase of source
+ AVRational dest_time_base; ///< timebase of destination
+
+ av_pixelutils_sad_fn sad; ///< Sum of the absolute difference function (scene detect only)
+ double prev_mafd; ///< previous MAFD (scene detect only)
+
+ int blend_factor_max;
+ int bitdepth;
+ AVFrame *work;
+
+ AVFrame *f0; ///< last frame
+ AVFrame *f1; ///< current frame
+ int64_t pts0; ///< last frame pts in dest_time_base
+ int64_t pts1; ///< current frame pts in dest_time_base
+ int64_t delta; ///< pts1 to pts0 delta
+ double score; ///< scene change score (f0 to f1)
+ int flush; ///< 1 if the filter is being flushed
+ int64_t start_pts; ///< pts of the first output frame
+ int64_t n; ///< output frame counter
+
+ blend_func blend;
+} FrameRateContext;
+
+void ff_framerate_init(FrameRateContext *s);
+void ff_framerate_init_x86(FrameRateContext *s);
+
+#endif /* AVFILTER_FRAMERATE_H */
diff --git a/chromium/third_party/ffmpeg/libavfilter/internal.h b/chromium/third_party/ffmpeg/libavfilter/internal.h
index f9679ed1d77..498bd3328d0 100644
--- a/chromium/third_party/ffmpeg/libavfilter/internal.h
+++ b/chromium/third_party/ffmpeg/libavfilter/internal.h
@@ -411,4 +411,20 @@ static inline int ff_norm_qscale(int qscale, int type)
*/
int ff_filter_get_nb_threads(AVFilterContext *ctx);
+/**
+ * Perform any additional setup required for hardware frames.
+ *
+ * link->hw_frames_ctx must be set before calling this function.
+ * Inside link->hw_frames_ctx, the fields format, sw_format, width and
+ * height must be set. If dynamically allocated pools are not supported,
+ * then initial_pool_size must also be set, to the minimum hardware frame
+ * pool size necessary for the filter to work (taking into account any
+ * frames which need to stored for use in operations as appropriate). If
+ * default_pool_size is nonzero, then it will be used as the pool size if
+ * no other modification takes place (this can be used to preserve
+ * compatibility).
+ */
+int ff_filter_init_hw_frames(AVFilterContext *avctx, AVFilterLink *link,
+ int default_pool_size);
+
#endif /* AVFILTER_INTERNAL_H */
diff --git a/chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.c b/chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.c
index 9d917722a02..c5bbc3b85b9 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.c
@@ -21,7 +21,7 @@
#include "libavutil/avassert.h"
#include "libavutil/pixdesc.h"
#include "formats.h"
-
+#include "internal.h"
#include "vaapi_vpp.h"
int ff_vaapi_vpp_query_formats(AVFilterContext *avctx)
@@ -63,7 +63,6 @@ void ff_vaapi_vpp_pipeline_uninit(AVFilterContext *avctx)
ctx->va_config = VA_INVALID_ID;
}
- av_buffer_unref(&ctx->output_frames_ref);
av_buffer_unref(&ctx->device_ref);
ctx->hwctx = NULL;
}
@@ -99,6 +98,7 @@ int ff_vaapi_vpp_config_output(AVFilterLink *outlink)
VAAPIVPPContext *ctx = avctx->priv;
AVVAAPIHWConfig *hwconfig = NULL;
AVHWFramesConstraints *constraints = NULL;
+ AVHWFramesContext *output_frames;
AVVAAPIFramesContext *va_frames;
VAStatus vas;
int err, i;
@@ -172,34 +172,35 @@ int ff_vaapi_vpp_config_output(AVFilterLink *outlink)
goto fail;
}
- ctx->output_frames_ref = av_hwframe_ctx_alloc(ctx->device_ref);
- if (!ctx->output_frames_ref) {
+ outlink->hw_frames_ctx = av_hwframe_ctx_alloc(ctx->device_ref);
+ if (!outlink->hw_frames_ctx) {
av_log(avctx, AV_LOG_ERROR, "Failed to create HW frame context "
"for output.\n");
err = AVERROR(ENOMEM);
goto fail;
}
- ctx->output_frames = (AVHWFramesContext*)ctx->output_frames_ref->data;
+ output_frames = (AVHWFramesContext*)outlink->hw_frames_ctx->data;
- ctx->output_frames->format = AV_PIX_FMT_VAAPI;
- ctx->output_frames->sw_format = ctx->output_format;
- ctx->output_frames->width = ctx->output_width;
- ctx->output_frames->height = ctx->output_height;
+ output_frames->format = AV_PIX_FMT_VAAPI;
+ output_frames->sw_format = ctx->output_format;
+ output_frames->width = ctx->output_width;
+ output_frames->height = ctx->output_height;
- // The number of output frames we need is determined by what follows
- // the filter. If it's an encoder with complex frame reference
- // structures then this could be very high.
- ctx->output_frames->initial_pool_size = 10;
+ output_frames->initial_pool_size = 4;
- err = av_hwframe_ctx_init(ctx->output_frames_ref);
+ err = ff_filter_init_hw_frames(avctx, outlink, 10);
+ if (err < 0)
+ goto fail;
+
+ err = av_hwframe_ctx_init(outlink->hw_frames_ctx);
if (err < 0) {
av_log(avctx, AV_LOG_ERROR, "Failed to initialise VAAPI frame "
"context for output: %d\n", err);
goto fail;
}
- va_frames = ctx->output_frames->hwctx;
+ va_frames = output_frames->hwctx;
av_assert0(ctx->va_context == VA_INVALID_ID);
vas = vaCreateContext(ctx->hwctx->display, ctx->va_config,
@@ -222,18 +223,12 @@ int ff_vaapi_vpp_config_output(AVFilterLink *outlink)
goto fail;
}
- outlink->hw_frames_ctx = av_buffer_ref(ctx->output_frames_ref);
- if (!outlink->hw_frames_ctx) {
- err = AVERROR(ENOMEM);
- goto fail;
- }
-
av_freep(&hwconfig);
av_hwframe_constraints_free(&constraints);
return 0;
fail:
- av_buffer_unref(&ctx->output_frames_ref);
+ av_buffer_unref(&outlink->hw_frames_ctx);
av_freep(&hwconfig);
av_hwframe_constraints_free(&constraints);
return err;
@@ -374,6 +369,5 @@ void ff_vaapi_vpp_ctx_uninit(AVFilterContext *avctx)
ctx->pipeline_uninit(avctx);
av_buffer_unref(&ctx->input_frames_ref);
- av_buffer_unref(&ctx->output_frames_ref);
av_buffer_unref(&ctx->device_ref);
}
diff --git a/chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.h b/chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.h
index 83e0ec1cc2f..0bc31018d4c 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.h
+++ b/chromium/third_party/ffmpeg/libavfilter/vaapi_vpp.h
@@ -40,9 +40,6 @@ typedef struct VAAPIVPPContext {
AVBufferRef *input_frames_ref;
AVHWFramesContext *input_frames;
- AVBufferRef *output_frames_ref;
- AVHWFramesContext *output_frames;
-
enum AVPixelFormat output_format;
int output_width; // computed width
int output_height; // computed height
diff --git a/chromium/third_party/ffmpeg/libavfilter/version.h b/chromium/third_party/ffmpeg/libavfilter/version.h
index 0f117218225..babb4187b41 100644
--- a/chromium/third_party/ffmpeg/libavfilter/version.h
+++ b/chromium/third_party/ffmpeg/libavfilter/version.h
@@ -30,8 +30,8 @@
#include "libavutil/version.h"
#define LIBAVFILTER_VERSION_MAJOR 7
-#define LIBAVFILTER_VERSION_MINOR 11
-#define LIBAVFILTER_VERSION_MICRO 101
+#define LIBAVFILTER_VERSION_MINOR 13
+#define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_crop.c b/chromium/third_party/ffmpeg/libavfilter/vf_crop.c
index 7c31c1665d9..0fdc4949e3b 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_crop.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_crop.c
@@ -262,6 +262,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *frame)
NAN : frame->pkt_pos;
s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL);
s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, NULL);
+ /* It is necessary if x is expressed from y */
s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL);
normalize_double(&s->x, s->var_values[VAR_X]);
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_deinterlace_vaapi.c b/chromium/third_party/ffmpeg/libavfilter/vf_deinterlace_vaapi.c
index 9700f85817d..f7a262d0c6b 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_deinterlace_vaapi.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_deinterlace_vaapi.c
@@ -33,7 +33,7 @@
#define MAX_REFERENCES 8
typedef struct DeintVAAPIContext {
- VAAPIVPPContext vpp_ctx; // must be the first fileld
+ VAAPIVPPContext vpp_ctx; // must be the first field
int mode;
int field_rate;
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c b/chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c
index f97a741b508..e8905a40d3e 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c
@@ -1390,6 +1390,7 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame,
s->x = s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, &s->prng);
s->y = s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, &s->prng);
+ /* It is necessary if x is expressed from y */
s->x = s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, &s->prng);
update_alpha(s);
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_fps.c b/chromium/third_party/ffmpeg/libavfilter/vf_fps.c
index dbafd2c35a6..9167a00a13c 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_fps.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_fps.c
@@ -2,6 +2,7 @@
* Copyright 2007 Bobby Bingham
* Copyright 2012 Robert Nagy <ronag89 gmail com>
* Copyright 2012 Anton Khirnov <anton khirnov net>
+ * Copyright 2018 Calvin Walton <calvin.walton@kepstin.ca>
*
* This file is part of FFmpeg.
*
@@ -28,17 +29,12 @@
#include <float.h>
#include <stdint.h>
-#include "libavutil/common.h"
-#include "libavutil/fifo.h"
+#include "libavutil/avassert.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
-#include "libavutil/parseutils.h"
-
-#define FF_INTERNAL_FIELDS 1
-#include "framequeue.h"
#include "avfilter.h"
+#include "filters.h"
#include "internal.h"
-#include "video.h"
enum EOFAction {
EOF_ACTION_ROUND,
@@ -49,18 +45,27 @@ enum EOFAction {
typedef struct FPSContext {
const AVClass *class;
- AVFifoBuffer *fifo; ///< store frames until we get two successive timestamps
-
- /* timestamps in input timebase */
- int64_t first_pts; ///< pts of the first frame that arrived on this filter
-
double start_time; ///< pts, in seconds, of the expected first frame
AVRational framerate; ///< target framerate
int rounding; ///< AVRounding method for timestamps
int eof_action; ///< action performed for last frame in FIFO
+ /* Set during outlink configuration */
+ int64_t in_pts_off; ///< input frame pts offset for start_time handling
+ int64_t out_pts_off; ///< output frame pts offset for start_time handling
+
+ /* Runtime state */
+ int status; ///< buffered input status
+ int64_t status_pts; ///< buffered input status timestamp
+
+ AVFrame *frames[2]; ///< buffered frames
+ int frames_count; ///< number of buffered frames
+
+ int64_t next_pts; ///< pts of the next frame to output
+
/* statistics */
+ int cur_frame_out; ///< number of times current frame has been output
int frames_in; ///< number of frames on input
int frames_out; ///< number of frames on output
int dup; ///< number of frames duplicated
@@ -91,231 +96,238 @@ static av_cold int init(AVFilterContext *ctx)
{
FPSContext *s = ctx->priv;
- if (!(s->fifo = av_fifo_alloc_array(2, sizeof(AVFrame*))))
- return AVERROR(ENOMEM);
-
- s->first_pts = AV_NOPTS_VALUE;
+ s->status_pts = AV_NOPTS_VALUE;
+ s->next_pts = AV_NOPTS_VALUE;
av_log(ctx, AV_LOG_VERBOSE, "fps=%d/%d\n", s->framerate.num, s->framerate.den);
return 0;
}
-static void flush_fifo(AVFifoBuffer *fifo)
+/* Remove the first frame from the buffer, returning it */
+static AVFrame *shift_frame(AVFilterContext *ctx, FPSContext *s)
{
- while (av_fifo_size(fifo)) {
- AVFrame *tmp;
- av_fifo_generic_read(fifo, &tmp, sizeof(tmp), NULL);
- av_frame_free(&tmp);
+ AVFrame *frame;
+
+ /* Must only be called when there are frames in the buffer */
+ av_assert1(s->frames_count > 0);
+
+ frame = s->frames[0];
+ s->frames[0] = s->frames[1];
+ s->frames[1] = NULL;
+ s->frames_count--;
+
+ /* Update statistics counters */
+ s->frames_out += s->cur_frame_out;
+ if (s->cur_frame_out > 1) {
+ av_log(ctx, AV_LOG_DEBUG, "Duplicated frame with pts %"PRId64" %d times\n",
+ frame->pts, s->cur_frame_out - 1);
+ s->dup += s->cur_frame_out - 1;
+ } else if (s->cur_frame_out == 0) {
+ av_log(ctx, AV_LOG_DEBUG, "Dropping frame with pts %"PRId64"\n",
+ frame->pts);
+ s->drop++;
}
+ s->cur_frame_out = 0;
+
+ return frame;
}
static av_cold void uninit(AVFilterContext *ctx)
{
FPSContext *s = ctx->priv;
- if (s->fifo) {
- s->drop += av_fifo_size(s->fifo) / sizeof(AVFrame*);
- flush_fifo(s->fifo);
- av_fifo_freep(&s->fifo);
+
+ AVFrame *frame;
+
+ while (s->frames_count > 0) {
+ frame = shift_frame(ctx, s);
+ av_frame_free(&frame);
}
av_log(ctx, AV_LOG_VERBOSE, "%d frames in, %d frames out; %d frames dropped, "
"%d frames duplicated.\n", s->frames_in, s->frames_out, s->drop, s->dup);
}
-static int config_props(AVFilterLink* link)
+static int config_props(AVFilterLink* outlink)
{
- FPSContext *s = link->src->priv;
-
- link->time_base = av_inv_q(s->framerate);
- link->frame_rate= s->framerate;
- link->w = link->src->inputs[0]->w;
- link->h = link->src->inputs[0]->h;
+ AVFilterContext *ctx = outlink->src;
+ AVFilterLink *inlink = ctx->inputs[0];
+ FPSContext *s = ctx->priv;
+
+ outlink->time_base = av_inv_q(s->framerate);
+ outlink->frame_rate = s->framerate;
+
+ /* Calculate the input and output pts offsets for start_time */
+ if (s->start_time != DBL_MAX && s->start_time != AV_NOPTS_VALUE) {
+ double first_pts = s->start_time * AV_TIME_BASE;
+ if (first_pts < INT64_MIN || first_pts > INT64_MAX) {
+ av_log(ctx, AV_LOG_ERROR, "Start time %f cannot be represented in internal time base\n",
+ s->start_time);
+ return AVERROR(EINVAL);
+ }
+ s->in_pts_off = av_rescale_q_rnd(first_pts, AV_TIME_BASE_Q, inlink->time_base,
+ s->rounding | AV_ROUND_PASS_MINMAX);
+ s->out_pts_off = av_rescale_q_rnd(first_pts, AV_TIME_BASE_Q, outlink->time_base,
+ s->rounding | AV_ROUND_PASS_MINMAX);
+ s->next_pts = s->out_pts_off;
+ av_log(ctx, AV_LOG_VERBOSE, "Set first pts to (in:%"PRId64" out:%"PRId64") from start time %f\n",
+ s->in_pts_off, s->out_pts_off, s->start_time);
+ }
return 0;
}
-static int request_frame(AVFilterLink *outlink)
+/* Read a frame from the input and save it in the buffer */
+static int read_frame(AVFilterContext *ctx, FPSContext *s, AVFilterLink *inlink, AVFilterLink *outlink)
{
- AVFilterContext *ctx = outlink->src;
- FPSContext *s = ctx->priv;
+ AVFrame *frame;
int ret;
+ int64_t in_pts;
- ret = ff_request_frame(ctx->inputs[0]);
-
- /* flush the fifo */
- if (ret == AVERROR_EOF && av_fifo_size(s->fifo)) {
- int i;
- for (i = 0; av_fifo_size(s->fifo); i++) {
- AVFrame *buf;
-
- av_fifo_generic_read(s->fifo, &buf, sizeof(buf), NULL);
- if (av_fifo_size(s->fifo)) {
- buf->pts = av_rescale_q(s->first_pts, ctx->inputs[0]->time_base,
- outlink->time_base) + s->frames_out;
-
- if ((ret = ff_filter_frame(outlink, buf)) < 0)
- return ret;
-
- s->frames_out++;
- } else {
- /* This is the last frame, we may have to duplicate it to match
- * the last frame duration */
- int j;
- int eof_rounding = (s->eof_action == EOF_ACTION_PASS) ? AV_ROUND_UP : s->rounding;
- int delta = av_rescale_q_rnd(ctx->inputs[0]->current_pts - s->first_pts,
- ctx->inputs[0]->time_base,
- outlink->time_base, eof_rounding) - s->frames_out;
- av_log(ctx, AV_LOG_DEBUG, "EOF frames_out:%d delta:%d\n", s->frames_out, delta);
- /* if the delta is equal to 1, it means we just need to output
- * the last frame. Greater than 1 means we will need duplicate
- * delta-1 frames */
- if (delta > 0 ) {
- for (j = 0; j < delta; j++) {
- AVFrame *dup = av_frame_clone(buf);
-
- av_log(ctx, AV_LOG_DEBUG, "Duplicating frame.\n");
- dup->pts = av_rescale_q(s->first_pts, ctx->inputs[0]->time_base,
- outlink->time_base) + s->frames_out;
-
- if ((ret = ff_filter_frame(outlink, dup)) < 0)
- return ret;
-
- s->frames_out++;
- if (j > 0) s->dup++;
- }
- av_frame_free(&buf);
- } else {
- /* for delta less or equal to 0, we should drop the frame,
- * otherwise, we will have one or more extra frames */
- av_frame_free(&buf);
- s->drop++;
- }
- }
- }
- return 0;
- }
+ /* Must only be called when we have buffer room available */
+ av_assert1(s->frames_count < 2);
- return ret;
-}
+ ret = ff_inlink_consume_frame(inlink, &frame);
+ /* Caller must have run ff_inlink_check_available_frame first */
+ av_assert1(ret);
+ if (ret < 0)
+ return ret;
-static int write_to_fifo(AVFifoBuffer *fifo, AVFrame *buf)
-{
- int ret;
+ /* Convert frame pts to output timebase.
+ * The dance with offsets is required to match the rounding behaviour of the
+ * previous version of the fps filter when using the start_time option. */
+ in_pts = frame->pts;
+ frame->pts = s->out_pts_off + av_rescale_q_rnd(in_pts - s->in_pts_off,
+ inlink->time_base, outlink->time_base,
+ s->rounding | AV_ROUND_PASS_MINMAX);
- if (!av_fifo_space(fifo) &&
- (ret = av_fifo_realloc2(fifo, 2*av_fifo_size(fifo)))) {
- av_frame_free(&buf);
- return ret;
- }
+ av_log(ctx, AV_LOG_DEBUG, "Read frame with in pts %"PRId64", out pts %"PRId64"\n",
+ in_pts, frame->pts);
- av_fifo_generic_write(fifo, &buf, sizeof(buf), NULL);
- return 0;
+ s->frames[s->frames_count++] = frame;
+ s->frames_in++;
+
+ return 1;
}
-static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
+/* Write a frame to the output */
+static int write_frame(AVFilterContext *ctx, FPSContext *s, AVFilterLink *outlink, int *again)
{
- AVFilterContext *ctx = inlink->dst;
- FPSContext *s = ctx->priv;
- AVFilterLink *outlink = ctx->outputs[0];
- int64_t delta;
- int i, ret;
+ AVFrame *frame;
- s->frames_in++;
- /* discard frames until we get the first timestamp */
- if (s->first_pts == AV_NOPTS_VALUE) {
- if (buf->pts != AV_NOPTS_VALUE) {
- ret = write_to_fifo(s->fifo, buf);
- if (ret < 0)
- return ret;
+ av_assert1(s->frames_count == 2 || (s->status && s->frames_count == 1));
- if (s->start_time != DBL_MAX && s->start_time != AV_NOPTS_VALUE) {
- double first_pts = s->start_time * AV_TIME_BASE;
- first_pts = FFMIN(FFMAX(first_pts, INT64_MIN), INT64_MAX);
- s->first_pts = av_rescale_q(first_pts, AV_TIME_BASE_Q,
- inlink->time_base);
- av_log(ctx, AV_LOG_VERBOSE, "Set first pts to (in:%"PRId64" out:%"PRId64")\n",
- s->first_pts, av_rescale_q(first_pts, AV_TIME_BASE_Q,
- outlink->time_base));
- } else {
- s->first_pts = buf->pts;
- }
+ /* We haven't yet determined the pts of the first frame */
+ if (s->next_pts == AV_NOPTS_VALUE) {
+ if (s->frames[0]->pts != AV_NOPTS_VALUE) {
+ s->next_pts = s->frames[0]->pts;
+ av_log(ctx, AV_LOG_VERBOSE, "Set first pts to %"PRId64"\n", s->next_pts);
} else {
av_log(ctx, AV_LOG_WARNING, "Discarding initial frame(s) with no "
"timestamp.\n");
- av_frame_free(&buf);
- s->drop++;
+ frame = shift_frame(ctx, s);
+ av_frame_free(&frame);
+ *again = 1;
+ return 0;
}
- return 0;
}
- /* now wait for the next timestamp */
- if (buf->pts == AV_NOPTS_VALUE || av_fifo_size(s->fifo) <= 0) {
- return write_to_fifo(s->fifo, buf);
- }
+ /* There are two conditions where we want to drop a frame:
+ * - If we have two buffered frames and the second frame is acceptable
+ * as the next output frame, then drop the first buffered frame.
+ * - If we have status (EOF) set, drop frames when we hit the
+ * status timestamp. */
+ if ((s->frames_count == 2 && s->frames[1]->pts <= s->next_pts) ||
+ (s->status && s->status_pts <= s->next_pts)) {
+
+ frame = shift_frame(ctx, s);
+ av_frame_free(&frame);
+ *again = 1;
+ return 0;
- /* number of output frames */
- delta = av_rescale_q_rnd(buf->pts - s->first_pts, inlink->time_base,
- outlink->time_base, s->rounding) - s->frames_out ;
+ /* Output a copy of the first buffered frame */
+ } else {
+ frame = av_frame_clone(s->frames[0]);
+ if (!frame)
+ return AVERROR(ENOMEM);
+ frame->pts = s->next_pts++;
- if (delta < 1) {
- /* drop everything buffered except the last */
- int drop = av_fifo_size(s->fifo)/sizeof(AVFrame*);
+ av_log(ctx, AV_LOG_DEBUG, "Writing frame with pts %"PRId64" to pts %"PRId64"\n",
+ s->frames[0]->pts, frame->pts);
+ s->cur_frame_out++;
- av_log(ctx, AV_LOG_DEBUG, "Dropping %d frame(s).\n", drop);
- s->drop += drop;
+ return ff_filter_frame(outlink, frame);
+ }
+}
- flush_fifo(s->fifo);
- ret = write_to_fifo(s->fifo, buf);
+/* Convert status_pts to outlink timebase */
+static void update_eof_pts(AVFilterContext *ctx, FPSContext *s, AVFilterLink *inlink, AVFilterLink *outlink, int64_t status_pts)
+{
+ int eof_rounding = (s->eof_action == EOF_ACTION_PASS) ? AV_ROUND_UP : s->rounding;
+ s->status_pts = av_rescale_q_rnd(status_pts, inlink->time_base, outlink->time_base,
+ eof_rounding | AV_ROUND_PASS_MINMAX);
- return ret;
- }
+ av_log(ctx, AV_LOG_DEBUG, "EOF is at pts %"PRId64"\n", s->status_pts);
+}
- /* can output >= 1 frames */
- for (i = 0; i < delta; i++) {
- AVFrame *buf_out;
- av_fifo_generic_read(s->fifo, &buf_out, sizeof(buf_out), NULL);
+static int activate(AVFilterContext *ctx)
+{
+ FPSContext *s = ctx->priv;
+ AVFilterLink *inlink = ctx->inputs[0];
+ AVFilterLink *outlink = ctx->outputs[0];
- /* duplicate the frame if needed */
- if (!av_fifo_size(s->fifo) && i < delta - 1) {
- AVFrame *dup = av_frame_clone(buf_out);
+ int ret;
+ int again = 0;
+ int64_t status_pts;
- av_log(ctx, AV_LOG_DEBUG, "Duplicating frame.\n");
- if (dup)
- ret = write_to_fifo(s->fifo, dup);
- else
- ret = AVERROR(ENOMEM);
+ FF_FILTER_FORWARD_STATUS_BACK(outlink, inlink);
- if (ret < 0) {
- av_frame_free(&buf_out);
- av_frame_free(&buf);
- return ret;
- }
+ /* No buffered status: normal operation */
+ if (!s->status) {
- s->dup++;
+ /* Read available input frames if we have room */
+ while (s->frames_count < 2 && ff_inlink_check_available_frame(inlink)) {
+ ret = read_frame(ctx, s, inlink, outlink);
+ if (ret < 0)
+ return ret;
}
- buf_out->pts = av_rescale_q(s->first_pts, inlink->time_base,
- outlink->time_base) + s->frames_out;
-
- if ((ret = ff_filter_frame(outlink, buf_out)) < 0) {
- av_frame_free(&buf);
- return ret;
+ /* We do not yet have enough frames to produce output */
+ if (s->frames_count < 2) {
+ /* Check if we've hit EOF (or otherwise that an error status is set) */
+ ret = ff_inlink_acknowledge_status(inlink, &s->status, &status_pts);
+ if (ret > 0)
+ update_eof_pts(ctx, s, inlink, outlink, status_pts);
+
+ if (!ret) {
+ /* If someone wants us to output, we'd better ask for more input */
+ FF_FILTER_FORWARD_WANTED(outlink, inlink);
+ return 0;
+ }
}
+ }
- s->frames_out++;
+ /* Buffered frames are available, so generate an output frame */
+ if (s->frames_count > 0) {
+ ret = write_frame(ctx, s, outlink, &again);
+ /* Couldn't generate a frame, so schedule us to perform another step */
+ if (again)
+ ff_filter_set_ready(ctx, 100);
+ return ret;
}
- flush_fifo(s->fifo);
- ret = write_to_fifo(s->fifo, buf);
+ /* No frames left, so forward the status */
+ if (s->status && s->frames_count == 0) {
+ ff_outlink_set_status(outlink, s->status, s->next_pts);
+ return 0;
+ }
- return ret;
+ return FFERROR_NOT_READY;
}
static const AVFilterPad avfilter_vf_fps_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
- .filter_frame = filter_frame,
},
{ NULL }
};
@@ -324,8 +336,7 @@ static const AVFilterPad avfilter_vf_fps_outputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
- .request_frame = request_frame,
- .config_props = config_props
+ .config_props = config_props,
},
{ NULL }
};
@@ -337,6 +348,7 @@ AVFilter ff_vf_fps = {
.uninit = uninit,
.priv_size = sizeof(FPSContext),
.priv_class = &fps_class,
+ .activate = activate,
.inputs = avfilter_vf_fps_inputs,
.outputs = avfilter_vf_fps_outputs,
};
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_framerate.c b/chromium/third_party/ffmpeg/libavfilter/vf_framerate.c
index a5ae6ddb713..3e2615be5e6 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_framerate.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_framerate.c
@@ -38,41 +38,7 @@
#include "avfilter.h"
#include "internal.h"
#include "video.h"
-
-typedef struct FrameRateContext {
- const AVClass *class;
- // parameters
- AVRational dest_frame_rate; ///< output frames per second
- int flags; ///< flags affecting frame rate conversion algorithm
- double scene_score; ///< score that denotes a scene change has happened
- int interp_start; ///< start of range to apply linear interpolation (same bitdepth as input)
- int interp_end; ///< end of range to apply linear interpolation (same bitdepth as input)
- int interp_start_param; ///< start of range to apply linear interpolation
- int interp_end_param; ///< end of range to apply linear interpolation
-
- int line_size[4]; ///< bytes of pixel data per line for each plane
- int vsub;
-
- AVRational srce_time_base; ///< timebase of source
- AVRational dest_time_base; ///< timebase of destination
-
- av_pixelutils_sad_fn sad; ///< Sum of the absolute difference function (scene detect only)
- double prev_mafd; ///< previous MAFD (scene detect only)
-
- int max;
- int bitdepth;
- AVFrame *work;
-
- AVFrame *f0; ///< last frame
- AVFrame *f1; ///< current frame
- int64_t pts0; ///< last frame pts in dest_time_base
- int64_t pts1; ///< current frame pts in dest_time_base
- int64_t delta; ///< pts1 to pts0 delta
- double score; ///< scene change score (f0 to f1)
- int flush; ///< 1 if the filter is being flushed
- int64_t start_pts; ///< pts of the first output frame
- int64_t n; ///< output frame counter
-} FrameRateContext;
+#include "framerate.h"
#define OFFSET(x) offsetof(FrameRateContext, x)
#define V AV_OPT_FLAG_VIDEO_PARAM
@@ -82,8 +48,8 @@ typedef struct FrameRateContext {
static const AVOption framerate_options[] = {
{"fps", "required output frames per second rate", OFFSET(dest_frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str="50"}, 0, INT_MAX, V|F },
- {"interp_start", "point to start linear interpolation", OFFSET(interp_start_param),AV_OPT_TYPE_INT, {.i64=15}, 0, 255, V|F },
- {"interp_end", "point to end linear interpolation", OFFSET(interp_end_param), AV_OPT_TYPE_INT, {.i64=240}, 0, 255, V|F },
+ {"interp_start", "point to start linear interpolation", OFFSET(interp_start), AV_OPT_TYPE_INT, {.i64=15}, 0, 255, V|F },
+ {"interp_end", "point to end linear interpolation", OFFSET(interp_end), AV_OPT_TYPE_INT, {.i64=240}, 0, 255, V|F },
{"scene", "scene change level", OFFSET(scene_score), AV_OPT_TYPE_DOUBLE, {.dbl=8.2}, 0, INT_MAX, V|F },
{"flags", "set flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64=1}, 0, INT_MAX, V|F, "flags" },
@@ -173,13 +139,13 @@ typedef struct ThreadData {
uint16_t src1_factor, src2_factor;
} ThreadData;
-static int filter_slice8(AVFilterContext *ctx, void *arg, int job, int nb_jobs)
+static int filter_slice(AVFilterContext *ctx, void *arg, int job, int nb_jobs)
{
FrameRateContext *s = ctx->priv;
ThreadData *td = arg;
uint16_t src1_factor = td->src1_factor;
uint16_t src2_factor = td->src2_factor;
- int plane, line, pixel;
+ int plane;
for (plane = 0; plane < 4 && td->copy_src1->data[plane] && td->copy_src2->data[plane]; plane++) {
int cpy_line_width = s->line_size[plane];
@@ -196,84 +162,11 @@ static int filter_slice8(AVFilterContext *ctx, void *arg, int job, int nb_jobs)
cpy_src2_data += start * cpy_src2_line_size;
cpy_dst_data += start * cpy_dst_line_size;
- if (plane <1 || plane >2) {
- // luma or alpha
- for (line = start; line < end; line++) {
- for (pixel = 0; pixel < cpy_line_width; pixel++) {
- // integer version of (src1 * src1_factor) + (src2 + src2_factor) + 0.5
- // 0.5 is for rounding
- // 128 is the integer representation of 0.5 << 8
- cpy_dst_data[pixel] = ((cpy_src1_data[pixel] * src1_factor) + (cpy_src2_data[pixel] * src2_factor) + 128) >> 8;
- }
- cpy_src1_data += cpy_src1_line_size;
- cpy_src2_data += cpy_src2_line_size;
- cpy_dst_data += cpy_dst_line_size;
- }
- } else {
- // chroma
- for (line = start; line < end; line++) {
- for (pixel = 0; pixel < cpy_line_width; pixel++) {
- // as above
- // because U and V are based around 128 we have to subtract 128 from the components.
- // 32896 is the integer representation of 128.5 << 8
- cpy_dst_data[pixel] = (((cpy_src1_data[pixel] - 128) * src1_factor) + ((cpy_src2_data[pixel] - 128) * src2_factor) + 32896) >> 8;
- }
- cpy_src1_data += cpy_src1_line_size;
- cpy_src2_data += cpy_src2_line_size;
- cpy_dst_data += cpy_dst_line_size;
- }
- }
- }
-
- return 0;
-}
-
-static int filter_slice16(AVFilterContext *ctx, void *arg, int job, int nb_jobs)
-{
- FrameRateContext *s = ctx->priv;
- ThreadData *td = arg;
- uint16_t src1_factor = td->src1_factor;
- uint16_t src2_factor = td->src2_factor;
- const int half = s->max / 2;
- const int uv = (s->max + 1) * half;
- const int shift = s->bitdepth;
- int plane, line, pixel;
-
- for (plane = 0; plane < 4 && td->copy_src1->data[plane] && td->copy_src2->data[plane]; plane++) {
- int cpy_line_width = s->line_size[plane];
- const uint16_t *cpy_src1_data = (const uint16_t *)td->copy_src1->data[plane];
- int cpy_src1_line_size = td->copy_src1->linesize[plane] / 2;
- const uint16_t *cpy_src2_data = (const uint16_t *)td->copy_src2->data[plane];
- int cpy_src2_line_size = td->copy_src2->linesize[plane] / 2;
- int cpy_src_h = (plane > 0 && plane < 3) ? (td->copy_src1->height >> s->vsub) : (td->copy_src1->height);
- uint16_t *cpy_dst_data = (uint16_t *)s->work->data[plane];
- int cpy_dst_line_size = s->work->linesize[plane] / 2;
- const int start = (cpy_src_h * job ) / nb_jobs;
- const int end = (cpy_src_h * (job+1)) / nb_jobs;
- cpy_src1_data += start * cpy_src1_line_size;
- cpy_src2_data += start * cpy_src2_line_size;
- cpy_dst_data += start * cpy_dst_line_size;
-
- if (plane <1 || plane >2) {
- // luma or alpha
- for (line = start; line < end; line++) {
- for (pixel = 0; pixel < cpy_line_width; pixel++)
- cpy_dst_data[pixel] = ((cpy_src1_data[pixel] * src1_factor) + (cpy_src2_data[pixel] * src2_factor) + half) >> shift;
- cpy_src1_data += cpy_src1_line_size;
- cpy_src2_data += cpy_src2_line_size;
- cpy_dst_data += cpy_dst_line_size;
- }
- } else {
- // chroma
- for (line = start; line < end; line++) {
- for (pixel = 0; pixel < cpy_line_width; pixel++) {
- cpy_dst_data[pixel] = (((cpy_src1_data[pixel] - half) * src1_factor) + ((cpy_src2_data[pixel] - half) * src2_factor) + uv) >> shift;
- }
- cpy_src1_data += cpy_src1_line_size;
- cpy_src2_data += cpy_src2_line_size;
- cpy_dst_data += cpy_dst_line_size;
- }
- }
+ s->blend(cpy_src1_data, cpy_src1_line_size,
+ cpy_src2_data, cpy_src2_line_size,
+ cpy_dst_data, cpy_dst_line_size,
+ cpy_line_width, end - start,
+ src1_factor, src2_factor, s->blend_factor_max >> 1);
}
return 0;
@@ -298,7 +191,7 @@ static int blend_frames(AVFilterContext *ctx, int interpolate)
td.copy_src1 = s->f0;
td.copy_src2 = s->f1;
td.src2_factor = interpolate;
- td.src1_factor = s->max - td.src2_factor;
+ td.src1_factor = s->blend_factor_max - td.src2_factor;
// get work-space for output frame
s->work = ff_get_video_buffer(outlink, outlink->w, outlink->h);
@@ -308,7 +201,7 @@ static int blend_frames(AVFilterContext *ctx, int interpolate)
av_frame_copy_props(s->work, s->f0);
ff_dlog(ctx, "blend_frames() INTERPOLATE to create work frame\n");
- ctx->internal->execute(ctx, s->bitdepth == 8 ? filter_slice8 : filter_slice16, &td, NULL, FFMIN(outlink->h, ff_filter_get_nb_threads(ctx)));
+ ctx->internal->execute(ctx, filter_slice, &td, NULL, FFMIN(FFMAX(1, outlink->h >> 2), ff_filter_get_nb_threads(ctx)));
return 1;
}
return 0;
@@ -318,7 +211,7 @@ static int process_work_frame(AVFilterContext *ctx)
{
FrameRateContext *s = ctx->priv;
int64_t work_pts;
- int interpolate;
+ int64_t interpolate, interpolate8;
int ret;
if (!s->f1)
@@ -337,18 +230,19 @@ static int process_work_frame(AVFilterContext *ctx)
if (work_pts >= s->pts1 + s->delta && s->flush)
return 0;
- interpolate = av_rescale(work_pts - s->pts0, s->max, s->delta);
- ff_dlog(ctx, "process_work_frame() interpolate:%d/%d\n", interpolate, s->max);
- if (interpolate > s->interp_end) {
+ interpolate = av_rescale(work_pts - s->pts0, s->blend_factor_max, s->delta);
+ interpolate8 = av_rescale(work_pts - s->pts0, 256, s->delta);
+ ff_dlog(ctx, "process_work_frame() interpolate: %"PRId64"/256\n", interpolate8);
+ if (interpolate >= s->blend_factor_max || interpolate8 > s->interp_end) {
s->work = av_frame_clone(s->f1);
- } else if (interpolate < s->interp_start) {
+ } else if (interpolate <= 0 || interpolate8 < s->interp_start) {
s->work = av_frame_clone(s->f0);
} else {
ret = blend_frames(ctx, interpolate);
if (ret < 0)
return ret;
if (ret == 0)
- s->work = av_frame_clone(interpolate > (s->max >> 1) ? s->f1 : s->f0);
+ s->work = av_frame_clone(interpolate > (s->blend_factor_max >> 1) ? s->f1 : s->f0);
}
}
@@ -396,6 +290,50 @@ static int query_formats(AVFilterContext *ctx)
return ff_set_common_formats(ctx, fmts_list);
}
+static void blend_frames_c(BLEND_FUNC_PARAMS)
+{
+ int line, pixel;
+ for (line = 0; line < height; line++) {
+ for (pixel = 0; pixel < width; pixel++)
+ dst[pixel] = ((src1[pixel] * factor1) + (src2[pixel] * factor2) + half) >> BLEND_FACTOR_DEPTH8;
+ src1 += src1_linesize;
+ src2 += src2_linesize;
+ dst += dst_linesize;
+ }
+}
+
+static void blend_frames16_c(BLEND_FUNC_PARAMS)
+{
+ int line, pixel;
+ uint16_t *dstw = (uint16_t *)dst;
+ uint16_t *src1w = (uint16_t *)src1;
+ uint16_t *src2w = (uint16_t *)src2;
+ width /= 2;
+ src1_linesize /= 2;
+ src2_linesize /= 2;
+ dst_linesize /= 2;
+ for (line = 0; line < height; line++) {
+ for (pixel = 0; pixel < width; pixel++)
+ dstw[pixel] = ((src1w[pixel] * factor1) + (src2w[pixel] * factor2) + half) >> BLEND_FACTOR_DEPTH16;
+ src1w += src1_linesize;
+ src2w += src2_linesize;
+ dstw += dst_linesize;
+ }
+}
+
+void ff_framerate_init(FrameRateContext *s)
+{
+ if (s->bitdepth == 8) {
+ s->blend_factor_max = 1 << BLEND_FACTOR_DEPTH8;
+ s->blend = blend_frames_c;
+ } else {
+ s->blend_factor_max = 1 << BLEND_FACTOR_DEPTH16;
+ s->blend = blend_frames16_c;
+ }
+ if (ARCH_X86)
+ ff_framerate_init_x86(s);
+}
+
static int config_input(AVFilterLink *inlink)
{
AVFilterContext *ctx = inlink->dst;
@@ -410,8 +348,6 @@ static int config_input(AVFilterLink *inlink)
s->bitdepth = pix_desc->comp[0].depth;
s->vsub = pix_desc->log2_chroma_h;
- s->interp_start = s->interp_start_param << (s->bitdepth - 8);
- s->interp_end = s->interp_end_param << (s->bitdepth - 8);
s->sad = av_pixelutils_get_sad_fn(3, 3, 2, s); // 8x8 both sources aligned
if (!s->sad)
@@ -419,7 +355,7 @@ static int config_input(AVFilterLink *inlink)
s->srce_time_base = inlink->time_base;
- s->max = 1 << (s->bitdepth);
+ ff_framerate_init(s);
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_hwmap.c b/chromium/third_party/ffmpeg/libavfilter/vf_hwmap.c
index d5fc3c46e62..290559a06ab 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_hwmap.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_hwmap.c
@@ -143,7 +143,9 @@ static int hwmap_config_output(AVFilterLink *outlink)
frames->sw_format = hwfc->sw_format;
frames->width = hwfc->width;
frames->height = hwfc->height;
- frames->initial_pool_size = 64;
+
+ if (avctx->extra_hw_frames >= 0)
+ frames->initial_pool_size = 2 + avctx->extra_hw_frames;
err = av_hwframe_ctx_init(ctx->hwframes_ref);
if (err < 0) {
@@ -223,6 +225,9 @@ static int hwmap_config_output(AVFilterLink *outlink)
hwfc->width = inlink->w;
hwfc->height = inlink->h;
+ if (avctx->extra_hw_frames >= 0)
+ hwfc->initial_pool_size = 2 + avctx->extra_hw_frames;
+
err = av_hwframe_ctx_init(ctx->hwframes_ref);
if (err < 0) {
av_log(avctx, AV_LOG_ERROR, "Failed to create frame "
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_hwupload.c b/chromium/third_party/ffmpeg/libavfilter/vf_hwupload.c
index 157686b7b3b..50bc7e10f6e 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_hwupload.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_hwupload.c
@@ -131,6 +131,9 @@ static int hwupload_config_output(AVFilterLink *outlink)
ctx->hwframes->width = inlink->w;
ctx->hwframes->height = inlink->h;
+ if (avctx->extra_hw_frames >= 0)
+ ctx->hwframes->initial_pool_size = 2 + avctx->extra_hw_frames;
+
err = av_hwframe_ctx_init(ctx->hwframes_ref);
if (err < 0)
goto fail;
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_misc_vaapi.c b/chromium/third_party/ffmpeg/libavfilter/vf_misc_vaapi.c
index 316f15e38b5..30b808a9934 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_misc_vaapi.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_misc_vaapi.c
@@ -38,13 +38,13 @@
#define SHARPNESS_DEFAULT 44
typedef struct DenoiseVAAPIContext {
- VAAPIVPPContext vpp_ctx; // must be the first fileld
+ VAAPIVPPContext vpp_ctx; // must be the first field
int denoise; // enable denoise algo.
} DenoiseVAAPIContext;
typedef struct SharpnessVAAPIContext {
- VAAPIVPPContext vpp_ctx; // must be the first fileld
+ VAAPIVPPContext vpp_ctx; // must be the first field
int sharpness; // enable sharpness.
} SharpnessVAAPIContext;
@@ -71,24 +71,22 @@ static int denoise_vaapi_build_filter_params(AVFilterContext *avctx)
VAProcFilterParameterBuffer denoise;
- if (ctx->denoise != DENOISE_DEFAULT) {
- vas = vaQueryVideoProcFilterCaps(vpp_ctx->hwctx->display, vpp_ctx->va_context,
- VAProcFilterNoiseReduction,
- &caps, &num_caps);
- if (vas != VA_STATUS_SUCCESS) {
- av_log(avctx, AV_LOG_ERROR, "Failed to query denoise caps "
- "context: %d (%s).\n", vas, vaErrorStr(vas));
- return AVERROR(EIO);
- }
-
- denoise.type = VAProcFilterNoiseReduction;
- denoise.value = map(ctx->denoise, DENOISE_MIN, DENOISE_MAX,
- caps.range.min_value,
- caps.range.max_value);
- ff_vaapi_vpp_make_param_buffers(avctx, VAProcFilterParameterBufferType,
- &denoise, sizeof(denoise), 1);
+ vas = vaQueryVideoProcFilterCaps(vpp_ctx->hwctx->display, vpp_ctx->va_context,
+ VAProcFilterNoiseReduction,
+ &caps, &num_caps);
+ if (vas != VA_STATUS_SUCCESS) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to query denoise caps "
+ "context: %d (%s).\n", vas, vaErrorStr(vas));
+ return AVERROR(EIO);
}
+ denoise.type = VAProcFilterNoiseReduction;
+ denoise.value = map(ctx->denoise, DENOISE_MIN, DENOISE_MAX,
+ caps.range.min_value,
+ caps.range.max_value);
+ ff_vaapi_vpp_make_param_buffers(avctx, VAProcFilterParameterBufferType,
+ &denoise, sizeof(denoise), 1);
+
return 0;
}
@@ -104,26 +102,24 @@ static int sharpness_vaapi_build_filter_params(AVFilterContext *avctx)
VAProcFilterParameterBuffer sharpness;
- if (ctx->sharpness != SHARPNESS_DEFAULT) {
- vas = vaQueryVideoProcFilterCaps(vpp_ctx->hwctx->display, vpp_ctx->va_context,
- VAProcFilterSharpening,
- &caps, &num_caps);
- if (vas != VA_STATUS_SUCCESS) {
- av_log(avctx, AV_LOG_ERROR, "Failed to query sharpness caps "
- "context: %d (%s).\n", vas, vaErrorStr(vas));
- return AVERROR(EIO);
- }
-
- sharpness.type = VAProcFilterSharpening;
- sharpness.value = map(ctx->sharpness,
- SHARPNESS_MIN, SHARPNESS_MAX,
- caps.range.min_value,
- caps.range.max_value);
- ff_vaapi_vpp_make_param_buffers(avctx,
- VAProcFilterParameterBufferType,
- &sharpness, sizeof(sharpness), 1);
+ vas = vaQueryVideoProcFilterCaps(vpp_ctx->hwctx->display, vpp_ctx->va_context,
+ VAProcFilterSharpening,
+ &caps, &num_caps);
+ if (vas != VA_STATUS_SUCCESS) {
+ av_log(avctx, AV_LOG_ERROR, "Failed to query sharpness caps "
+ "context: %d (%s).\n", vas, vaErrorStr(vas));
+ return AVERROR(EIO);
}
+ sharpness.type = VAProcFilterSharpening;
+ sharpness.value = map(ctx->sharpness,
+ SHARPNESS_MIN, SHARPNESS_MAX,
+ caps.range.min_value,
+ caps.range.max_value);
+ ff_vaapi_vpp_make_param_buffers(avctx,
+ VAProcFilterParameterBufferType,
+ &sharpness, sizeof(sharpness), 1);
+
return 0;
}
@@ -230,7 +226,7 @@ static av_cold int sharpness_vaapi_init(AVFilterContext *avctx)
}
#define DOFFSET(x) offsetof(DenoiseVAAPIContext, x)
-#define FLAGS (AV_OPT_FLAG_VIDEO_PARAM)
+#define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM)
static const AVOption denoise_vaapi_options[] = {
{ "denoise", "denoise level",
DOFFSET(denoise), AV_OPT_TYPE_INT, { .i64 = DENOISE_DEFAULT }, DENOISE_MIN, DENOISE_MAX, .flags = FLAGS },
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_overlay.c b/chromium/third_party/ffmpeg/libavfilter/vf_overlay.c
index aa5835ae3ab..c6a6ac82f39 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_overlay.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_overlay.c
@@ -149,6 +149,7 @@ static void eval_expr(AVFilterContext *ctx)
s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL);
s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, NULL);
+ /* It is necessary if x is expressed from y */
s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL);
s->x = normalize_xy(s->var_values[VAR_X], s->hsub);
s->y = normalize_xy(s->var_values[VAR_Y], s->vsub);
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_procamp_vaapi.c b/chromium/third_party/ffmpeg/libavfilter/vf_procamp_vaapi.c
index 10f9a6ba0c6..10eccbe97d7 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_procamp_vaapi.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_procamp_vaapi.c
@@ -44,10 +44,8 @@
#define SATURATION_MAX 10.0F
#define SATURATION_DEFAULT 1.0F
-#define EPSILON 0.00001F
-
typedef struct ProcampVAAPIContext {
- VAAPIVPPContext vpp_ctx; // must be the first fileld
+ VAAPIVPPContext vpp_ctx; // must be the first field
float bright;
float hue;
@@ -65,11 +63,6 @@ static float map(float x, float in_min, float in_max, float out_min, float out_m
return (float)output;
}
-static int fequal(float a, float b)
-{
- return fabs(a-b) < EPSILON;
-}
-
static int procamp_vaapi_build_filter_params(AVFilterContext *avctx)
{
VAAPIVPPContext *vpp_ctx = avctx->priv;
@@ -93,41 +86,37 @@ static int procamp_vaapi_build_filter_params(AVFilterContext *avctx)
return AVERROR(EIO);
}
- if (!fequal(ctx->bright, BRIGHTNESS_DEFAULT)) {
- procamp_params[i].type = VAProcFilterColorBalance;
- procamp_params[i].attrib = VAProcColorBalanceBrightness;
- procamp_params[i].value = map(ctx->bright, BRIGHTNESS_MIN, BRIGHTNESS_MAX,
- procamp_caps[VAProcColorBalanceBrightness-1].range.min_value,
- procamp_caps[VAProcColorBalanceBrightness-1].range.max_value);
- i++;
- }
-
- if (!fequal(ctx->contrast, CONTRAST_DEFAULT)) {
- procamp_params[i].type = VAProcFilterColorBalance;
- procamp_params[i].attrib = VAProcColorBalanceContrast;
- procamp_params[i].value = map(ctx->contrast, CONTRAST_MIN, CONTRAST_MAX,
- procamp_caps[VAProcColorBalanceContrast-1].range.min_value,
- procamp_caps[VAProcColorBalanceContrast-1].range.max_value);
- i++;
- }
-
- if (!fequal(ctx->hue, HUE_DEFAULT)) {
- procamp_params[i].type = VAProcFilterColorBalance;
- procamp_params[i].attrib = VAProcColorBalanceHue;
- procamp_params[i].value = map(ctx->hue, HUE_MIN, HUE_MAX,
- procamp_caps[VAProcColorBalanceHue-1].range.min_value,
- procamp_caps[VAProcColorBalanceHue-1].range.max_value);
- i++;
- }
-
- if (!fequal(ctx->saturation, SATURATION_DEFAULT)) {
- procamp_params[i].type = VAProcFilterColorBalance;
- procamp_params[i].attrib = VAProcColorBalanceSaturation;
- procamp_params[i].value = map(ctx->saturation, SATURATION_MIN, SATURATION_MAX,
- procamp_caps[VAProcColorBalanceSaturation-1].range.min_value,
- procamp_caps[VAProcColorBalanceSaturation-1].range.max_value);
- i++;
- }
+ /* brightness */
+ procamp_params[i].type = VAProcFilterColorBalance;
+ procamp_params[i].attrib = VAProcColorBalanceBrightness;
+ procamp_params[i].value = map(ctx->bright, BRIGHTNESS_MIN, BRIGHTNESS_MAX,
+ procamp_caps[VAProcColorBalanceBrightness-1].range.min_value,
+ procamp_caps[VAProcColorBalanceBrightness-1].range.max_value);
+ i++;
+
+ /* contrast */
+ procamp_params[i].type = VAProcFilterColorBalance;
+ procamp_params[i].attrib = VAProcColorBalanceContrast;
+ procamp_params[i].value = map(ctx->contrast, CONTRAST_MIN, CONTRAST_MAX,
+ procamp_caps[VAProcColorBalanceContrast-1].range.min_value,
+ procamp_caps[VAProcColorBalanceContrast-1].range.max_value);
+ i++;
+
+ /* hue */
+ procamp_params[i].type = VAProcFilterColorBalance;
+ procamp_params[i].attrib = VAProcColorBalanceHue;
+ procamp_params[i].value = map(ctx->hue, HUE_MIN, HUE_MAX,
+ procamp_caps[VAProcColorBalanceHue-1].range.min_value,
+ procamp_caps[VAProcColorBalanceHue-1].range.max_value);
+ i++;
+
+ /* saturation */
+ procamp_params[i].type = VAProcFilterColorBalance;
+ procamp_params[i].attrib = VAProcColorBalanceSaturation;
+ procamp_params[i].value = map(ctx->saturation, SATURATION_MIN, SATURATION_MAX,
+ procamp_caps[VAProcColorBalanceSaturation-1].range.min_value,
+ procamp_caps[VAProcColorBalanceSaturation-1].range.max_value);
+ i++;
return ff_vaapi_vpp_make_param_buffers(avctx,
VAProcFilterParameterBufferType,
@@ -225,7 +214,7 @@ static av_cold int procamp_vaapi_init(AVFilterContext *avctx)
}
#define OFFSET(x) offsetof(ProcampVAAPIContext, x)
-#define FLAGS (AV_OPT_FLAG_VIDEO_PARAM)
+#define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM)
static const AVOption procamp_vaapi_options[] = {
{ "b", "Output video brightness",
OFFSET(bright), AV_OPT_TYPE_FLOAT, { .dbl = BRIGHTNESS_DEFAULT }, BRIGHTNESS_MIN, BRIGHTNESS_MAX, .flags = FLAGS },
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_scale_qsv.c b/chromium/third_party/ffmpeg/libavfilter/vf_scale_qsv.c
index a5f5be7d66d..c6f683e6fa3 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_scale_qsv.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_scale_qsv.c
@@ -71,7 +71,6 @@ enum var_name {
typedef struct QSVScaleContext {
const AVClass *class;
- AVBufferRef *out_frames_ref;
/* a clone of the main session, used internally for scaling */
mfxSession session;
@@ -134,7 +133,6 @@ static void qsvscale_uninit(AVFilterContext *ctx)
MFXClose(s->session);
s->session = NULL;
}
- av_buffer_unref(&s->out_frames_ref);
av_freep(&s->mem_ids_in);
av_freep(&s->mem_ids_out);
@@ -165,6 +163,7 @@ static int init_out_pool(AVFilterContext *ctx,
int out_width, int out_height)
{
QSVScaleContext *s = ctx->priv;
+ AVFilterLink *outlink = ctx->outputs[0];
AVHWFramesContext *in_frames_ctx;
AVHWFramesContext *out_frames_ctx;
@@ -185,21 +184,25 @@ static int init_out_pool(AVFilterContext *ctx,
in_format = in_frames_ctx->sw_format;
out_format = (s->format == AV_PIX_FMT_NONE) ? in_format : s->format;
- s->out_frames_ref = av_hwframe_ctx_alloc(in_frames_ctx->device_ref);
- if (!s->out_frames_ref)
+ outlink->hw_frames_ctx = av_hwframe_ctx_alloc(in_frames_ctx->device_ref);
+ if (!outlink->hw_frames_ctx)
return AVERROR(ENOMEM);
- out_frames_ctx = (AVHWFramesContext*)s->out_frames_ref->data;
+ out_frames_ctx = (AVHWFramesContext*)outlink->hw_frames_ctx->data;
out_frames_hwctx = out_frames_ctx->hwctx;
out_frames_ctx->format = AV_PIX_FMT_QSV;
out_frames_ctx->width = FFALIGN(out_width, 32);
out_frames_ctx->height = FFALIGN(out_height, 32);
out_frames_ctx->sw_format = out_format;
- out_frames_ctx->initial_pool_size = 32;
+ out_frames_ctx->initial_pool_size = 4;
out_frames_hwctx->frame_type = in_frames_hwctx->frame_type;
- ret = av_hwframe_ctx_init(s->out_frames_ref);
+ ret = ff_filter_init_hw_frames(ctx, outlink, 32);
+ if (ret < 0)
+ return ret;
+
+ ret = av_hwframe_ctx_init(outlink->hw_frames_ctx);
if (ret < 0)
return ret;
@@ -266,7 +269,7 @@ static int init_out_session(AVFilterContext *ctx)
QSVScaleContext *s = ctx->priv;
AVHWFramesContext *in_frames_ctx = (AVHWFramesContext*)ctx->inputs[0]->hw_frames_ctx->data;
- AVHWFramesContext *out_frames_ctx = (AVHWFramesContext*)s->out_frames_ref->data;
+ AVHWFramesContext *out_frames_ctx = (AVHWFramesContext*)ctx->outputs[0]->hw_frames_ctx->data;
AVQSVFramesContext *in_frames_hwctx = in_frames_ctx->hwctx;
AVQSVFramesContext *out_frames_hwctx = out_frames_ctx->hwctx;
AVQSVDeviceContext *device_hwctx = in_frames_ctx->device_ctx->hwctx;
@@ -407,8 +410,6 @@ static int init_out_session(AVFilterContext *ctx)
static int init_scale_session(AVFilterContext *ctx, int in_width, int in_height,
int out_width, int out_height)
{
- QSVScaleContext *s = ctx->priv;
-
int ret;
qsvscale_uninit(ctx);
@@ -421,11 +422,6 @@ static int init_scale_session(AVFilterContext *ctx, int in_width, int in_height,
if (ret < 0)
return ret;
- av_buffer_unref(&ctx->outputs[0]->hw_frames_ctx);
- ctx->outputs[0]->hw_frames_ctx = av_buffer_ref(s->out_frames_ref);
- if (!ctx->outputs[0]->hw_frames_ctx)
- return AVERROR(ENOMEM);
-
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_scale_vaapi.c b/chromium/third_party/ffmpeg/libavfilter/vf_scale_vaapi.c
index d349ff0f900..c19e23ccd02 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_scale_vaapi.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_scale_vaapi.c
@@ -31,7 +31,7 @@
#include "vaapi_vpp.h"
typedef struct ScaleVAAPIContext {
- VAAPIVPPContext vpp_ctx; // must be the first fileld
+ VAAPIVPPContext vpp_ctx; // must be the first field
char *output_format_string;
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_transpose.c b/chromium/third_party/ffmpeg/libavfilter/vf_transpose.c
index 982fb0c8ca4..74a4bbcf58b 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_transpose.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_transpose.c
@@ -27,6 +27,7 @@
#include <stdio.h>
+#include "libavutil/avassert.h"
#include "libavutil/imgutils.h"
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
@@ -51,19 +52,24 @@ enum TransposeDir {
TRANSPOSE_CLOCK_FLIP,
};
+typedef struct TransVtable {
+ void (*transpose_8x8)(uint8_t *src, ptrdiff_t src_linesize,
+ uint8_t *dst, ptrdiff_t dst_linesize);
+ void (*transpose_block)(uint8_t *src, ptrdiff_t src_linesize,
+ uint8_t *dst, ptrdiff_t dst_linesize,
+ int w, int h);
+} TransVtable;
+
typedef struct TransContext {
const AVClass *class;
int hsub, vsub;
+ int planes;
int pixsteps[4];
int passthrough; ///< PassthroughType, landscape passthrough mode enabled
int dir; ///< TransposeDir
- void (*transpose_8x8)(uint8_t *src, ptrdiff_t src_linesize,
- uint8_t *dst, ptrdiff_t dst_linesize);
- void (*transpose_block)(uint8_t *src, ptrdiff_t src_linesize,
- uint8_t *dst, ptrdiff_t dst_linesize,
- int w, int h);
+ TransVtable vtables[4];
} TransContext;
static int query_formats(AVFilterContext *ctx)
@@ -215,6 +221,10 @@ static int config_props_output(AVFilterLink *outlink)
s->hsub = desc_in->log2_chroma_w;
s->vsub = desc_in->log2_chroma_h;
+ s->planes = av_pix_fmt_count_planes(outlink->format);
+
+ av_assert0(desc_in->nb_components == desc_out->nb_components);
+
av_image_fill_max_pixsteps(s->pixsteps, NULL, desc_out);
@@ -227,19 +237,22 @@ static int config_props_output(AVFilterLink *outlink)
else
outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
- switch (s->pixsteps[0]) {
- case 1: s->transpose_block = transpose_block_8_c;
- s->transpose_8x8 = transpose_8x8_8_c; break;
- case 2: s->transpose_block = transpose_block_16_c;
- s->transpose_8x8 = transpose_8x8_16_c; break;
- case 3: s->transpose_block = transpose_block_24_c;
- s->transpose_8x8 = transpose_8x8_24_c; break;
- case 4: s->transpose_block = transpose_block_32_c;
- s->transpose_8x8 = transpose_8x8_32_c; break;
- case 6: s->transpose_block = transpose_block_48_c;
- s->transpose_8x8 = transpose_8x8_48_c; break;
- case 8: s->transpose_block = transpose_block_64_c;
- s->transpose_8x8 = transpose_8x8_64_c; break;
+ for (int i = 0; i < 4; i++) {
+ TransVtable *v = &s->vtables[i];
+ switch (s->pixsteps[i]) {
+ case 1: v->transpose_block = transpose_block_8_c;
+ v->transpose_8x8 = transpose_8x8_8_c; break;
+ case 2: v->transpose_block = transpose_block_16_c;
+ v->transpose_8x8 = transpose_8x8_16_c; break;
+ case 3: v->transpose_block = transpose_block_24_c;
+ v->transpose_8x8 = transpose_8x8_24_c; break;
+ case 4: v->transpose_block = transpose_block_32_c;
+ v->transpose_8x8 = transpose_8x8_32_c; break;
+ case 6: v->transpose_block = transpose_block_48_c;
+ v->transpose_8x8 = transpose_8x8_48_c; break;
+ case 8: v->transpose_block = transpose_block_64_c;
+ v->transpose_8x8 = transpose_8x8_64_c; break;
+ }
}
av_log(ctx, AV_LOG_VERBOSE,
@@ -272,7 +285,7 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr,
AVFrame *in = td->in;
int plane;
- for (plane = 0; out->data[plane]; plane++) {
+ for (plane = 0; plane < s->planes; plane++) {
int hsub = plane == 1 || plane == 2 ? s->hsub : 0;
int vsub = plane == 1 || plane == 2 ? s->vsub : 0;
int pixstep = s->pixsteps[plane];
@@ -284,6 +297,7 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr,
uint8_t *dst, *src;
int dstlinesize, srclinesize;
int x, y;
+ TransVtable *v = &s->vtables[plane];
dstlinesize = out->linesize[plane];
dst = out->data[plane] + start * dstlinesize;
@@ -302,20 +316,20 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr,
for (y = start; y < end - 7; y += 8) {
for (x = 0; x < outw - 7; x += 8) {
- s->transpose_8x8(src + x * srclinesize + y * pixstep,
+ v->transpose_8x8(src + x * srclinesize + y * pixstep,
srclinesize,
dst + (y - start) * dstlinesize + x * pixstep,
dstlinesize);
}
if (outw - x > 0 && end - y > 0)
- s->transpose_block(src + x * srclinesize + y * pixstep,
+ v->transpose_block(src + x * srclinesize + y * pixstep,
srclinesize,
dst + (y - start) * dstlinesize + x * pixstep,
dstlinesize, outw - x, end - y);
}
if (end - y > 0)
- s->transpose_block(src + 0 * srclinesize + y * pixstep,
+ v->transpose_block(src + 0 * srclinesize + y * pixstep,
srclinesize,
dst + (y - start) * dstlinesize + 0 * pixstep,
dstlinesize, outw, end - y);
diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_vaguedenoiser.c b/chromium/third_party/ffmpeg/libavfilter/vf_vaguedenoiser.c
index 2b93e70e57d..b323ce54796 100644
--- a/chromium/third_party/ffmpeg/libavfilter/vf_vaguedenoiser.c
+++ b/chromium/third_party/ffmpeg/libavfilter/vf_vaguedenoiser.c
@@ -42,6 +42,7 @@ typedef struct VagueDenoiserContext {
int planes;
int depth;
+ int bpc;
int peak;
int nb_planes;
int planeheight[4];
@@ -135,6 +136,7 @@ static int config_input(AVFilterLink *inlink)
int p, i, nsteps_width, nsteps_height, nsteps_max;
s->depth = desc->comp[0].depth;
+ s->bpc = (s->depth + 7) / 8;
s->nb_planes = desc->nb_components;
s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
@@ -410,7 +412,7 @@ static void filter(VagueDenoiserContext *s, AVFrame *in, AVFrame *out)
if (!((1 << p) & s->planes)) {
av_image_copy_plane(out->data[p], out->linesize[p], in->data[p], in->linesize[p],
- s->planewidth[p], s->planeheight[p]);
+ s->planewidth[p] * s->bpc, s->planeheight[p]);
continue;
}
diff --git a/chromium/third_party/ffmpeg/libavfilter/x86/Makefile b/chromium/third_party/ffmpeg/libavfilter/x86/Makefile
index 2fc5c62644d..4d4c5e503a9 100644
--- a/chromium/third_party/ffmpeg/libavfilter/x86/Makefile
+++ b/chromium/third_party/ffmpeg/libavfilter/x86/Makefile
@@ -5,6 +5,7 @@ OBJS-$(CONFIG_COLORSPACE_FILTER) += x86/colorspacedsp_init.o
OBJS-$(CONFIG_EQ_FILTER) += x86/vf_eq.o
OBJS-$(CONFIG_FSPP_FILTER) += x86/vf_fspp_init.o
OBJS-$(CONFIG_GRADFUN_FILTER) += x86/vf_gradfun_init.o
+OBJS-$(CONFIG_FRAMERATE_FILTER) += x86/vf_framerate_init.o
OBJS-$(CONFIG_HFLIP_FILTER) += x86/vf_hflip_init.o
OBJS-$(CONFIG_HQDN3D_FILTER) += x86/vf_hqdn3d_init.o
OBJS-$(CONFIG_IDET_FILTER) += x86/vf_idet_init.o
@@ -31,6 +32,7 @@ X86ASM-OBJS-$(CONFIG_AFIR_FILTER) += x86/af_afir.o
X86ASM-OBJS-$(CONFIG_BLEND_FILTER) += x86/vf_blend.o
X86ASM-OBJS-$(CONFIG_BWDIF_FILTER) += x86/vf_bwdif.o
X86ASM-OBJS-$(CONFIG_COLORSPACE_FILTER) += x86/colorspacedsp.o
+X86ASM-OBJS-$(CONFIG_FRAMERATE_FILTER) += x86/vf_framerate.o
X86ASM-OBJS-$(CONFIG_FSPP_FILTER) += x86/vf_fspp.o
X86ASM-OBJS-$(CONFIG_GRADFUN_FILTER) += x86/vf_gradfun.o
X86ASM-OBJS-$(CONFIG_HFLIP_FILTER) += x86/vf_hflip.o
diff --git a/chromium/third_party/ffmpeg/libavfilter/x86/vf_blend.asm b/chromium/third_party/ffmpeg/libavfilter/x86/vf_blend.asm
index 4916aaf251e..5d9a9091929 100644
--- a/chromium/third_party/ffmpeg/libavfilter/x86/vf_blend.asm
+++ b/chromium/third_party/ffmpeg/libavfilter/x86/vf_blend.asm
@@ -2,6 +2,8 @@
;* x86-optimized functions for blend filter
;*
;* Copyright (C) 2015 Paul B Mahol
+;* Copyright (C) 2018 Henrik Gramner
+;* Copyright (C) 2018 Jokyo Images
;*
;* This file is part of FFmpeg.
;*
@@ -34,10 +36,13 @@ pb_255: times 16 db 255
SECTION .text
-%macro BLEND_INIT 2
+%macro BLEND_INIT 2-3
%if ARCH_X86_64
cglobal blend_%1, 6, 9, %2, top, top_linesize, bottom, bottom_linesize, dst, dst_linesize, width, end, x
mov widthd, dword widthm
+ %if %0 == 3; is 16 bit
+ add widthq, widthq ; doesn't compile on x86_32
+ %endif
%else
cglobal blend_%1, 5, 7, %2, top, top_linesize, bottom, bottom_linesize, dst, end, x
%define dst_linesizeq r5mp
@@ -59,8 +64,8 @@ cglobal blend_%1, 5, 7, %2, top, top_linesize, bottom, bottom_linesize, dst, end
REP_RET
%endmacro
-%macro BLEND_SIMPLE 2
-BLEND_INIT %1, 2
+%macro BLEND_SIMPLE 2-3
+BLEND_INIT %1, 2, %3
.nextrow:
mov xq, widthq
@@ -74,39 +79,36 @@ BLEND_INIT %1, 2
BLEND_END
%endmacro
-INIT_XMM sse2
-BLEND_SIMPLE xor, xor
-BLEND_SIMPLE or, or
-BLEND_SIMPLE and, and
-BLEND_SIMPLE addition, addusb
-BLEND_SIMPLE subtract, subusb
-BLEND_SIMPLE darken, minub
-BLEND_SIMPLE lighten, maxub
-
-BLEND_INIT grainextract, 4
- pxor m2, m2
- mova m3, [pw_128]
+%macro GRAINEXTRACT 0
+BLEND_INIT grainextract, 6
+ pxor m4, m4
+ VBROADCASTI128 m5, [pw_128]
.nextrow:
mov xq, widthq
-
.loop:
- movh m0, [topq + xq]
- movh m1, [bottomq + xq]
- punpcklbw m0, m2
- punpcklbw m1, m2
- paddw m0, m3
- psubw m0, m1
- packuswb m0, m0
- movh [dstq + xq], m0
- add xq, mmsize / 2
+ movu m1, [topq + xq]
+ movu m3, [bottomq + xq]
+ punpcklbw m0, m1, m4
+ punpckhbw m1, m4
+ punpcklbw m2, m3, m4
+ punpckhbw m3, m4
+
+ paddw m0, m5
+ paddw m1, m5
+ psubw m0, m2
+ psubw m1, m3
+
+ packuswb m0, m1
+ mova [dstq + xq], m0
+ add xq, mmsize
jl .loop
BLEND_END
+%endmacro
%macro MULTIPLY 3 ; a, b, pw_1
pmullw %1, %2 ; xxxxxxxx a * b
paddw %1, %3
- mova %2, %1
- psrlw %2, 8
+ psrlw %2, %1, 8
paddw %1, %2
psrlw %1, 8 ; 00xx00xx a * b / 255
%endmacro
@@ -118,92 +120,112 @@ BLEND_END
pxor %1, %4 ; 00xx00xx 255 - x / 255
%endmacro
-BLEND_INIT multiply, 4
- pxor m2, m2
- mova m3, [pw_1]
+%macro BLEND_MULTIPLY 0
+BLEND_INIT multiply, 6
+ pxor m4, m4
+ VBROADCASTI128 m5, [pw_1]
.nextrow:
mov xq, widthq
.loop:
- ; word
- ; |--|
- movh m0, [topq + xq] ; 0000xxxx
- movh m1, [bottomq + xq]
- punpcklbw m0, m2 ; 00xx00xx
- punpcklbw m1, m2
-
- MULTIPLY m0, m1, m3
-
- packuswb m0, m0 ; 0000xxxx
- movh [dstq + xq], m0
- add xq, mmsize / 2
-
+ movu m1, [topq + xq]
+ movu m3, [bottomq + xq]
+ punpcklbw m0, m1, m4
+ punpckhbw m1, m4
+ punpcklbw m2, m3, m4
+ punpckhbw m3, m4
+
+ MULTIPLY m0, m2, m5
+ MULTIPLY m1, m3, m5
+
+ packuswb m0, m1
+ mova [dstq + xq], m0
+ add xq, mmsize
jl .loop
BLEND_END
+%endmacro
-BLEND_INIT screen, 5
- pxor m2, m2
- mova m3, [pw_1]
- mova m4, [pw_255]
+%macro BLEND_SCREEN 0
+BLEND_INIT screen, 7
+ pxor m4, m4
+
+ VBROADCASTI128 m5, [pw_1]
+ VBROADCASTI128 m6, [pw_255]
.nextrow:
mov xq, widthq
.loop:
- movh m0, [topq + xq] ; 0000xxxx
- movh m1, [bottomq + xq]
- punpcklbw m0, m2 ; 00xx00xx
- punpcklbw m1, m2
-
- SCREEN m0, m1, m3, m4
-
- packuswb m0, m0 ; 0000xxxx
- movh [dstq + xq], m0
- add xq, mmsize / 2
-
+ movu m1, [topq + xq]
+ movu m3, [bottomq + xq]
+ punpcklbw m0, m1, m4
+ punpckhbw m1, m4
+ punpcklbw m2, m3, m4
+ punpckhbw m3, m4
+
+ SCREEN m0, m2, m5, m6
+ SCREEN m1, m3, m5, m6
+
+ packuswb m0, m1
+ mova [dstq + xq], m0
+ add xq, mmsize
jl .loop
BLEND_END
+%endmacro
+%macro AVERAGE 0
BLEND_INIT average, 3
- pxor m2, m2
+ pcmpeqb m2, m2
+
.nextrow:
mov xq, widthq
- .loop:
- movh m0, [topq + xq]
- movh m1, [bottomq + xq]
- punpcklbw m0, m2
- punpcklbw m1, m2
- paddw m0, m1
- psrlw m0, 1
- packuswb m0, m0
- movh [dstq + xq], m0
- add xq, mmsize / 2
+.loop:
+ movu m0, [topq + xq]
+ movu m1, [bottomq + xq]
+ pxor m0, m2
+ pxor m1, m2
+ pavgb m0, m1
+ pxor m0, m2
+ mova [dstq + xq], m0
+ add xq, mmsize
jl .loop
BLEND_END
+%endmacro
-BLEND_INIT grainmerge, 4
- pxor m2, m2
- mova m3, [pw_128]
+
+%macro GRAINMERGE 0
+BLEND_INIT grainmerge, 6
+ pxor m4, m4
+
+ VBROADCASTI128 m5, [pw_128]
.nextrow:
mov xq, widthq
.loop:
- movh m0, [topq + xq]
- movh m1, [bottomq + xq]
- punpcklbw m0, m2
- punpcklbw m1, m2
- paddw m0, m1
- psubw m0, m3
- packuswb m0, m0
- movh [dstq + xq], m0
- add xq, mmsize / 2
+ movu m1, [topq + xq]
+ movu m3, [bottomq + xq]
+ punpcklbw m0, m1, m4
+ punpckhbw m1, m4
+ punpcklbw m2, m3, m4
+ punpckhbw m3, m4
+
+ paddw m0, m2
+ paddw m1, m3
+ psubw m0, m5
+ psubw m1, m5
+
+ packuswb m0, m1
+ mova [dstq + xq], m0
+ add xq, mmsize
jl .loop
BLEND_END
+%endmacro
+%macro HARDMIX 0
BLEND_INIT hardmix, 5
- mova m2, [pb_255]
- mova m3, [pb_128]
- mova m4, [pb_127]
+ VBROADCASTI128 m2, [pb_255]
+ VBROADCASTI128 m3, [pb_128]
+ VBROADCASTI128 m4, [pb_127]
.nextrow:
mov xq, widthq
@@ -218,7 +240,9 @@ BLEND_INIT hardmix, 5
add xq, mmsize
jl .loop
BLEND_END
+%endmacro
+%macro DIVIDE 0
BLEND_INIT divide, 4
pxor m2, m2
mova m3, [ps_255]
@@ -247,9 +271,12 @@ BLEND_INIT divide, 4
jl .loop
BLEND_END
+%endmacro
-BLEND_INIT phoenix, 4
- mova m3, [pb_255]
+%macro PHOENIX 2-3
+; %1 name, %2 b or w, %3 (opt) 1 if 16 bit
+BLEND_INIT %1, 4, %3
+ VBROADCASTI128 m3, [pb_255]
.nextrow:
mov xq, widthq
@@ -257,18 +284,19 @@ BLEND_INIT phoenix, 4
movu m0, [topq + xq]
movu m1, [bottomq + xq]
mova m2, m0
- pminub m0, m1
- pmaxub m1, m2
+ pminu%2 m0, m1
+ pmaxu%2 m1, m2
mova m2, m3
- psubusb m2, m1
- paddusb m2, m0
+ psubus%2 m2, m1
+ paddus%2 m2, m0
mova [dstq + xq], m2
add xq, mmsize
jl .loop
BLEND_END
+%endmacro
-%macro BLEND_ABS 0
-BLEND_INIT difference, 5
+%macro DIFFERENCE 1-2
+BLEND_INIT %1, 5, %2
pxor m2, m2
.nextrow:
mov xq, widthq
@@ -276,6 +304,17 @@ BLEND_INIT difference, 5
.loop:
movu m0, [topq + xq]
movu m1, [bottomq + xq]
+%if %0 == 2 ; 16 bit
+ punpckhwd m3, m0, m2
+ punpcklwd m0, m2
+ punpckhwd m4, m1, m2
+ punpcklwd m1, m2
+ psubd m0, m1
+ psubd m3, m4
+ pabsd m0, m0
+ pabsd m3, m3
+ packusdw m0, m3
+%else
punpckhbw m3, m0, m2
punpcklbw m0, m2
punpckhbw m4, m1, m2
@@ -284,14 +323,17 @@ BLEND_INIT difference, 5
psubw m3, m4
ABS2 m0, m3, m1, m4
packuswb m0, m3
+%endif
mova [dstq + xq], m0
add xq, mmsize
jl .loop
BLEND_END
+%endmacro
+%macro BLEND_ABS 0
BLEND_INIT extremity, 8
pxor m2, m2
- mova m4, [pw_255]
+ VBROADCASTI128 m4, [pw_255]
.nextrow:
mov xq, widthq
@@ -315,7 +357,7 @@ BLEND_END
BLEND_INIT negation, 8
pxor m2, m2
- mova m4, [pw_255]
+ VBROADCASTI128 m4, [pw_255]
.nextrow:
mov xq, widthq
@@ -341,6 +383,74 @@ BLEND_END
%endmacro
INIT_XMM sse2
+BLEND_SIMPLE xor, xor
+BLEND_SIMPLE or, or
+BLEND_SIMPLE and, and
+BLEND_SIMPLE addition, addusb
+BLEND_SIMPLE subtract, subusb
+BLEND_SIMPLE darken, minub
+BLEND_SIMPLE lighten, maxub
+GRAINEXTRACT
+BLEND_MULTIPLY
+BLEND_SCREEN
+AVERAGE
+GRAINMERGE
+HARDMIX
+PHOENIX phoenix, b
+DIFFERENCE difference
+DIVIDE
+
BLEND_ABS
+
+%if ARCH_X86_64
+BLEND_SIMPLE addition_16, addusw, 1
+BLEND_SIMPLE and_16, and, 1
+BLEND_SIMPLE or_16, or, 1
+BLEND_SIMPLE subtract_16, subusw, 1
+BLEND_SIMPLE xor_16, xor, 1
+%endif
+
INIT_XMM ssse3
+DIFFERENCE difference
BLEND_ABS
+
+INIT_XMM sse4
+%if ARCH_X86_64
+BLEND_SIMPLE darken_16, minuw, 1
+BLEND_SIMPLE lighten_16, maxuw, 1
+PHOENIX phoenix_16, w, 1
+DIFFERENCE difference_16, 1
+%endif
+
+%if HAVE_AVX2_EXTERNAL
+INIT_YMM avx2
+BLEND_SIMPLE xor, xor
+BLEND_SIMPLE or, or
+BLEND_SIMPLE and, and
+BLEND_SIMPLE addition, addusb
+BLEND_SIMPLE subtract, subusb
+BLEND_SIMPLE darken, minub
+BLEND_SIMPLE lighten, maxub
+GRAINEXTRACT
+BLEND_MULTIPLY
+BLEND_SCREEN
+AVERAGE
+GRAINMERGE
+HARDMIX
+PHOENIX phoenix, b
+
+DIFFERENCE difference
+BLEND_ABS
+
+%if ARCH_X86_64
+BLEND_SIMPLE addition_16, addusw, 1
+BLEND_SIMPLE and_16, and, 1
+BLEND_SIMPLE darken_16, minuw, 1
+BLEND_SIMPLE lighten_16, maxuw, 1
+BLEND_SIMPLE or_16, or, 1
+BLEND_SIMPLE subtract_16, subusw, 1
+BLEND_SIMPLE xor_16, xor, 1
+PHOENIX phoenix_16, w, 1
+DIFFERENCE difference_16, 1
+%endif
+%endif
diff --git a/chromium/third_party/ffmpeg/libavfilter/x86/vf_blend_init.c b/chromium/third_party/ffmpeg/libavfilter/x86/vf_blend_init.c
index a4fc9af2469..0962f6d7fdc 100644
--- a/chromium/third_party/ffmpeg/libavfilter/x86/vf_blend_init.c
+++ b/chromium/third_party/ffmpeg/libavfilter/x86/vf_blend_init.c
@@ -31,58 +31,153 @@ void ff_blend_##name##_##opt(const uint8_t *top, ptrdiff_t top_linesize, \
struct FilterParams *param, double *values, int starty);
BLEND_FUNC(addition, sse2)
+BLEND_FUNC(addition, avx2)
BLEND_FUNC(grainmerge, sse2)
+BLEND_FUNC(grainmerge, avx2)
BLEND_FUNC(average, sse2)
+BLEND_FUNC(average, avx2)
BLEND_FUNC(and, sse2)
+BLEND_FUNC(and, avx2)
BLEND_FUNC(darken, sse2)
+BLEND_FUNC(darken, avx2)
BLEND_FUNC(grainextract, sse2)
+BLEND_FUNC(grainextract, avx2)
BLEND_FUNC(multiply, sse2)
+BLEND_FUNC(multiply, avx2)
BLEND_FUNC(screen, sse2)
+BLEND_FUNC(screen, avx2)
BLEND_FUNC(hardmix, sse2)
+BLEND_FUNC(hardmix, avx2)
BLEND_FUNC(divide, sse2)
BLEND_FUNC(lighten, sse2)
+BLEND_FUNC(lighten, avx2)
BLEND_FUNC(or, sse2)
+BLEND_FUNC(or, avx2)
BLEND_FUNC(phoenix, sse2)
+BLEND_FUNC(phoenix, avx2)
BLEND_FUNC(subtract, sse2)
+BLEND_FUNC(subtract, avx2)
BLEND_FUNC(xor, sse2)
+BLEND_FUNC(xor, avx2)
BLEND_FUNC(difference, sse2)
BLEND_FUNC(difference, ssse3)
+BLEND_FUNC(difference, avx2)
BLEND_FUNC(extremity, sse2)
BLEND_FUNC(extremity, ssse3)
+BLEND_FUNC(extremity, avx2)
BLEND_FUNC(negation, sse2)
BLEND_FUNC(negation, ssse3)
+BLEND_FUNC(negation, avx2)
+
+#if ARCH_X86_64
+BLEND_FUNC(addition_16, sse2)
+BLEND_FUNC(addition_16, avx2)
+BLEND_FUNC(and_16, sse2)
+BLEND_FUNC(and_16, avx2)
+BLEND_FUNC(darken_16, sse4)
+BLEND_FUNC(darken_16, avx2)
+BLEND_FUNC(difference_16, sse4)
+BLEND_FUNC(difference_16, avx2)
+BLEND_FUNC(lighten_16, sse4)
+BLEND_FUNC(lighten_16, avx2)
+BLEND_FUNC(or_16, sse2)
+BLEND_FUNC(or_16, avx2)
+BLEND_FUNC(phoenix_16, sse4)
+BLEND_FUNC(phoenix_16, avx2)
+BLEND_FUNC(subtract_16, sse2)
+BLEND_FUNC(subtract_16, avx2)
+BLEND_FUNC(xor_16, sse2)
+BLEND_FUNC(xor_16, avx2)
+#endif /* ARCH_X86_64 */
av_cold void ff_blend_init_x86(FilterParams *param, int is_16bit)
{
int cpu_flags = av_get_cpu_flags();
- if (EXTERNAL_SSE2(cpu_flags) && param->opacity == 1 && !is_16bit) {
- switch (param->mode) {
- case BLEND_ADDITION: param->blend = ff_blend_addition_sse2; break;
- case BLEND_GRAINMERGE: param->blend = ff_blend_grainmerge_sse2; break;
- case BLEND_AND: param->blend = ff_blend_and_sse2; break;
- case BLEND_AVERAGE: param->blend = ff_blend_average_sse2; break;
- case BLEND_DARKEN: param->blend = ff_blend_darken_sse2; break;
- case BLEND_GRAINEXTRACT: param->blend = ff_blend_grainextract_sse2; break;
- case BLEND_DIVIDE: param->blend = ff_blend_divide_sse2; break;
- case BLEND_HARDMIX: param->blend = ff_blend_hardmix_sse2; break;
- case BLEND_LIGHTEN: param->blend = ff_blend_lighten_sse2; break;
- case BLEND_MULTIPLY: param->blend = ff_blend_multiply_sse2; break;
- case BLEND_OR: param->blend = ff_blend_or_sse2; break;
- case BLEND_PHOENIX: param->blend = ff_blend_phoenix_sse2; break;
- case BLEND_SCREEN: param->blend = ff_blend_screen_sse2; break;
- case BLEND_SUBTRACT: param->blend = ff_blend_subtract_sse2; break;
- case BLEND_XOR: param->blend = ff_blend_xor_sse2; break;
- case BLEND_DIFFERENCE: param->blend = ff_blend_difference_sse2; break;
- case BLEND_EXTREMITY: param->blend = ff_blend_extremity_sse2; break;
- case BLEND_NEGATION: param->blend = ff_blend_negation_sse2; break;
+ if (!is_16bit) {
+ if (EXTERNAL_SSE2(cpu_flags) && param->opacity == 1) {
+ switch (param->mode) {
+ case BLEND_ADDITION: param->blend = ff_blend_addition_sse2; break;
+ case BLEND_GRAINMERGE: param->blend = ff_blend_grainmerge_sse2; break;
+ case BLEND_AND: param->blend = ff_blend_and_sse2; break;
+ case BLEND_AVERAGE: param->blend = ff_blend_average_sse2; break;
+ case BLEND_DARKEN: param->blend = ff_blend_darken_sse2; break;
+ case BLEND_GRAINEXTRACT: param->blend = ff_blend_grainextract_sse2; break;
+ case BLEND_DIVIDE: param->blend = ff_blend_divide_sse2; break;
+ case BLEND_HARDMIX: param->blend = ff_blend_hardmix_sse2; break;
+ case BLEND_LIGHTEN: param->blend = ff_blend_lighten_sse2; break;
+ case BLEND_MULTIPLY: param->blend = ff_blend_multiply_sse2; break;
+ case BLEND_OR: param->blend = ff_blend_or_sse2; break;
+ case BLEND_PHOENIX: param->blend = ff_blend_phoenix_sse2; break;
+ case BLEND_SCREEN: param->blend = ff_blend_screen_sse2; break;
+ case BLEND_SUBTRACT: param->blend = ff_blend_subtract_sse2; break;
+ case BLEND_XOR: param->blend = ff_blend_xor_sse2; break;
+ case BLEND_DIFFERENCE: param->blend = ff_blend_difference_sse2; break;
+ case BLEND_EXTREMITY: param->blend = ff_blend_extremity_sse2; break;
+ case BLEND_NEGATION: param->blend = ff_blend_negation_sse2; break;
+ }
}
- }
- if (EXTERNAL_SSSE3(cpu_flags) && param->opacity == 1 && !is_16bit) {
- switch (param->mode) {
- case BLEND_DIFFERENCE: param->blend = ff_blend_difference_ssse3; break;
- case BLEND_EXTREMITY: param->blend = ff_blend_extremity_ssse3; break;
- case BLEND_NEGATION: param->blend = ff_blend_negation_ssse3; break;
+ if (EXTERNAL_SSSE3(cpu_flags) && param->opacity == 1) {
+ switch (param->mode) {
+ case BLEND_DIFFERENCE: param->blend = ff_blend_difference_ssse3; break;
+ case BLEND_EXTREMITY: param->blend = ff_blend_extremity_ssse3; break;
+ case BLEND_NEGATION: param->blend = ff_blend_negation_ssse3; break;
+ }
+ }
+
+ if (EXTERNAL_AVX2_FAST(cpu_flags) && param->opacity == 1) {
+ switch (param->mode) {
+ case BLEND_ADDITION: param->blend = ff_blend_addition_avx2; break;
+ case BLEND_GRAINMERGE: param->blend = ff_blend_grainmerge_avx2; break;
+ case BLEND_AND: param->blend = ff_blend_and_avx2; break;
+ case BLEND_AVERAGE: param->blend = ff_blend_average_avx2; break;
+ case BLEND_DARKEN: param->blend = ff_blend_darken_avx2; break;
+ case BLEND_GRAINEXTRACT: param->blend = ff_blend_grainextract_avx2; break;
+ case BLEND_HARDMIX: param->blend = ff_blend_hardmix_avx2; break;
+ case BLEND_LIGHTEN: param->blend = ff_blend_lighten_avx2; break;
+ case BLEND_MULTIPLY: param->blend = ff_blend_multiply_avx2; break;
+ case BLEND_OR: param->blend = ff_blend_or_avx2; break;
+ case BLEND_PHOENIX: param->blend = ff_blend_phoenix_avx2; break;
+ case BLEND_SCREEN: param->blend = ff_blend_screen_avx2; break;
+ case BLEND_SUBTRACT: param->blend = ff_blend_subtract_avx2; break;
+ case BLEND_XOR: param->blend = ff_blend_xor_avx2; break;
+ case BLEND_DIFFERENCE: param->blend = ff_blend_difference_avx2; break;
+ case BLEND_EXTREMITY: param->blend = ff_blend_extremity_avx2; break;
+ case BLEND_NEGATION: param->blend = ff_blend_negation_avx2; break;
+ }
+ }
+ } else { /* is_16_bit */
+#if ARCH_X86_64
+ if (EXTERNAL_SSE2(cpu_flags) && param->opacity == 1) {
+ switch (param->mode) {
+ case BLEND_ADDITION: param->blend = ff_blend_addition_16_sse2; break;
+ case BLEND_AND: param->blend = ff_blend_and_16_sse2; break;
+ case BLEND_OR: param->blend = ff_blend_or_16_sse2; break;
+ case BLEND_SUBTRACT: param->blend = ff_blend_subtract_16_sse2; break;
+ case BLEND_XOR: param->blend = ff_blend_xor_16_sse2; break;
+ }
+ }
+ if (EXTERNAL_SSE4(cpu_flags) && param->opacity == 1) {
+ switch (param->mode) {
+ case BLEND_DARKEN: param->blend = ff_blend_darken_16_sse4; break;
+ case BLEND_DIFFERENCE: param->blend = ff_blend_difference_16_sse4; break;
+ case BLEND_LIGHTEN: param->blend = ff_blend_lighten_16_sse4; break;
+ case BLEND_PHOENIX: param->blend = ff_blend_phoenix_16_sse4; break;
+ }
+ }
+ if (EXTERNAL_AVX2_FAST(cpu_flags) && param->opacity == 1) {
+ switch (param->mode) {
+ case BLEND_ADDITION: param->blend = ff_blend_addition_16_avx2; break;
+ case BLEND_AND: param->blend = ff_blend_and_16_avx2; break;
+ case BLEND_DARKEN: param->blend = ff_blend_darken_16_avx2; break;
+ case BLEND_DIFFERENCE: param->blend = ff_blend_difference_16_avx2; break;
+ case BLEND_LIGHTEN: param->blend = ff_blend_lighten_16_avx2; break;
+ case BLEND_OR: param->blend = ff_blend_or_16_avx2; break;
+ case BLEND_PHOENIX: param->blend = ff_blend_phoenix_16_avx2; break;
+ case BLEND_SUBTRACT: param->blend = ff_blend_subtract_16_avx2; break;
+ case BLEND_XOR: param->blend = ff_blend_xor_16_avx2; break;
+ }
}
+#endif /* ARCH_X86_64 */
}
}
diff --git a/chromium/third_party/ffmpeg/libavfilter/x86/vf_framerate.asm b/chromium/third_party/ffmpeg/libavfilter/x86/vf_framerate.asm
new file mode 100644
index 00000000000..7a30c870bd5
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavfilter/x86/vf_framerate.asm
@@ -0,0 +1,134 @@
+;*****************************************************************************
+;* x86-optimized functions for framerate filter
+;*
+;* Copyright (C) 2018 Marton Balint
+;*
+;* Based on vf_blend.asm, Copyright (C) 2015 Paul B Mahol
+;*
+;* This file is part of FFmpeg.
+;*
+;* FFmpeg is free software; you can redistribute it and/or
+;* modify it under the terms of the GNU 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/x86/x86util.asm"
+
+SECTION .text
+
+
+%macro XSPLAT 3
+%if cpuflag(avx2)
+ vpbroadcast%3 %1, %2
+%else
+ movd %1, %2
+%ifidn %3, d
+ SPLATD %1
+%else
+ SPLATW %1, %1
+%endif
+%endif
+%endmacro
+
+
+%macro BLEND_INIT 0-1
+%if ARCH_X86_64
+cglobal blend_frames%1, 6, 9, 5, src1, src1_linesize, src2, src2_linesize, dst, dst_linesize, width, end, x
+ mov widthd, dword widthm
+%else
+cglobal blend_frames%1, 5, 7, 5, src1, src1_linesize, src2, src2_linesize, dst, end, x
+%define dst_linesizeq r5mp
+%define widthq r6mp
+%endif
+ mov endd, dword r7m
+ add src1q, widthq
+ add src2q, widthq
+ add dstq, widthq
+ neg widthq
+%endmacro
+
+
+%macro BLEND_LOOP 4
+.nextrow:
+ mov xq, widthq
+
+ .loop:
+ movu m0, [src1q + xq]
+ movu m1, [src2q + xq]
+ SBUTTERFLY %1%2, 0, 1, 4 ; aAbBcCdD
+ ; eEfFgGhH
+ pmadd%3 m0, m2
+ pmadd%3 m1, m2
+
+ padd%2 m0, m3
+ padd%2 m1, m3
+ psrl%2 m0, %4 ; 0A0B0C0D
+ psrl%2 m1, %4 ; 0E0F0G0H
+
+ packus%2%1 m0, m1 ; ABCDEFGH
+ movu [dstq + xq], m0
+ add xq, mmsize
+ jl .loop
+ add src1q, src1_linesizeq
+ add src2q, src2_linesizeq
+ add dstq, dst_linesizeq
+ sub endd, 1
+ jg .nextrow
+REP_RET
+%endmacro
+
+
+%macro BLEND_FRAMES 0
+ BLEND_INIT
+
+ XSPLAT m2, r8m, w ; factor1
+ XSPLAT m3, r9m, w ; factor2
+
+ psllw m3, 8
+ por m2, m3 ; interleaved factors
+
+ XSPLAT m3, r10m, w ; half
+
+ BLEND_LOOP b, w, ubsw, 7
+%endmacro
+
+
+%macro BLEND_FRAMES16 0
+ BLEND_INIT 16
+
+ XSPLAT m2, r8m, d ; factor1
+ XSPLAT m3, r9m, d ; factor2
+
+ pslld m3, 16
+ por m2, m3 ; interleaved factors
+
+ XSPLAT m3, r10m, d ; half
+
+ BLEND_LOOP w, d, wd, 15
+%endmacro
+
+
+INIT_XMM ssse3
+BLEND_FRAMES
+
+INIT_XMM sse4
+BLEND_FRAMES16
+
+
+%if HAVE_AVX2_EXTERNAL
+
+INIT_YMM avx2
+BLEND_FRAMES
+BLEND_FRAMES16
+
+%endif
diff --git a/chromium/third_party/ffmpeg/libavfilter/x86/vf_framerate_init.c b/chromium/third_party/ffmpeg/libavfilter/x86/vf_framerate_init.c
new file mode 100644
index 00000000000..9d40faf0a4f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavfilter/x86/vf_framerate_init.c
@@ -0,0 +1,42 @@
+/*
+ * 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/cpu.h"
+#include "libavutil/x86/cpu.h"
+#include "libavfilter/framerate.h"
+
+void ff_blend_frames_ssse3(BLEND_FUNC_PARAMS);
+void ff_blend_frames_avx2(BLEND_FUNC_PARAMS);
+void ff_blend_frames16_sse4(BLEND_FUNC_PARAMS);
+void ff_blend_frames16_avx2(BLEND_FUNC_PARAMS);
+
+void ff_framerate_init_x86(FrameRateContext *s)
+{
+ int cpu_flags = av_get_cpu_flags();
+ if (s->bitdepth == 8) {
+ if (EXTERNAL_AVX2_FAST(cpu_flags))
+ s->blend = ff_blend_frames_avx2;
+ else if (EXTERNAL_SSSE3(cpu_flags))
+ s->blend = ff_blend_frames_ssse3;
+ } else {
+ if (EXTERNAL_AVX2_FAST(cpu_flags))
+ s->blend = ff_blend_frames16_avx2;
+ else if (EXTERNAL_SSE4(cpu_flags))
+ s->blend = ff_blend_frames16_sse4;
+ }
+}
diff --git a/chromium/third_party/ffmpeg/libavformat/Makefile b/chromium/third_party/ffmpeg/libavformat/Makefile
index de0de921c2d..e64c5b30a1e 100644
--- a/chromium/third_party/ffmpeg/libavformat/Makefile
+++ b/chromium/third_party/ffmpeg/libavformat/Makefile
@@ -96,6 +96,8 @@ OBJS-$(CONFIG_APNG_DEMUXER) += apngdec.o
OBJS-$(CONFIG_APNG_MUXER) += apngenc.o
OBJS-$(CONFIG_APTX_DEMUXER) += aptxdec.o rawdec.o
OBJS-$(CONFIG_APTX_MUXER) += rawenc.o
+OBJS-$(CONFIG_APTX_HD_DEMUXER) += aptxdec.o rawdec.o
+OBJS-$(CONFIG_APTX_HD_MUXER) += rawenc.o
OBJS-$(CONFIG_AQTITLE_DEMUXER) += aqtitledec.o subtitles.o
OBJS-$(CONFIG_ASF_DEMUXER) += asfdec_f.o asf.o asfcrypt.o \
avlanguage.o
@@ -131,6 +133,10 @@ OBJS-$(CONFIG_CAVSVIDEO_MUXER) += rawenc.o
OBJS-$(CONFIG_CDG_DEMUXER) += cdg.o
OBJS-$(CONFIG_CDXL_DEMUXER) += cdxl.o
OBJS-$(CONFIG_CINE_DEMUXER) += cinedec.o
+OBJS-$(CONFIG_CODEC2_DEMUXER) += ../libavcodec/codec2utils.o codec2.o rawdec.o pcm.o
+OBJS-$(CONFIG_CODEC2_MUXER) += ../libavcodec/codec2utils.o codec2.o rawenc.o
+OBJS-$(CONFIG_CODEC2RAW_DEMUXER) += ../libavcodec/codec2utils.o codec2.o rawdec.o pcm.o
+OBJS-$(CONFIG_CODEC2RAW_MUXER) += rawenc.o
OBJS-$(CONFIG_CONCAT_DEMUXER) += concatdec.o
OBJS-$(CONFIG_CRC_MUXER) += crcenc.o
OBJS-$(CONFIG_DATA_DEMUXER) += rawdec.o
@@ -164,6 +170,7 @@ OBJS-$(CONFIG_EPAF_DEMUXER) += epafdec.o pcm.o
OBJS-$(CONFIG_FFMETADATA_DEMUXER) += ffmetadec.o
OBJS-$(CONFIG_FFMETADATA_MUXER) += ffmetaenc.o
OBJS-$(CONFIG_FIFO_MUXER) += fifo.o
+OBJS-$(CONFIG_FIFO_TEST_MUXER) += fifo_test.o
OBJS-$(CONFIG_FILMSTRIP_DEMUXER) += filmstripdec.o
OBJS-$(CONFIG_FILMSTRIP_MUXER) += filmstripenc.o
OBJS-$(CONFIG_FITS_DEMUXER) += fitsdec.o
@@ -445,6 +452,8 @@ OBJS-$(CONFIG_S337M_DEMUXER) += s337m.o spdif.o
OBJS-$(CONFIG_SAMI_DEMUXER) += samidec.o subtitles.o
OBJS-$(CONFIG_SAP_DEMUXER) += sapdec.o
OBJS-$(CONFIG_SAP_MUXER) += sapenc.o
+OBJS-$(CONFIG_SBC_DEMUXER) += sbcdec.o rawdec.o
+OBJS-$(CONFIG_SBC_MUXER) += rawenc.o
OBJS-$(CONFIG_SBG_DEMUXER) += sbgdec.o
OBJS-$(CONFIG_SCC_DEMUXER) += sccdec.o subtitles.o
OBJS-$(CONFIG_SCC_MUXER) += sccenc.o subtitles.o
@@ -473,6 +482,7 @@ OBJS-$(CONFIG_SRT_DEMUXER) += srtdec.o subtitles.o
OBJS-$(CONFIG_SRT_MUXER) += srtenc.o
OBJS-$(CONFIG_STL_DEMUXER) += stldec.o subtitles.o
OBJS-$(CONFIG_STR_DEMUXER) += psxstr.o
+OBJS-$(CONFIG_STREAM_SEGMENT_MUXER) += segment.o
OBJS-$(CONFIG_SUBVIEWER1_DEMUXER) += subviewer1dec.o subtitles.o
OBJS-$(CONFIG_SUBVIEWER_DEMUXER) += subviewerdec.o subtitles.o
OBJS-$(CONFIG_SUP_DEMUXER) += supdec.o
@@ -551,7 +561,11 @@ OBJS-$(CONFIG_CHROMAPRINT_MUXER) += chromaprint.o
OBJS-$(CONFIG_LIBGME_DEMUXER) += libgme.o
OBJS-$(CONFIG_LIBMODPLUG_DEMUXER) += libmodplug.o
OBJS-$(CONFIG_LIBOPENMPT_DEMUXER) += libopenmpt.o
-OBJS-$(CONFIG_LIBRTMP) += librtmp.o
+OBJS-$(CONFIG_LIBRTMP_PROTOCOL) += librtmp.o
+OBJS-$(CONFIG_LIBRTMPE_PROTOCOL) += librtmp.o
+OBJS-$(CONFIG_LIBRTMPS_PROTOCOL) += librtmp.o
+OBJS-$(CONFIG_LIBRTMPT_PROTOCOL) += librtmp.o
+OBJS-$(CONFIG_LIBRTMPTE_PROTOCOL) += librtmp.o
OBJS-$(CONFIG_LIBSSH_PROTOCOL) += libssh.o
OBJS-$(CONFIG_LIBSMBCLIENT_PROTOCOL) += libsmbclient.o
diff --git a/chromium/third_party/ffmpeg/libavformat/aacdec.c b/chromium/third_party/ffmpeg/libavformat/aacdec.c
index 36d558ff54c..5ec706bdc7a 100644
--- a/chromium/third_party/ffmpeg/libavformat/aacdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/aacdec.c
@@ -22,8 +22,10 @@
#include "libavutil/intreadwrite.h"
#include "avformat.h"
+#include "avio_internal.h"
#include "internal.h"
#include "id3v1.h"
+#include "id3v2.h"
#include "apetag.h"
#define ADTS_HEADER_SIZE 7
@@ -116,13 +118,52 @@ static int adts_aac_read_header(AVFormatContext *s)
return 0;
}
+static int handle_id3(AVFormatContext *s, AVPacket *pkt)
+{
+ AVDictionary *metadata = NULL;
+ AVIOContext ioctx;
+ ID3v2ExtraMeta *id3v2_extra_meta = NULL;
+ int ret;
+
+ ret = av_append_packet(s->pb, pkt, ff_id3v2_tag_len(pkt->data) - pkt->size);
+ if (ret < 0) {
+ av_packet_unref(pkt);
+ return ret;
+ }
+
+ ffio_init_context(&ioctx, pkt->data, pkt->size, 0, NULL, NULL, NULL, NULL);
+ ff_id3v2_read_dict(&ioctx, &metadata, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta);
+ if ((ret = ff_id3v2_parse_priv_dict(&metadata, &id3v2_extra_meta)) < 0)
+ goto error;
+
+ if (metadata) {
+ if ((ret = av_dict_copy(&s->metadata, metadata, 0)) < 0)
+ goto error;
+ s->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED;
+ }
+
+error:
+ av_packet_unref(pkt);
+ ff_id3v2_free_extra_meta(&id3v2_extra_meta);
+ av_dict_free(&metadata);
+
+ return ret;
+}
+
static int adts_aac_read_packet(AVFormatContext *s, AVPacket *pkt)
{
int ret, fsize;
- ret = av_get_packet(s->pb, pkt, ADTS_HEADER_SIZE);
+ ret = av_get_packet(s->pb, pkt, FFMAX(ID3v2_HEADER_SIZE, ADTS_HEADER_SIZE));
+
+ if (ret >= ID3v2_HEADER_SIZE && ff_id3v2_match(pkt->data, ID3v2_DEFAULT_MAGIC)) {
+ if ((ret = handle_id3(s, pkt)) >= 0)
+ ret = av_get_packet(s->pb, pkt, ADTS_HEADER_SIZE);
+ }
+
if (ret < 0)
return ret;
+
if (ret < ADTS_HEADER_SIZE) {
av_packet_unref(pkt);
return AVERROR(EIO);
@@ -139,7 +180,7 @@ static int adts_aac_read_packet(AVFormatContext *s, AVPacket *pkt)
return AVERROR_INVALIDDATA;
}
- ret = av_append_packet(s->pb, pkt, fsize - ADTS_HEADER_SIZE);
+ ret = av_append_packet(s->pb, pkt, fsize - pkt->size);
if (ret < 0)
av_packet_unref(pkt);
diff --git a/chromium/third_party/ffmpeg/libavformat/allformats.c b/chromium/third_party/ffmpeg/libavformat/allformats.c
index ec8409630e5..9dc5ce8a767 100644
--- a/chromium/third_party/ffmpeg/libavformat/allformats.c
+++ b/chromium/third_party/ffmpeg/libavformat/allformats.c
@@ -25,375 +25,576 @@
#include "rdt.h"
#include "url.h"
#include "version.h"
+#if FF_API_NEXT
+#include "internal.h"
+#endif
+
+/* (de)muxers */
+extern AVOutputFormat ff_a64_muxer;
+extern AVInputFormat ff_aa_demuxer;
+extern AVInputFormat ff_aac_demuxer;
+extern AVInputFormat ff_ac3_demuxer;
+extern AVOutputFormat ff_ac3_muxer;
+extern AVInputFormat ff_acm_demuxer;
+extern AVInputFormat ff_act_demuxer;
+extern AVInputFormat ff_adf_demuxer;
+extern AVInputFormat ff_adp_demuxer;
+extern AVInputFormat ff_ads_demuxer;
+extern AVOutputFormat ff_adts_muxer;
+extern AVInputFormat ff_adx_demuxer;
+extern AVOutputFormat ff_adx_muxer;
+extern AVInputFormat ff_aea_demuxer;
+extern AVInputFormat ff_afc_demuxer;
+extern AVInputFormat ff_aiff_demuxer;
+extern AVOutputFormat ff_aiff_muxer;
+extern AVInputFormat ff_aix_demuxer;
+extern AVInputFormat ff_amr_demuxer;
+extern AVOutputFormat ff_amr_muxer;
+extern AVInputFormat ff_amrnb_demuxer;
+extern AVInputFormat ff_amrwb_demuxer;
+extern AVInputFormat ff_anm_demuxer;
+extern AVInputFormat ff_apc_demuxer;
+extern AVInputFormat ff_ape_demuxer;
+extern AVInputFormat ff_apng_demuxer;
+extern AVOutputFormat ff_apng_muxer;
+extern AVInputFormat ff_aptx_demuxer;
+extern AVOutputFormat ff_aptx_muxer;
+extern AVInputFormat ff_aptx_hd_demuxer;
+extern AVOutputFormat ff_aptx_hd_muxer;
+extern AVInputFormat ff_aqtitle_demuxer;
+extern AVInputFormat ff_asf_demuxer;
+extern AVOutputFormat ff_asf_muxer;
+extern AVInputFormat ff_asf_o_demuxer;
+extern AVInputFormat ff_ass_demuxer;
+extern AVOutputFormat ff_ass_muxer;
+extern AVInputFormat ff_ast_demuxer;
+extern AVOutputFormat ff_ast_muxer;
+extern AVOutputFormat ff_asf_stream_muxer;
+extern AVInputFormat ff_au_demuxer;
+extern AVOutputFormat ff_au_muxer;
+extern AVInputFormat ff_avi_demuxer;
+extern AVOutputFormat ff_avi_muxer;
+extern AVInputFormat ff_avisynth_demuxer;
+extern AVOutputFormat ff_avm2_muxer;
+extern AVInputFormat ff_avr_demuxer;
+extern AVInputFormat ff_avs_demuxer;
+extern AVInputFormat ff_bethsoftvid_demuxer;
+extern AVInputFormat ff_bfi_demuxer;
+extern AVInputFormat ff_bintext_demuxer;
+extern AVInputFormat ff_bink_demuxer;
+extern AVInputFormat ff_bit_demuxer;
+extern AVOutputFormat ff_bit_muxer;
+extern AVInputFormat ff_bmv_demuxer;
+extern AVInputFormat ff_bfstm_demuxer;
+extern AVInputFormat ff_brstm_demuxer;
+extern AVInputFormat ff_boa_demuxer;
+extern AVInputFormat ff_c93_demuxer;
+extern AVInputFormat ff_caf_demuxer;
+extern AVOutputFormat ff_caf_muxer;
+extern AVInputFormat ff_cavsvideo_demuxer;
+extern AVOutputFormat ff_cavsvideo_muxer;
+extern AVInputFormat ff_cdg_demuxer;
+extern AVInputFormat ff_cdxl_demuxer;
+extern AVInputFormat ff_cine_demuxer;
+extern AVInputFormat ff_codec2_demuxer;
+extern AVOutputFormat ff_codec2_muxer;
+extern AVInputFormat ff_codec2raw_demuxer;
+extern AVOutputFormat ff_codec2raw_muxer;
+extern AVInputFormat ff_concat_demuxer;
+extern AVOutputFormat ff_crc_muxer;
+extern AVInputFormat ff_dash_demuxer;
+extern AVOutputFormat ff_dash_muxer;
+extern AVInputFormat ff_data_demuxer;
+extern AVOutputFormat ff_data_muxer;
+extern AVInputFormat ff_daud_demuxer;
+extern AVOutputFormat ff_daud_muxer;
+extern AVInputFormat ff_dcstr_demuxer;
+extern AVInputFormat ff_dfa_demuxer;
+extern AVInputFormat ff_dirac_demuxer;
+extern AVOutputFormat ff_dirac_muxer;
+extern AVInputFormat ff_dnxhd_demuxer;
+extern AVOutputFormat ff_dnxhd_muxer;
+extern AVInputFormat ff_dsf_demuxer;
+extern AVInputFormat ff_dsicin_demuxer;
+extern AVInputFormat ff_dss_demuxer;
+extern AVInputFormat ff_dts_demuxer;
+extern AVOutputFormat ff_dts_muxer;
+extern AVInputFormat ff_dtshd_demuxer;
+extern AVInputFormat ff_dv_demuxer;
+extern AVOutputFormat ff_dv_muxer;
+extern AVInputFormat ff_dvbsub_demuxer;
+extern AVInputFormat ff_dvbtxt_demuxer;
+extern AVInputFormat ff_dxa_demuxer;
+extern AVInputFormat ff_ea_demuxer;
+extern AVInputFormat ff_ea_cdata_demuxer;
+extern AVInputFormat ff_eac3_demuxer;
+extern AVOutputFormat ff_eac3_muxer;
+extern AVInputFormat ff_epaf_demuxer;
+extern AVOutputFormat ff_f4v_muxer;
+extern AVInputFormat ff_ffmetadata_demuxer;
+extern AVOutputFormat ff_ffmetadata_muxer;
+extern AVOutputFormat ff_fifo_muxer;
+extern AVOutputFormat ff_fifo_test_muxer;
+extern AVInputFormat ff_filmstrip_demuxer;
+extern AVOutputFormat ff_filmstrip_muxer;
+extern AVInputFormat ff_fits_demuxer;
+extern AVOutputFormat ff_fits_muxer;
+extern AVInputFormat ff_flac_demuxer;
+extern AVOutputFormat ff_flac_muxer;
+extern AVInputFormat ff_flic_demuxer;
+extern AVInputFormat ff_flv_demuxer;
+extern AVOutputFormat ff_flv_muxer;
+extern AVInputFormat ff_live_flv_demuxer;
+extern AVInputFormat ff_fourxm_demuxer;
+extern AVOutputFormat ff_framecrc_muxer;
+extern AVOutputFormat ff_framehash_muxer;
+extern AVOutputFormat ff_framemd5_muxer;
+extern AVInputFormat ff_frm_demuxer;
+extern AVInputFormat ff_fsb_demuxer;
+extern AVInputFormat ff_g722_demuxer;
+extern AVOutputFormat ff_g722_muxer;
+extern AVInputFormat ff_g723_1_demuxer;
+extern AVOutputFormat ff_g723_1_muxer;
+extern AVInputFormat ff_g726_demuxer;
+extern AVOutputFormat ff_g726_muxer;
+extern AVInputFormat ff_g726le_demuxer;
+extern AVOutputFormat ff_g726le_muxer;
+extern AVInputFormat ff_g729_demuxer;
+extern AVInputFormat ff_gdv_demuxer;
+extern AVInputFormat ff_genh_demuxer;
+extern AVInputFormat ff_gif_demuxer;
+extern AVOutputFormat ff_gif_muxer;
+extern AVInputFormat ff_gsm_demuxer;
+extern AVOutputFormat ff_gsm_muxer;
+extern AVInputFormat ff_gxf_demuxer;
+extern AVOutputFormat ff_gxf_muxer;
+extern AVInputFormat ff_h261_demuxer;
+extern AVOutputFormat ff_h261_muxer;
+extern AVInputFormat ff_h263_demuxer;
+extern AVOutputFormat ff_h263_muxer;
+extern AVInputFormat ff_h264_demuxer;
+extern AVOutputFormat ff_h264_muxer;
+extern AVOutputFormat ff_hash_muxer;
+extern AVOutputFormat ff_hds_muxer;
+extern AVInputFormat ff_hevc_demuxer;
+extern AVOutputFormat ff_hevc_muxer;
+extern AVInputFormat ff_hls_demuxer;
+extern AVOutputFormat ff_hls_muxer;
+extern AVInputFormat ff_hnm_demuxer;
+extern AVInputFormat ff_ico_demuxer;
+extern AVOutputFormat ff_ico_muxer;
+extern AVInputFormat ff_idcin_demuxer;
+extern AVInputFormat ff_idf_demuxer;
+extern AVInputFormat ff_iff_demuxer;
+extern AVInputFormat ff_ilbc_demuxer;
+extern AVOutputFormat ff_ilbc_muxer;
+extern AVInputFormat ff_image2_demuxer;
+extern AVOutputFormat ff_image2_muxer;
+extern AVInputFormat ff_image2pipe_demuxer;
+extern AVOutputFormat ff_image2pipe_muxer;
+extern AVInputFormat ff_image2_alias_pix_demuxer;
+extern AVInputFormat ff_image2_brender_pix_demuxer;
+extern AVInputFormat ff_ingenient_demuxer;
+extern AVInputFormat ff_ipmovie_demuxer;
+extern AVOutputFormat ff_ipod_muxer;
+extern AVInputFormat ff_ircam_demuxer;
+extern AVOutputFormat ff_ircam_muxer;
+extern AVOutputFormat ff_ismv_muxer;
+extern AVInputFormat ff_iss_demuxer;
+extern AVInputFormat ff_iv8_demuxer;
+extern AVInputFormat ff_ivf_demuxer;
+extern AVOutputFormat ff_ivf_muxer;
+extern AVInputFormat ff_ivr_demuxer;
+extern AVInputFormat ff_jacosub_demuxer;
+extern AVOutputFormat ff_jacosub_muxer;
+extern AVInputFormat ff_jv_demuxer;
+extern AVOutputFormat ff_latm_muxer;
+extern AVInputFormat ff_lmlm4_demuxer;
+extern AVInputFormat ff_loas_demuxer;
+extern AVInputFormat ff_lrc_demuxer;
+extern AVOutputFormat ff_lrc_muxer;
+extern AVInputFormat ff_lvf_demuxer;
+extern AVInputFormat ff_lxf_demuxer;
+extern AVInputFormat ff_m4v_demuxer;
+extern AVOutputFormat ff_m4v_muxer;
+extern AVOutputFormat ff_md5_muxer;
+extern AVInputFormat ff_matroska_demuxer;
+extern AVOutputFormat ff_matroska_muxer;
+extern AVOutputFormat ff_matroska_audio_muxer;
+extern AVInputFormat ff_mgsts_demuxer;
+extern AVInputFormat ff_microdvd_demuxer;
+extern AVOutputFormat ff_microdvd_muxer;
+extern AVInputFormat ff_mjpeg_demuxer;
+extern AVOutputFormat ff_mjpeg_muxer;
+extern AVInputFormat ff_mjpeg_2000_demuxer;
+extern AVInputFormat ff_mlp_demuxer;
+extern AVOutputFormat ff_mlp_muxer;
+extern AVInputFormat ff_mlv_demuxer;
+extern AVInputFormat ff_mm_demuxer;
+extern AVInputFormat ff_mmf_demuxer;
+extern AVOutputFormat ff_mmf_muxer;
+extern AVInputFormat ff_mov_demuxer;
+extern AVOutputFormat ff_mov_muxer;
+extern AVOutputFormat ff_mp2_muxer;
+extern AVInputFormat ff_mp3_demuxer;
+extern AVOutputFormat ff_mp3_muxer;
+extern AVOutputFormat ff_mp4_muxer;
+extern AVInputFormat ff_mpc_demuxer;
+extern AVInputFormat ff_mpc8_demuxer;
+extern AVOutputFormat ff_mpeg1system_muxer;
+extern AVOutputFormat ff_mpeg1vcd_muxer;
+extern AVOutputFormat ff_mpeg1video_muxer;
+extern AVOutputFormat ff_mpeg2dvd_muxer;
+extern AVOutputFormat ff_mpeg2svcd_muxer;
+extern AVOutputFormat ff_mpeg2video_muxer;
+extern AVOutputFormat ff_mpeg2vob_muxer;
+extern AVInputFormat ff_mpegps_demuxer;
+extern AVInputFormat ff_mpegts_demuxer;
+extern AVOutputFormat ff_mpegts_muxer;
+extern AVInputFormat ff_mpegtsraw_demuxer;
+extern AVInputFormat ff_mpegvideo_demuxer;
+extern AVInputFormat ff_mpjpeg_demuxer;
+extern AVOutputFormat ff_mpjpeg_muxer;
+extern AVInputFormat ff_mpl2_demuxer;
+extern AVInputFormat ff_mpsub_demuxer;
+extern AVInputFormat ff_msf_demuxer;
+extern AVInputFormat ff_msnwc_tcp_demuxer;
+extern AVInputFormat ff_mtaf_demuxer;
+extern AVInputFormat ff_mtv_demuxer;
+extern AVInputFormat ff_musx_demuxer;
+extern AVInputFormat ff_mv_demuxer;
+extern AVInputFormat ff_mvi_demuxer;
+extern AVInputFormat ff_mxf_demuxer;
+extern AVOutputFormat ff_mxf_muxer;
+extern AVOutputFormat ff_mxf_d10_muxer;
+extern AVOutputFormat ff_mxf_opatom_muxer;
+extern AVInputFormat ff_mxg_demuxer;
+extern AVInputFormat ff_nc_demuxer;
+extern AVInputFormat ff_nistsphere_demuxer;
+extern AVInputFormat ff_nsp_demuxer;
+extern AVInputFormat ff_nsv_demuxer;
+extern AVOutputFormat ff_null_muxer;
+extern AVInputFormat ff_nut_demuxer;
+extern AVOutputFormat ff_nut_muxer;
+extern AVInputFormat ff_nuv_demuxer;
+extern AVOutputFormat ff_oga_muxer;
+extern AVInputFormat ff_ogg_demuxer;
+extern AVOutputFormat ff_ogg_muxer;
+extern AVOutputFormat ff_ogv_muxer;
+extern AVInputFormat ff_oma_demuxer;
+extern AVOutputFormat ff_oma_muxer;
+extern AVOutputFormat ff_opus_muxer;
+extern AVInputFormat ff_paf_demuxer;
+extern AVInputFormat ff_pcm_alaw_demuxer;
+extern AVOutputFormat ff_pcm_alaw_muxer;
+extern AVInputFormat ff_pcm_mulaw_demuxer;
+extern AVOutputFormat ff_pcm_mulaw_muxer;
+extern AVInputFormat ff_pcm_f64be_demuxer;
+extern AVOutputFormat ff_pcm_f64be_muxer;
+extern AVInputFormat ff_pcm_f64le_demuxer;
+extern AVOutputFormat ff_pcm_f64le_muxer;
+extern AVInputFormat ff_pcm_f32be_demuxer;
+extern AVOutputFormat ff_pcm_f32be_muxer;
+extern AVInputFormat ff_pcm_f32le_demuxer;
+extern AVOutputFormat ff_pcm_f32le_muxer;
+extern AVInputFormat ff_pcm_s32be_demuxer;
+extern AVOutputFormat ff_pcm_s32be_muxer;
+extern AVInputFormat ff_pcm_s32le_demuxer;
+extern AVOutputFormat ff_pcm_s32le_muxer;
+extern AVInputFormat ff_pcm_s24be_demuxer;
+extern AVOutputFormat ff_pcm_s24be_muxer;
+extern AVInputFormat ff_pcm_s24le_demuxer;
+extern AVOutputFormat ff_pcm_s24le_muxer;
+extern AVInputFormat ff_pcm_s16be_demuxer;
+extern AVOutputFormat ff_pcm_s16be_muxer;
+extern AVInputFormat ff_pcm_s16le_demuxer;
+extern AVOutputFormat ff_pcm_s16le_muxer;
+extern AVInputFormat ff_pcm_s8_demuxer;
+extern AVOutputFormat ff_pcm_s8_muxer;
+extern AVInputFormat ff_pcm_u32be_demuxer;
+extern AVOutputFormat ff_pcm_u32be_muxer;
+extern AVInputFormat ff_pcm_u32le_demuxer;
+extern AVOutputFormat ff_pcm_u32le_muxer;
+extern AVInputFormat ff_pcm_u24be_demuxer;
+extern AVOutputFormat ff_pcm_u24be_muxer;
+extern AVInputFormat ff_pcm_u24le_demuxer;
+extern AVOutputFormat ff_pcm_u24le_muxer;
+extern AVInputFormat ff_pcm_u16be_demuxer;
+extern AVOutputFormat ff_pcm_u16be_muxer;
+extern AVInputFormat ff_pcm_u16le_demuxer;
+extern AVOutputFormat ff_pcm_u16le_muxer;
+extern AVInputFormat ff_pcm_u8_demuxer;
+extern AVOutputFormat ff_pcm_u8_muxer;
+extern AVInputFormat ff_pjs_demuxer;
+extern AVInputFormat ff_pmp_demuxer;
+extern AVOutputFormat ff_psp_muxer;
+extern AVInputFormat ff_pva_demuxer;
+extern AVInputFormat ff_pvf_demuxer;
+extern AVInputFormat ff_qcp_demuxer;
+extern AVInputFormat ff_r3d_demuxer;
+extern AVInputFormat ff_rawvideo_demuxer;
+extern AVOutputFormat ff_rawvideo_muxer;
+extern AVInputFormat ff_realtext_demuxer;
+extern AVInputFormat ff_redspark_demuxer;
+extern AVInputFormat ff_rl2_demuxer;
+extern AVInputFormat ff_rm_demuxer;
+extern AVOutputFormat ff_rm_muxer;
+extern AVInputFormat ff_roq_demuxer;
+extern AVOutputFormat ff_roq_muxer;
+extern AVInputFormat ff_rpl_demuxer;
+extern AVInputFormat ff_rsd_demuxer;
+extern AVInputFormat ff_rso_demuxer;
+extern AVOutputFormat ff_rso_muxer;
+extern AVInputFormat ff_rtp_demuxer;
+extern AVOutputFormat ff_rtp_muxer;
+extern AVOutputFormat ff_rtp_mpegts_muxer;
+extern AVInputFormat ff_rtsp_demuxer;
+extern AVOutputFormat ff_rtsp_muxer;
+extern AVInputFormat ff_s337m_demuxer;
+extern AVInputFormat ff_sami_demuxer;
+extern AVInputFormat ff_sap_demuxer;
+extern AVOutputFormat ff_sap_muxer;
+extern AVInputFormat ff_sbc_demuxer;
+extern AVOutputFormat ff_sbc_muxer;
+extern AVInputFormat ff_sbg_demuxer;
+extern AVInputFormat ff_scc_demuxer;
+extern AVOutputFormat ff_scc_muxer;
+extern AVInputFormat ff_sdp_demuxer;
+extern AVInputFormat ff_sdr2_demuxer;
+extern AVInputFormat ff_sds_demuxer;
+extern AVInputFormat ff_sdx_demuxer;
+extern AVInputFormat ff_segafilm_demuxer;
+extern AVOutputFormat ff_segment_muxer;
+extern AVOutputFormat ff_stream_segment_muxer;
+extern AVInputFormat ff_shorten_demuxer;
+extern AVInputFormat ff_siff_demuxer;
+extern AVOutputFormat ff_singlejpeg_muxer;
+extern AVInputFormat ff_sln_demuxer;
+extern AVInputFormat ff_smacker_demuxer;
+extern AVInputFormat ff_smjpeg_demuxer;
+extern AVOutputFormat ff_smjpeg_muxer;
+extern AVOutputFormat ff_smoothstreaming_muxer;
+extern AVInputFormat ff_smush_demuxer;
+extern AVInputFormat ff_sol_demuxer;
+extern AVInputFormat ff_sox_demuxer;
+extern AVOutputFormat ff_sox_muxer;
+extern AVOutputFormat ff_spx_muxer;
+extern AVInputFormat ff_spdif_demuxer;
+extern AVOutputFormat ff_spdif_muxer;
+extern AVInputFormat ff_srt_demuxer;
+extern AVOutputFormat ff_srt_muxer;
+extern AVInputFormat ff_str_demuxer;
+extern AVInputFormat ff_stl_demuxer;
+extern AVInputFormat ff_subviewer1_demuxer;
+extern AVInputFormat ff_subviewer_demuxer;
+extern AVInputFormat ff_sup_demuxer;
+extern AVOutputFormat ff_sup_muxer;
+extern AVInputFormat ff_svag_demuxer;
+extern AVInputFormat ff_swf_demuxer;
+extern AVOutputFormat ff_swf_muxer;
+extern AVInputFormat ff_tak_demuxer;
+extern AVOutputFormat ff_tee_muxer;
+extern AVInputFormat ff_tedcaptions_demuxer;
+extern AVOutputFormat ff_tg2_muxer;
+extern AVOutputFormat ff_tgp_muxer;
+extern AVInputFormat ff_thp_demuxer;
+extern AVInputFormat ff_threedostr_demuxer;
+extern AVInputFormat ff_tiertexseq_demuxer;
+extern AVOutputFormat ff_mkvtimestamp_v2_muxer;
+extern AVInputFormat ff_tmv_demuxer;
+extern AVInputFormat ff_truehd_demuxer;
+extern AVOutputFormat ff_truehd_muxer;
+extern AVInputFormat ff_tta_demuxer;
+extern AVOutputFormat ff_tta_muxer;
+extern AVInputFormat ff_txd_demuxer;
+extern AVInputFormat ff_tty_demuxer;
+extern AVInputFormat ff_ty_demuxer;
+extern AVOutputFormat ff_uncodedframecrc_muxer;
+extern AVInputFormat ff_v210_demuxer;
+extern AVInputFormat ff_v210x_demuxer;
+extern AVInputFormat ff_vag_demuxer;
+extern AVInputFormat ff_vc1_demuxer;
+extern AVOutputFormat ff_vc1_muxer;
+extern AVInputFormat ff_vc1t_demuxer;
+extern AVOutputFormat ff_vc1t_muxer;
+extern AVInputFormat ff_vivo_demuxer;
+extern AVInputFormat ff_vmd_demuxer;
+extern AVInputFormat ff_vobsub_demuxer;
+extern AVInputFormat ff_voc_demuxer;
+extern AVOutputFormat ff_voc_muxer;
+extern AVInputFormat ff_vpk_demuxer;
+extern AVInputFormat ff_vplayer_demuxer;
+extern AVInputFormat ff_vqf_demuxer;
+extern AVInputFormat ff_w64_demuxer;
+extern AVOutputFormat ff_w64_muxer;
+extern AVInputFormat ff_wav_demuxer;
+extern AVOutputFormat ff_wav_muxer;
+extern AVInputFormat ff_wc3_demuxer;
+extern AVOutputFormat ff_webm_muxer;
+extern AVInputFormat ff_webm_dash_manifest_demuxer;
+extern AVOutputFormat ff_webm_dash_manifest_muxer;
+extern AVOutputFormat ff_webm_chunk_muxer;
+extern AVOutputFormat ff_webp_muxer;
+extern AVInputFormat ff_webvtt_demuxer;
+extern AVOutputFormat ff_webvtt_muxer;
+extern AVInputFormat ff_wsaud_demuxer;
+extern AVInputFormat ff_wsd_demuxer;
+extern AVInputFormat ff_wsvqa_demuxer;
+extern AVInputFormat ff_wtv_demuxer;
+extern AVOutputFormat ff_wtv_muxer;
+extern AVInputFormat ff_wve_demuxer;
+extern AVInputFormat ff_wv_demuxer;
+extern AVOutputFormat ff_wv_muxer;
+extern AVInputFormat ff_xa_demuxer;
+extern AVInputFormat ff_xbin_demuxer;
+extern AVInputFormat ff_xmv_demuxer;
+extern AVInputFormat ff_xvag_demuxer;
+extern AVInputFormat ff_xwma_demuxer;
+extern AVInputFormat ff_yop_demuxer;
+extern AVInputFormat ff_yuv4mpegpipe_demuxer;
+extern AVOutputFormat ff_yuv4mpegpipe_muxer;
+/* image demuxers */
+extern AVInputFormat ff_image_bmp_pipe_demuxer;
+extern AVInputFormat ff_image_dds_pipe_demuxer;
+extern AVInputFormat ff_image_dpx_pipe_demuxer;
+extern AVInputFormat ff_image_exr_pipe_demuxer;
+extern AVInputFormat ff_image_j2k_pipe_demuxer;
+extern AVInputFormat ff_image_jpeg_pipe_demuxer;
+extern AVInputFormat ff_image_jpegls_pipe_demuxer;
+extern AVInputFormat ff_image_pam_pipe_demuxer;
+extern AVInputFormat ff_image_pbm_pipe_demuxer;
+extern AVInputFormat ff_image_pcx_pipe_demuxer;
+extern AVInputFormat ff_image_pgmyuv_pipe_demuxer;
+extern AVInputFormat ff_image_pgm_pipe_demuxer;
+extern AVInputFormat ff_image_pictor_pipe_demuxer;
+extern AVInputFormat ff_image_png_pipe_demuxer;
+extern AVInputFormat ff_image_ppm_pipe_demuxer;
+extern AVInputFormat ff_image_psd_pipe_demuxer;
+extern AVInputFormat ff_image_qdraw_pipe_demuxer;
+extern AVInputFormat ff_image_sgi_pipe_demuxer;
+extern AVInputFormat ff_image_svg_pipe_demuxer;
+extern AVInputFormat ff_image_sunrast_pipe_demuxer;
+extern AVInputFormat ff_image_tiff_pipe_demuxer;
+extern AVInputFormat ff_image_webp_pipe_demuxer;
+extern AVInputFormat ff_image_xpm_pipe_demuxer;
+
+/* external libraries */
+extern AVOutputFormat ff_chromaprint_muxer;
+extern AVInputFormat ff_libgme_demuxer;
+extern AVInputFormat ff_libmodplug_demuxer;
+extern AVInputFormat ff_libopenmpt_demuxer;
+
+#include "libavformat/muxer_list.c"
+#include "libavformat/demuxer_list.c"
+
+const AVOutputFormat *av_muxer_iterate(void **opaque)
+{
+ uintptr_t i = (uintptr_t)*opaque;
+ const AVOutputFormat *f = muxer_list[i];
+
+ if (f)
+ *opaque = (void*)(i + 1);
+ return f;
+}
+
+const AVInputFormat *av_demuxer_iterate(void **opaque){
+ uintptr_t i = (uintptr_t)*opaque;
+ const AVInputFormat *f = demuxer_list[i];
+
+ if (f)
+ *opaque = (void*)(i + 1);
+ return f;
+}
+
+#if FF_API_NEXT
+FF_DISABLE_DEPRECATION_WARNINGS
+static AVOnce av_format_next_init = AV_ONCE_INIT;
+
+static const AVInputFormat * const *indev_list = NULL;
+static const AVOutputFormat * const *outdev_list = NULL;
+
+static void av_format_init_next(void)
+{
+ AVOutputFormat *prevout = NULL, *out;
+ AVInputFormat *previn = NULL, *in;
+ void *i = 0;
+
+ while ((out = (AVOutputFormat*)av_muxer_iterate(&i))) {
+ if (prevout)
+ prevout->next = out;
+ prevout = out;
+ }
+
+ if (outdev_list) {
+ for (int j = 0; (out = (AVOutputFormat*)outdev_list[j]); j++) {
+ if (prevout)
+ prevout->next = out;
+ prevout = out;
+ }
+ }
-#define REGISTER_MUXER(X, x) \
- { \
- extern AVOutputFormat ff_##x##_muxer; \
- if (CONFIG_##X##_MUXER) \
- av_register_output_format(&ff_##x##_muxer); \
+ i = 0;
+ while ((in = (AVInputFormat*)av_demuxer_iterate(&i))) {
+ if (previn)
+ previn->next = in;
+ previn = in;
}
-#define REGISTER_DEMUXER(X, x) \
- { \
- extern AVInputFormat ff_##x##_demuxer; \
- if (CONFIG_##X##_DEMUXER) \
- av_register_input_format(&ff_##x##_demuxer); \
+ if (indev_list) {
+ for (int j = 0; (in = (AVInputFormat*)indev_list[j]); j++) {
+ if (previn)
+ previn->next = in;
+ previn = in;
+ }
}
-#define REGISTER_MUXDEMUX(X, x) REGISTER_MUXER(X, x); REGISTER_DEMUXER(X, x)
+}
+
+void avpriv_register_devices(const AVOutputFormat * const o[], const AVInputFormat * const i[])
+{
+ static AVMutex avpriv_register_devices_mutex = AV_MUTEX_INITIALIZER;
+ ff_mutex_lock(&avpriv_register_devices_mutex);
+ outdev_list = o;
+ indev_list = i;
+ av_format_init_next();
+ ff_mutex_unlock(&avpriv_register_devices_mutex);
+}
-static void register_all(void)
+AVInputFormat *av_iformat_next(const AVInputFormat *f)
{
- avcodec_register_all();
+ ff_thread_once(&av_format_next_init, av_format_init_next);
- /* (de)muxers */
- REGISTER_MUXER (A64, a64);
- REGISTER_DEMUXER (AA, aa);
- REGISTER_DEMUXER (AAC, aac);
- REGISTER_MUXDEMUX(AC3, ac3);
- REGISTER_DEMUXER (ACM, acm);
- REGISTER_DEMUXER (ACT, act);
- REGISTER_DEMUXER (ADF, adf);
- REGISTER_DEMUXER (ADP, adp);
- REGISTER_DEMUXER (ADS, ads);
- REGISTER_MUXER (ADTS, adts);
- REGISTER_MUXDEMUX(ADX, adx);
- REGISTER_DEMUXER (AEA, aea);
- REGISTER_DEMUXER (AFC, afc);
- REGISTER_MUXDEMUX(AIFF, aiff);
- REGISTER_DEMUXER (AIX, aix);
- REGISTER_MUXDEMUX(AMR, amr);
- REGISTER_DEMUXER (AMRNB, amrnb);
- REGISTER_DEMUXER (AMRWB, amrwb);
- REGISTER_DEMUXER (ANM, anm);
- REGISTER_DEMUXER (APC, apc);
- REGISTER_DEMUXER (APE, ape);
- REGISTER_MUXDEMUX(APNG, apng);
- REGISTER_MUXDEMUX(APTX, aptx);
- REGISTER_DEMUXER (AQTITLE, aqtitle);
- REGISTER_MUXDEMUX(ASF, asf);
- REGISTER_DEMUXER (ASF_O, asf_o);
- REGISTER_MUXDEMUX(ASS, ass);
- REGISTER_MUXDEMUX(AST, ast);
- REGISTER_MUXER (ASF_STREAM, asf_stream);
- REGISTER_MUXDEMUX(AU, au);
- REGISTER_MUXDEMUX(AVI, avi);
- REGISTER_DEMUXER (AVISYNTH, avisynth);
- REGISTER_MUXER (AVM2, avm2);
- REGISTER_DEMUXER (AVR, avr);
- REGISTER_DEMUXER (AVS, avs);
- REGISTER_DEMUXER (BETHSOFTVID, bethsoftvid);
- REGISTER_DEMUXER (BFI, bfi);
- REGISTER_DEMUXER (BINTEXT, bintext);
- REGISTER_DEMUXER (BINK, bink);
- REGISTER_MUXDEMUX(BIT, bit);
- REGISTER_DEMUXER (BMV, bmv);
- REGISTER_DEMUXER (BFSTM, bfstm);
- REGISTER_DEMUXER (BRSTM, brstm);
- REGISTER_DEMUXER (BOA, boa);
- REGISTER_DEMUXER (C93, c93);
- REGISTER_MUXDEMUX(CAF, caf);
- REGISTER_MUXDEMUX(CAVSVIDEO, cavsvideo);
- REGISTER_DEMUXER (CDG, cdg);
- REGISTER_DEMUXER (CDXL, cdxl);
- REGISTER_DEMUXER (CINE, cine);
- REGISTER_DEMUXER (CONCAT, concat);
- REGISTER_MUXER (CRC, crc);
- REGISTER_MUXDEMUX(DASH, dash);
- REGISTER_MUXDEMUX(DATA, data);
- REGISTER_MUXDEMUX(DAUD, daud);
- REGISTER_DEMUXER (DCSTR, dcstr);
- REGISTER_DEMUXER (DFA, dfa);
- REGISTER_MUXDEMUX(DIRAC, dirac);
- REGISTER_MUXDEMUX(DNXHD, dnxhd);
- REGISTER_DEMUXER (DSF, dsf);
- REGISTER_DEMUXER (DSICIN, dsicin);
- REGISTER_DEMUXER (DSS, dss);
- REGISTER_MUXDEMUX(DTS, dts);
- REGISTER_DEMUXER (DTSHD, dtshd);
- REGISTER_MUXDEMUX(DV, dv);
- REGISTER_DEMUXER (DVBSUB, dvbsub);
- REGISTER_DEMUXER (DVBTXT, dvbtxt);
- REGISTER_DEMUXER (DXA, dxa);
- REGISTER_DEMUXER (EA, ea);
- REGISTER_DEMUXER (EA_CDATA, ea_cdata);
- REGISTER_MUXDEMUX(EAC3, eac3);
- REGISTER_DEMUXER (EPAF, epaf);
- REGISTER_MUXER (F4V, f4v);
- REGISTER_MUXDEMUX(FFMETADATA, ffmetadata);
- REGISTER_MUXER (FIFO, fifo);
- REGISTER_MUXDEMUX(FILMSTRIP, filmstrip);
- REGISTER_MUXDEMUX(FITS, fits);
- REGISTER_MUXDEMUX(FLAC, flac);
- REGISTER_DEMUXER (FLIC, flic);
- REGISTER_MUXDEMUX(FLV, flv);
- REGISTER_DEMUXER (LIVE_FLV, live_flv);
- REGISTER_DEMUXER (FOURXM, fourxm);
- REGISTER_MUXER (FRAMECRC, framecrc);
- REGISTER_MUXER (FRAMEHASH, framehash);
- REGISTER_MUXER (FRAMEMD5, framemd5);
- REGISTER_DEMUXER (FRM, frm);
- REGISTER_DEMUXER (FSB, fsb);
- REGISTER_MUXDEMUX(G722, g722);
- REGISTER_MUXDEMUX(G723_1, g723_1);
- REGISTER_MUXDEMUX(G726, g726);
- REGISTER_MUXDEMUX(G726LE, g726le);
- REGISTER_DEMUXER (G729, g729);
- REGISTER_DEMUXER (GDV, gdv);
- REGISTER_DEMUXER (GENH, genh);
- REGISTER_MUXDEMUX(GIF, gif);
- REGISTER_MUXDEMUX(GSM, gsm);
- REGISTER_MUXDEMUX(GXF, gxf);
- REGISTER_MUXDEMUX(H261, h261);
- REGISTER_MUXDEMUX(H263, h263);
- REGISTER_MUXDEMUX(H264, h264);
- REGISTER_MUXER (HASH, hash);
- REGISTER_MUXER (HDS, hds);
- REGISTER_MUXDEMUX(HEVC, hevc);
- REGISTER_MUXDEMUX(HLS, hls);
- REGISTER_DEMUXER (HNM, hnm);
- REGISTER_MUXDEMUX(ICO, ico);
- REGISTER_DEMUXER (IDCIN, idcin);
- REGISTER_DEMUXER (IDF, idf);
- REGISTER_DEMUXER (IFF, iff);
- REGISTER_MUXDEMUX(ILBC, ilbc);
- REGISTER_MUXDEMUX(IMAGE2, image2);
- REGISTER_MUXDEMUX(IMAGE2PIPE, image2pipe);
- REGISTER_DEMUXER (IMAGE2_ALIAS_PIX, image2_alias_pix);
- REGISTER_DEMUXER (IMAGE2_BRENDER_PIX, image2_brender_pix);
- REGISTER_DEMUXER (INGENIENT, ingenient);
- REGISTER_DEMUXER (IPMOVIE, ipmovie);
- REGISTER_MUXER (IPOD, ipod);
- REGISTER_MUXDEMUX(IRCAM, ircam);
- REGISTER_MUXER (ISMV, ismv);
- REGISTER_DEMUXER (ISS, iss);
- REGISTER_DEMUXER (IV8, iv8);
- REGISTER_MUXDEMUX(IVF, ivf);
- REGISTER_DEMUXER (IVR, ivr);
- REGISTER_MUXDEMUX(JACOSUB, jacosub);
- REGISTER_DEMUXER (JV, jv);
- REGISTER_MUXER (LATM, latm);
- REGISTER_DEMUXER (LMLM4, lmlm4);
- REGISTER_DEMUXER (LOAS, loas);
- REGISTER_MUXDEMUX(LRC, lrc);
- REGISTER_DEMUXER (LVF, lvf);
- REGISTER_DEMUXER (LXF, lxf);
- REGISTER_MUXDEMUX(M4V, m4v);
- REGISTER_MUXER (MD5, md5);
- REGISTER_MUXDEMUX(MATROSKA, matroska);
- REGISTER_MUXER (MATROSKA_AUDIO, matroska_audio);
- REGISTER_DEMUXER (MGSTS, mgsts);
- REGISTER_MUXDEMUX(MICRODVD, microdvd);
- REGISTER_MUXDEMUX(MJPEG, mjpeg);
- REGISTER_DEMUXER (MJPEG_2000, mjpeg_2000);
- REGISTER_MUXDEMUX(MLP, mlp);
- REGISTER_DEMUXER (MLV, mlv);
- REGISTER_DEMUXER (MM, mm);
- REGISTER_MUXDEMUX(MMF, mmf);
- REGISTER_MUXDEMUX(MOV, mov);
- REGISTER_MUXER (MP2, mp2);
- REGISTER_MUXDEMUX(MP3, mp3);
- REGISTER_MUXER (MP4, mp4);
- REGISTER_DEMUXER (MPC, mpc);
- REGISTER_DEMUXER (MPC8, mpc8);
- REGISTER_MUXER (MPEG1SYSTEM, mpeg1system);
- REGISTER_MUXER (MPEG1VCD, mpeg1vcd);
- REGISTER_MUXER (MPEG1VIDEO, mpeg1video);
- REGISTER_MUXER (MPEG2DVD, mpeg2dvd);
- REGISTER_MUXER (MPEG2SVCD, mpeg2svcd);
- REGISTER_MUXER (MPEG2VIDEO, mpeg2video);
- REGISTER_MUXER (MPEG2VOB, mpeg2vob);
- REGISTER_DEMUXER (MPEGPS, mpegps);
- REGISTER_MUXDEMUX(MPEGTS, mpegts);
- REGISTER_DEMUXER (MPEGTSRAW, mpegtsraw);
- REGISTER_DEMUXER (MPEGVIDEO, mpegvideo);
- REGISTER_MUXDEMUX(MPJPEG, mpjpeg);
- REGISTER_DEMUXER (MPL2, mpl2);
- REGISTER_DEMUXER (MPSUB, mpsub);
- REGISTER_DEMUXER (MSF, msf);
- REGISTER_DEMUXER (MSNWC_TCP, msnwc_tcp);
- REGISTER_DEMUXER (MTAF, mtaf);
- REGISTER_DEMUXER (MTV, mtv);
- REGISTER_DEMUXER (MUSX, musx);
- REGISTER_DEMUXER (MV, mv);
- REGISTER_DEMUXER (MVI, mvi);
- REGISTER_MUXDEMUX(MXF, mxf);
- REGISTER_MUXER (MXF_D10, mxf_d10);
- REGISTER_MUXER (MXF_OPATOM, mxf_opatom);
- REGISTER_DEMUXER (MXG, mxg);
- REGISTER_DEMUXER (NC, nc);
- REGISTER_DEMUXER (NISTSPHERE, nistsphere);
- REGISTER_DEMUXER (NSP, nsp);
- REGISTER_DEMUXER (NSV, nsv);
- REGISTER_MUXER (NULL, null);
- REGISTER_MUXDEMUX(NUT, nut);
- REGISTER_DEMUXER (NUV, nuv);
- REGISTER_MUXER (OGA, oga);
- REGISTER_MUXDEMUX(OGG, ogg);
- REGISTER_MUXER (OGV, ogv);
- REGISTER_MUXDEMUX(OMA, oma);
- REGISTER_MUXER (OPUS, opus);
- REGISTER_DEMUXER (PAF, paf);
- REGISTER_MUXDEMUX(PCM_ALAW, pcm_alaw);
- REGISTER_MUXDEMUX(PCM_MULAW, pcm_mulaw);
- REGISTER_MUXDEMUX(PCM_F64BE, pcm_f64be);
- REGISTER_MUXDEMUX(PCM_F64LE, pcm_f64le);
- REGISTER_MUXDEMUX(PCM_F32BE, pcm_f32be);
- REGISTER_MUXDEMUX(PCM_F32LE, pcm_f32le);
- REGISTER_MUXDEMUX(PCM_S32BE, pcm_s32be);
- REGISTER_MUXDEMUX(PCM_S32LE, pcm_s32le);
- REGISTER_MUXDEMUX(PCM_S24BE, pcm_s24be);
- REGISTER_MUXDEMUX(PCM_S24LE, pcm_s24le);
- REGISTER_MUXDEMUX(PCM_S16BE, pcm_s16be);
- REGISTER_MUXDEMUX(PCM_S16LE, pcm_s16le);
- REGISTER_MUXDEMUX(PCM_S8, pcm_s8);
- REGISTER_MUXDEMUX(PCM_U32BE, pcm_u32be);
- REGISTER_MUXDEMUX(PCM_U32LE, pcm_u32le);
- REGISTER_MUXDEMUX(PCM_U24BE, pcm_u24be);
- REGISTER_MUXDEMUX(PCM_U24LE, pcm_u24le);
- REGISTER_MUXDEMUX(PCM_U16BE, pcm_u16be);
- REGISTER_MUXDEMUX(PCM_U16LE, pcm_u16le);
- REGISTER_MUXDEMUX(PCM_U8, pcm_u8);
- REGISTER_DEMUXER (PJS, pjs);
- REGISTER_DEMUXER (PMP, pmp);
- REGISTER_MUXER (PSP, psp);
- REGISTER_DEMUXER (PVA, pva);
- REGISTER_DEMUXER (PVF, pvf);
- REGISTER_DEMUXER (QCP, qcp);
- REGISTER_DEMUXER (R3D, r3d);
- REGISTER_MUXDEMUX(RAWVIDEO, rawvideo);
- REGISTER_DEMUXER (REALTEXT, realtext);
- REGISTER_DEMUXER (REDSPARK, redspark);
- REGISTER_DEMUXER (RL2, rl2);
- REGISTER_MUXDEMUX(RM, rm);
- REGISTER_MUXDEMUX(ROQ, roq);
- REGISTER_DEMUXER (RPL, rpl);
- REGISTER_DEMUXER (RSD, rsd);
- REGISTER_MUXDEMUX(RSO, rso);
- REGISTER_MUXDEMUX(RTP, rtp);
- REGISTER_MUXER (RTP_MPEGTS, rtp_mpegts);
- REGISTER_MUXDEMUX(RTSP, rtsp);
- REGISTER_DEMUXER (S337M, s337m);
- REGISTER_DEMUXER (SAMI, sami);
- REGISTER_MUXDEMUX(SAP, sap);
- REGISTER_DEMUXER (SBG, sbg);
- REGISTER_MUXDEMUX(SCC, scc);
- REGISTER_DEMUXER (SDP, sdp);
- REGISTER_DEMUXER (SDR2, sdr2);
- REGISTER_DEMUXER (SDS, sds);
- REGISTER_DEMUXER (SDX, sdx);
-#if CONFIG_RTPDEC
- ff_register_rtp_dynamic_payload_handlers();
- ff_register_rdt_dynamic_payload_handlers();
-#endif
- REGISTER_DEMUXER (SEGAFILM, segafilm);
- REGISTER_MUXER (SEGMENT, segment);
- REGISTER_MUXER (SEGMENT, stream_segment);
- REGISTER_DEMUXER (SHORTEN, shorten);
- REGISTER_DEMUXER (SIFF, siff);
- REGISTER_MUXER (SINGLEJPEG, singlejpeg);
- REGISTER_DEMUXER (SLN, sln);
- REGISTER_DEMUXER (SMACKER, smacker);
- REGISTER_MUXDEMUX(SMJPEG, smjpeg);
- REGISTER_MUXER (SMOOTHSTREAMING, smoothstreaming);
- REGISTER_DEMUXER (SMUSH, smush);
- REGISTER_DEMUXER (SOL, sol);
- REGISTER_MUXDEMUX(SOX, sox);
- REGISTER_MUXER (SPX, spx);
- REGISTER_MUXDEMUX(SPDIF, spdif);
- REGISTER_MUXDEMUX(SRT, srt);
- REGISTER_DEMUXER (STR, str);
- REGISTER_DEMUXER (STL, stl);
- REGISTER_DEMUXER (SUBVIEWER1, subviewer1);
- REGISTER_DEMUXER (SUBVIEWER, subviewer);
- REGISTER_MUXDEMUX(SUP, sup);
- REGISTER_DEMUXER (SVAG, svag);
- REGISTER_MUXDEMUX(SWF, swf);
- REGISTER_DEMUXER (TAK, tak);
- REGISTER_MUXER (TEE, tee);
- REGISTER_DEMUXER (TEDCAPTIONS, tedcaptions);
- REGISTER_MUXER (TG2, tg2);
- REGISTER_MUXER (TGP, tgp);
- REGISTER_DEMUXER (THP, thp);
- REGISTER_DEMUXER (THREEDOSTR, threedostr);
- REGISTER_DEMUXER (TIERTEXSEQ, tiertexseq);
- REGISTER_MUXER (MKVTIMESTAMP_V2, mkvtimestamp_v2);
- REGISTER_DEMUXER (TMV, tmv);
- REGISTER_MUXDEMUX(TRUEHD, truehd);
- REGISTER_MUXDEMUX(TTA, tta);
- REGISTER_DEMUXER (TXD, txd);
- REGISTER_DEMUXER (TTY, tty);
- REGISTER_DEMUXER (TY, ty);
- REGISTER_MUXER (UNCODEDFRAMECRC, uncodedframecrc);
- REGISTER_DEMUXER (V210, v210);
- REGISTER_DEMUXER (V210X, v210x);
- REGISTER_DEMUXER (VAG, vag);
- REGISTER_MUXDEMUX(VC1, vc1);
- REGISTER_MUXDEMUX(VC1T, vc1t);
- REGISTER_DEMUXER (VIVO, vivo);
- REGISTER_DEMUXER (VMD, vmd);
- REGISTER_DEMUXER (VOBSUB, vobsub);
- REGISTER_MUXDEMUX(VOC, voc);
- REGISTER_DEMUXER (VPK, vpk);
- REGISTER_DEMUXER (VPLAYER, vplayer);
- REGISTER_DEMUXER (VQF, vqf);
- REGISTER_MUXDEMUX(W64, w64);
- REGISTER_MUXDEMUX(WAV, wav);
- REGISTER_DEMUXER (WC3, wc3);
- REGISTER_MUXER (WEBM, webm);
- REGISTER_MUXDEMUX(WEBM_DASH_MANIFEST, webm_dash_manifest);
- REGISTER_MUXER (WEBM_CHUNK, webm_chunk);
- REGISTER_MUXER (WEBP, webp);
- REGISTER_MUXDEMUX(WEBVTT, webvtt);
- REGISTER_DEMUXER (WSAUD, wsaud);
- REGISTER_DEMUXER (WSD, wsd);
- REGISTER_DEMUXER (WSVQA, wsvqa);
- REGISTER_MUXDEMUX(WTV, wtv);
- REGISTER_DEMUXER (WVE, wve);
- REGISTER_MUXDEMUX(WV, wv);
- REGISTER_DEMUXER (XA, xa);
- REGISTER_DEMUXER (XBIN, xbin);
- REGISTER_DEMUXER (XMV, xmv);
- REGISTER_DEMUXER (XVAG, xvag);
- REGISTER_DEMUXER (XWMA, xwma);
- REGISTER_DEMUXER (YOP, yop);
- REGISTER_MUXDEMUX(YUV4MPEGPIPE, yuv4mpegpipe);
+ if (f)
+ return f->next;
+ else
+ /* If there are no demuxers but input devices, then return the first input device.
+ * This will still return null if both there are both no demuxers or input devices. */
+ return demuxer_list[0] ? (AVInputFormat*)demuxer_list[0] : (indev_list ? (AVInputFormat*)indev_list[0] : NULL);
+}
- /* image demuxers */
- REGISTER_DEMUXER (IMAGE_BMP_PIPE, image_bmp_pipe);
- REGISTER_DEMUXER (IMAGE_DDS_PIPE, image_dds_pipe);
- REGISTER_DEMUXER (IMAGE_DPX_PIPE, image_dpx_pipe);
- REGISTER_DEMUXER (IMAGE_EXR_PIPE, image_exr_pipe);
- REGISTER_DEMUXER (IMAGE_J2K_PIPE, image_j2k_pipe);
- REGISTER_DEMUXER (IMAGE_JPEG_PIPE, image_jpeg_pipe);
- REGISTER_DEMUXER (IMAGE_JPEGLS_PIPE, image_jpegls_pipe);
- REGISTER_DEMUXER (IMAGE_PAM_PIPE, image_pam_pipe);
- REGISTER_DEMUXER (IMAGE_PBM_PIPE, image_pbm_pipe);
- REGISTER_DEMUXER (IMAGE_PCX_PIPE, image_pcx_pipe);
- REGISTER_DEMUXER (IMAGE_PGMYUV_PIPE, image_pgmyuv_pipe);
- REGISTER_DEMUXER (IMAGE_PGM_PIPE, image_pgm_pipe);
- REGISTER_DEMUXER (IMAGE_PICTOR_PIPE, image_pictor_pipe);
- REGISTER_DEMUXER (IMAGE_PNG_PIPE, image_png_pipe);
- REGISTER_DEMUXER (IMAGE_PPM_PIPE, image_ppm_pipe);
- REGISTER_DEMUXER (IMAGE_PSD_PIPE, image_psd_pipe);
- REGISTER_DEMUXER (IMAGE_QDRAW_PIPE, image_qdraw_pipe);
- REGISTER_DEMUXER (IMAGE_SGI_PIPE, image_sgi_pipe);
- REGISTER_DEMUXER (IMAGE_SVG_PIPE, image_svg_pipe);
- REGISTER_DEMUXER (IMAGE_SUNRAST_PIPE, image_sunrast_pipe);
- REGISTER_DEMUXER (IMAGE_TIFF_PIPE, image_tiff_pipe);
- REGISTER_DEMUXER (IMAGE_WEBP_PIPE, image_webp_pipe);
- REGISTER_DEMUXER (IMAGE_XPM_PIPE, image_xpm_pipe);
+AVOutputFormat *av_oformat_next(const AVOutputFormat *f)
+{
+ ff_thread_once(&av_format_next_init, av_format_init_next);
- /* external libraries */
- REGISTER_MUXER (CHROMAPRINT, chromaprint);
- REGISTER_DEMUXER (LIBGME, libgme);
- REGISTER_DEMUXER (LIBMODPLUG, libmodplug);
- REGISTER_DEMUXER (LIBOPENMPT, libopenmpt);
+ if (f)
+ return f->next;
+ else
+ return muxer_list[0] ? (AVOutputFormat*)muxer_list[0] : (outdev_list ? (AVOutputFormat*)outdev_list[0] : NULL);
}
void av_register_all(void)
{
- static AVOnce control = AV_ONCE_INIT;
+ ff_thread_once(&av_format_next_init, av_format_init_next);
+}
+
+void av_register_input_format(AVInputFormat *format)
+{
+ ff_thread_once(&av_format_next_init, av_format_init_next);
+}
- ff_thread_once(&control, register_all);
+void av_register_output_format(AVOutputFormat *format)
+{
+ ff_thread_once(&av_format_next_init, av_format_init_next);
}
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
diff --git a/chromium/third_party/ffmpeg/libavformat/aptxdec.c b/chromium/third_party/ffmpeg/libavformat/aptxdec.c
index 3b8fae1b55e..a262cd9ebea 100644
--- a/chromium/third_party/ffmpeg/libavformat/aptxdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/aptxdec.c
@@ -26,26 +26,49 @@
#define APTX_BLOCK_SIZE 4
#define APTX_PACKET_SIZE (256*APTX_BLOCK_SIZE)
+#define APTX_HD_BLOCK_SIZE 6
+#define APTX_HD_PACKET_SIZE (256*APTX_HD_BLOCK_SIZE)
+
typedef struct AptXDemuxerContext {
AVClass *class;
int sample_rate;
} AptXDemuxerContext;
-static int aptx_read_header(AVFormatContext *s)
+static AVStream *aptx_read_header_common(AVFormatContext *s)
{
AptXDemuxerContext *s1 = s->priv_data;
AVStream *st = avformat_new_stream(s, NULL);
if (!st)
- return AVERROR(ENOMEM);
+ return NULL;
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
- st->codecpar->codec_id = AV_CODEC_ID_APTX;
st->codecpar->format = AV_SAMPLE_FMT_S32P;
st->codecpar->channels = 2;
st->codecpar->sample_rate = s1->sample_rate;
+ st->start_time = 0;
+ return st;
+}
+
+static int aptx_read_header(AVFormatContext *s)
+{
+ AVStream *st = aptx_read_header_common(s);
+ if (!st)
+ return AVERROR(ENOMEM);
+ st->codecpar->codec_id = AV_CODEC_ID_APTX;
st->codecpar->bits_per_coded_sample = 4;
st->codecpar->block_align = APTX_BLOCK_SIZE;
st->codecpar->frame_size = APTX_PACKET_SIZE;
- st->start_time = 0;
+ return 0;
+}
+
+static int aptx_hd_read_header(AVFormatContext *s)
+{
+ AVStream *st = aptx_read_header_common(s);
+ if (!st)
+ return AVERROR(ENOMEM);
+ st->codecpar->codec_id = AV_CODEC_ID_APTX_HD;
+ st->codecpar->bits_per_coded_sample = 6;
+ st->codecpar->block_align = APTX_HD_BLOCK_SIZE;
+ st->codecpar->frame_size = APTX_HD_PACKET_SIZE;
return 0;
}
@@ -54,11 +77,17 @@ static int aptx_read_packet(AVFormatContext *s, AVPacket *pkt)
return av_get_packet(s->pb, pkt, APTX_PACKET_SIZE);
}
+static int aptx_hd_read_packet(AVFormatContext *s, AVPacket *pkt)
+{
+ return av_get_packet(s->pb, pkt, APTX_HD_PACKET_SIZE);
+}
+
static const AVOption aptx_options[] = {
{ "sample_rate", "", offsetof(AptXDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 48000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
{ NULL },
};
+#if CONFIG_APTX_DEMUXER
static const AVClass aptx_demuxer_class = {
.class_name = "aptx demuxer",
.item_name = av_default_item_name,
@@ -76,3 +105,24 @@ AVInputFormat ff_aptx_demuxer = {
.flags = AVFMT_GENERIC_INDEX,
.priv_class = &aptx_demuxer_class,
};
+#endif
+
+#if CONFIG_APTX_HD_DEMUXER
+static const AVClass aptx_hd_demuxer_class = {
+ .class_name = "aptx hd demuxer",
+ .item_name = av_default_item_name,
+ .option = aptx_options,
+ .version = LIBAVUTIL_VERSION_INT,
+};
+
+AVInputFormat ff_aptx_hd_demuxer = {
+ .name = "aptx_hd",
+ .long_name = NULL_IF_CONFIG_SMALL("raw aptX HD"),
+ .extensions = "aptxhd",
+ .priv_data_size = sizeof(AptXDemuxerContext),
+ .read_header = aptx_hd_read_header,
+ .read_packet = aptx_hd_read_packet,
+ .flags = AVFMT_GENERIC_INDEX,
+ .priv_class = &aptx_hd_demuxer_class,
+};
+#endif
diff --git a/chromium/third_party/ffmpeg/libavformat/avformat.h b/chromium/third_party/ffmpeg/libavformat/avformat.h
index e5740be2b4d..a2fe7c6bb2c 100644
--- a/chromium/third_party/ffmpeg/libavformat/avformat.h
+++ b/chromium/third_party/ffmpeg/libavformat/avformat.h
@@ -845,6 +845,7 @@ typedef struct AVStreamInternal AVStreamInternal;
#define AV_DISPOSITION_CAPTIONS 0x10000
#define AV_DISPOSITION_DESCRIPTIONS 0x20000
#define AV_DISPOSITION_METADATA 0x40000
+#define AV_DISPOSITION_DEPENDENT 0x80000 ///< dependent audio stream (mix_type=0 in mpegts)
/**
* Options for behavior on timestamp wrap detection.
@@ -1275,6 +1276,11 @@ typedef struct AVProgram {
#define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present
(streams are added dynamically) */
+#define AVFMTCTX_UNSEEKABLE 0x0002 /**< signal that the stream is definitely
+ not seekable, and attempts to call the
+ seek function will fail. For some
+ network protocols (e.g. HLS), this can
+ change dynamically at runtime. */
typedef struct AVChapter {
int id; ///< unique ID to identify the chapter
@@ -1389,13 +1395,33 @@ typedef struct AVFormatContext {
*/
AVStream **streams;
+#if FF_API_FORMAT_FILENAME
/**
* input or output filename
*
* - demuxing: set by avformat_open_input()
* - muxing: may be set by the caller before avformat_write_header()
+ *
+ * @deprecated Use url instead.
*/
+ attribute_deprecated
char filename[1024];
+#endif
+
+ /**
+ * input or output URL. Unlike the old filename field, this field has no
+ * length restriction.
+ *
+ * - demuxing: set by avformat_open_input(), initialized to an empty
+ * string if url parameter was NULL in avformat_open_input().
+ * - muxing: may be set by the caller before calling avformat_write_header()
+ * (or avformat_init_output() if that is called first) to a string
+ * which is freeable by av_free(). Set to an empty string if it
+ * was NULL in avformat_init_output().
+ *
+ * Freed by libavformat in avformat_free_context().
+ */
+ char *url;
/**
* Position of the first frame of the component, in
@@ -1986,6 +2012,7 @@ const char *avformat_configuration(void);
*/
const char *avformat_license(void);
+#if FF_API_NEXT
/**
* Initialize libavformat and register all the muxers, demuxers and
* protocols. If you do not call this function, then you can select
@@ -1994,10 +2021,14 @@ const char *avformat_license(void);
* @see av_register_input_format()
* @see av_register_output_format()
*/
+attribute_deprecated
void av_register_all(void);
+attribute_deprecated
void av_register_input_format(AVInputFormat *format);
+attribute_deprecated
void av_register_output_format(AVOutputFormat *format);
+#endif
/**
* Do global initialization of network libraries. This is optional,
@@ -2021,11 +2052,13 @@ int avformat_network_init(void);
*/
int avformat_network_deinit(void);
+#if FF_API_NEXT
/**
* If f is NULL, returns the first registered input format,
* if f is non-NULL, returns the next registered input format after f
* or NULL if f is the last one.
*/
+attribute_deprecated
AVInputFormat *av_iformat_next(const AVInputFormat *f);
/**
@@ -2033,7 +2066,31 @@ AVInputFormat *av_iformat_next(const AVInputFormat *f);
* if f is non-NULL, returns the next registered output format after f
* or NULL if f is the last one.
*/
+attribute_deprecated
AVOutputFormat *av_oformat_next(const AVOutputFormat *f);
+#endif
+
+/**
+ * Iterate over all registered muxers.
+ *
+ * @param opaque a pointer where libavformat will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered muxer or NULL when the iteration is
+ * finished
+ */
+const AVOutputFormat *av_muxer_iterate(void **opaque);
+
+/**
+ * Iterate over all registered demuxers.
+ *
+ * @param opaque a pointer where libavformat will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered demuxer or NULL when the iteration is
+ * finished
+ */
+const AVInputFormat *av_demuxer_iterate(void **opaque);
/**
* Allocate an AVFormatContext.
diff --git a/chromium/third_party/ffmpeg/libavformat/avidec.c b/chromium/third_party/ffmpeg/libavformat/avidec.c
index 3ff515d492f..bafe1dc8da0 100644
--- a/chromium/third_party/ffmpeg/libavformat/avidec.c
+++ b/chromium/third_party/ffmpeg/libavformat/avidec.c
@@ -670,7 +670,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
st->start_time = 0;
avio_rl32(pb); /* buffer size */
avio_rl32(pb); /* quality */
- if (ast->cum_len*ast->scale/ast->rate > 3600) {
+ if (ast->cum_len > 3600LL * ast->rate / ast->scale) {
av_log(s, AV_LOG_ERROR, "crazy start time, iam scared, giving up\n");
ast->cum_len = 0;
}
diff --git a/chromium/third_party/ffmpeg/libavformat/aviobuf.c b/chromium/third_party/ffmpeg/libavformat/aviobuf.c
index 86eb6579f43..95b33644784 100644
--- a/chromium/third_party/ffmpeg/libavformat/aviobuf.c
+++ b/chromium/third_party/ffmpeg/libavformat/aviobuf.c
@@ -87,6 +87,8 @@ int ffio_init_context(AVIOContext *s,
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
int64_t (*seek)(void *opaque, int64_t offset, int whence))
{
+ memset(s, 0, sizeof(AVIOContext));
+
s->buffer = buffer;
s->orig_buffer_size =
s->buffer_size = buffer_size;
@@ -135,7 +137,7 @@ AVIOContext *avio_alloc_context(
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
int64_t (*seek)(void *opaque, int64_t offset, int whence))
{
- AVIOContext *s = av_mallocz(sizeof(AVIOContext));
+ AVIOContext *s = av_malloc(sizeof(AVIOContext));
if (!s)
return NULL;
ffio_init_context(s, buffer, buffer_size, write_flag, opaque,
@@ -821,6 +823,52 @@ int ff_get_line(AVIOContext *s, char *buf, int maxlen)
return i;
}
+int64_t ff_read_line_to_bprint(AVIOContext *s, AVBPrint *bp)
+{
+ int len, end;
+ int64_t read = 0;
+ char tmp[1024];
+ char c;
+
+ do {
+ len = 0;
+ do {
+ c = avio_r8(s);
+ end = (c == '\r' || c == '\n' || c == '\0');
+ if (!end)
+ tmp[len++] = c;
+ } while (!end && len < sizeof(tmp));
+ av_bprint_append_data(bp, tmp, len);
+ read += len;
+ } while (!end);
+
+ if (c == '\r' && avio_r8(s) != '\n' && !avio_feof(s))
+ avio_skip(s, -1);
+
+ if (!c && s->error)
+ return s->error;
+
+ if (!c && !read && avio_feof(s))
+ return AVERROR_EOF;
+
+ return read;
+}
+
+int64_t ff_read_line_to_bprint_overwrite(AVIOContext *s, AVBPrint *bp)
+{
+ int64_t ret;
+
+ av_bprint_clear(bp);
+ ret = ff_read_line_to_bprint(s, bp);
+ if (ret < 0)
+ return ret;
+
+ if (!av_bprint_is_complete(bp))
+ return AVERROR(ENOMEM);
+
+ return bp->len;
+}
+
int avio_get_str(AVIOContext *s, int maxlen, char *buf, int buflen)
{
int i;
diff --git a/chromium/third_party/ffmpeg/libavformat/bintext.c b/chromium/third_party/ffmpeg/libavformat/bintext.c
index 12e3bfde4de..f1c0b3e8925 100644
--- a/chromium/third_party/ffmpeg/libavformat/bintext.c
+++ b/chromium/third_party/ffmpeg/libavformat/bintext.c
@@ -126,6 +126,53 @@ static void predict_width(AVCodecParameters *par, uint64_t fsize, int got_width)
par->width = fsize > 4000 ? (160<<3) : (80<<3);
}
+static int bin_probe(AVProbeData *p)
+{
+ const uint8_t *d = p->buf;
+ int magic = 0, sauce = 0;
+ int invisible = 0;
+ int i;
+
+ if (p->buf_size > 256)
+ magic = !memcmp(d + p->buf_size - 256, next_magic, sizeof(next_magic));
+ if (p->buf_size > 128)
+ sauce = !memcmp(d + p->buf_size - 128, "SAUCE00", 7);
+
+ if (magic)
+ return AVPROBE_SCORE_EXTENSION + 1;
+
+ if (av_match_ext(p->filename, "bin")) {
+ AVCodecParameters par;
+ int got_width = 0;
+ par.width = par.height = 0;
+ if (sauce)
+ return AVPROBE_SCORE_EXTENSION + 1;
+
+ predict_width(&par, p->buf_size, got_width);
+ if (par.width <= 0)
+ return 0;
+ calculate_height(&par, p->buf_size);
+ if (par.height <= 0)
+ return 0;
+
+ for (i = 0; i < p->buf_size - 256; i+=2) {
+ if ((d[i+1] & 15) == (d[i+1] >> 4) && d[i] && d[i] != 0xFF && d[i] != ' ') {
+ invisible ++;
+ }
+ }
+
+ if (par.width * par.height * 2 / (8*16) == p->buf_size)
+ return AVPROBE_SCORE_MAX / 2;
+ return 1;
+ }
+
+ if (sauce)
+ return 1;
+
+ return 0;
+}
+
+
static int bintext_read_header(AVFormatContext *s)
{
BinDemuxContext *bin = s->priv_data;
@@ -343,9 +390,9 @@ AVInputFormat ff_bintext_demuxer = {
.name = "bin",
.long_name = NULL_IF_CONFIG_SMALL("Binary text"),
.priv_data_size = sizeof(BinDemuxContext),
+ .read_probe = bin_probe,
.read_header = bintext_read_header,
.read_packet = read_packet,
- .extensions = "bin",
.priv_class = CLASS("Binary text demuxer"),
};
#endif
diff --git a/chromium/third_party/ffmpeg/libavformat/codec2.c b/chromium/third_party/ffmpeg/libavformat/codec2.c
new file mode 100644
index 00000000000..28dbbd8176f
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavformat/codec2.c
@@ -0,0 +1,285 @@
+/*
+ * codec2 muxer and demuxers
+ * Copyright (c) 2017 Tomas Härdin
+ *
+ * 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 <memory.h>
+#include "libavcodec/codec2utils.h"
+#include "libavutil/intreadwrite.h"
+#include "avio_internal.h"
+#include "avformat.h"
+#include "internal.h"
+#include "rawdec.h"
+#include "rawenc.h"
+#include "pcm.h"
+
+#define AVPRIV_CODEC2_HEADER_SIZE 7
+#define AVPRIV_CODEC2_MAGIC 0xC0DEC2
+
+//the lowest version we should ever run across is 0.8
+//we may run across later versions as the format evolves
+#define EXPECTED_CODEC2_MAJOR_VERSION 0
+#define EXPECTED_CODEC2_MINOR_VERSION 8
+
+typedef struct {
+ const AVClass *class;
+ int mode;
+ int frames_per_packet;
+} Codec2Context;
+
+static int codec2_probe(AVProbeData *p)
+{
+ //must start wih C0 DE C2
+ if (AV_RB24(p->buf) != AVPRIV_CODEC2_MAGIC) {
+ return 0;
+ }
+
+ //no .c2 files prior to 0.8
+ //be strict about major version while we're at it
+ if (p->buf[3] != EXPECTED_CODEC2_MAJOR_VERSION ||
+ p->buf[4] < EXPECTED_CODEC2_MINOR_VERSION) {
+ return 0;
+ }
+
+ //32 bits of identification -> low score
+ return AVPROBE_SCORE_EXTENSION + 1;
+}
+
+static int codec2_read_header_common(AVFormatContext *s, AVStream *st)
+{
+ int mode = avpriv_codec2_mode_from_extradata(st->codecpar->extradata);
+
+ st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+ st->codecpar->codec_id = AV_CODEC_ID_CODEC2;
+ st->codecpar->sample_rate = 8000;
+ st->codecpar->channels = 1;
+ st->codecpar->format = AV_SAMPLE_FMT_S16;
+ st->codecpar->channel_layout = AV_CH_LAYOUT_MONO;
+ st->codecpar->bit_rate = avpriv_codec2_mode_bit_rate(s, mode);
+ st->codecpar->frame_size = avpriv_codec2_mode_frame_size(s, mode);
+ st->codecpar->block_align = avpriv_codec2_mode_block_align(s, mode);
+
+ if (st->codecpar->bit_rate <= 0 ||
+ st->codecpar->frame_size <= 0 ||
+ st->codecpar->block_align <= 0) {
+ return AVERROR_INVALIDDATA;
+ }
+
+ avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate);
+
+ return 0;
+}
+
+static int codec2_read_header(AVFormatContext *s)
+{
+ AVStream *st = avformat_new_stream(s, NULL);
+ int ret, version;
+
+ if (!st) {
+ return AVERROR(ENOMEM);
+ }
+
+ if (avio_rb24(s->pb) != AVPRIV_CODEC2_MAGIC) {
+ av_log(s, AV_LOG_ERROR, "not a .c2 file\n");
+ return AVERROR_INVALIDDATA;
+ }
+
+ ret = ff_alloc_extradata(st->codecpar, AVPRIV_CODEC2_EXTRADATA_SIZE);
+ if (ret) {
+ return ret;
+ }
+
+ ret = ffio_read_size(s->pb, st->codecpar->extradata, AVPRIV_CODEC2_EXTRADATA_SIZE);
+ if (ret < 0) {
+ return ret;
+ }
+
+ version = avpriv_codec2_version_from_extradata(st->codecpar->extradata);
+ if ((version >> 8) != EXPECTED_CODEC2_MAJOR_VERSION) {
+ avpriv_report_missing_feature(s, "Major version %i", version >> 8);
+ return AVERROR_PATCHWELCOME;
+ }
+
+ s->internal->data_offset = AVPRIV_CODEC2_HEADER_SIZE;
+
+ return codec2_read_header_common(s, st);
+}
+
+static int codec2_read_packet(AVFormatContext *s, AVPacket *pkt)
+{
+ Codec2Context *c2 = s->priv_data;
+ AVStream *st = s->streams[0];
+ int ret, size, n, block_align, frame_size;
+
+ block_align = st->codecpar->block_align;
+ frame_size = st->codecpar->frame_size;
+
+ if (block_align <= 0 || frame_size <= 0 || c2->frames_per_packet <= 0) {
+ return AVERROR(EINVAL);
+ }
+
+ //try to read desired number of frames, compute n from to actual number of bytes read
+ size = c2->frames_per_packet * block_align;
+ ret = av_get_packet(s->pb, pkt, size);
+ if (ret < 0) {
+ return ret;
+ }
+
+ //only set duration - compute_pkt_fields() and ff_pcm_read_seek() takes care of everything else
+ //tested by spamming the seek functionality in ffplay
+ n = ret / block_align;
+ pkt->duration = n * frame_size;
+
+ return ret;
+}
+
+static int codec2_write_header(AVFormatContext *s)
+{
+ AVStream *st;
+
+ if (s->nb_streams != 1 || s->streams[0]->codecpar->codec_id != AV_CODEC_ID_CODEC2) {
+ av_log(s, AV_LOG_ERROR, ".c2 files must have exactly one codec2 stream\n");
+ return AVERROR(EINVAL);
+ }
+
+ st = s->streams[0];
+
+ if (st->codecpar->extradata_size != AVPRIV_CODEC2_EXTRADATA_SIZE) {
+ av_log(s, AV_LOG_ERROR, ".c2 files require exactly %i bytes of extradata (got %i)\n",
+ AVPRIV_CODEC2_EXTRADATA_SIZE, st->codecpar->extradata_size);
+ return AVERROR(EINVAL);
+ }
+
+ avio_wb24(s->pb, AVPRIV_CODEC2_MAGIC);
+ avio_write(s->pb, st->codecpar->extradata, AVPRIV_CODEC2_EXTRADATA_SIZE);
+
+ return 0;
+}
+
+static int codec2raw_read_header(AVFormatContext *s)
+{
+ Codec2Context *c2 = s->priv_data;
+ AVStream *st;
+ int ret;
+
+ if (c2->mode < 0) {
+ //FIXME: using a default value of -1 for mandatory options is an incredibly ugly hack
+ av_log(s, AV_LOG_ERROR, "-mode must be set in order to make sense of raw codec2 files\n");
+ return AVERROR(EINVAL);
+ }
+
+ st = avformat_new_stream(s, NULL);
+ if (!st) {
+ return AVERROR(ENOMEM);
+ }
+
+ ret = ff_alloc_extradata(st->codecpar, AVPRIV_CODEC2_EXTRADATA_SIZE);
+ if (ret) {
+ return ret;
+ }
+
+ s->internal->data_offset = 0;
+ avpriv_codec2_make_extradata(st->codecpar->extradata, c2->mode);
+
+ return codec2_read_header_common(s, st);
+}
+
+//transcoding report2074.c2 to wav went from 7.391s to 5.322s with -frames_per_packet 1000 compared to default, same sha1sum
+#define FRAMES_PER_PACKET \
+ { "frames_per_packet", "Number of frames to read at a time. Higher = faster decoding, lower granularity", \
+ offsetof(Codec2Context, frames_per_packet), AV_OPT_TYPE_INT, {.i64 = 1}, 1, INT_MAX, AV_OPT_FLAG_DECODING_PARAM}
+
+static const AVOption codec2_options[] = {
+ FRAMES_PER_PACKET,
+ { NULL },
+};
+
+static const AVOption codec2raw_options[] = {
+ AVPRIV_CODEC2_AVOPTIONS("codec2 mode [mandatory]", Codec2Context, -1, -1, AV_OPT_FLAG_DECODING_PARAM),
+ FRAMES_PER_PACKET,
+ { NULL },
+};
+
+static const AVClass codec2_mux_class = {
+ .class_name = "codec2 muxer",
+ .item_name = av_default_item_name,
+ .version = LIBAVUTIL_VERSION_INT,
+ .category = AV_CLASS_CATEGORY_DEMUXER,
+};
+
+static const AVClass codec2_demux_class = {
+ .class_name = "codec2 demuxer",
+ .item_name = av_default_item_name,
+ .option = codec2_options,
+ .version = LIBAVUTIL_VERSION_INT,
+ .category = AV_CLASS_CATEGORY_DEMUXER,
+};
+
+static const AVClass codec2raw_demux_class = {
+ .class_name = "codec2raw demuxer",
+ .item_name = av_default_item_name,
+ .option = codec2raw_options,
+ .version = LIBAVUTIL_VERSION_INT,
+ .category = AV_CLASS_CATEGORY_DEMUXER,
+};
+
+#if CONFIG_CODEC2_DEMUXER
+AVInputFormat ff_codec2_demuxer = {
+ .name = "codec2",
+ .long_name = NULL_IF_CONFIG_SMALL("codec2 .c2 demuxer"),
+ .priv_data_size = sizeof(Codec2Context),
+ .extensions = "c2",
+ .read_probe = codec2_probe,
+ .read_header = codec2_read_header,
+ .read_packet = codec2_read_packet,
+ .read_seek = ff_pcm_read_seek,
+ .flags = AVFMT_GENERIC_INDEX,
+ .raw_codec_id = AV_CODEC_ID_CODEC2,
+ .priv_class = &codec2_demux_class,
+};
+#endif
+
+#if CONFIG_CODEC2_MUXER
+AVOutputFormat ff_codec2_muxer = {
+ .name = "codec2",
+ .long_name = NULL_IF_CONFIG_SMALL("codec2 .c2 muxer"),
+ .priv_data_size = sizeof(Codec2Context),
+ .extensions = "c2",
+ .audio_codec = AV_CODEC_ID_CODEC2,
+ .video_codec = AV_CODEC_ID_NONE,
+ .write_header = codec2_write_header,
+ .write_packet = ff_raw_write_packet,
+ .flags = AVFMT_NOTIMESTAMPS,
+ .priv_class = &codec2_mux_class,
+};
+#endif
+
+#if CONFIG_CODEC2RAW_DEMUXER
+AVInputFormat ff_codec2raw_demuxer = {
+ .name = "codec2raw",
+ .long_name = NULL_IF_CONFIG_SMALL("raw codec2 demuxer"),
+ .priv_data_size = sizeof(Codec2Context),
+ .read_header = codec2raw_read_header,
+ .read_packet = codec2_read_packet,
+ .read_seek = ff_pcm_read_seek,
+ .flags = AVFMT_GENERIC_INDEX,
+ .raw_codec_id = AV_CODEC_ID_CODEC2,
+ .priv_class = &codec2raw_demux_class,
+};
+#endif
diff --git a/chromium/third_party/ffmpeg/libavformat/concatdec.c b/chromium/third_party/ffmpeg/libavformat/concatdec.c
index bd5174ada25..8fff9cc2cbc 100644
--- a/chromium/third_party/ffmpeg/libavformat/concatdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/concatdec.c
@@ -20,6 +20,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
+#include "libavutil/bprint.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
@@ -126,10 +127,10 @@ static int add_file(AVFormatContext *avf, char *filename, ConcatFile **rfile,
url = filename;
filename = NULL;
} else {
- url_len = strlen(avf->filename) + strlen(filename) + 16;
+ url_len = strlen(avf->url) + strlen(filename) + 16;
if (!(url = av_malloc(url_len)))
FAIL(AVERROR(ENOMEM));
- ff_make_absolute_url(url, url_len, avf->filename, filename);
+ ff_make_absolute_url(url, url_len, avf->url, filename);
av_freep(&filename);
}
@@ -386,18 +387,18 @@ static int concat_read_close(AVFormatContext *avf)
static int concat_read_header(AVFormatContext *avf)
{
ConcatContext *cat = avf->priv_data;
- uint8_t buf[4096];
+ AVBPrint bp;
uint8_t *cursor, *keyword;
- int ret, line = 0, i;
+ int line = 0, i;
unsigned nb_files_alloc = 0;
ConcatFile *file = NULL;
- int64_t time = 0;
+ int64_t ret, time = 0;
- while (1) {
- if ((ret = ff_get_line(avf->pb, buf, sizeof(buf))) <= 0)
- break;
+ av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
+
+ while ((ret = ff_read_line_to_bprint_overwrite(avf->pb, &bp)) >= 0) {
line++;
- cursor = buf;
+ cursor = bp.str;
keyword = get_keyword(&cursor);
if (!*keyword || *keyword == '#')
continue;
@@ -473,7 +474,7 @@ static int concat_read_header(AVFormatContext *avf)
FAIL(AVERROR_INVALIDDATA);
}
}
- if (ret < 0)
+ if (ret != AVERROR_EOF && ret < 0)
goto fail;
if (!cat->nb_files)
FAIL(AVERROR_INVALIDDATA);
@@ -499,9 +500,11 @@ static int concat_read_header(AVFormatContext *avf)
MATCH_ONE_TO_ONE;
if ((ret = open_file(avf, 0)) < 0)
goto fail;
+ av_bprint_finalize(&bp, NULL);
return 0;
fail:
+ av_bprint_finalize(&bp, NULL);
concat_read_close(avf);
return ret;
}
diff --git a/chromium/third_party/ffmpeg/libavformat/dashdec.c b/chromium/third_party/ffmpeg/libavformat/dashdec.c
index f4cbb065e91..2b396a01b71 100644
--- a/chromium/third_party/ffmpeg/libavformat/dashdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/dashdec.c
@@ -801,6 +801,7 @@ static int parse_manifest_representation(AVFormatContext *s, const char *url,
xmlNodePtr mpd_baseurl_node,
xmlNodePtr period_baseurl_node,
xmlNodePtr period_segmenttemplate_node,
+ xmlNodePtr period_segmentlist_node,
xmlNodePtr fragment_template_node,
xmlNodePtr content_component_node,
xmlNodePtr adaptionset_baseurl_node,
@@ -817,7 +818,7 @@ static int parse_manifest_representation(AVFormatContext *s, const char *url,
xmlNodePtr representation_segmentlist_node = NULL;
xmlNodePtr segmentlists_tab[2];
xmlNodePtr fragment_timeline_node = NULL;
- xmlNodePtr fragment_templates_tab[4];
+ xmlNodePtr fragment_templates_tab[5];
char *duration_val = NULL;
char *presentation_timeoffset_val = NULL;
char *startnumber_val = NULL;
@@ -869,6 +870,7 @@ static int parse_manifest_representation(AVFormatContext *s, const char *url,
fragment_templates_tab[1] = adaptionset_segmentlist_node;
fragment_templates_tab[2] = fragment_template_node;
fragment_templates_tab[3] = period_segmenttemplate_node;
+ fragment_templates_tab[4] = period_segmentlist_node;
presentation_timeoffset_val = get_val_from_nodes_tab(fragment_templates_tab, 4, "presentationTimeOffset");
duration_val = get_val_from_nodes_tab(fragment_templates_tab, 4, "duration");
@@ -925,6 +927,8 @@ static int parse_manifest_representation(AVFormatContext *s, const char *url,
fragment_timeline_node = find_child_node_by_name(fragment_template_node, "SegmentTimeline");
if (!fragment_timeline_node)
fragment_timeline_node = find_child_node_by_name(adaptionset_segmentlist_node, "SegmentTimeline");
+ if (!fragment_timeline_node)
+ fragment_timeline_node = find_child_node_by_name(period_segmentlist_node, "SegmentTimeline");
if (fragment_timeline_node) {
fragment_timeline_node = xmlFirstElementChild(fragment_timeline_node);
while (fragment_timeline_node) {
@@ -984,6 +988,8 @@ static int parse_manifest_representation(AVFormatContext *s, const char *url,
fragment_timeline_node = find_child_node_by_name(fragment_template_node, "SegmentTimeline");
if (!fragment_timeline_node)
fragment_timeline_node = find_child_node_by_name(adaptionset_segmentlist_node, "SegmentTimeline");
+ if (!fragment_timeline_node)
+ fragment_timeline_node = find_child_node_by_name(period_segmentlist_node, "SegmentTimeline");
if (fragment_timeline_node) {
fragment_timeline_node = xmlFirstElementChild(fragment_timeline_node);
while (fragment_timeline_node) {
@@ -1040,7 +1046,8 @@ static int parse_manifest_adaptationset(AVFormatContext *s, const char *url,
xmlNodePtr adaptionset_node,
xmlNodePtr mpd_baseurl_node,
xmlNodePtr period_baseurl_node,
- xmlNodePtr period_segmenttemplate_node)
+ xmlNodePtr period_segmenttemplate_node,
+ xmlNodePtr period_segmentlist_node)
{
int ret = 0;
xmlNodePtr fragment_template_node = NULL;
@@ -1065,6 +1072,7 @@ static int parse_manifest_adaptationset(AVFormatContext *s, const char *url,
mpd_baseurl_node,
period_baseurl_node,
period_segmenttemplate_node,
+ period_segmentlist_node,
fragment_template_node,
content_component_node,
adaptionset_baseurl_node,
@@ -1094,6 +1102,7 @@ static int parse_manifest(AVFormatContext *s, const char *url, AVIOContext *in)
xmlNodePtr mpd_baseurl_node = NULL;
xmlNodePtr period_baseurl_node = NULL;
xmlNodePtr period_segmenttemplate_node = NULL;
+ xmlNodePtr period_segmentlist_node = NULL;
xmlNodePtr adaptionset_node = NULL;
xmlAttrPtr attr = NULL;
char *val = NULL;
@@ -1228,8 +1237,10 @@ static int parse_manifest(AVFormatContext *s, const char *url, AVIOContext *in)
period_baseurl_node = adaptionset_node;
} else if (!av_strcasecmp(adaptionset_node->name, (const char *)"SegmentTemplate")) {
period_segmenttemplate_node = adaptionset_node;
+ } else if (!av_strcasecmp(adaptionset_node->name, (const char *)"SegmentList")) {
+ period_segmentlist_node = adaptionset_node;
} else if (!av_strcasecmp(adaptionset_node->name, (const char *)"AdaptationSet")) {
- parse_manifest_adaptationset(s, url, adaptionset_node, mpd_baseurl_node, period_baseurl_node, period_segmenttemplate_node);
+ parse_manifest_adaptationset(s, url, adaptionset_node, mpd_baseurl_node, period_baseurl_node, period_segmenttemplate_node, period_segmentlist_node);
}
adaptionset_node = xmlNextElementSibling(adaptionset_node);
}
@@ -1257,15 +1268,12 @@ static int64_t calc_cur_seg_no(AVFormatContext *s, struct representation *pls)
if (pls->n_fragments) {
num = pls->first_seq_no;
} else if (pls->n_timelines) {
- start_time_offset = get_segment_start_time_based_on_timeline(pls, 0xFFFFFFFF) - pls->timelines[pls->first_seq_no]->starttime; // total duration of playlist
- if (start_time_offset < 60 * pls->fragment_timescale)
- start_time_offset = 0;
- else
- start_time_offset = start_time_offset - 60 * pls->fragment_timescale;
-
- num = calc_next_seg_no_from_timelines(pls, pls->timelines[pls->first_seq_no]->starttime + start_time_offset);
+ start_time_offset = get_segment_start_time_based_on_timeline(pls, 0xFFFFFFFF) - 60 * pls->fragment_timescale; // 60 seconds before end
+ num = calc_next_seg_no_from_timelines(pls, start_time_offset);
if (num == -1)
num = pls->first_seq_no;
+ else
+ num += pls->first_seq_no;
} else if (pls->fragment_duration){
if (pls->presentation_timeoffset) {
num = pls->presentation_timeoffset * pls->fragment_timescale / pls->fragment_duration;
diff --git a/chromium/third_party/ffmpeg/libavformat/dashenc.c b/chromium/third_party/ffmpeg/libavformat/dashenc.c
index 39d0afe350a..79d63e52d43 100644
--- a/chromium/third_party/ffmpeg/libavformat/dashenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/dashenc.c
@@ -1,6 +1,7 @@
/*
* MPEG-DASH ISO BMFF segmenter
* Copyright (c) 2014 Martin Storsjo
+ * Copyright (c) 2018 Akamai Technologies, Inc.
*
* This file is part of FFmpeg.
*
@@ -80,6 +81,10 @@ typedef struct OutputStream {
char bandwidth_str[64];
char codec_str[100];
+ int written_len;
+ char filename[1024];
+ char full_path[1024];
+ char temp_path[1024];
} OutputStream;
typedef struct DASHContext {
@@ -104,12 +109,14 @@ typedef struct DASHContext {
const char *init_seg_name;
const char *media_seg_name;
const char *utc_timing_url;
+ const char *method;
const char *user_agent;
int hls_playlist;
int http_persistent;
int master_playlist_created;
AVIOContext *mpd_out;
AVIOContext *m3u8_out;
+ int streaming;
} DASHContext;
static struct codec_string {
@@ -148,7 +155,10 @@ static void dashenc_io_close(AVFormatContext *s, AVIOContext **pb, char *filenam
ff_format_io_close(s, pb);
#if CONFIG_HTTP_PROTOCOL
} else {
+ URLContext *http_url_context = ffio_geturlcontext(*pb);
+ av_assert0(http_url_context);
avio_flush(*pb);
+ ffurl_shutdown(http_url_context, AVIO_FLAG_WRITE);
#endif
}
}
@@ -243,7 +253,8 @@ static int flush_dynbuf(OutputStream *os, int *range_length)
// write out to file
*range_length = avio_close_dyn_buf(os->ctx->pb, &buffer);
os->ctx->pb = NULL;
- avio_write(os->out, buffer, *range_length);
+ avio_write(os->out, buffer + os->written_len, *range_length - os->written_len);
+ os->written_len = 0;
av_free(buffer);
// re-open buffer
@@ -252,6 +263,8 @@ static int flush_dynbuf(OutputStream *os, int *range_length)
static void set_http_options(AVDictionary **options, DASHContext *c)
{
+ if (c->method)
+ av_dict_set(options, "method", c->method, 0);
if (c->user_agent)
av_dict_set(options, "user_agent", c->user_agent, 0);
if (c->http_persistent)
@@ -309,6 +322,9 @@ static void dash_free(AVFormatContext *s)
av_free(os->segments);
}
av_freep(&c->streams);
+
+ ff_format_io_close(s, &c->mpd_out);
+ ff_format_io_close(s, &c->m3u8_out);
}
static void output_segment_list(OutputStream *os, AVIOContext *out, AVFormatContext *s,
@@ -685,7 +701,7 @@ static int write_manifest(AVFormatContext *s, int final)
AVIOContext *out;
char temp_filename[1024];
int ret, i;
- const char *proto = avio_find_protocol_name(s->filename);
+ const char *proto = avio_find_protocol_name(s->url);
int use_rename = proto && !strcmp(proto, "file");
static unsigned int warned_non_file = 0;
AVDictionaryEntry *title = av_dict_get(s->metadata, "title", NULL, 0);
@@ -694,7 +710,7 @@ static int write_manifest(AVFormatContext *s, int final)
if (!use_rename && !warned_non_file++)
av_log(s, AV_LOG_ERROR, "Cannot use rename on non file protocol, this may lead to races and temporary partial files\n");
- snprintf(temp_filename, sizeof(temp_filename), use_rename ? "%s.tmp" : "%s", s->filename);
+ snprintf(temp_filename, sizeof(temp_filename), use_rename ? "%s.tmp" : "%s", s->url);
set_http_options(&opts, c);
ret = dashenc_io_open(s, &c->mpd_out, temp_filename, &opts);
if (ret < 0) {
@@ -771,7 +787,7 @@ static int write_manifest(AVFormatContext *s, int final)
dashenc_io_close(s, &c->mpd_out, temp_filename);
if (use_rename) {
- if ((ret = avpriv_io_move(temp_filename, s->filename)) < 0)
+ if ((ret = avpriv_io_move(temp_filename, s->url)) < 0)
return ret;
}
@@ -820,7 +836,7 @@ static int write_manifest(AVFormatContext *s, int final)
stream_bitrate += max_audio_bitrate;
}
get_hls_playlist_name(playlist_file, sizeof(playlist_file), NULL, i);
- ff_hls_write_stream_info(st, out, stream_bitrate, playlist_file, agroup, NULL);
+ ff_hls_write_stream_info(st, out, stream_bitrate, playlist_file, agroup, NULL, NULL);
}
avio_close(out);
if (use_rename)
@@ -852,14 +868,14 @@ static int dash_init(AVFormatContext *s)
if (c->single_file)
c->use_template = 0;
- av_strlcpy(c->dirname, s->filename, sizeof(c->dirname));
+ av_strlcpy(c->dirname, s->url, sizeof(c->dirname));
ptr = strrchr(c->dirname, '/');
if (ptr) {
av_strlcpy(basename, &ptr[1], sizeof(basename));
ptr[1] = '\0';
} else {
c->dirname[0] = '\0';
- av_strlcpy(basename, s->filename, sizeof(basename));
+ av_strlcpy(basename, s->url, sizeof(basename));
}
ptr = strrchr(basename, '.');
@@ -950,7 +966,10 @@ static int dash_init(AVFormatContext *s)
os->init_start_pos = 0;
if (!strcmp(os->format_name, "mp4")) {
- av_dict_set(&opts, "movflags", "frag_custom+dash+delay_moov", 0);
+ if (c->streaming)
+ av_dict_set(&opts, "movflags", "frag_every_frame+dash+delay_moov", 0);
+ else
+ av_dict_set(&opts, "movflags", "frag_custom+dash+delay_moov", 0);
} else {
av_dict_set_int(&opts, "cluster_time_limit", c->min_seg_duration / 1000, 0);
av_dict_set_int(&opts, "cluster_size_limit", 5 * 1024 * 1024, 0); // set a large cluster size limit
@@ -1018,7 +1037,7 @@ static int dash_write_header(AVFormatContext *s)
}
ret = write_manifest(s, 0);
if (!ret)
- av_log(s, AV_LOG_VERBOSE, "Manifest written to: %s\n", s->filename);
+ av_log(s, AV_LOG_VERBOSE, "Manifest written to: %s\n", s->url);
return ret;
}
@@ -1112,12 +1131,34 @@ static int update_stream_extradata(AVFormatContext *s, OutputStream *os,
return 0;
}
+static void dashenc_delete_file(AVFormatContext *s, char *filename) {
+ DASHContext *c = s->priv_data;
+ int http_base_proto = ff_is_http_proto(filename);
+
+ if (http_base_proto) {
+ AVIOContext *out = NULL;
+ AVDictionary *http_opts = NULL;
+
+ set_http_options(&http_opts, c);
+ av_dict_set(&http_opts, "method", "DELETE", 0);
+
+ if (dashenc_io_open(s, &out, filename, &http_opts) < 0) {
+ av_log(s, AV_LOG_ERROR, "failed to delete %s\n", filename);
+ }
+
+ av_dict_free(&http_opts);
+ dashenc_io_close(s, &out, filename);
+ } else if (unlink(filename) < 0) {
+ av_log(s, AV_LOG_ERROR, "failed to delete %s: %s\n", filename, strerror(errno));
+ }
+}
+
static int dash_flush(AVFormatContext *s, int final, int stream)
{
DASHContext *c = s->priv_data;
int i, ret = 0;
- const char *proto = avio_find_protocol_name(s->filename);
+ const char *proto = avio_find_protocol_name(s->url);
int use_rename = proto && !strcmp(proto, "file");
int cur_flush_segment_index = 0;
@@ -1127,7 +1168,6 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
for (i = 0; i < s->nb_streams; i++) {
OutputStream *os = &c->streams[i];
AVStream *st = s->streams[i];
- char filename[1024] = "", full_path[1024], temp_path[1024];
int range_length, index_length = 0;
if (!os->packets_written)
@@ -1145,24 +1185,11 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
continue;
}
- if (!os->init_range_length) {
- flush_init_segment(s, os);
- }
-
if (!c->single_file) {
- AVDictionary *opts = NULL;
- ff_dash_fill_tmpl_params(filename, sizeof(filename), c->media_seg_name, i, os->segment_index, os->bit_rate, os->start_pts);
- snprintf(full_path, sizeof(full_path), "%s%s", c->dirname, filename);
- snprintf(temp_path, sizeof(temp_path), use_rename ? "%s.tmp" : "%s", full_path);
- set_http_options(&opts, c);
- ret = dashenc_io_open(s, &os->out, temp_path, &opts);
- if (ret < 0)
- break;
- av_dict_free(&opts);
- if (!strcmp(os->format_name, "mp4"))
+ if (!strcmp(os->format_name, "mp4") && !os->written_len)
write_styp(os->ctx->pb);
} else {
- snprintf(full_path, sizeof(full_path), "%s%s", c->dirname, os->initfile);
+ snprintf(os->full_path, sizeof(os->full_path), "%s%s", c->dirname, os->initfile);
}
ret = flush_dynbuf(os, &range_length);
@@ -1171,12 +1198,12 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
os->packets_written = 0;
if (c->single_file) {
- find_index_range(s, full_path, os->pos, &index_length);
+ find_index_range(s, os->full_path, os->pos, &index_length);
} else {
- dashenc_io_close(s, &os->out, temp_path);
+ dashenc_io_close(s, &os->out, os->temp_path);
if (use_rename) {
- ret = avpriv_io_move(temp_path, full_path);
+ ret = avpriv_io_move(os->temp_path, os->full_path);
if (ret < 0)
break;
}
@@ -1193,8 +1220,8 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
" bandwidth=\"%d\"", os->bit_rate);
}
}
- add_segment(os, filename, os->start_pts, os->max_pts - os->start_pts, os->pos, range_length, index_length);
- av_log(s, AV_LOG_VERBOSE, "Representation %d media segment %d written to: %s\n", i, os->segment_index, full_path);
+ add_segment(os, os->filename, os->start_pts, os->max_pts - os->start_pts, os->pos, range_length, index_length);
+ av_log(s, AV_LOG_VERBOSE, "Representation %d media segment %d written to: %s\n", i, os->segment_index, os->full_path);
os->pos += range_length;
}
@@ -1210,7 +1237,7 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
for (j = 0; j < remove; j++) {
char filename[1024];
snprintf(filename, sizeof(filename), "%s%s", c->dirname, os->segments[j]->file);
- unlink(filename);
+ dashenc_delete_file(s, filename);
av_free(os->segments[j]);
}
os->nb_segments -= remove;
@@ -1296,7 +1323,46 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt)
else
os->max_pts = FFMAX(os->max_pts, pkt->pts + pkt->duration);
os->packets_written++;
- return ff_write_chained(os->ctx, 0, pkt, s, 0);
+ if ((ret = ff_write_chained(os->ctx, 0, pkt, s, 0)) < 0)
+ return ret;
+
+ if (!os->init_range_length)
+ flush_init_segment(s, os);
+
+ //open the output context when the first frame of a segment is ready
+ if (!c->single_file && os->packets_written == 1) {
+ AVDictionary *opts = NULL;
+ const char *proto = avio_find_protocol_name(s->url);
+ int use_rename = proto && !strcmp(proto, "file");
+ os->filename[0] = os->full_path[0] = os->temp_path[0] = '\0';
+ ff_dash_fill_tmpl_params(os->filename, sizeof(os->filename),
+ c->media_seg_name, pkt->stream_index,
+ os->segment_index, os->bit_rate, os->start_pts);
+ snprintf(os->full_path, sizeof(os->full_path), "%s%s", c->dirname,
+ os->filename);
+ snprintf(os->temp_path, sizeof(os->temp_path),
+ use_rename ? "%s.tmp" : "%s", os->full_path);
+ set_http_options(&opts, c);
+ ret = dashenc_io_open(s, &os->out, os->temp_path, &opts);
+ if (ret < 0)
+ return ret;
+ av_dict_free(&opts);
+ }
+
+ //write out the data immediately in streaming mode
+ if (c->streaming && !strcmp(os->format_name, "mp4")) {
+ int len = 0;
+ uint8_t *buf = NULL;
+ if (!os->written_len)
+ write_styp(os->ctx->pb);
+ avio_flush(os->ctx->pb);
+ len = avio_get_dyn_buf (os->ctx->pb, &buf);
+ avio_write(os->out, buf + os->written_len, len - os->written_len);
+ os->written_len = len;
+ avio_flush(os->out);
+ }
+
+ return ret;
}
static int dash_write_trailer(AVFormatContext *s)
@@ -1323,9 +1389,9 @@ static int dash_write_trailer(AVFormatContext *s)
for (i = 0; i < s->nb_streams; i++) {
OutputStream *os = &c->streams[i];
snprintf(filename, sizeof(filename), "%s%s", c->dirname, os->initfile);
- unlink(filename);
+ dashenc_delete_file(s, filename);
}
- unlink(s->filename);
+ dashenc_delete_file(s, s->url);
}
return 0;
@@ -1369,9 +1435,11 @@ static const AVOption options[] = {
{ "init_seg_name", "DASH-templated name to used for the initialization segment", OFFSET(init_seg_name), AV_OPT_TYPE_STRING, {.str = "init-stream$RepresentationID$.m4s"}, 0, 0, E },
{ "media_seg_name", "DASH-templated name to used for the media segments", OFFSET(media_seg_name), AV_OPT_TYPE_STRING, {.str = "chunk-stream$RepresentationID$-$Number%05d$.m4s"}, 0, 0, E },
{ "utc_timing_url", "URL of the page that will return the UTC timestamp in ISO format", OFFSET(utc_timing_url), AV_OPT_TYPE_STRING, { 0 }, 0, 0, E },
+ { "method", "set the HTTP method", OFFSET(method), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E },
{ "http_user_agent", "override User-Agent field in HTTP header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E},
{ "http_persistent", "Use persistent HTTP connections", OFFSET(http_persistent), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, E },
{ "hls_playlist", "Generate HLS playlist files(master.m3u8, media_%d.m3u8)", OFFSET(hls_playlist), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
+ { "streaming", "Enable/Disable streaming mode of output. Each frame will be moof fragment", OFFSET(streaming), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
{ NULL },
};
diff --git a/chromium/third_party/ffmpeg/libavformat/dump.c b/chromium/third_party/ffmpeg/libavformat/dump.c
index ef143fd4e22..942e62a5819 100644
--- a/chromium/third_party/ffmpeg/libavformat/dump.c
+++ b/chromium/third_party/ffmpeg/libavformat/dump.c
@@ -547,6 +547,10 @@ static void dump_stream_format(AVFormatContext *ic, int i,
av_log(NULL, AV_LOG_INFO, " (visual impaired)");
if (st->disposition & AV_DISPOSITION_CLEAN_EFFECTS)
av_log(NULL, AV_LOG_INFO, " (clean effects)");
+ if (st->disposition & AV_DISPOSITION_DESCRIPTIONS)
+ av_log(NULL, AV_LOG_INFO, " (descriptions)");
+ if (st->disposition & AV_DISPOSITION_DEPENDENT)
+ av_log(NULL, AV_LOG_INFO, " (dependent)");
av_log(NULL, AV_LOG_INFO, "\n");
dump_metadata(NULL, st->metadata, " ");
diff --git a/chromium/third_party/ffmpeg/libavformat/fifo.c b/chromium/third_party/ffmpeg/libavformat/fifo.c
index c881f31e94f..145e2e26604 100644
--- a/chromium/third_party/ffmpeg/libavformat/fifo.c
+++ b/chromium/third_party/ffmpeg/libavformat/fifo.c
@@ -124,9 +124,9 @@ static int fifo_thread_write_header(FifoThreadContext *ctx)
if (ret < 0)
return ret;
- ret = ff_format_output_open(avf2, avf->filename, &format_options);
+ ret = ff_format_output_open(avf2, avf->url, &format_options);
if (ret < 0) {
- av_log(avf, AV_LOG_ERROR, "Error opening %s: %s\n", avf->filename,
+ av_log(avf, AV_LOG_ERROR, "Error opening %s: %s\n", avf->url,
av_err2str(ret));
goto end;
}
@@ -500,13 +500,13 @@ static int fifo_init(AVFormatContext *avf)
}
}
- oformat = av_guess_format(fifo->format, avf->filename, NULL);
+ oformat = av_guess_format(fifo->format, avf->url, NULL);
if (!oformat) {
ret = AVERROR_MUXER_NOT_FOUND;
return ret;
}
- ret = fifo_mux_init(avf, oformat, avf->filename);
+ ret = fifo_mux_init(avf, oformat, avf->url);
if (ret < 0)
return ret;
diff --git a/chromium/third_party/ffmpeg/libavformat/fifo_test.c b/chromium/third_party/ffmpeg/libavformat/fifo_test.c
new file mode 100644
index 00000000000..02ec215cbbb
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavformat/fifo_test.c
@@ -0,0 +1,152 @@
+/*
+ * FIFO test pseudo-muxer
+ * Copyright (c) 2016 Jan Sebechlebsky
+ *
+ * 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 <stdlib.h>
+
+#include "libavutil/opt.h"
+#include "libavutil/time.h"
+#include "libavutil/avassert.h"
+
+#include "avformat.h"
+#include "url.h"
+
+/* Implementation of mock muxer to simulate real muxer failures */
+
+#define MAX_TST_PACKETS 128
+#define SLEEPTIME_50_MS 50000
+#define SLEEPTIME_10_MS 10000
+
+/* Implementation of mock muxer to simulate real muxer failures */
+
+/* This is structure of data sent in packets to
+ * failing muxer */
+typedef struct FailingMuxerPacketData {
+ int ret; /* return value of write_packet call*/
+ int recover_after; /* set ret to zero after this number of recovery attempts */
+ unsigned sleep_time; /* sleep for this long in write_packet to simulate long I/O operation */
+} FailingMuxerPacketData;
+
+
+typedef struct FailingMuxerContext {
+ AVClass *class;
+ int write_header_ret;
+ int write_trailer_ret;
+ /* If non-zero, summary of processed packets will be printed in deinit */
+ int print_deinit_summary;
+
+ int flush_count;
+ int pts_written[MAX_TST_PACKETS];
+ int pts_written_nr;
+} FailingMuxerContext;
+
+static int failing_write_header(AVFormatContext *avf)
+{
+ FailingMuxerContext *ctx = avf->priv_data;
+ return ctx->write_header_ret;
+}
+
+static int failing_write_packet(AVFormatContext *avf, AVPacket *pkt)
+{
+ FailingMuxerContext *ctx = avf->priv_data;
+ int ret = 0;
+ if (!pkt) {
+ ctx->flush_count++;
+ } else {
+ FailingMuxerPacketData *data = (FailingMuxerPacketData*) pkt->data;
+
+ if (!data->recover_after) {
+ data->ret = 0;
+ } else {
+ data->recover_after--;
+ }
+
+ ret = data->ret;
+
+ if (data->sleep_time) {
+ int64_t slept = 0;
+ while (slept < data->sleep_time) {
+ if (ff_check_interrupt(&avf->interrupt_callback))
+ return AVERROR_EXIT;
+ av_usleep(SLEEPTIME_10_MS);
+ slept += SLEEPTIME_10_MS;
+ }
+ }
+
+ if (!ret) {
+ ctx->pts_written[ctx->pts_written_nr++] = pkt->pts;
+ av_packet_unref(pkt);
+ }
+ }
+ return ret;
+}
+
+static int failing_write_trailer(AVFormatContext *avf)
+{
+ FailingMuxerContext *ctx = avf->priv_data;
+ return ctx->write_trailer_ret;
+}
+
+static void failing_deinit(AVFormatContext *avf)
+{
+ int i;
+ FailingMuxerContext *ctx = avf->priv_data;
+
+ if (!ctx->print_deinit_summary)
+ return;
+
+ printf("flush count: %d\n", ctx->flush_count);
+ printf("pts seen nr: %d\n", ctx->pts_written_nr);
+ printf("pts seen: ");
+ for (i = 0; i < ctx->pts_written_nr; ++i ) {
+ printf(i ? ",%d" : "%d", ctx->pts_written[i]);
+ }
+ printf("\n");
+}
+#define OFFSET(x) offsetof(FailingMuxerContext, x)
+static const AVOption options[] = {
+ {"write_header_ret", "write_header() return value", OFFSET(write_header_ret),
+ AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM},
+ {"write_trailer_ret", "write_trailer() return value", OFFSET(write_trailer_ret),
+ AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM},
+ {"print_deinit_summary", "print summary when deinitializing muxer", OFFSET(print_deinit_summary),
+ AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
+ {NULL}
+ };
+
+static const AVClass failing_muxer_class = {
+ .class_name = "Fifo test muxer",
+ .item_name = av_default_item_name,
+ .option = options,
+ .version = LIBAVUTIL_VERSION_INT,
+};
+
+AVOutputFormat ff_fifo_test_muxer = {
+ .name = "fifo_test",
+ .long_name = NULL_IF_CONFIG_SMALL("Fifo test muxer"),
+ .priv_data_size = sizeof(FailingMuxerContext),
+ .write_header = failing_write_header,
+ .write_packet = failing_write_packet,
+ .write_trailer = failing_write_trailer,
+ .deinit = failing_deinit,
+ .priv_class = &failing_muxer_class,
+ .flags = AVFMT_NOFILE | AVFMT_ALLOW_FLUSH,
+};
+
diff --git a/chromium/third_party/ffmpeg/libavformat/flvdec.c b/chromium/third_party/ffmpeg/libavformat/flvdec.c
index 0217cef8424..34c3e08bad2 100644
--- a/chromium/third_party/ffmpeg/libavformat/flvdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/flvdec.c
@@ -598,8 +598,10 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream,
if (version > 0 && version <= 655)
flv->broken_sizes = 1;
}
- } else if (!strcmp(key, "metadatacreator") && !strcmp(str_val, "MEGA")) {
- flv->broken_sizes = 1;
+ } else if (!strcmp(key, "metadatacreator")) {
+ if ( !strcmp (str_val, "MEGA")
+ || !strncmp(str_val, "FlixEngine", 10))
+ flv->broken_sizes = 1;
}
}
}
diff --git a/chromium/third_party/ffmpeg/libavformat/flvenc.c b/chromium/third_party/ffmpeg/libavformat/flvenc.c
index 899b07ea7be..e8af48cb641 100644
--- a/chromium/third_party/ffmpeg/libavformat/flvenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/flvenc.c
@@ -610,10 +610,10 @@ static int shift_data(AVFormatContext *s)
* writing, so we re-open the same output, but for reading. It also avoids
* a read/seek/write/seek back and forth. */
avio_flush(s->pb);
- ret = s->io_open(s, &read_pb, s->filename, AVIO_FLAG_READ, NULL);
+ ret = s->io_open(s, &read_pb, s->url, AVIO_FLAG_READ, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to re-open %s output file for "
- "the second pass (add_keyframe_index)\n", s->filename);
+ "the second pass (add_keyframe_index)\n", s->url);
goto end;
}
diff --git a/chromium/third_party/ffmpeg/libavformat/format.c b/chromium/third_party/ffmpeg/libavformat/format.c
index 759b5b1ab49..75951938cf0 100644
--- a/chromium/third_party/ffmpeg/libavformat/format.c
+++ b/chromium/third_party/ffmpeg/libavformat/format.c
@@ -34,65 +34,6 @@
* @file
* Format register and lookup
*/
-/** head of registered input format linked list */
-static AVInputFormat *first_iformat = NULL;
-/** head of registered output format linked list */
-static AVOutputFormat *first_oformat = NULL;
-
-static AVInputFormat **last_iformat = &first_iformat;
-static AVOutputFormat **last_oformat = &first_oformat;
-
-AVInputFormat *av_iformat_next(const AVInputFormat *f)
-{
- if (f)
- return f->next;
- else
- return first_iformat;
-}
-
-AVOutputFormat *av_oformat_next(const AVOutputFormat *f)
-{
- if (f)
- return f->next;
- else
- return first_oformat;
-}
-
-static AVMutex iformat_register_mutex = AV_MUTEX_INITIALIZER;
-
-void av_register_input_format(AVInputFormat *format)
-{
- AVInputFormat **p;
-
- ff_mutex_lock(&iformat_register_mutex);
- p = last_iformat;
-
- while (*p)
- p = &(*p)->next;
- *p = format;
- format->next = NULL;
- last_iformat = &format->next;
-
- ff_mutex_unlock(&iformat_register_mutex);
-}
-
-static AVMutex oformat_register_mutex = AV_MUTEX_INITIALIZER;
-
-void av_register_output_format(AVOutputFormat *format)
-{
- AVOutputFormat **p;
-
- ff_mutex_lock(&oformat_register_mutex);
- p = last_oformat;
-
- while (*p)
- p = &(*p)->next;
- *p = format;
- format->next = NULL;
- last_oformat = &format->next;
-
- ff_mutex_unlock(&oformat_register_mutex);
-}
int av_match_ext(const char *filename, const char *extensions)
{
@@ -111,6 +52,9 @@ AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
const char *mime_type)
{
AVOutputFormat *fmt = NULL, *fmt_found;
+#if !FF_API_NEXT
+ void *i = 0;
+#endif
int score_max, score;
/* specific test for image sequences */
@@ -124,7 +68,13 @@ AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
/* Find the proper file type. */
fmt_found = NULL;
score_max = 0;
- while ((fmt = av_oformat_next(fmt))) {
+#if FF_API_NEXT
+FF_DISABLE_DEPRECATION_WARNINGS
+ while ((fmt = av_oformat_next(fmt)))
+#else
+ while ((fmt = av_muxer_iterate(&i)))
+#endif
+ {
score = 0;
if (fmt->name && short_name && av_match_name(short_name, fmt->name))
score += 100;
@@ -139,6 +89,9 @@ AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
fmt_found = fmt;
}
}
+#if FF_API_NEXT
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
return fmt_found;
}
@@ -176,9 +129,18 @@ enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name,
AVInputFormat *av_find_input_format(const char *short_name)
{
AVInputFormat *fmt = NULL;
+#if FF_API_NEXT
+FF_DISABLE_DEPRECATION_WARNINGS
while ((fmt = av_iformat_next(fmt)))
if (av_match_name(short_name, fmt->name))
return fmt;
+FF_ENABLE_DEPRECATION_WARNINGS
+#else
+ void *i = 0;
+ while ((fmt = av_demuxer_iterate(&i)))
+ if (av_match_name(short_name, fmt->name))
+ return fmt;
+#endif
return NULL;
}
@@ -188,6 +150,7 @@ AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened,
AVProbeData lpd = *pd;
AVInputFormat *fmt1 = NULL, *fmt;
int score, score_max = 0;
+ void *i = 0;
const static uint8_t zerobuffer[AVPROBE_PADDING_SIZE];
enum nodat {
NO_ID3,
@@ -213,7 +176,7 @@ AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened,
}
fmt = NULL;
- while ((fmt1 = av_iformat_next(fmt1))) {
+ while ((fmt1 = av_demuxer_iterate(&i))) {
if (!is_opened == !(fmt1->flags & AVFMT_NOFILE) && strcmp(fmt1->name, "image2"))
continue;
score = 0;
diff --git a/chromium/third_party/ffmpeg/libavformat/gxfenc.c b/chromium/third_party/ffmpeg/libavformat/gxfenc.c
index 0e0772b7441..3507c00b401 100644
--- a/chromium/third_party/ffmpeg/libavformat/gxfenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/gxfenc.c
@@ -311,7 +311,7 @@ static int gxf_write_material_data_section(AVFormatContext *s)
AVIOContext *pb = s->pb;
int64_t pos;
int len;
- const char *filename = strrchr(s->filename, '/');
+ const char *filename = strrchr(s->url, '/');
pos = avio_tell(pb);
avio_wb16(pb, 0); /* size */
@@ -320,7 +320,7 @@ static int gxf_write_material_data_section(AVFormatContext *s)
if (filename)
filename++;
else
- filename = s->filename;
+ filename = s->url;
len = strlen(filename);
avio_w8(pb, MAT_NAME);
diff --git a/chromium/third_party/ffmpeg/libavformat/hdsenc.c b/chromium/third_party/ffmpeg/libavformat/hdsenc.c
index 72829f7257a..d82aee17b98 100644
--- a/chromium/third_party/ffmpeg/libavformat/hdsenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/hdsenc.c
@@ -169,8 +169,8 @@ static int write_manifest(AVFormatContext *s, int final)
if (c->nb_streams > 0)
duration = c->streams[0].last_ts * av_q2d(s->streams[0]->time_base);
- snprintf(filename, sizeof(filename), "%s/index.f4m", s->filename);
- snprintf(temp_filename, sizeof(temp_filename), "%s/index.f4m.tmp", s->filename);
+ snprintf(filename, sizeof(filename), "%s/index.f4m", s->url);
+ snprintf(temp_filename, sizeof(temp_filename), "%s/index.f4m.tmp", s->url);
ret = s->io_open(s, &out, temp_filename, AVIO_FLAG_WRITE, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename);
@@ -178,7 +178,7 @@ static int write_manifest(AVFormatContext *s, int final)
}
avio_printf(out, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
avio_printf(out, "<manifest xmlns=\"http://ns.adobe.com/f4m/1.0\">\n");
- avio_printf(out, "\t<id>%s</id>\n", av_basename(s->filename));
+ avio_printf(out, "\t<id>%s</id>\n", av_basename(s->url));
avio_printf(out, "\t<streamType>%s</streamType>\n",
final ? "recorded" : "live");
avio_printf(out, "\t<deliveryType>streaming</deliveryType>\n");
@@ -236,9 +236,9 @@ static int write_abst(AVFormatContext *s, OutputStream *os, int final)
cur_media_time = os->fragments[os->nb_fragments - 1]->start_time;
snprintf(filename, sizeof(filename),
- "%s/stream%d.abst", s->filename, index);
+ "%s/stream%d.abst", s->url, index);
snprintf(temp_filename, sizeof(temp_filename),
- "%s/stream%d.abst.tmp", s->filename, index);
+ "%s/stream%d.abst.tmp", s->url, index);
ret = s->io_open(s, &out, temp_filename, AVIO_FLAG_WRITE, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename);
@@ -317,9 +317,9 @@ static int hds_write_header(AVFormatContext *s)
int ret = 0, i;
AVOutputFormat *oformat;
- if (mkdir(s->filename, 0777) == -1 && errno != EEXIST) {
+ if (mkdir(s->url, 0777) == -1 && errno != EEXIST) {
ret = AVERROR(errno);
- av_log(s, AV_LOG_ERROR , "Failed to create directory %s\n", s->filename);
+ av_log(s, AV_LOG_ERROR , "Failed to create directory %s\n", s->url);
goto fail;
}
@@ -412,7 +412,7 @@ static int hds_write_header(AVFormatContext *s)
s->streams[os->first_stream + j]->time_base = os->ctx->streams[j]->time_base;
snprintf(os->temp_filename, sizeof(os->temp_filename),
- "%s/stream%d_temp", s->filename, i);
+ "%s/stream%d_temp", s->url, i);
ret = init_file(s, os, 0);
if (ret < 0)
goto fail;
@@ -476,7 +476,7 @@ static int hds_flush(AVFormatContext *s, OutputStream *os, int final,
close_file(s, os);
snprintf(target_filename, sizeof(target_filename),
- "%s/stream%dSeg1-Frag%d", s->filename, index, os->fragment_index);
+ "%s/stream%dSeg1-Frag%d", s->url, index, os->fragment_index);
ret = ff_rename(os->temp_filename, target_filename, s);
if (ret < 0)
return ret;
@@ -549,13 +549,13 @@ static int hds_write_trailer(AVFormatContext *s)
if (c->remove_at_exit) {
char filename[1024];
- snprintf(filename, sizeof(filename), "%s/index.f4m", s->filename);
+ snprintf(filename, sizeof(filename), "%s/index.f4m", s->url);
unlink(filename);
for (i = 0; i < c->nb_streams; i++) {
- snprintf(filename, sizeof(filename), "%s/stream%d.abst", s->filename, i);
+ snprintf(filename, sizeof(filename), "%s/stream%d.abst", s->url, i);
unlink(filename);
}
- rmdir(s->filename);
+ rmdir(s->url);
}
hds_free(s);
diff --git a/chromium/third_party/ffmpeg/libavformat/hevc.c b/chromium/third_party/ffmpeg/libavformat/hevc.c
index e45d2c08d2d..3628d5a0282 100644
--- a/chromium/third_party/ffmpeg/libavformat/hevc.c
+++ b/chromium/third_party/ffmpeg/libavformat/hevc.c
@@ -669,6 +669,8 @@ static uint8_t *nal_unit_extract_rbsp(const uint8_t *src, uint32_t src_len,
while (i < src_len)
dst[len++] = src[i++];
+ memset(dst + len, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+
*dst_len = len;
return dst;
}
diff --git a/chromium/third_party/ffmpeg/libavformat/hls.c b/chromium/third_party/ffmpeg/libavformat/hls.c
index 950cc4c3bd1..c578bf86e3b 100644
--- a/chromium/third_party/ffmpeg/libavformat/hls.c
+++ b/chromium/third_party/ffmpeg/libavformat/hls.c
@@ -202,6 +202,7 @@ typedef struct HLSContext {
int64_t first_timestamp;
int64_t cur_timestamp;
AVIOInterruptCB *interrupt_callback;
+ char *referer; ///< holds HTTP referer set as an AVOption to the HTTP protocol context
char *user_agent; ///< holds HTTP user agent set as an AVOption to the HTTP protocol context
char *cookies; ///< holds HTTP cookie values set in either the initial response or as an AVOption to the HTTP protocol context
char *headers; ///< holds HTTP headers set as an AVOption to the HTTP protocol context
@@ -930,6 +931,11 @@ fail:
av_free(new_url);
if (close_in)
ff_format_io_close(c->ctx, &in);
+ c->ctx->ctx_flags = c->ctx->ctx_flags & ~(unsigned)AVFMTCTX_UNSEEKABLE;
+ if (!c->n_variants || !c->variants[0]->n_playlists ||
+ !(c->variants[0]->playlists[0]->finished ||
+ c->variants[0]->playlists[0]->type == PLS_TYPE_EVENT))
+ c->ctx->ctx_flags |= AVFMTCTX_UNSEEKABLE;
return ret;
}
@@ -1056,6 +1062,7 @@ static void handle_id3(AVIOContext *pb, struct playlist *pls)
/* demuxer not yet opened, defer picture attachment */
pls->id3_deferred_extra = extra_meta;
+ ff_id3v2_parse_priv_dict(&metadata, &extra_meta);
av_dict_copy(&pls->ctx->metadata, metadata, 0);
pls->id3_initial = metadata;
@@ -1179,6 +1186,7 @@ static int open_input(HLSContext *c, struct playlist *pls, struct segment *seg,
// broker prior HTTP options that should be consistent across requests
av_dict_set(&opts, "user_agent", c->user_agent, 0);
+ av_dict_set(&opts, "referer", c->referer, 0);
av_dict_set(&opts, "cookies", c->cookies, 0);
av_dict_set(&opts, "headers", c->headers, 0);
av_dict_set(&opts, "http_proxy", c->http_proxy, 0);
@@ -1417,8 +1425,9 @@ reload:
if (!v->finished &&
av_gettime_relative() - v->last_load_time >= reload_interval) {
if ((ret = parse_playlist(c, v->url, v, NULL)) < 0) {
- av_log(v->parent, AV_LOG_WARNING, "Failed to reload playlist %d\n",
- v->index);
+ if (ret != AVERROR_EXIT)
+ av_log(v->parent, AV_LOG_WARNING, "Failed to reload playlist %d\n",
+ v->index);
return ret;
}
/* If we need to reload the playlist again below (if
@@ -1652,7 +1661,7 @@ static int save_avio_options(AVFormatContext *s)
{
HLSContext *c = s->priv_data;
static const char * const opts[] = {
- "headers", "http_proxy", "user_agent", "user-agent", "cookies", NULL };
+ "headers", "http_proxy", "user_agent", "user-agent", "cookies", "referer", NULL };
const char * const * opt = opts;
uint8_t *buf;
int ret = 0;
@@ -1676,7 +1685,7 @@ static int nested_io_open(AVFormatContext *s, AVIOContext **pb, const char *url,
av_log(s, AV_LOG_ERROR,
"A HLS playlist item '%s' referred to an external file '%s'. "
"Opening this file was forbidden for security reasons\n",
- s->filename, url);
+ s->url, url);
return AVERROR(EPERM);
}
@@ -1814,7 +1823,7 @@ static int hls_read_header(AVFormatContext *s)
update_options(&c->http_proxy, "http_proxy", u);
}
- if ((ret = parse_playlist(c, s->filename, NULL, s->pb)) < 0)
+ if ((ret = parse_playlist(c, s->url, NULL, s->pb)) < 0)
goto fail;
if ((ret = save_avio_options(s)) < 0)
@@ -1952,6 +1961,7 @@ static int hls_read_header(AVFormatContext *s)
if (pls->id3_deferred_extra && pls->ctx->nb_streams == 1) {
ff_id3v2_parse_apic(pls->ctx, &pls->id3_deferred_extra);
avformat_queue_attached_pictures(pls->ctx);
+ ff_id3v2_parse_priv(pls->ctx, &pls->id3_deferred_extra);
ff_id3v2_free_extra_meta(&pls->id3_deferred_extra);
pls->id3_deferred_extra = NULL;
}
@@ -1978,6 +1988,13 @@ static int hls_read_header(AVFormatContext *s)
if (ret < 0)
goto fail;
+ /*
+ * Copy any metadata from playlist to main streams, but do not set
+ * event flags.
+ */
+ if (pls->n_main_streams)
+ av_dict_copy(&pls->main_streams[0]->metadata, pls->ctx->metadata, 0);
+
add_metadata_from_renditions(s, pls, AVMEDIA_TYPE_AUDIO);
add_metadata_from_renditions(s, pls, AVMEDIA_TYPE_VIDEO);
add_metadata_from_renditions(s, pls, AVMEDIA_TYPE_SUBTITLE);
@@ -2162,6 +2179,17 @@ static int hls_read_packet(AVFormatContext *s, AVPacket *pkt)
return ret;
}
+ // If sub-demuxer reports updated metadata, copy it to the first stream
+ // and set its AVSTREAM_EVENT_FLAG_METADATA_UPDATED flag.
+ if (pls->ctx->event_flags & AVFMT_EVENT_FLAG_METADATA_UPDATED) {
+ if (pls->n_main_streams) {
+ st = pls->main_streams[0];
+ av_dict_copy(&st->metadata, pls->ctx->metadata, 0);
+ st->event_flags |= AVSTREAM_EVENT_FLAG_METADATA_UPDATED;
+ }
+ pls->ctx->event_flags &= ~AVFMT_EVENT_FLAG_METADATA_UPDATED;
+ }
+
/* check if noheader flag has been cleared by the subdemuxer */
if (pls->has_noheader_flag && !(pls->ctx->ctx_flags & AVFMTCTX_NOHEADER)) {
pls->has_noheader_flag = 0;
@@ -2213,8 +2241,7 @@ static int hls_read_seek(AVFormatContext *s, int stream_index,
int stream_subdemuxer_index;
int64_t first_timestamp, seek_timestamp, duration;
- if ((flags & AVSEEK_FLAG_BYTE) ||
- !(c->variants[0]->playlists[0]->finished || c->variants[0]->playlists[0]->type == PLS_TYPE_EVENT))
+ if ((flags & AVSEEK_FLAG_BYTE) || (c->ctx->ctx_flags & AVFMTCTX_UNSEEKABLE))
return AVERROR(ENOSYS);
first_timestamp = c->first_timestamp == AV_NOPTS_VALUE ?
@@ -2333,6 +2360,7 @@ AVInputFormat ff_hls_demuxer = {
.long_name = NULL_IF_CONFIG_SMALL("Apple HTTP Live Streaming"),
.priv_class = &hls_class,
.priv_data_size = sizeof(HLSContext),
+ .flags = AVFMT_NOGENSEARCH,
.read_probe = hls_probe,
.read_header = hls_read_header,
.read_packet = hls_read_packet,
diff --git a/chromium/third_party/ffmpeg/libavformat/hlsenc.c b/chromium/third_party/ffmpeg/libavformat/hlsenc.c
index 42e437f5d19..7d9512b6648 100644
--- a/chromium/third_party/ffmpeg/libavformat/hlsenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/hlsenc.c
@@ -129,6 +129,7 @@ typedef struct VariantStream {
int nb_entries;
int discontinuity_set;
int discontinuity;
+ int reference_stream_index;
HLSSegment *segments;
HLSSegment *last_segment;
@@ -152,9 +153,16 @@ typedef struct VariantStream {
unsigned int nb_streams;
int m3u8_created; /* status of media play-list creation */
char *agroup; /* audio group name */
+ char *ccgroup; /* closed caption group name */
char *baseurl;
} VariantStream;
+typedef struct ClosedCaptionsStream {
+ char *ccgroup; /* closed caption group name */
+ char *instreamid; /* closed captions INSTREAM-ID */
+ char *language; /* closed captions langauge */
+} ClosedCaptionsStream;
+
typedef struct HLSContext {
const AVClass *class; // Class for private options.
int64_t start_sequence;
@@ -203,11 +211,14 @@ typedef struct HLSContext {
VariantStream *var_streams;
unsigned int nb_varstreams;
+ ClosedCaptionsStream *cc_streams;
+ unsigned int nb_ccstreams;
int master_m3u8_created; /* status of master play-list creation */
char *master_m3u8_url; /* URL of the master m3u8 file */
int version; /* HLS version */
char *var_stream_map; /* user specified variant stream map string */
+ char *cc_stream_map; /* user specified closed caption streams map string */
char *master_pl_name;
unsigned int master_publish_rate;
int http_persistent;
@@ -282,7 +293,7 @@ static void hlsenc_io_close(AVFormatContext *s, AVIOContext **pb, char *filename
static void set_http_options(AVFormatContext *s, AVDictionary **options, HLSContext *c)
{
- int http_base_proto = ff_is_http_proto(s->filename);
+ int http_base_proto = ff_is_http_proto(s->url);
if (c->method) {
av_dict_set(options, "method", c->method, 0);
@@ -342,14 +353,17 @@ fail:
return;
}
-static int replace_int_data_in_filename(char *buf, int buf_size, const char *filename, char placeholder, int64_t number)
+static int replace_int_data_in_filename(char **s, const char *filename, char placeholder, int64_t number)
{
const char *p;
- char *q, buf1[20], c;
- int nd, len, addchar_count;
+ char *new_filename;
+ char c;
+ int nd, addchar_count;
int found_count = 0;
+ AVBPrint buf;
+
+ av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED);
- q = buf;
p = filename;
for (;;) {
c = *p;
@@ -366,13 +380,7 @@ static int replace_int_data_in_filename(char *buf, int buf_size, const char *fil
}
if (*(p + addchar_count) == placeholder) {
- len = snprintf(buf1, sizeof(buf1), "%0*"PRId64, (number < 0) ? nd : nd++, number);
- if (len < 1) // returned error or empty buf1
- goto fail;
- if ((q - buf + len) > buf_size - 1)
- goto fail;
- memcpy(q, buf1, len);
- q += len;
+ av_bprintf(&buf, "%0*"PRId64, (number < 0) ? nd : nd++, number);
p += (addchar_count + 1);
addchar_count = 0;
found_count++;
@@ -381,17 +389,17 @@ static int replace_int_data_in_filename(char *buf, int buf_size, const char *fil
} else
addchar_count = 1;
- while (addchar_count--)
- if ((q - buf) < buf_size - 1)
- *q++ = *p++;
- else
- goto fail;
+ av_bprint_append_data(&buf, p, addchar_count);
+ p += addchar_count;
+ }
+ if (!av_bprint_is_complete(&buf)) {
+ av_bprint_finalize(&buf, NULL);
+ return -1;
}
- *q = '\0';
+ if (av_bprint_finalize(&buf, &new_filename) < 0 || !new_filename)
+ return -1;
+ *s = new_filename;
return found_count;
-fail:
- *q = '\0';
- return -1;
}
static void write_styp(AVIOContext *pb)
@@ -460,7 +468,7 @@ static int hls_delete_old_segments(AVFormatContext *s, HLSContext *hls,
if (hls->segment_filename) {
dirname = av_strdup(hls->segment_filename);
} else {
- dirname = av_strdup(vs->avf->filename);
+ dirname = av_strdup(vs->avf->url);
}
if (!dirname) {
ret = AVERROR(ENOMEM);
@@ -487,7 +495,7 @@ static int hls_delete_old_segments(AVFormatContext *s, HLSContext *hls,
av_strlcat(path, segment->filename, path_size);
}
- proto = avio_find_protocol_name(s->filename);
+ proto = avio_find_protocol_name(s->url);
if (hls->method || (proto && !av_strcasecmp(proto, "http"))) {
av_dict_set(&options, "method", "DELETE", 0);
if ((ret = vs->avf->io_open(vs->avf, &out, path, AVIO_FLAG_WRITE, &options)) < 0)
@@ -557,12 +565,12 @@ static int do_encrypt(AVFormatContext *s, VariantStream *vs)
AVIOContext *pb;
uint8_t key[KEYSIZE];
- len = strlen(s->filename) + 4 + 1;
+ len = strlen(s->url) + 4 + 1;
hls->key_basename = av_mallocz(len);
if (!hls->key_basename)
return AVERROR(ENOMEM);
- av_strlcpy(hls->key_basename, s->filename, len);
+ av_strlcpy(hls->key_basename, s->url, len);
av_strlcat(hls->key_basename, ".key", len);
if (hls->key_url) {
@@ -692,7 +700,10 @@ static int hls_mux_init(AVFormatContext *s, VariantStream *vs)
return ret;
oc = vs->avf;
- oc->filename[0] = '\0';
+ oc->url = av_strdup("");
+ if (!oc->url)
+ return AVERROR(ENOMEM);
+
oc->oformat = vs->oformat;
oc->interrupt_callback = s->interrupt_callback;
oc->max_delay = s->max_delay;
@@ -801,42 +812,38 @@ static int sls_flags_filename_process(struct AVFormatContext *s, HLSContext *hls
{
if ((hls->flags & (HLS_SECOND_LEVEL_SEGMENT_SIZE | HLS_SECOND_LEVEL_SEGMENT_DURATION)) &&
strlen(vs->current_segment_final_filename_fmt)) {
- av_strlcpy(vs->avf->filename, vs->current_segment_final_filename_fmt, sizeof(vs->avf->filename));
+ char * new_url = av_strdup(vs->current_segment_final_filename_fmt);
+ if (!new_url) {
+ av_free(en);
+ return AVERROR(ENOMEM);
+ }
+ ff_format_set_url(vs->avf, new_url);
if (hls->flags & HLS_SECOND_LEVEL_SEGMENT_SIZE) {
- char * filename = av_strdup(vs->avf->filename); // %%s will be %s after strftime
- if (!filename) {
- av_free(en);
- return AVERROR(ENOMEM);
- }
- if (replace_int_data_in_filename(vs->avf->filename, sizeof(vs->avf->filename),
- filename, 's', pos + size) < 1) {
+ char *filename = NULL;
+ if (replace_int_data_in_filename(&filename, vs->avf->url, 's', pos + size) < 1) {
av_log(hls, AV_LOG_ERROR,
"Invalid second level segment filename template '%s', "
"you can try to remove second_level_segment_size flag\n",
- filename);
+ vs->avf->url);
av_free(filename);
av_free(en);
return AVERROR(EINVAL);
}
- av_free(filename);
+ ff_format_set_url(vs->avf, filename);
}
if (hls->flags & HLS_SECOND_LEVEL_SEGMENT_DURATION) {
- char * filename = av_strdup(vs->avf->filename); // %%t will be %t after strftime
- if (!filename) {
- av_free(en);
- return AVERROR(ENOMEM);
- }
- if (replace_int_data_in_filename(vs->avf->filename, sizeof(vs->avf->filename),
- filename, 't', (int64_t)round(duration * HLS_MICROSECOND_UNIT)) < 1) {
+ char *filename = NULL;
+ if (replace_int_data_in_filename(&filename, vs->avf->url,
+ 't', (int64_t)round(duration * HLS_MICROSECOND_UNIT)) < 1) {
av_log(hls, AV_LOG_ERROR,
"Invalid second level segment filename template '%s', "
"you can try to remove second_level_segment_time flag\n",
- filename);
+ vs->avf->url);
av_free(filename);
av_free(en);
return AVERROR(EINVAL);
}
- av_free(filename);
+ ff_format_set_url(vs->avf, filename);
}
}
return 0;
@@ -888,58 +895,52 @@ static int sls_flag_check_duration_size(HLSContext *hls, VariantStream *vs)
static void sls_flag_file_rename(HLSContext *hls, VariantStream *vs, char *old_filename) {
if ((hls->flags & (HLS_SECOND_LEVEL_SEGMENT_SIZE | HLS_SECOND_LEVEL_SEGMENT_DURATION)) &&
strlen(vs->current_segment_final_filename_fmt)) {
- ff_rename(old_filename, vs->avf->filename, hls);
+ ff_rename(old_filename, vs->avf->url, hls);
}
}
static int sls_flag_use_localtime_filename(AVFormatContext *oc, HLSContext *c, VariantStream *vs)
{
if (c->flags & HLS_SECOND_LEVEL_SEGMENT_INDEX) {
- char * filename = av_strdup(oc->filename); // %%d will be %d after strftime
- if (!filename)
- return AVERROR(ENOMEM);
- if (replace_int_data_in_filename(oc->filename, sizeof(oc->filename),
+ char *filename = NULL;
+ if (replace_int_data_in_filename(&filename,
#if FF_API_HLS_WRAP
- filename, 'd', c->wrap ? vs->sequence % c->wrap : vs->sequence) < 1) {
+ oc->url, 'd', c->wrap ? vs->sequence % c->wrap : vs->sequence) < 1) {
#else
- filename, 'd', vs->sequence) < 1) {
+ oc->url, 'd', vs->sequence) < 1) {
#endif
av_log(c, AV_LOG_ERROR, "Invalid second level segment filename template '%s', "
"you can try to remove second_level_segment_index flag\n",
- filename);
+ oc->url);
av_free(filename);
return AVERROR(EINVAL);
}
- av_free(filename);
+ ff_format_set_url(oc, filename);
}
if (c->flags & (HLS_SECOND_LEVEL_SEGMENT_SIZE | HLS_SECOND_LEVEL_SEGMENT_DURATION)) {
- av_strlcpy(vs->current_segment_final_filename_fmt, oc->filename,
+ av_strlcpy(vs->current_segment_final_filename_fmt, oc->url,
sizeof(vs->current_segment_final_filename_fmt));
if (c->flags & HLS_SECOND_LEVEL_SEGMENT_SIZE) {
- char * filename = av_strdup(oc->filename); // %%s will be %s after strftime
- if (!filename)
- return AVERROR(ENOMEM);
- if (replace_int_data_in_filename(oc->filename, sizeof(oc->filename), filename, 's', 0) < 1) {
+ char *filename = NULL;
+ if (replace_int_data_in_filename(&filename, oc->url, 's', 0) < 1) {
av_log(c, AV_LOG_ERROR, "Invalid second level segment filename template '%s', "
"you can try to remove second_level_segment_size flag\n",
- filename);
+ oc->url);
av_free(filename);
return AVERROR(EINVAL);
}
- av_free(filename);
+ ff_format_set_url(oc, filename);
}
if (c->flags & HLS_SECOND_LEVEL_SEGMENT_DURATION) {
- char * filename = av_strdup(oc->filename); // %%t will be %t after strftime
- if (!filename)
- return AVERROR(ENOMEM);
- if (replace_int_data_in_filename(oc->filename, sizeof(oc->filename), filename, 't', 0) < 1) {
+ char *filename = NULL;
+ if (replace_int_data_in_filename(&filename, oc->url, 't', 0) < 1) {
av_log(c, AV_LOG_ERROR, "Invalid second level segment filename template '%s', "
"you can try to remove second_level_segment_time flag\n",
- filename);
+ oc->url);
av_free(filename);
return AVERROR(EINVAL);
}
- av_free(filename);
+ ff_format_set_url(oc, filename);
}
}
return 0;
@@ -963,10 +964,10 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls,
return ret;
}
- filename = av_basename(vs->avf->filename);
+ filename = av_basename(vs->avf->url);
if (hls->use_localtime_mkdir) {
- filename = vs->avf->filename;
+ filename = vs->avf->url;
}
if ((find_segment_by_filename(vs->segments, filename) || find_segment_by_filename(vs->old_segments, filename))
&& !byterange_mode) {
@@ -975,7 +976,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls,
av_strlcpy(en->filename, filename, sizeof(en->filename));
if(vs->has_subtitle)
- av_strlcpy(en->sub_filename, av_basename(vs->vtt_avf->filename), sizeof(en->sub_filename));
+ av_strlcpy(en->sub_filename, av_basename(vs->vtt_avf->url), sizeof(en->sub_filename));
else
en->sub_filename[0] = '\0';
@@ -1101,10 +1102,15 @@ static int parse_playlist(AVFormatContext *s, const char *url, VariantStream *vs
continue;
} else if (line[0]) {
if (is_segment) {
+ char *new_file = av_strdup(line);
+ if (!new_file) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+ ff_format_set_url(vs->avf, new_file);
is_segment = 0;
new_start_pos = avio_tell(vs->avf->pb);
vs->size = new_start_pos - vs->start_pos;
- av_strlcpy(vs->avf->filename, line, sizeof(line));
ret = hls_append_segment(s, hls, vs, vs->duration, vs->start_pos, vs->size);
if (ret < 0)
goto fail;
@@ -1129,15 +1135,19 @@ static void hls_free_segments(HLSSegment *p)
}
}
-static void hls_rename_temp_file(AVFormatContext *s, AVFormatContext *oc)
+static int hls_rename_temp_file(AVFormatContext *s, AVFormatContext *oc)
{
- size_t len = strlen(oc->filename);
- char final_filename[sizeof(oc->filename)];
+ size_t len = strlen(oc->url);
+ char *final_filename = av_strdup(oc->url);
+ int ret;
- av_strlcpy(final_filename, oc->filename, len);
+ if (!final_filename)
+ return AVERROR(ENOMEM);
final_filename[len-4] = '\0';
- ff_rename(oc->filename, final_filename, s);
- oc->filename[len-4] = '\0';
+ ret = ff_rename(oc->url, final_filename, s);
+ oc->url[len-4] = '\0';
+ av_freep(&final_filename);
+ return ret;
}
static int get_relative_url(const char *master_url, const char *media_url,
@@ -1167,7 +1177,8 @@ static int create_master_playlist(AVFormatContext *s,
AVDictionary *options = NULL;
unsigned int i, j;
int m3u8_name_size, ret, bandwidth;
- char *m3u8_rel_name;
+ char *m3u8_rel_name, *ccgroup;
+ ClosedCaptionsStream *ccs;
input_vs->m3u8_created = 1;
if (!hls->master_m3u8_created) {
@@ -1194,6 +1205,16 @@ static int create_master_playlist(AVFormatContext *s,
ff_hls_write_playlist_version(hls->m3u8_out, hls->version);
+ for (i = 0; i < hls->nb_ccstreams; i++) {
+ ccs = &(hls->cc_streams[i]);
+ avio_printf(hls->m3u8_out, "#EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS");
+ avio_printf(hls->m3u8_out, ",GROUP-ID=\"%s\"", ccs->ccgroup);
+ avio_printf(hls->m3u8_out, ",NAME=\"%s\"", ccs->instreamid);
+ if (ccs->language)
+ avio_printf(hls->m3u8_out, ",LANGUAGE=\"%s\"", ccs->language);
+ avio_printf(hls->m3u8_out, ",INSTREAM-ID=\"%s\"\n", ccs->instreamid);
+ }
+
/* For audio only variant streams add #EXT-X-MEDIA tag with attributes*/
for (i = 0; i < hls->nb_varstreams; i++) {
vs = &(hls->var_streams[i]);
@@ -1278,8 +1299,23 @@ static int create_master_playlist(AVFormatContext *s,
bandwidth += aud_st->codecpar->bit_rate;
bandwidth += bandwidth / 10;
+ ccgroup = NULL;
+ if (vid_st && vs->ccgroup) {
+ /* check if this group name is available in the cc map string */
+ for (j = 0; j < hls->nb_ccstreams; j++) {
+ ccs = &(hls->cc_streams[j]);
+ if (!av_strcasecmp(ccs->ccgroup, vs->ccgroup)) {
+ ccgroup = vs->ccgroup;
+ break;
+ }
+ }
+ if (j == hls->nb_ccstreams)
+ av_log(NULL, AV_LOG_WARNING, "mapping ccgroup %s not found\n",
+ vs->ccgroup);
+ }
+
ff_hls_write_stream_info(vid_st, hls->m3u8_out, bandwidth, m3u8_rel_name,
- aud_st ? vs->agroup : NULL, vs->codec_attr);
+ aud_st ? vs->agroup : NULL, vs->codec_attr, ccgroup);
av_freep(&m3u8_rel_name);
}
@@ -1299,7 +1335,7 @@ static int hls_window(AVFormatContext *s, int last, VariantStream *vs)
int ret = 0;
char temp_filename[1024];
int64_t sequence = FFMAX(hls->start_sequence, vs->sequence - vs->nb_entries);
- const char *proto = avio_find_protocol_name(s->filename);
+ const char *proto = avio_find_protocol_name(s->url);
int use_rename = proto && !strcmp(proto, "file");
static unsigned warned_non_file;
char *key_uri = NULL;
@@ -1418,28 +1454,41 @@ static int hls_start(AVFormatContext *s, VariantStream *vs)
int err = 0;
if (c->flags & HLS_SINGLE_FILE) {
- av_strlcpy(oc->filename, vs->basename,
- sizeof(oc->filename));
- if (vs->vtt_basename)
- av_strlcpy(vtt_oc->filename, vs->vtt_basename,
- sizeof(vtt_oc->filename));
+ char *new_name = av_strdup(vs->basename);
+ if (!new_name)
+ return AVERROR(ENOMEM);
+ ff_format_set_url(oc, new_name);
+ if (vs->vtt_basename) {
+ new_name = av_strdup(vs->vtt_basename);
+ if (!new_name)
+ return AVERROR(ENOMEM);
+ ff_format_set_url(vtt_oc, new_name);
+ }
} else if (c->max_seg_size > 0) {
- if (replace_int_data_in_filename(oc->filename, sizeof(oc->filename),
+ char *filename = NULL;
+ if (replace_int_data_in_filename(&filename,
#if FF_API_HLS_WRAP
vs->basename, 'd', c->wrap ? vs->sequence % c->wrap : vs->sequence) < 1) {
#else
vs->basename, 'd', vs->sequence) < 1) {
#endif
+ av_free(filename);
av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s', you can try to use -use_localtime 1 with it\n", vs->basename);
return AVERROR(EINVAL);
}
+ ff_format_set_url(oc, filename);
} else {
if (c->use_localtime) {
time_t now0;
struct tm *tm, tmpbuf;
+ int bufsize = strlen(vs->basename) + 1024;
+ char *buf = av_mallocz(bufsize);
+ if (!buf)
+ return AVERROR(ENOMEM);
time(&now0);
tm = localtime_r(&now0, &tmpbuf);
- if (!strftime(oc->filename, sizeof(oc->filename), vs->basename, tm)) {
+ ff_format_set_url(oc, buf);
+ if (!strftime(oc->url, bufsize, vs->basename, tm)) {
av_log(oc, AV_LOG_ERROR, "Could not get segment filename with use_localtime\n");
return AVERROR(EINVAL);
}
@@ -1451,7 +1500,7 @@ static int hls_start(AVFormatContext *s, VariantStream *vs)
if (c->use_localtime_mkdir) {
const char *dir;
- char *fn_copy = av_strdup(oc->filename);
+ char *fn_copy = av_strdup(oc->url);
if (!fn_copy) {
return AVERROR(ENOMEM);
}
@@ -1463,25 +1512,33 @@ static int hls_start(AVFormatContext *s, VariantStream *vs)
}
av_free(fn_copy);
}
- } else if (replace_int_data_in_filename(oc->filename, sizeof(oc->filename),
+ } else {
+ char *filename = NULL;
+ if (replace_int_data_in_filename(&filename,
#if FF_API_HLS_WRAP
vs->basename, 'd', c->wrap ? vs->sequence % c->wrap : vs->sequence) < 1) {
#else
vs->basename, 'd', vs->sequence) < 1) {
#endif
- av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s' you can try to use -use_localtime 1 with it\n", vs->basename);
- return AVERROR(EINVAL);
+ av_free(filename);
+ av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s' you can try to use -use_localtime 1 with it\n", vs->basename);
+ return AVERROR(EINVAL);
+ }
+ ff_format_set_url(oc, filename);
}
if( vs->vtt_basename) {
- if (replace_int_data_in_filename(vtt_oc->filename, sizeof(vtt_oc->filename),
+ char *filename = NULL;
+ if (replace_int_data_in_filename(&filename,
#if FF_API_HLS_WRAP
vs->vtt_basename, 'd', c->wrap ? vs->sequence % c->wrap : vs->sequence) < 1) {
#else
vs->vtt_basename, 'd', vs->sequence) < 1) {
#endif
+ av_free(filename);
av_log(vtt_oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", vs->vtt_basename);
return AVERROR(EINVAL);
}
+ ff_format_set_url(vtt_oc, filename);
}
}
vs->number++;
@@ -1489,7 +1546,10 @@ static int hls_start(AVFormatContext *s, VariantStream *vs)
set_http_options(s, &options, c);
if (c->flags & HLS_TEMP_FILE) {
- av_strlcat(oc->filename, ".tmp", sizeof(oc->filename));
+ char *new_name = av_asprintf("%s.tmp", oc->url);
+ if (!new_name)
+ return AVERROR(ENOMEM);
+ ff_format_set_url(oc, new_name);
}
if (c->key_info_file || c->encrypt) {
@@ -1517,7 +1577,7 @@ static int hls_start(AVFormatContext *s, VariantStream *vs)
if ((err = av_dict_set(&options, "encryption_iv", iv_string, 0)) < 0)
goto fail;
- filename = av_asprintf("crypto:%s", oc->filename);
+ filename = av_asprintf("crypto:%s", oc->url);
if (!filename) {
err = AVERROR(ENOMEM);
goto fail;
@@ -1528,12 +1588,12 @@ static int hls_start(AVFormatContext *s, VariantStream *vs)
if (err < 0)
return err;
} else if (c->segment_type != SEGMENT_TYPE_FMP4) {
- if ((err = hlsenc_io_open(s, &oc->pb, oc->filename, &options)) < 0)
+ if ((err = hlsenc_io_open(s, &oc->pb, oc->url, &options)) < 0)
goto fail;
}
if (vs->vtt_basename) {
set_http_options(s, &options, c);
- if ((err = hlsenc_io_open(s, &vtt_oc->pb, vtt_oc->filename, &options)) < 0)
+ if ((err = hlsenc_io_open(s, &vtt_oc->pb, vtt_oc->url, &options)) < 0)
goto fail;
}
av_dict_free(&options);
@@ -1641,7 +1701,7 @@ fail:
static int format_name(char *buf, int buf_len, int index)
{
const char *proto, *dir;
- char *orig_buf_dup = NULL, *mod_buf_dup = NULL;
+ char *orig_buf_dup = NULL, *mod_buf = NULL, *mod_buf_dup = NULL;
int ret = 0;
if (!av_stristr(buf, "%v"))
@@ -1653,10 +1713,11 @@ static int format_name(char *buf, int buf_len, int index)
goto fail;
}
- if (replace_int_data_in_filename(buf, buf_len, orig_buf_dup, 'v', index) < 1) {
+ if (replace_int_data_in_filename(&mod_buf, orig_buf_dup, 'v', index) < 1) {
ret = AVERROR(EINVAL);
goto fail;
}
+ av_strlcpy(buf, mod_buf, buf_len);
proto = avio_find_protocol_name(orig_buf_dup);
dir = av_dirname(orig_buf_dup);
@@ -1679,6 +1740,7 @@ static int format_name(char *buf, int buf_len, int index)
fail:
av_freep(&orig_buf_dup);
av_freep(&mod_buf_dup);
+ av_freep(&mod_buf);
return ret;
}
@@ -1766,6 +1828,11 @@ static int parse_variant_stream_mapstring(AVFormatContext *s)
if (!vs->agroup)
return AVERROR(ENOMEM);
continue;
+ } else if (av_strstart(keyval, "ccgroup:", &val)) {
+ vs->ccgroup = av_strdup(val);
+ if (!vs->ccgroup)
+ return AVERROR(ENOMEM);
+ continue;
} else if (av_strstart(keyval, "v:", &val)) {
codec_type = AVMEDIA_TYPE_VIDEO;
} else if (av_strstart(keyval, "a:", &val)) {
@@ -1796,9 +1863,94 @@ static int parse_variant_stream_mapstring(AVFormatContext *s)
return 0;
}
+static int parse_cc_stream_mapstring(AVFormatContext *s)
+{
+ HLSContext *hls = s->priv_data;
+ int nb_ccstreams;
+ char *p, *q, *saveptr1, *saveptr2, *ccstr, *keyval;
+ const char *val;
+ ClosedCaptionsStream *ccs;
+
+ p = av_strdup(hls->cc_stream_map);
+ q = p;
+ while(av_strtok(q, " \t", &saveptr1)) {
+ q = NULL;
+ hls->nb_ccstreams++;
+ }
+ av_freep(&p);
+
+ hls->cc_streams = av_mallocz(sizeof(*hls->cc_streams) * hls->nb_ccstreams);
+ if (!hls->cc_streams)
+ return AVERROR(ENOMEM);
+
+ p = hls->cc_stream_map;
+ nb_ccstreams = 0;
+ while (ccstr = av_strtok(p, " \t", &saveptr1)) {
+ p = NULL;
+
+ if (nb_ccstreams < hls->nb_ccstreams)
+ ccs = &(hls->cc_streams[nb_ccstreams++]);
+ else
+ return AVERROR(EINVAL);
+
+ while (keyval = av_strtok(ccstr, ",", &saveptr2)) {
+ ccstr = NULL;
+
+ if (av_strstart(keyval, "ccgroup:", &val)) {
+ ccs->ccgroup = av_strdup(val);
+ if (!ccs->ccgroup)
+ return AVERROR(ENOMEM);
+ } else if (av_strstart(keyval, "instreamid:", &val)) {
+ ccs->instreamid = av_strdup(val);
+ if (!ccs->instreamid)
+ return AVERROR(ENOMEM);
+ } else if (av_strstart(keyval, "language:", &val)) {
+ ccs->language = av_strdup(val);
+ if (!ccs->language)
+ return AVERROR(ENOMEM);
+ } else {
+ av_log(s, AV_LOG_ERROR, "Invalid keyval %s\n", keyval);
+ return AVERROR(EINVAL);
+ }
+ }
+
+ if (!ccs->ccgroup || !ccs->instreamid) {
+ av_log(s, AV_LOG_ERROR, "Insufficient parameters in cc stream map string\n");
+ return AVERROR(EINVAL);
+ }
+
+ if (av_strstart(ccs->instreamid, "CC", &val)) {
+ if(atoi(val) < 1 || atoi(val) > 4) {
+ av_log(s, AV_LOG_ERROR, "Invalid instream ID CC index %d in %s, range 1-4\n",
+ atoi(val), ccs->instreamid);
+ return AVERROR(EINVAL);
+ }
+ } else if (av_strstart(ccs->instreamid, "SERVICE", &val)) {
+ if(atoi(val) < 1 || atoi(val) > 63) {
+ av_log(s, AV_LOG_ERROR, "Invalid instream ID SERVICE index %d in %s, range 1-63 \n",
+ atoi(val), ccs->instreamid);
+ return AVERROR(EINVAL);
+ }
+ } else {
+ av_log(s, AV_LOG_ERROR, "Invalid instream ID %s, supported are CCn or SERIVICEn\n",
+ ccs->instreamid);
+ return AVERROR(EINVAL);
+ }
+ }
+
+ return 0;
+}
+
static int update_variant_stream_info(AVFormatContext *s) {
HLSContext *hls = s->priv_data;
unsigned int i;
+ int ret = 0;
+
+ if (hls->cc_stream_map) {
+ ret = parse_cc_stream_mapstring(s);
+ if (ret < 0)
+ return ret;
+ }
if (hls->var_stream_map) {
return parse_variant_stream_mapstring(s);
@@ -1816,6 +1968,13 @@ static int update_variant_stream_info(AVFormatContext *s) {
if (!hls->var_streams[0].streams)
return AVERROR(ENOMEM);
+ //by default, the first available ccgroup is mapped to the variant stream
+ if (hls->nb_ccstreams) {
+ hls->var_streams[0].ccgroup = av_strdup(hls->cc_streams[0].ccgroup);
+ if (!hls->var_streams[0].ccgroup)
+ return AVERROR(ENOMEM);
+ }
+
for (i = 0; i < s->nb_streams; i++)
hls->var_streams[0].streams[i] = s->streams[i];
}
@@ -1828,7 +1987,7 @@ static int update_master_pl_info(AVFormatContext *s) {
char *fn1= NULL, *fn2 = NULL;
int ret = 0;
- fn1 = av_strdup(s->filename);
+ fn1 = av_strdup(s->url);
if (!fn1) {
ret = AVERROR(ENOMEM);
goto fail;
@@ -1983,7 +2142,7 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
if (vs->has_video) {
can_split = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
((pkt->flags & AV_PKT_FLAG_KEY) || (hls->flags & HLS_SPLIT_BY_TIME));
- is_ref_pkt = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO;
+ is_ref_pkt = (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) && (pkt->stream_index == vs->reference_stream_index);
}
if (pkt->pts == AV_NOPTS_VALUE)
is_ref_pkt = can_split = 0;
@@ -2010,13 +2169,9 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
if (vs->packets_written && can_split && av_compare_ts(pkt->pts - vs->start_pts, st->time_base,
end_pts, AV_TIME_BASE_Q) >= 0) {
int64_t new_start_pos;
- char *old_filename = av_strdup(vs->avf->filename);
+ char *old_filename = NULL;
int byterange_mode = (hls->flags & HLS_SINGLE_FILE) || (hls->max_seg_size > 0);
- if (!old_filename) {
- return AVERROR(ENOMEM);
- }
-
av_write_frame(vs->avf, NULL); /* Flush any buffered data */
new_start_pos = avio_tell(vs->avf->pb);
@@ -2035,13 +2190,13 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
hlsenc_io_close(s, &vs->out, vs->base_output_dirname);
}
} else {
- hlsenc_io_close(s, &oc->pb, oc->filename);
+ hlsenc_io_close(s, &oc->pb, oc->url);
}
if (vs->vtt_avf) {
- hlsenc_io_close(s, &vs->vtt_avf->pb, vs->vtt_avf->filename);
+ hlsenc_io_close(s, &vs->vtt_avf->pb, vs->vtt_avf->url);
}
}
- if ((hls->flags & HLS_TEMP_FILE) && oc->filename[0]) {
+ if ((hls->flags & HLS_TEMP_FILE) && oc->url[0]) {
if (!(hls->flags & HLS_SINGLE_FILE) || (hls->max_seg_size <= 0))
if ((vs->avf->oformat->priv_class && vs->avf->priv_data) && hls->segment_type != SEGMENT_TYPE_FMP4)
av_opt_set(vs->avf->priv_data, "mpegts_flags", "resend_headers", 0);
@@ -2053,21 +2208,25 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
}
if (hls->segment_type == SEGMENT_TYPE_FMP4) {
- ret = hlsenc_io_open(s, &vs->out, vs->avf->filename, NULL);
+ ret = hlsenc_io_open(s, &vs->out, vs->avf->url, NULL);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Failed to open file '%s'\n",
- vs->avf->filename);
- av_free(old_filename);
+ vs->avf->url);
return ret;
}
write_styp(vs->out);
ret = flush_dynbuf(vs, &range_length);
if (ret < 0) {
- av_free(old_filename);
return ret;
}
ff_format_io_close(s, &vs->out);
}
+
+ old_filename = av_strdup(vs->avf->url);
+ if (!old_filename) {
+ return AVERROR(ENOMEM);
+ }
+
ret = hls_append_segment(s, hls, vs, vs->duration, vs->start_pos, vs->size);
vs->start_pos = new_start_pos;
if (ret < 0) {
@@ -2129,16 +2288,16 @@ static int hls_write_trailer(struct AVFormatContext *s)
oc = vs->avf;
vtt_oc = vs->vtt_avf;
- old_filename = av_strdup(vs->avf->filename);
+ old_filename = av_strdup(vs->avf->url);
if (!old_filename) {
return AVERROR(ENOMEM);
}
if ( hls->segment_type == SEGMENT_TYPE_FMP4) {
int range_length = 0;
- ret = hlsenc_io_open(s, &vs->out, vs->avf->filename, NULL);
+ ret = hlsenc_io_open(s, &vs->out, vs->avf->url, NULL);
if (ret < 0) {
- av_log(NULL, AV_LOG_ERROR, "Failed to open file '%s'\n", vs->avf->filename);
+ av_log(NULL, AV_LOG_ERROR, "Failed to open file '%s'\n", vs->avf->url);
goto failed;
}
write_styp(vs->out);
@@ -2156,8 +2315,14 @@ failed:
if (hls->segment_type != SEGMENT_TYPE_FMP4)
ff_format_io_close(s, &oc->pb);
- if ((hls->flags & HLS_TEMP_FILE) && oc->filename[0]) {
+ if ((hls->flags & HLS_TEMP_FILE) && oc->url[0]) {
hls_rename_temp_file(s, oc);
+ av_free(old_filename);
+ old_filename = av_strdup(vs->avf->url);
+
+ if (!old_filename) {
+ return AVERROR(ENOMEM);
+ }
}
/* after av_write_trailer, then duration + 1 duration per packet */
@@ -2192,13 +2357,22 @@ failed:
av_freep(&vs->m3u8_name);
av_freep(&vs->streams);
av_freep(&vs->agroup);
+ av_freep(&vs->ccgroup);
av_freep(&vs->baseurl);
}
+ for (i = 0; i < hls->nb_ccstreams; i++) {
+ ClosedCaptionsStream *ccs = &hls->cc_streams[i];
+ av_freep(&ccs->ccgroup);
+ av_freep(&ccs->instreamid);
+ av_freep(&ccs->language);
+ }
+
ff_format_io_close(s, &hls->m3u8_out);
ff_format_io_close(s, &hls->sub_m3u8_out);
av_freep(&hls->key_basename);
av_freep(&hls->var_streams);
+ av_freep(&hls->cc_streams);
av_freep(&hls->master_m3u8_url);
return 0;
}
@@ -2232,7 +2406,7 @@ static int hls_init(AVFormatContext *s)
goto fail;
}
- ret = validate_name(hls->nb_varstreams, s->filename);
+ ret = validate_name(hls->nb_varstreams, s->url);
if (ret < 0)
goto fail;
@@ -2287,12 +2461,12 @@ static int hls_init(AVFormatContext *s)
for (i = 0; i < hls->nb_varstreams; i++) {
vs = &hls->var_streams[i];
- vs->m3u8_name = av_strdup(s->filename);
+ vs->m3u8_name = av_strdup(s->url);
if (!vs->m3u8_name ) {
ret = AVERROR(ENOMEM);
goto fail;
}
- ret = format_name(vs->m3u8_name, strlen(s->filename) + 1, i);
+ ret = format_name(vs->m3u8_name, strlen(s->url) + 1, i);
if (ret < 0)
goto fail;
@@ -2324,6 +2498,11 @@ static int hls_init(AVFormatContext *s)
for (j = 0; j < vs->nb_streams; j++) {
vs->has_video += vs->streams[j]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO;
+ /* Get one video stream to reference for split segments
+ * so use the first video stream index. */
+ if ((vs->has_video == 1) && (vs->streams[j]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)) {
+ vs->reference_stream_index = vs->streams[j]->index;
+ }
vs->has_subtitle += vs->streams[j]->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE;
}
@@ -2535,13 +2714,21 @@ fail:
av_freep(&vs->vtt_m3u8_name);
av_freep(&vs->streams);
av_freep(&vs->agroup);
+ av_freep(&vs->ccgroup);
av_freep(&vs->baseurl);
if (vs->avf)
avformat_free_context(vs->avf);
if (vs->vtt_avf)
avformat_free_context(vs->vtt_avf);
}
+ for (i = 0; i < hls->nb_ccstreams; i++) {
+ ClosedCaptionsStream *ccs = &hls->cc_streams[i];
+ av_freep(&ccs->ccgroup);
+ av_freep(&ccs->instreamid);
+ av_freep(&ccs->language);
+ }
av_freep(&hls->var_streams);
+ av_freep(&hls->cc_streams);
av_freep(&hls->master_m3u8_url);
}
@@ -2601,6 +2788,7 @@ static const AVOption options[] = {
{"datetime", "current datetime as YYYYMMDDhhmmss", 0, AV_OPT_TYPE_CONST, {.i64 = HLS_START_SEQUENCE_AS_FORMATTED_DATETIME }, INT_MIN, INT_MAX, E, "start_sequence_source_type" },
{"http_user_agent", "override User-Agent field in HTTP header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E},
{"var_stream_map", "Variant stream map string", OFFSET(var_stream_map), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E},
+ {"cc_stream_map", "Closed captions stream map string", OFFSET(cc_stream_map), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E},
{"master_pl_name", "Create HLS master playlist with this name", OFFSET(master_pl_name), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E},
{"master_pl_publish_rate", "Publish master play list every after this many segment intervals", OFFSET(master_publish_rate), AV_OPT_TYPE_INT, {.i64 = 0}, 0, UINT_MAX, E},
{"http_persistent", "Use persistent HTTP connections", OFFSET(http_persistent), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, E },
diff --git a/chromium/third_party/ffmpeg/libavformat/hlsplaylist.c b/chromium/third_party/ffmpeg/libavformat/hlsplaylist.c
index b8a3a140903..efcbff0009d 100644
--- a/chromium/third_party/ffmpeg/libavformat/hlsplaylist.c
+++ b/chromium/third_party/ffmpeg/libavformat/hlsplaylist.c
@@ -47,7 +47,8 @@ void ff_hls_write_audio_rendition(AVIOContext *out, char *agroup,
void ff_hls_write_stream_info(AVStream *st, AVIOContext *out,
int bandwidth, char *filename, char *agroup,
- char *codecs) {
+ char *codecs, char *ccgroup) {
+
if (!out || !filename)
return;
@@ -65,6 +66,8 @@ void ff_hls_write_stream_info(AVStream *st, AVIOContext *out,
avio_printf(out, ",CODECS=\"%s\"", codecs);
if (agroup && strlen(agroup) > 0)
avio_printf(out, ",AUDIO=\"group_%s\"", agroup);
+ if (ccgroup && strlen(ccgroup) > 0)
+ avio_printf(out, ",CLOSED-CAPTIONS=\"%s\"", ccgroup);
avio_printf(out, "\n%s\n\n", filename);
}
diff --git a/chromium/third_party/ffmpeg/libavformat/hlsplaylist.h b/chromium/third_party/ffmpeg/libavformat/hlsplaylist.h
index 7532e3752f8..5054b01c8fc 100644
--- a/chromium/third_party/ffmpeg/libavformat/hlsplaylist.h
+++ b/chromium/third_party/ffmpeg/libavformat/hlsplaylist.h
@@ -41,7 +41,7 @@ void ff_hls_write_audio_rendition(AVIOContext *out, char *agroup,
char *filename, int name_id, int is_default);
void ff_hls_write_stream_info(AVStream *st, AVIOContext *out,
int bandwidth, char *filename, char *agroup,
- char *codecs);
+ char *codecs, char *ccgroup);
void ff_hls_write_playlist_header(AVIOContext *out, int version, int allowcache,
int target_duration, int64_t sequence,
uint32_t playlist_type);
diff --git a/chromium/third_party/ffmpeg/libavformat/http.c b/chromium/third_party/ffmpeg/libavformat/http.c
index aa80e314dff..344fd603cb9 100644
--- a/chromium/third_party/ffmpeg/libavformat/http.c
+++ b/chromium/third_party/ffmpeg/libavformat/http.c
@@ -76,6 +76,7 @@ typedef struct HTTPContext {
char *mime_type;
char *http_version;
char *user_agent;
+ char *referer;
#if FF_API_HTTP_USER_AGENT
char *user_agent_deprecated;
#endif
@@ -138,6 +139,7 @@ static const AVOption options[] = {
{ "headers", "set custom HTTP headers, can override built in default headers", OFFSET(headers), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E },
{ "content_type", "set a specific content type for the POST messages", OFFSET(content_type), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E },
{ "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D },
+ { "referer", "override referer header", OFFSET(referer), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D },
#if FF_API_HTTP_USER_AGENT
{ "user-agent", "override User-Agent header", OFFSET(user_agent_deprecated), AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D },
#endif
@@ -1198,6 +1200,12 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
if (!has_header(s->headers, "\r\nUser-Agent: "))
len += av_strlcatf(headers + len, sizeof(headers) - len,
"User-Agent: %s\r\n", s->user_agent);
+ if (s->referer) {
+ /* set default headers if needed */
+ if (!has_header(s->headers, "\r\nReferer: "))
+ len += av_strlcatf(headers + len, sizeof(headers) - len,
+ "Referer: %s\r\n", s->referer);
+ }
if (!has_header(s->headers, "\r\nAccept: "))
len += av_strlcpy(headers + len, "Accept: */*\r\n",
sizeof(headers) - len);
diff --git a/chromium/third_party/ffmpeg/libavformat/id3v2.c b/chromium/third_party/ffmpeg/libavformat/id3v2.c
index 6c216ba7a25..f7de26a1d8e 100644
--- a/chromium/third_party/ffmpeg/libavformat/id3v2.c
+++ b/chromium/third_party/ffmpeg/libavformat/id3v2.c
@@ -33,6 +33,7 @@
#endif
#include "libavutil/avstring.h"
+#include "libavutil/bprint.h"
#include "libavutil/dict.h"
#include "libavutil/intreadwrite.h"
#include "avio_internal.h"
@@ -975,19 +976,21 @@ static void id3v2_parse(AVIOContext *pb, AVDictionary **metadata,
}
}
if (unsync || tunsync) {
- int64_t end = avio_tell(pb) + tlen;
- uint8_t *b;
-
- b = buffer;
- while (avio_tell(pb) < end && b - buffer < tlen && !pb->eof_reached) {
- *b++ = avio_r8(pb);
- if (*(b - 1) == 0xff && avio_tell(pb) < end - 1 &&
- b - buffer < tlen &&
- !pb->eof_reached ) {
- uint8_t val = avio_r8(pb);
- *b++ = val ? val : avio_r8(pb);
- }
+ uint8_t *b = buffer;
+ uint8_t *t = buffer;
+ uint8_t *end = t + tlen;
+
+ if (avio_read(pb, buffer, tlen) != tlen) {
+ av_log(s, AV_LOG_ERROR, "Failed to read tag data\n");
+ goto seek;
}
+
+ while (t != end) {
+ *b++ = *t++;
+ if (t != end && t[-1] == 0xff && !t[0])
+ t++;
+ }
+
ffio_init_context(&pb_local, buffer, b - buffer, 0, NULL, NULL, NULL,
NULL);
tlen = b - buffer;
@@ -1224,3 +1227,50 @@ end:
av_freep(&chapters);
return ret;
}
+
+int ff_id3v2_parse_priv_dict(AVDictionary **metadata, ID3v2ExtraMeta **extra_meta)
+{
+ ID3v2ExtraMeta *cur;
+ int dict_flags = AV_DICT_DONT_OVERWRITE | AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL;
+
+ for (cur = *extra_meta; cur; cur = cur->next) {
+ if (!strcmp(cur->tag, "PRIV")) {
+ ID3v2ExtraMetaPRIV *priv = cur->data;
+ AVBPrint bprint;
+ char *escaped, *key;
+ int i, ret;
+
+ if ((key = av_asprintf(ID3v2_PRIV_METADATA_PREFIX "%s", priv->owner)) == NULL) {
+ return AVERROR(ENOMEM);
+ }
+
+ av_bprint_init(&bprint, priv->datasize + 1, AV_BPRINT_SIZE_UNLIMITED);
+
+ for (i = 0; i < priv->datasize; i++) {
+ if (priv->data[i] < 32 || priv->data[i] > 126 || priv->data[i] == '\\') {
+ av_bprintf(&bprint, "\\x%02x", priv->data[i]);
+ } else {
+ av_bprint_chars(&bprint, priv->data[i], 1);
+ }
+ }
+
+ if ((ret = av_bprint_finalize(&bprint, &escaped)) < 0) {
+ av_free(key);
+ return ret;
+ }
+
+ if ((ret = av_dict_set(metadata, key, escaped, dict_flags)) < 0) {
+ av_free(key);
+ av_free(escaped);
+ return ret;
+ }
+ }
+ }
+
+ return 0;
+}
+
+int ff_id3v2_parse_priv(AVFormatContext *s, ID3v2ExtraMeta **extra_meta)
+{
+ return ff_id3v2_parse_priv_dict(&s->metadata, extra_meta);
+}
diff --git a/chromium/third_party/ffmpeg/libavformat/id3v2.h b/chromium/third_party/ffmpeg/libavformat/id3v2.h
index 5e64ead096a..9de0bee3743 100644
--- a/chromium/third_party/ffmpeg/libavformat/id3v2.h
+++ b/chromium/third_party/ffmpeg/libavformat/id3v2.h
@@ -39,6 +39,8 @@
#define ID3v2_FLAG_ENCRYPTION 0x0004
#define ID3v2_FLAG_COMPRESSION 0x0008
+#define ID3v2_PRIV_METADATA_PREFIX "id3v2_priv."
+
enum ID3v2Encoding {
ID3v2_ENCODING_ISO8859 = 0,
ID3v2_ENCODING_UTF16BOM = 1,
@@ -167,6 +169,19 @@ int ff_id3v2_parse_apic(AVFormatContext *s, ID3v2ExtraMeta **extra_meta);
*/
int ff_id3v2_parse_chapters(AVFormatContext *s, ID3v2ExtraMeta **extra_meta);
+/**
+ * Parse PRIV tags into a dictionary. The PRIV owner is the metadata key. The
+ * PRIV data is the value, with non-printable characters escaped.
+ */
+int ff_id3v2_parse_priv_dict(AVDictionary **d, ID3v2ExtraMeta **extra_meta);
+
+/**
+ * Add metadata for all PRIV tags in the ID3v2 header. The PRIV owner is the
+ * metadata key. The PRIV data is the value, with non-printable characters
+ * escaped.
+ */
+int ff_id3v2_parse_priv(AVFormatContext *s, ID3v2ExtraMeta **extra_meta);
+
extern const AVMetadataConv ff_id3v2_34_metadata_conv[];
extern const AVMetadataConv ff_id3v2_4_metadata_conv[];
diff --git a/chromium/third_party/ffmpeg/libavformat/id3v2enc.c b/chromium/third_party/ffmpeg/libavformat/id3v2enc.c
index 14de76ac06d..ffe358f0198 100644
--- a/chromium/third_party/ffmpeg/libavformat/id3v2enc.c
+++ b/chromium/third_party/ffmpeg/libavformat/id3v2enc.c
@@ -96,6 +96,59 @@ static int id3v2_put_ttag(ID3v2EncContext *id3, AVIOContext *avioc, const char *
return len + ID3v2_HEADER_SIZE;
}
+/**
+ * Write a priv frame with owner and data. 'key' is the owner prepended with
+ * ID3v2_PRIV_METADATA_PREFIX. 'data' is provided as a string. Any \xXX
+ * (where 'X' is a valid hex digit) will be unescaped to the byte value.
+ */
+static int id3v2_put_priv(ID3v2EncContext *id3, AVIOContext *avioc, const char *key, const char *data)
+{
+ int len;
+ uint8_t *pb;
+ AVIOContext *dyn_buf;
+
+ if (!av_strstart(key, ID3v2_PRIV_METADATA_PREFIX, &key)) {
+ return 0;
+ }
+
+ if (avio_open_dyn_buf(&dyn_buf) < 0)
+ return AVERROR(ENOMEM);
+
+ // owner + null byte.
+ avio_write(dyn_buf, key, strlen(key) + 1);
+
+ while (*data) {
+ if (av_strstart(data, "\\x", &data)) {
+ if (data[0] && data[1] && av_isxdigit(data[0]) && av_isxdigit(data[1])) {
+ char digits[] = {data[0], data[1], 0};
+ avio_w8(dyn_buf, strtol(digits, NULL, 16));
+ data += 2;
+ } else {
+ ffio_free_dyn_buf(&dyn_buf);
+ av_log(avioc, AV_LOG_ERROR, "Invalid escape '\\x%.2s' in metadata tag '"
+ ID3v2_PRIV_METADATA_PREFIX "%s'.\n", data, key);
+ return AVERROR(EINVAL);
+ }
+ } else {
+ avio_write(dyn_buf, data++, 1);
+ }
+ }
+
+ len = avio_close_dyn_buf(dyn_buf, &pb);
+
+ avio_wb32(avioc, MKBETAG('P', 'R', 'I', 'V'));
+ if (id3->version == 3)
+ avio_wb32(avioc, len);
+ else
+ id3v2_put_size(avioc, len);
+ avio_wb16(avioc, 0);
+ avio_write(avioc, pb, len);
+
+ av_free(pb);
+
+ return len + ID3v2_HEADER_SIZE;
+}
+
static int id3v2_check_write_tag(ID3v2EncContext *id3, AVIOContext *pb, AVDictionaryEntry *t,
const char table[][4], enum ID3v2Encoding enc)
{
@@ -186,6 +239,13 @@ static int write_metadata(AVIOContext *pb, AVDictionary **metadata,
continue;
}
+ if ((ret = id3v2_put_priv(id3, pb, t->key, t->value)) > 0) {
+ id3->len += ret;
+ continue;
+ } else if (ret < 0) {
+ return ret;
+ }
+
/* unknown tag, write as TXXX frame */
if ((ret = id3v2_put_ttag(id3, pb, t->key, t->value, MKBETAG('T', 'X', 'X', 'X'), enc)) < 0)
return ret;
diff --git a/chromium/third_party/ffmpeg/libavformat/img2dec.c b/chromium/third_party/ffmpeg/libavformat/img2dec.c
index ecf64eaffae..f3f52c83b35 100644
--- a/chromium/third_party/ffmpeg/libavformat/img2dec.c
+++ b/chromium/third_party/ffmpeg/libavformat/img2dec.c
@@ -198,7 +198,7 @@ int ff_img_read_header(AVFormatContext *s1)
return AVERROR(EINVAL);
}
- av_strlcpy(s->path, s1->filename, sizeof(s->path));
+ av_strlcpy(s->path, s1->url, sizeof(s->path));
s->img_number = 0;
s->img_count = 0;
@@ -338,7 +338,7 @@ int ff_img_read_header(AVFormatContext *s1)
pd.buf = probe_buffer;
pd.buf_size = probe_buffer_size;
- pd.filename = s1->filename;
+ pd.filename = s1->url;
while ((fmt = av_iformat_next(fmt))) {
if (fmt->read_header != ff_img_read_header ||
@@ -878,10 +878,14 @@ static int svg_probe(AVProbeData *p)
{
const uint8_t *b = p->buf;
const uint8_t *end = p->buf + p->buf_size;
+
if (memcmp(p->buf, "<?xml", 5))
return 0;
while (b < end) {
- b += ff_subtitles_next_line(b);
+ int inc = ff_subtitles_next_line(b);
+ if (!inc)
+ break;
+ b += inc;
if (b >= end - 4)
return 0;
if (!memcmp(b, "<svg", 4))
diff --git a/chromium/third_party/ffmpeg/libavformat/img2enc.c b/chromium/third_party/ffmpeg/libavformat/img2enc.c
index b680676bff7..a09cc8ec501 100644
--- a/chromium/third_party/ffmpeg/libavformat/img2enc.c
+++ b/chromium/third_party/ffmpeg/libavformat/img2enc.c
@@ -53,7 +53,7 @@ static int write_header(AVFormatContext *s)
AVStream *st = s->streams[0];
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(st->codecpar->format);
- av_strlcpy(img->path, s->filename, sizeof(img->path));
+ av_strlcpy(img->path, s->url, sizeof(img->path));
/* find format */
if (s->oformat->flags & AVFMT_NOFILE)
@@ -156,7 +156,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
av_assert0(!img->split_planes);
- ret = avformat_alloc_output_context2(&fmt, NULL, img->muxer, s->filename);
+ ret = avformat_alloc_output_context2(&fmt, NULL, img->muxer, s->url);
if (ret < 0)
return ret;
st = avformat_new_stream(fmt, NULL);
diff --git a/chromium/third_party/ffmpeg/libavformat/internal.h b/chromium/third_party/ffmpeg/libavformat/internal.h
index 0cd0556dc79..a020b1b417d 100644
--- a/chromium/third_party/ffmpeg/libavformat/internal.h
+++ b/chromium/third_party/ffmpeg/libavformat/internal.h
@@ -299,6 +299,32 @@ void ff_put_v(AVIOContext *bc, uint64_t val);
*/
int ff_get_line(AVIOContext *s, char *buf, int maxlen);
+/**
+ * Read a whole line of text from AVIOContext to an AVBPrint buffer. Stop
+ * reading after reaching a \\r, a \\n, a \\r\\n, a \\0 or EOF. The line
+ * ending characters are NOT included in the buffer, but they are skipped on
+ * the input.
+ *
+ * @param s the read-only AVIOContext
+ * @param bp the AVBPrint buffer
+ * @return the length of the read line, not including the line endings,
+ * negative on error.
+ */
+int64_t ff_read_line_to_bprint(AVIOContext *s, AVBPrint *bp);
+
+/**
+ * Read a whole line of text from AVIOContext to an AVBPrint buffer overwriting
+ * its contents. Stop reading after reaching a \\r, a \\n, a \\r\\n, a \\0 or
+ * EOF. The line ending characters are NOT included in the buffer, but they
+ * are skipped on the input.
+ *
+ * @param s the read-only AVIOContext
+ * @param bp the AVBPrint buffer
+ * @return the length of the read line not including the line endings,
+ * negative on error, or if the buffer becomes truncated.
+ */
+int64_t ff_read_line_to_bprint_overwrite(AVIOContext *s, AVBPrint *bp);
+
#define SPACE_CHARS " \t\r\n"
/**
@@ -554,6 +580,8 @@ static inline int ff_rename(const char *oldpath, const char *newpath, void *logc
* Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end
* which is always set to 0.
*
+ * Previously allocated extradata in par will be freed.
+ *
* @param size size of extradata
* @return 0 if OK, AVERROR_xxx on error
*/
@@ -696,4 +724,18 @@ int ff_interleaved_peek(AVFormatContext *s, int stream,
int ff_lock_avformat(void);
int ff_unlock_avformat(void);
+/**
+ * Set AVFormatContext url field to the provided pointer. The pointer must
+ * point to a valid string. The existing url field is freed if necessary. Also
+ * set the legacy filename field to the same string which was provided in url.
+ */
+void ff_format_set_url(AVFormatContext *s, char *url);
+
+#if FF_API_NEXT
+/**
+ * Register devices in deprecated format linked list.
+ */
+void avpriv_register_devices(const AVOutputFormat * const o[], const AVInputFormat * const i[]);
+#endif
+
#endif /* AVFORMAT_INTERNAL_H */
diff --git a/chromium/third_party/ffmpeg/libavformat/isom.c b/chromium/third_party/ffmpeg/libavformat/isom.c
index 9d9f85885b0..2792371c250 100644
--- a/chromium/third_party/ffmpeg/libavformat/isom.c
+++ b/chromium/third_party/ffmpeg/libavformat/isom.c
@@ -186,6 +186,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = {
{ AV_CODEC_ID_H264, MKTAG('x', 'a', 'l', 'g') }, /* XAVC-L HD422 produced by FCP */
{ AV_CODEC_ID_H264, MKTAG('a', 'v', 'l', 'g') }, /* Panasonic P2 AVC-LongG */
+ { AV_CODEC_ID_VP8, MKTAG('v', 'p', '0', '8') }, /* VP8 */
{ AV_CODEC_ID_VP9, MKTAG('v', 'p', '0', '9') }, /* VP9 */
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', ' ') },
@@ -525,7 +526,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
av_log(fc, AV_LOG_TRACE, "Specific MPEG-4 header len=%d\n", len);
if (!len || (uint64_t)len > (1<<30))
return AVERROR_INVALIDDATA;
- av_free(st->codecpar->extradata);
if ((ret = ff_get_extradata(fc, st->codecpar, pb, len)) < 0)
return ret;
if (st->codecpar->codec_id == AV_CODEC_ID_AAC) {
diff --git a/chromium/third_party/ffmpeg/libavformat/isom.h b/chromium/third_party/ffmpeg/libavformat/isom.h
index 65676fb0f55..4da34142f06 100644
--- a/chromium/third_party/ffmpeg/libavformat/isom.h
+++ b/chromium/third_party/ffmpeg/libavformat/isom.h
@@ -168,6 +168,7 @@ typedef struct MOVStreamContext {
int *keyframes;
int time_scale;
int64_t time_offset; ///< time offset of the edit list entries
+ int64_t min_corrected_pts; ///< minimum Composition time shown by the edits excluding empty edits.
int current_sample;
int64_t current_index;
MOVIndexRange* index_ranges;
diff --git a/chromium/third_party/ffmpeg/libavformat/matroskadec.c b/chromium/third_party/ffmpeg/libavformat/matroskadec.c
index 76cce05f5a5..222fa046b22 100644
--- a/chromium/third_party/ffmpeg/libavformat/matroskadec.c
+++ b/chromium/third_party/ffmpeg/libavformat/matroskadec.c
@@ -2405,6 +2405,10 @@ static int matroska_parse_tracks(AVFormatContext *s)
return ret;
} else if (codec_id == AV_CODEC_ID_PRORES && track->codec_priv.size == 4) {
fourcc = AV_RL32(track->codec_priv.data);
+ } else if (codec_id == AV_CODEC_ID_VP9 && track->codec_priv.size) {
+ /* we don't need any value stored in CodecPrivate.
+ make sure that it's not exported as extradata. */
+ track->codec_priv.size = 0;
}
track->codec_priv.size -= extradata_offset;
@@ -2529,7 +2533,9 @@ static int matroska_parse_tracks(AVFormatContext *s)
st->codecpar->channels = track->audio.channels;
if (!st->codecpar->bits_per_coded_sample)
st->codecpar->bits_per_coded_sample = track->audio.bitdepth;
- if (st->codecpar->codec_id == AV_CODEC_ID_MP3)
+ if (st->codecpar->codec_id == AV_CODEC_ID_MP3 ||
+ st->codecpar->codec_id == AV_CODEC_ID_MLP ||
+ st->codecpar->codec_id == AV_CODEC_ID_TRUEHD)
st->need_parsing = AVSTREAM_PARSE_FULL;
else if (st->codecpar->codec_id != AV_CODEC_ID_AAC)
st->need_parsing = AVSTREAM_PARSE_HEADERS;
@@ -3118,7 +3124,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
err = av_new_packet(pkt, text_len);
if (err < 0) {
av_free(pkt);
- return AVERROR(err);
+ return err;
}
memcpy(pkt->data, text, text_len);
@@ -3128,6 +3134,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
AV_PKT_DATA_WEBVTT_IDENTIFIER,
id_len);
if (!buf) {
+ av_packet_unref(pkt);
av_free(pkt);
return AVERROR(ENOMEM);
}
@@ -3139,6 +3146,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
AV_PKT_DATA_WEBVTT_SETTINGS,
settings_len);
if (!buf) {
+ av_packet_unref(pkt);
av_free(pkt);
return AVERROR(ENOMEM);
}
@@ -3970,8 +3978,8 @@ static int webm_dash_manifest_read_header(AVFormatContext *s)
}
// basename of the file
- buf = strrchr(s->filename, '/');
- av_dict_set(&s->streams[0]->metadata, FILENAME, buf ? ++buf : s->filename, 0);
+ buf = strrchr(s->url, '/');
+ av_dict_set(&s->streams[0]->metadata, FILENAME, buf ? ++buf : s->url, 0);
// track number
tracks = matroska->tracks.elem;
diff --git a/chromium/third_party/ffmpeg/libavformat/matroskaenc.c b/chromium/third_party/ffmpeg/libavformat/matroskaenc.c
index f22c2ab70cc..5950b4de443 100644
--- a/chromium/third_party/ffmpeg/libavformat/matroskaenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/matroskaenc.c
@@ -2001,6 +2001,8 @@ static int mkv_write_header(AVFormatContext *s)
}
if ((pb->seekable & AVIO_SEEKABLE_NORMAL) && mkv->reserve_cues_space) {
mkv->cues_pos = avio_tell(pb);
+ if (mkv->reserve_cues_space == 1)
+ mkv->reserve_cues_space++;
put_ebml_void(pb, mkv->reserve_cues_space);
}
diff --git a/chromium/third_party/ffmpeg/libavformat/mlvdec.c b/chromium/third_party/ffmpeg/libavformat/mlvdec.c
index 319cd26de4f..d387c871ee9 100644
--- a/chromium/third_party/ffmpeg/libavformat/mlvdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/mlvdec.c
@@ -342,9 +342,9 @@ static int read_header(AVFormatContext *avctx)
return ret;
/* scan secondary files */
- if (strlen(avctx->filename) > 2) {
+ if (strlen(avctx->url) > 2) {
int i;
- char *filename = av_strdup(avctx->filename);
+ char *filename = av_strdup(avctx->url);
if (!filename)
return AVERROR(ENOMEM);
diff --git a/chromium/third_party/ffmpeg/libavformat/mov.c b/chromium/third_party/ffmpeg/libavformat/mov.c
index 7ce649d4d55..abac7fe9bc4 100644
--- a/chromium/third_party/ffmpeg/libavformat/mov.c
+++ b/chromium/third_party/ffmpeg/libavformat/mov.c
@@ -336,6 +336,8 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom)
case MKTAG( 'l','d','e','s'): key = "synopsis"; break;
case MKTAG( 'l','o','c','i'):
return mov_metadata_loci(c, pb, atom.size);
+ case MKTAG( 'm','a','n','u'): key = "make"; break;
+ case MKTAG( 'm','o','d','l'): key = "model"; break;
case MKTAG( 'p','c','s','t'): key = "podcast";
parse = mov_metadata_int8_no_padding; break;
case MKTAG( 'p','g','a','p'): key = "gapless_playback";
@@ -2415,6 +2417,7 @@ static int mov_finalize_stsd_codec(MOVContext *c, AVIOContext *pb,
case AV_CODEC_ID_EAC3:
case AV_CODEC_ID_MPEG1VIDEO:
case AV_CODEC_ID_VC1:
+ case AV_CODEC_ID_VP8:
case AV_CODEC_ID_VP9:
st->need_parsing = AVSTREAM_PARSE_FULL;
break;
@@ -2653,6 +2656,21 @@ static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
}
sc->stsc_count = i;
+ for (i = sc->stsc_count - 1; i < UINT_MAX; i--) {
+ if ((i+1 < sc->stsc_count && sc->stsc_data[i].first >= sc->stsc_data[i+1].first) ||
+ (i > 0 && sc->stsc_data[i].first <= sc->stsc_data[i-1].first) ||
+ sc->stsc_data[i].first < 1 ||
+ sc->stsc_data[i].count < 1 ||
+ sc->stsc_data[i].id < 1) {
+ av_log(c->fc, AV_LOG_WARNING, "STSC entry %d is invalid (first=%d count=%d id=%d)\n", i, sc->stsc_data[i].first, sc->stsc_data[i].count, sc->stsc_data[i].id);
+ if (i+1 >= sc->stsc_count || sc->stsc_data[i+1].first < 2)
+ return AVERROR_INVALIDDATA;
+ // We replace this entry by the next valid
+ sc->stsc_data[i].first = sc->stsc_data[i+1].first - 1;
+ sc->stsc_data[i].count = sc->stsc_data[i+1].count;
+ sc->stsc_data[i].id = sc->stsc_data[i+1].id;
+ }
+ }
if (pb->eof_reached) {
av_log(c->fc, AV_LOG_WARNING, "reached eof, corrupted STSC atom\n");
@@ -2668,7 +2686,7 @@ static inline int mov_stsc_index_valid(unsigned int index, unsigned int count)
}
/* Compute the samples value for the stsc entry at the given index. */
-static inline int mov_get_stsc_samples(MOVStreamContext *sc, unsigned int index)
+static inline int64_t mov_get_stsc_samples(MOVStreamContext *sc, unsigned int index)
{
int chunk_count;
@@ -2677,7 +2695,7 @@ static inline int mov_get_stsc_samples(MOVStreamContext *sc, unsigned int index)
else
chunk_count = sc->chunk_count - (sc->stsc_data[index].first - 1);
- return sc->stsc_data[index].count * chunk_count;
+ return sc->stsc_data[index].count * (int64_t)chunk_count;
}
static int mov_read_stps(MOVContext *c, AVIOContext *pb, MOVAtom atom)
@@ -2908,14 +2926,19 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom)
&& total_sample_count > 100
&& sample_duration/10 > duration / total_sample_count)
sample_duration = duration / total_sample_count;
- duration+=(int64_t)sample_duration*sample_count;
+ duration+=(int64_t)sample_duration*(uint64_t)sample_count;
total_sample_count+=sample_count;
}
sc->stts_count = i;
- sc->duration_for_fps += duration;
- sc->nb_frames_for_fps += total_sample_count;
+ if (duration > 0 &&
+ duration <= INT64_MAX - sc->duration_for_fps &&
+ total_sample_count <= INT64_MAX - sc->nb_frames_for_fps
+ ) {
+ sc->duration_for_fps += duration;
+ sc->nb_frames_for_fps += total_sample_count;
+ }
if (pb->eof_reached) {
av_log(c->fc, AV_LOG_WARNING, "reached eof, corrupted STTS atom\n");
@@ -3401,7 +3424,6 @@ static void mov_fix_index(MOVContext *mov, AVStream *st)
int64_t edit_list_start_ctts_sample = 0;
int64_t curr_cts;
int64_t curr_ctts = 0;
- int64_t min_corrected_pts = -1;
int64_t empty_edits_sum_duration = 0;
int64_t edit_list_index = 0;
int64_t index;
@@ -3442,6 +3464,9 @@ static void mov_fix_index(MOVContext *mov, AVStream *st)
msc->ctts_sample = 0;
msc->ctts_allocated_size = 0;
+ // Reinitialize min_corrected_pts so that it can be computed again.
+ msc->min_corrected_pts = -1;
+
// If the dts_shift is positive (in case of negative ctts values in mov),
// then negate the DTS by dts_shift
if (msc->dts_shift > 0) {
@@ -3586,10 +3611,10 @@ static void mov_fix_index(MOVContext *mov, AVStream *st)
}
}
} else {
- if (min_corrected_pts < 0) {
- min_corrected_pts = edit_list_dts_counter + curr_ctts + msc->dts_shift;
+ if (msc->min_corrected_pts < 0) {
+ msc->min_corrected_pts = edit_list_dts_counter + curr_ctts + msc->dts_shift;
} else {
- min_corrected_pts = FFMIN(min_corrected_pts, edit_list_dts_counter + curr_ctts + msc->dts_shift);
+ msc->min_corrected_pts = FFMIN(msc->min_corrected_pts, edit_list_dts_counter + curr_ctts + msc->dts_shift);
}
if (edit_list_start_encountered == 0) {
edit_list_start_encountered = 1;
@@ -3648,16 +3673,16 @@ static void mov_fix_index(MOVContext *mov, AVStream *st)
}
}
}
- // If there are empty edits, then min_corrected_pts might be positive intentionally. So we subtract the
- // sum duration of emtpy edits here.
- min_corrected_pts -= empty_edits_sum_duration;
+ // If there are empty edits, then msc->min_corrected_pts might be positive
+ // intentionally. So we subtract the sum duration of emtpy edits here.
+ msc->min_corrected_pts -= empty_edits_sum_duration;
// If the minimum pts turns out to be greater than zero after fixing the index, then we subtract the
// dts by that amount to make the first pts zero.
- if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && min_corrected_pts > 0) {
- av_log(mov->fc, AV_LOG_DEBUG, "Offset DTS by %"PRId64" to make first pts zero.\n", min_corrected_pts);
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && msc->min_corrected_pts > 0) {
+ av_log(mov->fc, AV_LOG_DEBUG, "Offset DTS by %"PRId64" to make first pts zero.\n", msc->min_corrected_pts);
for (i = 0; i < st->nb_index_entries; ++i) {
- st->index_entries[i].timestamp -= min_corrected_pts;
+ st->index_entries[i].timestamp -= msc->min_corrected_pts;
}
}
@@ -3720,6 +3745,7 @@ static void mov_build_index(MOVContext *mov, AVStream *st)
if (empty_duration)
empty_duration = av_rescale(empty_duration, sc->time_scale, mov->time_scale);
sc->time_offset = start_time - empty_duration;
+ sc->min_corrected_pts = start_time;
if (!mov->advanced_editlist)
current_dts = -sc->time_offset;
}
@@ -4134,6 +4160,11 @@ static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom)
st->index);
return 0;
}
+ if (sc->stsc_count && sc->stsc_data[ sc->stsc_count - 1 ].first > sc->chunk_count) {
+ av_log(c->fc, AV_LOG_ERROR, "stream %d, contradictionary STSC and STCO\n",
+ st->index);
+ return AVERROR_INVALIDDATA;
+ }
fix_timescale(c, sc);
@@ -4144,7 +4175,7 @@ static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom)
if (sc->dref_id-1 < sc->drefs_count && sc->drefs[sc->dref_id-1].path) {
MOVDref *dref = &sc->drefs[sc->dref_id - 1];
if (c->enable_drefs) {
- if (mov_open_dref(c, &sc->pb, c->fc->filename, dref) < 0)
+ if (mov_open_dref(c, &sc->pb, c->fc->url, dref) < 0)
av_log(c->fc, AV_LOG_ERROR,
"stream %d, error opening alias: path='%s', dir='%s', "
"filename='%s', volume='%s', nlvl_from=%d, nlvl_to=%d\n",
@@ -4624,6 +4655,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
int64_t prev_dts = AV_NOPTS_VALUE;
int next_frag_index = -1, index_entry_pos;
size_t requested_size;
+ size_t old_ctts_allocated_size;
AVIndexEntry *new_entries;
MOVFragmentStreamInfo * frag_stream_info;
@@ -4716,7 +4748,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
st->index_entries= new_entries;
requested_size = (st->nb_index_entries + entries) * sizeof(*sc->ctts_data);
- unsigned int old_ctts_allocated_size = sc->ctts_allocated_size;
+ old_ctts_allocated_size = sc->ctts_allocated_size;
ctts_data = av_fast_realloc(sc->ctts_data, &sc->ctts_allocated_size,
requested_size);
if (!ctts_data)
@@ -4817,8 +4849,13 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
dts += sample_duration;
offset += sample_size;
sc->data_size += sample_size;
- sc->duration_for_fps += sample_duration;
- sc->nb_frames_for_fps ++;
+
+ if (sample_duration <= INT64_MAX - sc->duration_for_fps &&
+ 1 <= INT64_MAX - sc->nb_frames_for_fps
+ ) {
+ sc->duration_for_fps += sample_duration;
+ sc->nb_frames_for_fps ++;
+ }
}
if (i < entries) {
// EOF found before reading all entries. Fix the hole this would
@@ -5480,7 +5517,7 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
projection = AV_SPHERICAL_EQUIRECTANGULAR;
break;
default:
- av_log(c->fc, AV_LOG_ERROR, "Unknown projection type\n");
+ av_log(c->fc, AV_LOG_ERROR, "Unknown projection type: %s\n", av_fourcc2str(tag));
return 0;
}
@@ -7184,7 +7221,9 @@ static int mov_seek_stream(AVFormatContext *s, AVStream *st, int64_t timestamp,
int sample, time_sample, ret;
unsigned int i;
- timestamp -= sc->time_offset;
+ // Here we consider timestamp to be PTS, hence try to offset it so that we
+ // can search over the DTS timeline.
+ timestamp -= (sc->min_corrected_pts + sc->dts_shift);
ret = mov_seek_fragment(s, st, timestamp);
if (ret < 0)
@@ -7215,12 +7254,13 @@ static int mov_seek_stream(AVFormatContext *s, AVStream *st, int64_t timestamp,
/* adjust stsd index */
time_sample = 0;
for (i = 0; i < sc->stsc_count; i++) {
- int next = time_sample + mov_get_stsc_samples(sc, i);
+ int64_t next = time_sample + mov_get_stsc_samples(sc, i);
if (next > sc->current_sample) {
sc->stsc_index = i;
sc->stsc_sample = sc->current_sample - time_sample;
break;
}
+ av_assert0(next == (int)next);
time_sample = next;
}
diff --git a/chromium/third_party/ffmpeg/libavformat/movenc.c b/chromium/third_party/ffmpeg/libavformat/movenc.c
index a597b0853d8..5b1e66c8973 100644
--- a/chromium/third_party/ffmpeg/libavformat/movenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/movenc.c
@@ -62,6 +62,7 @@ static const AVOption options[] = {
{ "moov_size", "maximum moov size so it can be placed at the begin", offsetof(MOVMuxContext, reserved_moov_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, 0 },
{ "empty_moov", "Make the initial moov atom empty", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_EMPTY_MOOV}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
{ "frag_keyframe", "Fragment at video keyframes", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_FRAG_KEYFRAME}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
+ { "frag_every_frame", "Fragment at every frame", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_FRAG_EVERY_FRAME}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
{ "separate_moof", "Write separate moof/mdat atoms for each track", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_SEPARATE_MOOF}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
{ "frag_custom", "Flush fragments on caller requests", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_FRAG_CUSTOM}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
{ "isml", "Create a live smooth streaming feed (for pushing to a publishing point)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_ISML}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
@@ -1556,9 +1557,9 @@ static int mov_find_codec_tag(AVFormatContext *s, MOVTrack *track)
else if (track->mode == MODE_ISM)
tag = track->par->codec_tag;
else if (track->mode == MODE_IPOD) {
- if (!av_match_ext(s->filename, "m4a") &&
- !av_match_ext(s->filename, "m4v") &&
- !av_match_ext(s->filename, "m4b"))
+ if (!av_match_ext(s->url, "m4a") &&
+ !av_match_ext(s->url, "m4v") &&
+ !av_match_ext(s->url, "m4b"))
av_log(s, AV_LOG_WARNING, "Warning, extension is not .m4a nor .m4v "
"Quicktime/Ipod might not play the file\n");
tag = track->par->codec_tag;
@@ -5432,7 +5433,8 @@ static int mov_write_single_packet(AVFormatContext *s, AVPacket *pkt)
(mov->max_fragment_size && mov->mdat_size + size >= mov->max_fragment_size) ||
(mov->flags & FF_MOV_FLAG_FRAG_KEYFRAME &&
par->codec_type == AVMEDIA_TYPE_VIDEO &&
- trk->entry && pkt->flags & AV_PKT_FLAG_KEY)) {
+ trk->entry && pkt->flags & AV_PKT_FLAG_KEY) ||
+ (mov->flags & FF_MOV_FLAG_FRAG_EVERY_FRAME)) {
if (frag_duration >= mov->min_fragment_duration) {
// Set the duration of this track to line up with the next
// sample in this track. This avoids relying on AVPacket
@@ -5874,7 +5876,8 @@ static int mov_init(AVFormatContext *s)
if (mov->max_fragment_duration || mov->max_fragment_size ||
mov->flags & (FF_MOV_FLAG_EMPTY_MOOV |
FF_MOV_FLAG_FRAG_KEYFRAME |
- FF_MOV_FLAG_FRAG_CUSTOM))
+ FF_MOV_FLAG_FRAG_CUSTOM |
+ FF_MOV_FLAG_FRAG_EVERY_FRAME))
mov->flags |= FF_MOV_FLAG_FRAGMENT;
/* Set other implicit flags immediately */
@@ -6079,6 +6082,11 @@ static int mov_init(AVFormatContext *s)
av_log(s, AV_LOG_ERROR, "VP9 only supported in MP4.\n");
return AVERROR(EINVAL);
}
+ } else if (track->par->codec_id == AV_CODEC_ID_VP8) {
+ /* altref frames handling is not defined in the spec as of version v1.0,
+ * so just forbid muxing VP8 streams altogether until a new version does */
+ av_log(s, AV_LOG_ERROR, "VP8 muxing is currently not supported.\n");
+ return AVERROR_PATCHWELCOME;
}
} else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
track->timescale = st->codecpar->sample_rate;
@@ -6233,7 +6241,8 @@ static int mov_write_header(AVFormatContext *s)
if (mov->flags & FF_MOV_FLAG_FRAGMENT) {
/* If no fragmentation options have been set, set a default. */
if (!(mov->flags & (FF_MOV_FLAG_FRAG_KEYFRAME |
- FF_MOV_FLAG_FRAG_CUSTOM)) &&
+ FF_MOV_FLAG_FRAG_CUSTOM |
+ FF_MOV_FLAG_FRAG_EVERY_FRAME)) &&
!mov->max_fragment_duration && !mov->max_fragment_size)
mov->flags |= FF_MOV_FLAG_FRAG_KEYFRAME;
} else {
@@ -6400,10 +6409,10 @@ static int shift_data(AVFormatContext *s)
* writing, so we re-open the same output, but for reading. It also avoids
* a read/seek/write/seek back and forth. */
avio_flush(s->pb);
- ret = s->io_open(s, &read_pb, s->filename, AVIO_FLAG_READ, NULL);
+ ret = s->io_open(s, &read_pb, s->url, AVIO_FLAG_READ, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to re-open %s output file for "
- "the second pass (faststart)\n", s->filename);
+ "the second pass (faststart)\n", s->url);
goto end;
}
diff --git a/chromium/third_party/ffmpeg/libavformat/movenc.h b/chromium/third_party/ffmpeg/libavformat/movenc.h
index c4e966b7fb7..ca2a9c97226 100644
--- a/chromium/third_party/ffmpeg/libavformat/movenc.h
+++ b/chromium/third_party/ffmpeg/libavformat/movenc.h
@@ -245,6 +245,7 @@ typedef struct MOVMuxContext {
#define FF_MOV_FLAG_USE_MDTA (1 << 17)
#define FF_MOV_FLAG_SKIP_TRAILER (1 << 18)
#define FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS (1 << 19)
+#define FF_MOV_FLAG_FRAG_EVERY_FRAME (1 << 20)
int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt);
diff --git a/chromium/third_party/ffmpeg/libavformat/mpeg.c b/chromium/third_party/ffmpeg/libavformat/mpeg.c
index 50fe7a1a768..abdc6a937cb 100644
--- a/chromium/third_party/ffmpeg/libavformat/mpeg.c
+++ b/chromium/third_party/ffmpeg/libavformat/mpeg.c
@@ -703,7 +703,7 @@ static int vobsub_read_header(AVFormatContext *s)
if (!vobsub->sub_name) {
char *ext;
- vobsub->sub_name = av_strdup(s->filename);
+ vobsub->sub_name = av_strdup(s->url);
if (!vobsub->sub_name) {
ret = AVERROR(ENOMEM);
goto end;
@@ -718,7 +718,7 @@ static int vobsub_read_header(AVFormatContext *s)
goto end;
}
memcpy(ext, !strncmp(ext, "IDX", 3) ? "SUB" : "sub", 3);
- av_log(s, AV_LOG_VERBOSE, "IDX/SUB: %s -> %s\n", s->filename, vobsub->sub_name);
+ av_log(s, AV_LOG_VERBOSE, "IDX/SUB: %s -> %s\n", s->url, vobsub->sub_name);
}
if (!(iformat = av_find_input_format("mpeg"))) {
diff --git a/chromium/third_party/ffmpeg/libavformat/mpegenc.c b/chromium/third_party/ffmpeg/libavformat/mpegenc.c
index c77c3dfe414..4c6fa67fb83 100644
--- a/chromium/third_party/ffmpeg/libavformat/mpegenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/mpegenc.c
@@ -353,7 +353,8 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
if (!s->is_mpeg2 &&
(st->codecpar->codec_id == AV_CODEC_ID_AC3 ||
st->codecpar->codec_id == AV_CODEC_ID_DTS ||
- st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE))
+ st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE ||
+ st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD))
av_log(ctx, AV_LOG_WARNING,
"%s in MPEG-1 system streams is not widely supported, "
"consider using the vob or the dvd muxer "
@@ -363,16 +364,30 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
stream->id = ac3_id++;
} else if (st->codecpar->codec_id == AV_CODEC_ID_DTS) {
stream->id = dts_id++;
- } else if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE) {
+ } else if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE ||
+ st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD) {
+ if (st->codecpar->bits_per_coded_sample != 16) {
+ av_log(ctx, AV_LOG_ERROR, "Only 16 bit LPCM streams can be muxed.\n");
+ goto fail;
+ }
stream->id = lpcm_id++;
for (j = 0; j < 4; j++) {
if (lpcm_freq_tab[j] == st->codecpar->sample_rate)
break;
}
- if (j == 4)
+ if (j == 4) {
+ int sr;
+ av_log(ctx, AV_LOG_ERROR, "Invalid sampling rate for PCM stream.\n");
+ av_log(ctx, AV_LOG_INFO, "Allowed sampling rates:");
+ for (sr = 0; sr < 4; sr++)
+ av_log(ctx, AV_LOG_INFO, " %d", lpcm_freq_tab[sr]);
+ av_log(ctx, AV_LOG_INFO, "\n");
+ goto fail;
+ }
+ if (st->codecpar->channels > 8) {
+ av_log(ctx, AV_LOG_ERROR, "At most 8 channels allowed for LPCM streams.\n");
goto fail;
- if (st->codecpar->channels > 8)
- return -1;
+ }
stream->lpcm_header[0] = 0x0c;
stream->lpcm_header[1] = (st->codecpar->channels - 1) | (j << 4);
stream->lpcm_header[2] = 0x80;
@@ -397,7 +412,7 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
stream->max_buffer_size = 6 * 1024 + props->buffer_size / 8;
else {
av_log(ctx, AV_LOG_WARNING,
- "VBV buffer size not set, using default size of 130KB\n"
+ "VBV buffer size not set, using default size of 230KB\n"
"If you want the mpeg file to be compliant to some specification\n"
"Like DVD, VCD or others, make sure you set the correct buffer size\n");
// FIXME: this is probably too small as default
@@ -1150,6 +1165,19 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt)
return AVERROR(ENOMEM);
pkt_desc->pts = pts;
pkt_desc->dts = dts;
+
+ if (st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD) {
+ if (size < 3) {
+ av_log(ctx, AV_LOG_ERROR, "Invalid packet size %d\n", size);
+ return AVERROR(EINVAL);
+ }
+
+ /* Skip first 3 bytes of packet data, which comprise PCM header
+ and will be written fresh by this muxer. */
+ buf += 3;
+ size -= 3;
+ }
+
pkt_desc->unwritten_size =
pkt_desc->size = size;
if (!stream->predecode_packet)
diff --git a/chromium/third_party/ffmpeg/libavformat/mpegts.c b/chromium/third_party/ffmpeg/libavformat/mpegts.c
index 0a3ad057264..37a6aa8bffe 100644
--- a/chromium/third_party/ffmpeg/libavformat/mpegts.c
+++ b/chromium/third_party/ffmpeg/libavformat/mpegts.c
@@ -1840,7 +1840,9 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
}
if (i && language[0]) {
language[i - 1] = 0;
- av_dict_set(&st->metadata, "language", language, 0);
+ /* don't overwrite language, as it may already have been set by
+ * another, more specific descriptor (e.g. supplementary audio) */
+ av_dict_set(&st->metadata, "language", language, AV_DICT_DONT_OVERWRITE);
}
break;
case 0x05: /* registration descriptor */
@@ -1895,6 +1897,42 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
st->internal->need_context_update = 1;
}
}
+ if (ext_desc_tag == 0x06) { /* supplementary audio descriptor */
+ int flags;
+
+ if (desc_len < 1)
+ return AVERROR_INVALIDDATA;
+ flags = get8(pp, desc_end);
+
+ if ((flags & 0x80) == 0) /* mix_type */
+ st->disposition |= AV_DISPOSITION_DEPENDENT;
+
+ switch ((flags >> 2) & 0x1F) { /* editorial_classification */
+ case 0x01:
+ st->disposition |= AV_DISPOSITION_VISUAL_IMPAIRED;
+ break;
+ case 0x02:
+ st->disposition |= AV_DISPOSITION_HEARING_IMPAIRED;
+ break;
+ case 0x03:
+ st->disposition |= AV_DISPOSITION_VISUAL_IMPAIRED;
+ break;
+ }
+
+ if (flags & 0x01) { /* language_code_present */
+ if (desc_len < 4)
+ return AVERROR_INVALIDDATA;
+ language[0] = get8(pp, desc_end);
+ language[1] = get8(pp, desc_end);
+ language[2] = get8(pp, desc_end);
+ language[3] = 0;
+
+ /* This language always has to override a possible
+ * ISO 639 language descriptor language */
+ if (language[0])
+ av_dict_set(&st->metadata, "language", language, 0);
+ }
+ }
break;
default:
break;
diff --git a/chromium/third_party/ffmpeg/libavformat/mpegtsenc.c b/chromium/third_party/ffmpeg/libavformat/mpegtsenc.c
index fdfa544ee26..8b0736ac4e3 100644
--- a/chromium/third_party/ffmpeg/libavformat/mpegtsenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/mpegtsenc.c
@@ -1012,7 +1012,7 @@ static int mpegts_init(AVFormatContext *s)
ts->sdt_packet_period, ts->pat_packet_period);
if (ts->m2ts_mode == -1) {
- if (av_match_ext(s->filename, "m2ts")) {
+ if (av_match_ext(s->url, "m2ts")) {
ts->m2ts_mode = 1;
} else {
ts->m2ts_mode = 0;
diff --git a/chromium/third_party/ffmpeg/libavformat/mux.c b/chromium/third_party/ffmpeg/libavformat/mux.c
index ea9f13fdf5a..a13f0e3a1b8 100644
--- a/chromium/third_party/ffmpeg/libavformat/mux.c
+++ b/chromium/third_party/ffmpeg/libavformat/mux.c
@@ -186,8 +186,16 @@ int avformat_alloc_output_context2(AVFormatContext **avctx, AVOutputFormat *ofor
} else
s->priv_data = NULL;
- if (filename)
+ if (filename) {
+#if FF_API_FORMAT_FILENAME
+FF_DISABLE_DEPRECATION_WARNINGS
av_strlcpy(s->filename, filename, sizeof(s->filename));
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+ if (!(s->url = av_strdup(filename)))
+ goto nomem;
+
+ }
*avctx = s;
return 0;
nomem:
@@ -251,6 +259,17 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options)
(ret = av_opt_set_dict2(s->priv_data, &tmp, AV_OPT_SEARCH_CHILDREN)) < 0)
goto fail;
+#if FF_API_FORMAT_FILENAME
+FF_DISABLE_DEPRECATION_WARNINGS
+ if (!s->url && !(s->url = av_strdup(s->filename))) {
+FF_ENABLE_DEPRECATION_WARNINGS
+#else
+ if (!s->url && !(s->url = av_strdup(""))) {
+#endif
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+
#if FF_API_LAVF_AVCTX
FF_DISABLE_DEPRECATION_WARNINGS
if (s->nb_streams && s->streams[0]->codec->flags & AV_CODEC_FLAG_BITEXACT) {
diff --git a/chromium/third_party/ffmpeg/libavformat/mxfdec.c b/chromium/third_party/ffmpeg/libavformat/mxfdec.c
index 3b8d4239066..7a425555621 100644
--- a/chromium/third_party/ffmpeg/libavformat/mxfdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/mxfdec.c
@@ -91,6 +91,7 @@ typedef struct MXFPartition {
int64_t index_byte_count;
int pack_length;
int64_t pack_ofs; ///< absolute offset of pack in file, including run-in
+ int64_t body_offset;
} MXFPartition;
typedef struct MXFCryptoContext {
@@ -162,6 +163,8 @@ typedef struct {
int intra_only;
uint64_t sample_count;
int64_t original_duration; /* st->duration in SampleRate/EditRate units */
+ int index_sid;
+ int body_sid;
} MXFTrack;
typedef struct MXFDescriptor {
@@ -223,6 +226,15 @@ typedef struct MXFPackage {
int comment_count;
} MXFPackage;
+typedef struct MXFEssenceContainerData {
+ UID uid;
+ enum MXFMetadataSetType type;
+ UID package_uid;
+ UID package_ul;
+ int index_sid;
+ int body_sid;
+} MXFEssenceContainerData;
+
typedef struct MXFMetadataSet {
UID uid;
enum MXFMetadataSetType type;
@@ -247,6 +259,8 @@ typedef struct MXFContext {
MXFOP op;
UID *packages_refs;
int packages_count;
+ UID *essence_container_data_refs;
+ int essence_container_data_count;
MXFMetadataSet **metadata_sets;
int metadata_sets_count;
AVFormatContext *fc;
@@ -261,7 +275,7 @@ typedef struct MXFContext {
int parsing_backward;
int64_t last_forward_tell;
int last_forward_partition;
- int current_edit_unit;
+ int64_t current_edit_unit;
int nb_index_tables;
MXFIndexTable *index_tables;
int edit_units_per_packet; ///< how many edit units to read at a time (PCM, OPAtom)
@@ -289,7 +303,8 @@ static const uint8_t mxf_header_partition_pack_key[] = { 0x06,0x0e,0x2b,0x
static const uint8_t mxf_essence_element_key[] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01 };
static const uint8_t mxf_avid_essence_element_key[] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0e,0x04,0x03,0x01 };
static const uint8_t mxf_canopus_essence_element_key[] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x0a,0x0e,0x0f,0x03,0x01 };
-static const uint8_t mxf_system_item_key[] = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x03,0x01,0x04 };
+static const uint8_t mxf_system_item_key_cp[] = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x03,0x01,0x04 };
+static const uint8_t mxf_system_item_key_gc[] = { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x03,0x01,0x14 };
static const uint8_t mxf_klv_key[] = { 0x06,0x0e,0x2b,0x34 };
/* complete keys to match */
static const uint8_t mxf_crypto_source_container_ul[] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x09,0x06,0x01,0x01,0x02,0x02,0x00,0x00,0x00 };
@@ -384,20 +399,43 @@ static int klv_read_packet(KLVPacket *klv, AVIOContext *pb)
return klv->length == -1 ? -1 : 0;
}
-static int mxf_get_stream_index(AVFormatContext *s, KLVPacket *klv)
+static int mxf_get_stream_index(AVFormatContext *s, KLVPacket *klv, int body_sid)
{
int i;
for (i = 0; i < s->nb_streams; i++) {
MXFTrack *track = s->streams[i]->priv_data;
/* SMPTE 379M 7.3 */
- if (track && !memcmp(klv->key + sizeof(mxf_essence_element_key), track->track_number, sizeof(track->track_number)))
+ if (track && (!body_sid || !track->body_sid || track->body_sid == body_sid) && !memcmp(klv->key + sizeof(mxf_essence_element_key), track->track_number, sizeof(track->track_number)))
return i;
}
/* return 0 if only one stream, for OP Atom files with 0 as track number */
return s->nb_streams == 1 ? 0 : -1;
}
+static int find_body_sid_by_offset(MXFContext *mxf, int64_t offset)
+{
+ // we look for partition where the offset is placed
+ int a, b, m;
+ int64_t this_partition;
+
+ a = -1;
+ b = mxf->partitions_count;
+
+ while (b - a > 1) {
+ m = (a + b) >> 1;
+ this_partition = mxf->partitions[m].this_partition;
+ if (this_partition <= offset)
+ a = m;
+ else
+ b = m;
+ }
+
+ if (a == -1)
+ return 0;
+ return mxf->partitions[a].body_sid;
+}
+
/* XXX: use AVBitStreamFilter */
static int mxf_get_d10_aes3_packet(AVIOContext *pb, AVStream *st, AVPacket *pkt, int64_t length)
{
@@ -439,6 +477,7 @@ static int mxf_decrypt_triplet(AVFormatContext *s, AVPacket *pkt, KLVPacket *klv
uint8_t ivec[16];
uint8_t tmpbuf[16];
int index;
+ int body_sid;
if (!mxf->aesc && s->key && s->keylen == 16) {
mxf->aesc = av_aes_alloc();
@@ -456,7 +495,9 @@ static int mxf_decrypt_triplet(AVFormatContext *s, AVPacket *pkt, KLVPacket *klv
avio_read(pb, klv->key, 16);
if (!IS_KLV_KEY(klv, mxf_essence_element_key))
return AVERROR_INVALIDDATA;
- index = mxf_get_stream_index(s, klv);
+
+ body_sid = find_body_sid_by_offset(mxf, klv->offset);
+ index = mxf_get_stream_index(s, klv, body_sid);
if (index < 0)
return AVERROR_INVALIDDATA;
// source size
@@ -524,6 +565,9 @@ static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size
uint64_t footer_partition;
uint32_t nb_essence_containers;
+ if (mxf->partitions_count >= INT_MAX / 2)
+ return AVERROR_INVALIDDATA;
+
tmp_part = av_realloc_array(mxf->partitions, mxf->partitions_count + 1, sizeof(*mxf->partitions));
if (!tmp_part)
return AVERROR(ENOMEM);
@@ -572,7 +616,7 @@ static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size
partition->header_byte_count = avio_rb64(pb);
partition->index_byte_count = avio_rb64(pb);
partition->index_sid = avio_rb32(pb);
- avio_skip(pb, 8);
+ partition->body_offset = avio_rb64(pb);
partition->body_sid = avio_rb32(pb);
if (avio_read(pb, op, sizeof(UID)) != sizeof(UID)) {
av_log(mxf->fc, AV_LOG_ERROR, "Failed reading UID\n");
@@ -756,6 +800,9 @@ static int mxf_read_content_storage(void *arg, AVIOContext *pb, int tag, int siz
av_log(mxf->fc, AV_LOG_VERBOSE, "Multiple packages_refs\n");
av_free(mxf->packages_refs);
return mxf_read_strong_ref_array(pb, &mxf->packages_refs, &mxf->packages_count);
+ case 0x1902:
+ av_free(mxf->essence_container_data_refs);
+ return mxf_read_strong_ref_array(pb, &mxf->essence_container_data_refs, &mxf->essence_container_data_count);
}
return 0;
}
@@ -892,6 +939,25 @@ static int mxf_read_package(void *arg, AVIOContext *pb, int tag, int size, UID u
return 0;
}
+static int mxf_read_essence_container_data(void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
+{
+ MXFEssenceContainerData *essence_data = arg;
+ switch(tag) {
+ case 0x2701:
+ /* linked package umid UMID */
+ avio_read(pb, essence_data->package_ul, 16);
+ avio_read(pb, essence_data->package_uid, 16);
+ break;
+ case 0x3f06:
+ essence_data->index_sid = avio_rb32(pb);
+ break;
+ case 0x3f07:
+ essence_data->body_sid = avio_rb32(pb);
+ break;
+ }
+ return 0;
+}
+
static int mxf_read_index_entry_array(AVIOContext *pb, MXFIndexTableSegment *segment)
{
int i, length;
@@ -1247,9 +1313,15 @@ static int mxf_get_sorted_table_segments(MXFContext *mxf, int *nb_sorted_segment
* We want the smallest values for the keys than what we currently have, unless this is the first such entry this time around.
* If we come across an entry with the same IndexStartPosition but larger IndexDuration, then we'll prefer it over the one we currently have.
*/
- if ((i == 0 || s->body_sid > last_body_sid || s->index_sid > last_index_sid || s->index_start_position > last_index_start) &&
- (best == -1 || s->body_sid < best_body_sid || s->index_sid < best_index_sid || s->index_start_position < best_index_start ||
- (s->index_start_position == best_index_start && s->index_duration > best_index_duration))) {
+ if ((i == 0 ||
+ s->body_sid > last_body_sid ||
+ s->body_sid == last_body_sid && s->index_sid > last_index_sid ||
+ s->body_sid == last_body_sid && s->index_sid == last_index_sid && s->index_start_position > last_index_start) &&
+ (best == -1 ||
+ s->body_sid < best_body_sid ||
+ s->body_sid == best_body_sid && s->index_sid < best_index_sid ||
+ s->body_sid == best_body_sid && s->index_sid == best_index_sid && s->index_start_position < best_index_start ||
+ s->body_sid == best_body_sid && s->index_sid == best_index_sid && s->index_start_position == best_index_start && s->index_duration > best_index_duration)) {
best = j;
best_body_sid = s->body_sid;
best_index_sid = s->index_sid;
@@ -1278,26 +1350,38 @@ static int mxf_get_sorted_table_segments(MXFContext *mxf, int *nb_sorted_segment
*/
static int mxf_absolute_bodysid_offset(MXFContext *mxf, int body_sid, int64_t offset, int64_t *offset_out)
{
- int x;
- int64_t offset_in = offset; /* for logging */
+ MXFPartition *last_p = NULL;
+ int a, b, m, m0;
- for (x = 0; x < mxf->partitions_count; x++) {
- MXFPartition *p = &mxf->partitions[x];
+ if (offset < 0)
+ return AVERROR(EINVAL);
- if (p->body_sid != body_sid)
- continue;
+ a = -1;
+ b = mxf->partitions_count;
- if (offset < p->essence_length || !p->essence_length) {
- *offset_out = p->essence_offset + offset;
- return 0;
- }
+ while (b - a > 1) {
+ m0 = m = (a + b) >> 1;
+
+ while (m < b && mxf->partitions[m].body_sid != body_sid)
+ m++;
+
+ if (m < b && mxf->partitions[m].body_offset <= offset)
+ a = m;
+ else
+ b = m0;
+ }
- offset -= p->essence_length;
+ if (a >= 0)
+ last_p = &mxf->partitions[a];
+
+ if (last_p && (!last_p->essence_length || last_p->essence_length > (offset - last_p->body_offset))) {
+ *offset_out = last_p->essence_offset + (offset - last_p->body_offset);
+ return 0;
}
av_log(mxf->fc, AV_LOG_ERROR,
"failed to find absolute offset of %"PRIX64" in BodySID %i - partial file?\n",
- offset_in, body_sid);
+ offset, body_sid);
return AVERROR_INVALIDDATA;
}
@@ -1496,14 +1580,6 @@ static int mxf_compute_index_tables(MXFContext *mxf)
{
int i, j, k, ret, nb_sorted_segments;
MXFIndexTableSegment **sorted_segments = NULL;
- AVStream *st = NULL;
-
- for (i = 0; i < mxf->fc->nb_streams; i++) {
- if (mxf->fc->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_DATA)
- continue;
- st = mxf->fc->streams[i];
- break;
- }
if ((ret = mxf_get_sorted_table_segments(mxf, &nb_sorted_segments, &sorted_segments)) ||
nb_sorted_segments <= 0) {
@@ -1542,6 +1618,7 @@ static int mxf_compute_index_tables(MXFContext *mxf)
for (i = j = 0; j < mxf->nb_index_tables; i += mxf->index_tables[j++].nb_segments) {
MXFIndexTable *t = &mxf->index_tables[j];
+ MXFTrack *mxf_track = NULL;
t->segments = av_mallocz_array(t->nb_segments,
sizeof(*t->segments));
@@ -1564,6 +1641,14 @@ static int mxf_compute_index_tables(MXFContext *mxf)
if ((ret = mxf_compute_ptses_fake_index(mxf, t)) < 0)
goto finish_decoding_index;
+ for (k = 0; k < mxf->fc->nb_streams; k++) {
+ MXFTrack *track = mxf->fc->streams[k]->priv_data;
+ if (track && track->index_sid == t->index_sid) {
+ mxf_track = track;
+ break;
+ }
+ }
+
/* fix zero IndexDurations */
for (k = 0; k < t->nb_segments; k++) {
if (t->segments[k]->index_duration)
@@ -1573,7 +1658,7 @@ static int mxf_compute_index_tables(MXFContext *mxf)
av_log(mxf->fc, AV_LOG_WARNING, "IndexSID %i segment %i has zero IndexDuration and there's more than one segment\n",
t->index_sid, k);
- if (!st) {
+ if (!mxf_track) {
av_log(mxf->fc, AV_LOG_WARNING, "no streams?\n");
break;
}
@@ -1581,7 +1666,7 @@ static int mxf_compute_index_tables(MXFContext *mxf)
/* assume the first stream's duration is reasonable
* leave index_duration = 0 on further segments in case we have any (unlikely)
*/
- t->segments[k]->index_duration = st->duration;
+ t->segments[k]->index_duration = mxf_track->original_duration;
break;
}
}
@@ -1680,7 +1765,7 @@ static MXFTimecodeComponent* mxf_resolve_timecode_component(MXFContext *mxf, UID
return NULL;
}
-static MXFPackage* mxf_resolve_source_package(MXFContext *mxf, UID package_uid)
+static MXFPackage* mxf_resolve_source_package(MXFContext *mxf, UID package_ul, UID package_uid)
{
MXFPackage *package = NULL;
int i;
@@ -1690,7 +1775,7 @@ static MXFPackage* mxf_resolve_source_package(MXFContext *mxf, UID package_uid)
if (!package)
continue;
- if (!memcmp(package->package_uid, package_uid, 16))
+ if (!memcmp(package->package_ul, package_ul, 16) && !memcmp(package->package_uid, package_uid, 16))
return package;
}
return NULL;
@@ -1739,7 +1824,7 @@ static MXFStructuralComponent* mxf_resolve_essence_group_choice(MXFContext *mxf,
if (!component)
continue;
- if (!(package = mxf_resolve_source_package(mxf, component->source_package_uid)))
+ if (!(package = mxf_resolve_source_package(mxf, component->source_package_ul, component->source_package_uid)))
continue;
descriptor = mxf_resolve_strong_ref(mxf, &package->descriptor_ref, Descriptor);
@@ -1805,7 +1890,7 @@ static int mxf_parse_physical_source_package(MXFContext *mxf, MXFTrack *source_t
if (!sourceclip)
continue;
- if (!(physical_package = mxf_resolve_source_package(mxf, sourceclip->source_package_uid)))
+ if (!(physical_package = mxf_resolve_source_package(mxf, sourceclip->source_package_ul, sourceclip->source_package_uid)))
break;
mxf_add_umid_metadata(&st->metadata, "reel_umid", physical_package);
@@ -1975,7 +2060,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
if (!component)
continue;
- source_package = mxf_resolve_source_package(mxf, component->source_package_uid);
+ source_package = mxf_resolve_source_package(mxf, component->source_package_ul, component->source_package_uid);
if (!source_package) {
av_log(mxf->fc, AV_LOG_TRACE, "material track %d: no corresponding source package found\n", material_track->track_id);
continue;
@@ -1995,6 +2080,21 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
av_log(mxf->fc, AV_LOG_ERROR, "material track %d: no corresponding source track found\n", material_track->track_id);
break;
}
+
+ for (k = 0; k < mxf->essence_container_data_count; k++) {
+ MXFEssenceContainerData *essence_data;
+
+ if (!(essence_data = mxf_resolve_strong_ref(mxf, &mxf->essence_container_data_refs[k], EssenceContainerData))) {
+ av_log(mxf, AV_LOG_TRACE, "could not resolve essence container data strong ref\n");
+ continue;
+ }
+ if (!memcmp(component->source_package_ul, essence_data->package_ul, sizeof(UID)) && !memcmp(component->source_package_uid, essence_data->package_uid, sizeof(UID))) {
+ source_track->body_sid = essence_data->body_sid;
+ source_track->index_sid = essence_data->index_sid;
+ break;
+ }
+ }
+
if(source_track && component)
break;
}
@@ -2401,6 +2501,7 @@ static const MXFMetadataReadTableEntry mxf_metadata_read_table[] = {
{ { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x0c,0x00 }, mxf_read_pulldown_component, sizeof(MXFPulldownComponent), PulldownComponent },
{ { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x04,0x01,0x02,0x02,0x00,0x00 }, mxf_read_cryptographic_context, sizeof(MXFCryptoContext), CryptoContext },
{ { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x10,0x01,0x00 }, mxf_read_index_table_segment, sizeof(MXFIndexTableSegment), IndexTableSegment },
+ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x23,0x00 }, mxf_read_essence_container_data, sizeof(MXFEssenceContainerData), EssenceContainerData },
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, NULL, 0, AnyType },
};
@@ -2694,6 +2795,7 @@ static AVStream* mxf_get_opatom_stream(MXFContext *mxf)
static void mxf_handle_small_eubc(AVFormatContext *s)
{
MXFContext *mxf = s->priv_data;
+ MXFTrack *track;
/* assuming non-OPAtom == frame wrapped
* no sane writer would wrap 2 byte PCM packets with 20 byte headers.. */
@@ -2713,7 +2815,8 @@ static void mxf_handle_small_eubc(AVFormatContext *s)
/* TODO: We could compute this from the ratio between the audio
* and video edit rates for 48 kHz NTSC we could use the
* 1802-1802-1802-1802-1801 pattern. */
- mxf->edit_units_per_packet = 1920;
+ track = st->priv_data;
+ mxf->edit_units_per_packet = FFMAX(1, track->edit_rate.num / track->edit_rate.den / 25);
}
/**
@@ -2861,7 +2964,8 @@ static int mxf_read_header(AVFormatContext *s)
if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key) ||
IS_KLV_KEY(klv.key, mxf_essence_element_key) ||
IS_KLV_KEY(klv.key, mxf_avid_essence_element_key) ||
- IS_KLV_KEY(klv.key, mxf_system_item_key)) {
+ IS_KLV_KEY(klv.key, mxf_system_item_key_cp) ||
+ IS_KLV_KEY(klv.key, mxf_system_item_key_gc)) {
if (!mxf->current_partition) {
av_log(mxf->fc, AV_LOG_ERROR, "found essence prior to first PartitionPack\n");
@@ -2875,8 +2979,8 @@ static int mxf_read_header(AVFormatContext *s)
* for OPAtom we still need the actual essence_offset though (the KL's length can vary)
*/
int64_t op1a_essence_offset =
- round_to_kag(mxf->current_partition->this_partition +
- mxf->current_partition->pack_length, mxf->current_partition->kag_size) +
+ mxf->current_partition->this_partition +
+ round_to_kag(mxf->current_partition->pack_length, mxf->current_partition->kag_size) +
round_to_kag(mxf->current_partition->header_byte_count, mxf->current_partition->kag_size) +
round_to_kag(mxf->current_partition->index_byte_count, mxf->current_partition->kag_size);
@@ -2888,7 +2992,10 @@ static int mxf_read_header(AVFormatContext *s)
mxf->current_partition->essence_length = klv.length;
} else {
/* NOTE: op1a_essence_offset may be less than to klv.offset (C0023S01.mxf) */
- mxf->current_partition->essence_offset = op1a_essence_offset;
+ if (IS_KLV_KEY(klv.key, mxf_system_item_key_cp) || IS_KLV_KEY(klv.key, mxf_system_item_key_gc))
+ mxf->current_partition->essence_offset = klv.offset;
+ else
+ mxf->current_partition->essence_offset = op1a_essence_offset;
}
}
@@ -2959,6 +3066,42 @@ fail:
return ret;
}
+static MXFIndexTable *mxf_find_index_table(MXFContext *mxf, int index_sid)
+{
+ int i;
+ for (i = 0; i < mxf->nb_index_tables; i++)
+ if (mxf->index_tables[i].index_sid == index_sid)
+ return &mxf->index_tables[i];
+ return NULL;
+}
+
+/* Get the edit unit of the next packet from current_offset in a track. The returned edit unit can be original_duration as well! */
+static int mxf_get_next_track_edit_unit(MXFContext *mxf, MXFTrack *track, int64_t current_offset, int64_t *edit_unit_out)
+{
+ int64_t a, b, m, offset;
+ MXFIndexTable *t = mxf_find_index_table(mxf, track->index_sid);
+
+ if (!t || track->original_duration <= 0)
+ return -1;
+
+ a = -1;
+ b = track->original_duration;
+
+ while (b - a > 1) {
+ m = (a + b) >> 1;
+ if (mxf_edit_unit_absolute_offset(mxf, t, m, NULL, &offset, 0) < 0)
+ return -1;
+ if (offset < current_offset)
+ a = m;
+ else
+ b = m;
+ }
+
+ *edit_unit_out = b;
+
+ return 0;
+}
+
/**
* Sets mxf->current_edit_unit based on what offset we're currently at.
* @return next_ofs if OK, <0 on error
@@ -3106,7 +3249,8 @@ static int mxf_read_packet_old(AVFormatContext *s, AVPacket *pkt)
if (IS_KLV_KEY(klv.key, mxf_essence_element_key) ||
IS_KLV_KEY(klv.key, mxf_canopus_essence_element_key) ||
IS_KLV_KEY(klv.key, mxf_avid_essence_element_key)) {
- int index = mxf_get_stream_index(s, &klv);
+ int body_sid = find_body_sid_by_offset(mxf, klv.offset);
+ int index = mxf_get_stream_index(s, &klv, body_sid);
int64_t next_ofs, next_klv;
AVStream *st;
@@ -3130,7 +3274,7 @@ static int mxf_read_packet_old(AVFormatContext *s, AVPacket *pkt)
* truncate the packet since it's probably very large (>2 GiB is common) */
avpriv_request_sample(s,
"OPAtom misinterpreted as OP1a? "
- "KLV for edit unit %i extending into "
+ "KLV for edit unit %"PRId64" extending into "
"next edit unit",
mxf->current_edit_unit);
klv.length = next_ofs - avio_tell(s->pb);
@@ -3174,6 +3318,7 @@ static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt)
int64_t ret64, pos, next_pos;
AVStream *st;
MXFIndexTable *t;
+ MXFTrack *track;
int edit_units;
if (mxf->op != OPAtom)
@@ -3184,14 +3329,16 @@ static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt)
if (!st)
return AVERROR_EOF;
+ track = st->priv_data;
+
/* OPAtom - clip wrapped demuxing */
/* NOTE: mxf_read_header() makes sure nb_index_tables > 0 for OPAtom */
t = &mxf->index_tables[0];
- if (mxf->current_edit_unit >= st->duration)
+ if (mxf->current_edit_unit >= track->original_duration)
return AVERROR_EOF;
- edit_units = FFMIN(mxf->edit_units_per_packet, st->duration - mxf->current_edit_unit);
+ edit_units = FFMIN(mxf->edit_units_per_packet, track->original_duration - mxf->current_edit_unit);
if ((ret = mxf_edit_unit_absolute_offset(mxf, t, mxf->current_edit_unit, NULL, &pos, 1)) < 0)
return ret;
@@ -3232,6 +3379,7 @@ static int mxf_read_close(AVFormatContext *s)
int i;
av_freep(&mxf->packages_refs);
+ av_freep(&mxf->essence_container_data_refs);
for (i = 0; i < s->nb_streams; i++)
s->streams[i]->priv_data = NULL;
@@ -3303,20 +3451,34 @@ static int mxf_read_seek(AVFormatContext *s, int stream_index, int64_t sample_ti
av_inv_q(source_track->edit_rate));
if (mxf->nb_index_tables <= 0) {
- if (!s->bit_rate)
- return AVERROR_INVALIDDATA;
- if (sample_time < 0)
- sample_time = 0;
- seconds = av_rescale(sample_time, st->time_base.num, st->time_base.den);
+ if (!s->bit_rate)
+ return AVERROR_INVALIDDATA;
+ if (sample_time < 0)
+ sample_time = 0;
+ seconds = av_rescale(sample_time, st->time_base.num, st->time_base.den);
- seekpos = avio_seek(s->pb, (s->bit_rate * seconds) >> 3, SEEK_SET);
- if (seekpos < 0)
- return seekpos;
+ seekpos = avio_seek(s->pb, (s->bit_rate * seconds) >> 3, SEEK_SET);
+ if (seekpos < 0)
+ return seekpos;
- ff_update_cur_dts(s, st, sample_time);
- mxf->current_edit_unit = sample_time;
+ ff_update_cur_dts(s, st, sample_time);
+ mxf->current_edit_unit = sample_time;
} else {
t = &mxf->index_tables[0];
+ if (t->index_sid != source_track->index_sid) {
+ /* If the first index table does not belong to the stream, then find a stream which does belong to the index table */
+ for (i = 0; i < s->nb_streams; i++) {
+ MXFTrack *new_source_track = s->streams[i]->priv_data;
+ if (new_source_track && new_source_track->index_sid == t->index_sid) {
+ sample_time = av_rescale_q(sample_time, new_source_track->edit_rate, source_track->edit_rate);
+ source_track = new_source_track;
+ st = s->streams[i];
+ break;
+ }
+ }
+ if (i == s->nb_streams)
+ return AVERROR_INVALIDDATA;
+ }
/* clamp above zero, else ff_index_search_timestamp() returns negative
* this also means we allow seeking before the start */
@@ -3356,13 +3518,19 @@ static int mxf_read_seek(AVFormatContext *s, int stream_index, int64_t sample_ti
for (i = 0; i < s->nb_streams; i++) {
AVStream *cur_st = s->streams[i];
MXFTrack *cur_track = cur_st->priv_data;
- uint64_t current_sample_count = 0;
if (cur_st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
- ret = mxf_compute_sample_count(mxf, i, &current_sample_count);
- if (ret < 0)
- return ret;
-
- cur_track->sample_count = current_sample_count;
+ int64_t track_edit_unit;
+ if (st != cur_st && mxf_get_next_track_edit_unit(mxf, cur_track, seekpos, &track_edit_unit) >= 0) {
+ cur_track->sample_count = av_rescale_q(track_edit_unit,
+ av_inv_q(cur_track->edit_rate),
+ cur_st->time_base);
+ } else {
+ uint64_t current_sample_count = 0;
+ ret = mxf_compute_sample_count(mxf, i, &current_sample_count);
+ if (ret < 0)
+ return ret;
+ cur_track->sample_count = current_sample_count;
+ }
}
}
return 0;
diff --git a/chromium/third_party/ffmpeg/libavformat/mxg.c b/chromium/third_party/ffmpeg/libavformat/mxg.c
index 6fbf99cfa31..fe5879ecf04 100644
--- a/chromium/third_party/ffmpeg/libavformat/mxg.c
+++ b/chromium/third_party/ffmpeg/libavformat/mxg.c
@@ -169,11 +169,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
continue;
}
+ size = mxg->buffer_ptr - mxg->soi_ptr;
+ ret = av_new_packet(pkt, size);
+ if (ret < 0)
+ return ret;
+ memcpy(pkt->data, mxg->soi_ptr, size);
+
pkt->pts = pkt->dts = mxg->dts;
pkt->stream_index = 0;
- pkt->buf = NULL;
- pkt->size = mxg->buffer_ptr - mxg->soi_ptr;
- pkt->data = mxg->soi_ptr;
if (mxg->soi_ptr - mxg->buffer > mxg->cache_size) {
if (mxg->cache_size > 0) {
@@ -206,12 +209,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt)
mxg->buffer_ptr += size;
if (marker == APP13 && size >= 16) { /* audio data */
+ ret = av_new_packet(pkt, size - 14);
+ if (ret < 0)
+ return ret;
+ memcpy(pkt->data, startmarker_ptr + 16, size - 14);
+
/* time (GMT) of first sample in usec since 1970, little-endian */
pkt->pts = pkt->dts = AV_RL64(startmarker_ptr + 8);
pkt->stream_index = 1;
- pkt->buf = NULL;
- pkt->size = size - 14;
- pkt->data = startmarker_ptr + 16;
if (startmarker_ptr - mxg->buffer > mxg->cache_size) {
if (mxg->cache_size > 0) {
diff --git a/chromium/third_party/ffmpeg/libavformat/oggdec.c b/chromium/third_party/ffmpeg/libavformat/oggdec.c
index 530e19fb925..dea33033b57 100644
--- a/chromium/third_party/ffmpeg/libavformat/oggdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/oggdec.c
@@ -134,7 +134,10 @@ static int ogg_restore(AVFormatContext *s)
ogg->state = ost->next;
for (i = 0; i < ogg->nstreams; i++) {
- av_freep(&ogg->streams[i].buf);
+ struct ogg_stream *stream = &ogg->streams[i];
+ av_freep(&stream->buf);
+ av_freep(&stream->new_metadata);
+
if (i >= ost->nstreams || !ost->streams[i].private) {
free_stream(s, i);
}
diff --git a/chromium/third_party/ffmpeg/libavformat/oggparsedaala.c b/chromium/third_party/ffmpeg/libavformat/oggparsedaala.c
index a373b41b4ca..e944470aca3 100644
--- a/chromium/third_party/ffmpeg/libavformat/oggparsedaala.c
+++ b/chromium/third_party/ffmpeg/libavformat/oggparsedaala.c
@@ -218,6 +218,7 @@ static int daala_packet(AVFormatContext *s, int idx)
int seg, duration = 1;
struct ogg *ogg = s->priv_data;
struct ogg_stream *os = ogg->streams + idx;
+ int64_t pts;
/*
* first packet handling: here we parse the duration of each packet in the
@@ -230,7 +231,10 @@ static int daala_packet(AVFormatContext *s, int idx)
if (os->segments[seg] < 255)
duration++;
- os->lastpts = os->lastdts = daala_gptopts(s, idx, os->granule, NULL) - duration;
+ pts = daala_gptopts(s, idx, os->granule, NULL);
+ if (pts != AV_NOPTS_VALUE)
+ pts -= duration;
+ os->lastpts = os->lastdts = pts;
if(s->streams[idx]->start_time == AV_NOPTS_VALUE) {
s->streams[idx]->start_time = os->lastpts;
if (s->streams[idx]->duration != AV_NOPTS_VALUE)
diff --git a/chromium/third_party/ffmpeg/libavformat/oggparseflac.c b/chromium/third_party/ffmpeg/libavformat/oggparseflac.c
index b5f1416a3c5..6cb34680228 100644
--- a/chromium/third_party/ffmpeg/libavformat/oggparseflac.c
+++ b/chromium/third_party/ffmpeg/libavformat/oggparseflac.c
@@ -61,6 +61,7 @@ flac_header (AVFormatContext * s, int idx)
st->codecpar->codec_id = AV_CODEC_ID_FLAC;
st->need_parsing = AVSTREAM_PARSE_HEADERS;
+ av_freep(&st->codecpar->extradata);
if (ff_alloc_extradata(st->codecpar, FLAC_STREAMINFO_SIZE) < 0)
return AVERROR(ENOMEM);
memcpy(st->codecpar->extradata, streaminfo_start, st->codecpar->extradata_size);
diff --git a/chromium/third_party/ffmpeg/libavformat/oggparseogm.c b/chromium/third_party/ffmpeg/libavformat/oggparseogm.c
index ca6b62669d5..a07453760b7 100644
--- a/chromium/third_party/ffmpeg/libavformat/oggparseogm.c
+++ b/chromium/third_party/ffmpeg/libavformat/oggparseogm.c
@@ -176,11 +176,14 @@ ogm_packet(AVFormatContext *s, int idx)
os->pflags |= AV_PKT_FLAG_KEY;
lb = ((*p & 2) << 1) | ((*p >> 6) & 3);
+ if (os->psize < lb + 1)
+ return AVERROR_INVALIDDATA;
+
os->pstart += lb + 1;
os->psize -= lb + 1;
while (lb--)
- os->pduration += p[lb+1] << (lb*8);
+ os->pduration += (uint64_t)p[lb+1] << (lb*8);
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavformat/oggparsetheora.c b/chromium/third_party/ffmpeg/libavformat/oggparsetheora.c
index b14f9f0669c..b0c0edc7a54 100644
--- a/chromium/third_party/ffmpeg/libavformat/oggparsetheora.c
+++ b/chromium/third_party/ffmpeg/libavformat/oggparsetheora.c
@@ -181,6 +181,7 @@ static int theora_packet(AVFormatContext *s, int idx)
if ((!os->lastpts || os->lastpts == AV_NOPTS_VALUE) && !(os->flags & OGG_FLAG_EOS)) {
int seg;
+ int64_t pts;
duration = 1;
for (seg = os->segp; seg < os->nsegs; seg++) {
@@ -188,7 +189,10 @@ static int theora_packet(AVFormatContext *s, int idx)
duration ++;
}
- os->lastpts = os->lastdts = theora_gptopts(s, idx, os->granule, NULL) - duration;
+ pts = theora_gptopts(s, idx, os->granule, NULL);
+ if (pts != AV_NOPTS_VALUE)
+ pts -= duration;
+ os->lastpts = os->lastdts = pts;
if(s->streams[idx]->start_time == AV_NOPTS_VALUE) {
s->streams[idx]->start_time = os->lastpts;
if (s->streams[idx]->duration > 0)
diff --git a/chromium/third_party/ffmpeg/libavformat/oggparsevorbis.c b/chromium/third_party/ffmpeg/libavformat/oggparsevorbis.c
index 29b1ab514e6..bcfd246b8dc 100644
--- a/chromium/third_party/ffmpeg/libavformat/oggparsevorbis.c
+++ b/chromium/third_party/ffmpeg/libavformat/oggparsevorbis.c
@@ -230,6 +230,10 @@ static int fixup_vorbis_headers(AVFormatContext *as,
len = priv->len[0] + priv->len[1] + priv->len[2];
buf_len = len + len / 255 + 64;
+
+ if (*buf)
+ return AVERROR_INVALIDDATA;
+
ptr = *buf = av_realloc(NULL, buf_len);
if (!ptr)
return AVERROR(ENOMEM);
diff --git a/chromium/third_party/ffmpeg/libavformat/options.c b/chromium/third_party/ffmpeg/libavformat/options.c
index 9371c726674..c188c23506a 100644
--- a/chromium/third_party/ffmpeg/libavformat/options.c
+++ b/chromium/third_party/ffmpeg/libavformat/options.c
@@ -104,7 +104,7 @@ static int io_open_default(AVFormatContext *s, AVIOContext **pb,
{
int loglevel;
- if (!strcmp(url, s->filename) ||
+ if (!strcmp(url, s->url) ||
s->iformat && !strcmp(s->iformat->name, "image2") ||
s->oformat && !strcmp(s->oformat->name, "image2")
) {
diff --git a/chromium/third_party/ffmpeg/libavformat/rawenc.c b/chromium/third_party/ffmpeg/libavformat/rawenc.c
index aa3ef76fbf4..809ca23b1a5 100644
--- a/chromium/third_party/ffmpeg/libavformat/rawenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/rawenc.c
@@ -104,6 +104,19 @@ AVOutputFormat ff_aptx_muxer = {
};
#endif
+#if CONFIG_APTX_HD_MUXER
+AVOutputFormat ff_aptx_hd_muxer = {
+ .name = "aptx_hd",
+ .long_name = NULL_IF_CONFIG_SMALL("raw aptX HD (Audio Processing Technology for Bluetooth)"),
+ .extensions = "aptxhd",
+ .audio_codec = AV_CODEC_ID_APTX_HD,
+ .video_codec = AV_CODEC_ID_NONE,
+ .write_header = force_one_stream,
+ .write_packet = ff_raw_write_packet,
+ .flags = AVFMT_NOTIMESTAMPS,
+};
+#endif
+
#if CONFIG_CAVSVIDEO_MUXER
AVOutputFormat ff_cavsvideo_muxer = {
.name = "cavsvideo",
@@ -117,6 +130,19 @@ AVOutputFormat ff_cavsvideo_muxer = {
};
#endif
+#if CONFIG_CODEC2RAW_MUXER
+AVOutputFormat ff_codec2raw_muxer = {
+ .name = "codec2raw",
+ .long_name = NULL_IF_CONFIG_SMALL("raw codec2 muxer"),
+ .audio_codec = AV_CODEC_ID_CODEC2,
+ .video_codec = AV_CODEC_ID_NONE,
+ .write_header = force_one_stream,
+ .write_packet = ff_raw_write_packet,
+ .flags = AVFMT_NOTIMESTAMPS,
+};
+#endif
+
+
#if CONFIG_DATA_MUXER
AVOutputFormat ff_data_muxer = {
.name = "data",
@@ -426,6 +452,19 @@ AVOutputFormat ff_rawvideo_muxer = {
};
#endif
+#if CONFIG_SBC_MUXER
+AVOutputFormat ff_sbc_muxer = {
+ .name = "sbc",
+ .long_name = NULL_IF_CONFIG_SMALL("raw SBC"),
+ .mime_type = "audio/x-sbc",
+ .extensions = "sbc,msbc",
+ .audio_codec = AV_CODEC_ID_SBC,
+ .write_header = force_one_stream,
+ .write_packet = ff_raw_write_packet,
+ .flags = AVFMT_NOTIMESTAMPS,
+};
+#endif
+
#if CONFIG_TRUEHD_MUXER
AVOutputFormat ff_truehd_muxer = {
.name = "truehd",
diff --git a/chromium/third_party/ffmpeg/libavformat/rdt.c b/chromium/third_party/ffmpeg/libavformat/rdt.c
index b69827fcbfc..60c36f09e63 100644
--- a/chromium/third_party/ffmpeg/libavformat/rdt.c
+++ b/chromium/third_party/ffmpeg/libavformat/rdt.c
@@ -53,7 +53,7 @@ struct RDTDemuxContext {
RDTDemuxContext *
ff_rdt_parse_open(AVFormatContext *ic, int first_stream_of_set_idx,
- void *priv_data, RTPDynamicProtocolHandler *handler)
+ void *priv_data, const RTPDynamicProtocolHandler *handler)
{
RDTDemuxContext *s = av_mallocz(sizeof(RDTDemuxContext));
if (!s)
@@ -554,7 +554,7 @@ rdt_close_context (PayloadContext *rdt)
}
#define RDT_HANDLER(n, s, t) \
-static RTPDynamicProtocolHandler rdt_ ## n ## _handler = { \
+RTPDynamicProtocolHandler ff_rdt_ ## n ## _handler = { \
.enc_name = s, \
.codec_type = t, \
.codec_id = AV_CODEC_ID_NONE, \
@@ -570,10 +570,3 @@ RDT_HANDLER(live_audio, "x-pn-multirate-realaudio-live", AVMEDIA_TYPE_AUDIO);
RDT_HANDLER(video, "x-pn-realvideo", AVMEDIA_TYPE_VIDEO);
RDT_HANDLER(audio, "x-pn-realaudio", AVMEDIA_TYPE_AUDIO);
-void ff_register_rdt_dynamic_payload_handlers(void)
-{
- ff_register_dynamic_payload_handler(&rdt_video_handler);
- ff_register_dynamic_payload_handler(&rdt_audio_handler);
- ff_register_dynamic_payload_handler(&rdt_live_video_handler);
- ff_register_dynamic_payload_handler(&rdt_live_audio_handler);
-}
diff --git a/chromium/third_party/ffmpeg/libavformat/rdt.h b/chromium/third_party/ffmpeg/libavformat/rdt.h
index ce6026f49c2..67fb308421d 100644
--- a/chromium/third_party/ffmpeg/libavformat/rdt.h
+++ b/chromium/third_party/ffmpeg/libavformat/rdt.h
@@ -41,7 +41,7 @@ typedef struct RDTDemuxContext RDTDemuxContext;
RDTDemuxContext *ff_rdt_parse_open(AVFormatContext *ic,
int first_stream_of_set_idx,
void *priv_data,
- RTPDynamicProtocolHandler *handler);
+ const RTPDynamicProtocolHandler *handler);
void ff_rdt_parse_close(RDTDemuxContext *s);
/**
@@ -60,11 +60,6 @@ void ff_rdt_calc_response_and_checksum(char response[41], char chksum[9],
const char *challenge);
/**
- * Register RDT-related dynamic payload handlers with our cache.
- */
-void ff_register_rdt_dynamic_payload_handlers(void);
-
-/**
* Add subscription information to Subscribe parameter string.
*
* @param cmd string to write the subscription information into.
diff --git a/chromium/third_party/ffmpeg/libavformat/rtmpproto.c b/chromium/third_party/ffmpeg/libavformat/rtmpproto.c
index faf2a6f2440..b741e421af9 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtmpproto.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtmpproto.c
@@ -2431,8 +2431,10 @@ static int get_packet(URLContext *s, int for_header)
rt->bytes_read += ret;
if (rt->bytes_read - rt->last_bytes_read > rt->receive_report_size) {
av_log(s, AV_LOG_DEBUG, "Sending bytes read report\n");
- if ((ret = gen_bytes_read(s, rt, rpkt.timestamp + 1)) < 0)
+ if ((ret = gen_bytes_read(s, rt, rpkt.timestamp + 1)) < 0) {
+ ff_rtmp_packet_destroy(&rpkt);
return ret;
+ }
rt->last_bytes_read = rt->bytes_read;
}
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec.c b/chromium/third_party/ffmpeg/libavformat/rtpdec.c
index 4acb1ca629d..e75a34cb933 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec.c
@@ -69,88 +69,104 @@ static RTPDynamicProtocolHandler t140_dynamic_handler = { /* RFC 4103 */
.codec_id = AV_CODEC_ID_TEXT,
};
-static RTPDynamicProtocolHandler *rtp_first_dynamic_payload_handler = NULL;
+extern RTPDynamicProtocolHandler ff_rdt_video_handler;
+extern RTPDynamicProtocolHandler ff_rdt_audio_handler;
+extern RTPDynamicProtocolHandler ff_rdt_live_video_handler;
+extern RTPDynamicProtocolHandler ff_rdt_live_audio_handler;
+
+static const RTPDynamicProtocolHandler *rtp_dynamic_protocol_handler_list[] = {
+ /* rtp */
+ &ff_ac3_dynamic_handler,
+ &ff_amr_nb_dynamic_handler,
+ &ff_amr_wb_dynamic_handler,
+ &ff_dv_dynamic_handler,
+ &ff_g726_16_dynamic_handler,
+ &ff_g726_24_dynamic_handler,
+ &ff_g726_32_dynamic_handler,
+ &ff_g726_40_dynamic_handler,
+ &ff_g726le_16_dynamic_handler,
+ &ff_g726le_24_dynamic_handler,
+ &ff_g726le_32_dynamic_handler,
+ &ff_g726le_40_dynamic_handler,
+ &ff_h261_dynamic_handler,
+ &ff_h263_1998_dynamic_handler,
+ &ff_h263_2000_dynamic_handler,
+ &ff_h263_rfc2190_dynamic_handler,
+ &ff_h264_dynamic_handler,
+ &ff_hevc_dynamic_handler,
+ &ff_ilbc_dynamic_handler,
+ &ff_jpeg_dynamic_handler,
+ &ff_mp4a_latm_dynamic_handler,
+ &ff_mp4v_es_dynamic_handler,
+ &ff_mpeg_audio_dynamic_handler,
+ &ff_mpeg_audio_robust_dynamic_handler,
+ &ff_mpeg_video_dynamic_handler,
+ &ff_mpeg4_generic_dynamic_handler,
+ &ff_mpegts_dynamic_handler,
+ &ff_ms_rtp_asf_pfa_handler,
+ &ff_ms_rtp_asf_pfv_handler,
+ &ff_qcelp_dynamic_handler,
+ &ff_qdm2_dynamic_handler,
+ &ff_qt_rtp_aud_handler,
+ &ff_qt_rtp_vid_handler,
+ &ff_quicktime_rtp_aud_handler,
+ &ff_quicktime_rtp_vid_handler,
+ &ff_rfc4175_rtp_handler,
+ &ff_svq3_dynamic_handler,
+ &ff_theora_dynamic_handler,
+ &ff_vc2hq_dynamic_handler,
+ &ff_vorbis_dynamic_handler,
+ &ff_vp8_dynamic_handler,
+ &ff_vp9_dynamic_handler,
+ &gsm_dynamic_handler,
+ &l24_dynamic_handler,
+ &opus_dynamic_handler,
+ &realmedia_mp3_dynamic_handler,
+ &speex_dynamic_handler,
+ &t140_dynamic_handler,
+ /* rdt */
+ &ff_rdt_video_handler,
+ &ff_rdt_audio_handler,
+ &ff_rdt_live_video_handler,
+ &ff_rdt_live_audio_handler,
+ NULL,
+};
-void ff_register_dynamic_payload_handler(RTPDynamicProtocolHandler *handler)
+const RTPDynamicProtocolHandler *ff_rtp_handler_iterate(void **opaque)
{
- handler->next = rtp_first_dynamic_payload_handler;
- rtp_first_dynamic_payload_handler = handler;
-}
+ uintptr_t i = (uintptr_t)*opaque;
+ const RTPDynamicProtocolHandler *r = rtp_dynamic_protocol_handler_list[i];
-void ff_register_rtp_dynamic_payload_handlers(void)
-{
- ff_register_dynamic_payload_handler(&ff_ac3_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_amr_nb_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_amr_wb_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_dv_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_g726_16_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_g726_24_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_g726_32_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_g726_40_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_g726le_16_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_g726le_24_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_g726le_32_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_g726le_40_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_h261_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_h263_1998_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_h263_2000_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_h263_rfc2190_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_h264_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_hevc_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_ilbc_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_jpeg_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_mp4a_latm_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_mp4v_es_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_mpeg_audio_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_mpeg_audio_robust_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_mpeg_video_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_mpeg4_generic_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_mpegts_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_ms_rtp_asf_pfa_handler);
- ff_register_dynamic_payload_handler(&ff_ms_rtp_asf_pfv_handler);
- ff_register_dynamic_payload_handler(&ff_qcelp_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_qdm2_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_qt_rtp_aud_handler);
- ff_register_dynamic_payload_handler(&ff_qt_rtp_vid_handler);
- ff_register_dynamic_payload_handler(&ff_quicktime_rtp_aud_handler);
- ff_register_dynamic_payload_handler(&ff_quicktime_rtp_vid_handler);
- ff_register_dynamic_payload_handler(&ff_rfc4175_rtp_handler);
- ff_register_dynamic_payload_handler(&ff_svq3_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_theora_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_vc2hq_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_vorbis_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_vp8_dynamic_handler);
- ff_register_dynamic_payload_handler(&ff_vp9_dynamic_handler);
- ff_register_dynamic_payload_handler(&gsm_dynamic_handler);
- ff_register_dynamic_payload_handler(&l24_dynamic_handler);
- ff_register_dynamic_payload_handler(&opus_dynamic_handler);
- ff_register_dynamic_payload_handler(&realmedia_mp3_dynamic_handler);
- ff_register_dynamic_payload_handler(&speex_dynamic_handler);
- ff_register_dynamic_payload_handler(&t140_dynamic_handler);
+ if (r)
+ *opaque = (void*)(i + 1);
+
+ return r;
}
-RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name,
+const RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name,
enum AVMediaType codec_type)
{
- RTPDynamicProtocolHandler *handler;
- for (handler = rtp_first_dynamic_payload_handler;
- handler; handler = handler->next)
+ void *i = 0;
+ const RTPDynamicProtocolHandler *handler;
+ while (handler = ff_rtp_handler_iterate(&i)) {
if (handler->enc_name &&
!av_strcasecmp(name, handler->enc_name) &&
codec_type == handler->codec_type)
return handler;
+ }
return NULL;
}
-RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id,
+const RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id,
enum AVMediaType codec_type)
{
- RTPDynamicProtocolHandler *handler;
- for (handler = rtp_first_dynamic_payload_handler;
- handler; handler = handler->next)
+ void *i = 0;
+ const RTPDynamicProtocolHandler *handler;
+ while (handler = ff_rtp_handler_iterate(&i)) {
if (handler->static_payload_id && handler->static_payload_id == id &&
codec_type == handler->codec_type)
return handler;
+ }
return NULL;
}
@@ -556,7 +572,7 @@ RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st,
}
void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx,
- RTPDynamicProtocolHandler *handler)
+ const RTPDynamicProtocolHandler *handler)
{
s->dynamic_protocol_context = ctx;
s->handler = handler;
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec.h b/chromium/third_party/ffmpeg/libavformat/rtpdec.h
index 77596b67074..5a47d6f79d5 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec.h
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec.h
@@ -43,7 +43,7 @@ typedef struct RTPDemuxContext RTPDemuxContext;
RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st,
int payload_type, int queue_size);
void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx,
- RTPDynamicProtocolHandler *handler);
+ const RTPDynamicProtocolHandler *handler);
void ff_rtp_parse_set_crypto(RTPDemuxContext *s, const char *suite,
const char *params);
int ff_rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
@@ -192,10 +192,31 @@ struct RTPDemuxContext {
PayloadContext *dynamic_protocol_context;
};
-void ff_register_dynamic_payload_handler(RTPDynamicProtocolHandler *handler);
-RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name,
+/**
+ * Iterate over all registered rtp dynamic protocol handlers.
+ *
+ * @param opaque a pointer where libavformat will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered rtp dynamic protocol handler or NULL when the iteration is
+ * finished
+ */
+const RTPDynamicProtocolHandler *ff_rtp_handler_iterate(void **opaque);
+/**
+ * Find a registered rtp dynamic protocol handler with the specified name.
+ *
+ * @param name name of the requested rtp dynamic protocol handler
+ * @return A rtp dynamic protocol handler if one was found, NULL otherwise.
+ */
+const RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name,
enum AVMediaType codec_type);
-RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id,
+/**
+ * Find a registered rtp dynamic protocol handler with a matching codec ID.
+ *
+ * @param id AVCodecID of the requested rtp dynamic protocol handler.
+ * @return A rtp dynamic protocol handler if one was found, NULL otherwise.
+ */
+const RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id,
enum AVMediaType codec_type);
/* from rtsp.c, but used by rtp dynamic protocol handlers. */
@@ -209,8 +230,6 @@ int ff_parse_fmtp(AVFormatContext *s,
PayloadContext *data,
const char *attr, const char *value));
-void ff_register_rtp_dynamic_payload_handlers(void);
-
/**
* Close the dynamic buffer and make a packet from it.
*/
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_ac3.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_ac3.c
index 48b2d9cf98b..56a379f86cc 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_ac3.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_ac3.c
@@ -122,7 +122,7 @@ static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data,
return 0;
}
-RTPDynamicProtocolHandler ff_ac3_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_ac3_dynamic_handler = {
.enc_name = "ac3",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_AC3,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_amr.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_amr.c
index 8687e654a3c..35d32228110 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_amr.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_amr.c
@@ -182,7 +182,7 @@ static int amr_parse_sdp_line(AVFormatContext *s, int st_index,
return 0;
}
-RTPDynamicProtocolHandler ff_amr_nb_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_amr_nb_dynamic_handler = {
.enc_name = "AMR",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_AMR_NB,
@@ -192,7 +192,7 @@ RTPDynamicProtocolHandler ff_amr_nb_dynamic_handler = {
.parse_packet = amr_handle_packet,
};
-RTPDynamicProtocolHandler ff_amr_wb_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_amr_wb_dynamic_handler = {
.enc_name = "AMR-WB",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_AMR_WB,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_asf.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_asf.c
index 09f214a71c9..54ffef68767 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_asf.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_asf.c
@@ -300,7 +300,7 @@ static void asfrtp_close_context(PayloadContext *asf)
}
#define RTP_ASF_HANDLER(n, s, t) \
-RTPDynamicProtocolHandler ff_ms_rtp_ ## n ## _handler = { \
+const RTPDynamicProtocolHandler ff_ms_rtp_ ## n ## _handler = { \
.enc_name = s, \
.codec_type = t, \
.codec_id = AV_CODEC_ID_NONE, \
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_dv.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_dv.c
index de99d277950..53a5855ad36 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_dv.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_dv.c
@@ -131,7 +131,7 @@ static int dv_handle_packet(AVFormatContext *ctx, PayloadContext *rtp_dv_ctx,
return 0;
}
-RTPDynamicProtocolHandler ff_dv_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_dv_dynamic_handler = {
.enc_name = "DV",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_DVVIDEO,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_formats.h b/chromium/third_party/ffmpeg/libavformat/rtpdec_formats.h
index a436c9d62c6..dad2b8ac1bb 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_formats.h
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_formats.h
@@ -47,47 +47,47 @@ int ff_h264_handle_frag_packet(AVPacket *pkt, const uint8_t *buf, int len,
int nal_header_len);
void ff_h264_parse_framesize(AVCodecParameters *par, const char *p);
-extern RTPDynamicProtocolHandler ff_ac3_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_amr_nb_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_amr_wb_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_dv_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_g726_16_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_g726_24_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_g726_32_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_g726_40_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_g726le_16_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_g726le_24_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_g726le_32_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_g726le_40_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_h261_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_h263_1998_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_h263_2000_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_h263_rfc2190_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_h264_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_hevc_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_ilbc_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_jpeg_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_mp4a_latm_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_mpeg_audio_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_mpeg_audio_robust_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_mpeg_video_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_mpeg4_generic_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_mpegts_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_ms_rtp_asf_pfa_handler;
-extern RTPDynamicProtocolHandler ff_ms_rtp_asf_pfv_handler;
-extern RTPDynamicProtocolHandler ff_qcelp_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_qdm2_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_qt_rtp_aud_handler;
-extern RTPDynamicProtocolHandler ff_qt_rtp_vid_handler;
-extern RTPDynamicProtocolHandler ff_quicktime_rtp_aud_handler;
-extern RTPDynamicProtocolHandler ff_quicktime_rtp_vid_handler;
-extern RTPDynamicProtocolHandler ff_rfc4175_rtp_handler;
-extern RTPDynamicProtocolHandler ff_svq3_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_theora_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_vc2hq_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_vorbis_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_vp8_dynamic_handler;
-extern RTPDynamicProtocolHandler ff_vp9_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_ac3_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_amr_nb_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_amr_wb_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_dv_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_g726_16_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_g726_24_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_g726_32_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_g726_40_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_g726le_16_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_g726le_24_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_g726le_32_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_g726le_40_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_h261_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_h263_1998_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_h263_2000_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_h263_rfc2190_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_h264_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_hevc_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_ilbc_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_jpeg_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_mp4a_latm_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_mpeg_audio_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_mpeg_audio_robust_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_mpeg_video_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_mpeg4_generic_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_mpegts_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_ms_rtp_asf_pfa_handler;
+extern const RTPDynamicProtocolHandler ff_ms_rtp_asf_pfv_handler;
+extern const RTPDynamicProtocolHandler ff_qcelp_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_qdm2_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_qt_rtp_aud_handler;
+extern const RTPDynamicProtocolHandler ff_qt_rtp_vid_handler;
+extern const RTPDynamicProtocolHandler ff_quicktime_rtp_aud_handler;
+extern const RTPDynamicProtocolHandler ff_quicktime_rtp_vid_handler;
+extern const RTPDynamicProtocolHandler ff_rfc4175_rtp_handler;
+extern const RTPDynamicProtocolHandler ff_svq3_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_theora_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_vc2hq_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_vorbis_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_vp8_dynamic_handler;
+extern const RTPDynamicProtocolHandler ff_vp9_dynamic_handler;
#endif /* AVFORMAT_RTPDEC_FORMATS_H */
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_g726.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_g726.c
index 2de09ac2334..89afd586c2a 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_g726.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_g726.c
@@ -35,13 +35,13 @@ static av_cold int g726_ ## bitrate ##_init(AVFormatContext *s, int st_index, \
return 0; \
} \
\
-RTPDynamicProtocolHandler ff_g726_ ## bitrate ## _dynamic_handler = { \
+const RTPDynamicProtocolHandler ff_g726_ ## bitrate ## _dynamic_handler = { \
.enc_name = "AAL2-G726-" #bitrate, \
.codec_type = AVMEDIA_TYPE_AUDIO, \
.codec_id = AV_CODEC_ID_ADPCM_G726, \
.init = g726_ ## bitrate ## _init, \
}; \
-RTPDynamicProtocolHandler ff_g726le_ ## bitrate ## _dynamic_handler = { \
+const RTPDynamicProtocolHandler ff_g726le_ ## bitrate ## _dynamic_handler = { \
.enc_name = "G726-" #bitrate, \
.codec_type = AVMEDIA_TYPE_AUDIO, \
.codec_id = AV_CODEC_ID_ADPCM_G726LE, \
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_h261.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_h261.c
index 9729f21d157..a102909c60d 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_h261.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_h261.c
@@ -162,7 +162,7 @@ static int h261_handle_packet(AVFormatContext *ctx, PayloadContext *rtp_h261_ctx
return 0;
}
-RTPDynamicProtocolHandler ff_h261_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_h261_dynamic_handler = {
.enc_name = "H261",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_H261,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_h263.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_h263.c
index 97aa4add368..9b71ed7efe9 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_h263.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_h263.c
@@ -89,7 +89,7 @@ int ff_h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
return 0;
}
-RTPDynamicProtocolHandler ff_h263_1998_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_h263_1998_dynamic_handler = {
.enc_name = "H263-1998",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_H263,
@@ -97,7 +97,7 @@ RTPDynamicProtocolHandler ff_h263_1998_dynamic_handler = {
.parse_packet = ff_h263_handle_packet,
};
-RTPDynamicProtocolHandler ff_h263_2000_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_h263_2000_dynamic_handler = {
.enc_name = "H263-2000",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_H263,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_h263_rfc2190.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_h263_rfc2190.c
index 6ba2814be22..a0f587f5c34 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_h263_rfc2190.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_h263_rfc2190.c
@@ -183,7 +183,7 @@ static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
return 0;
}
-RTPDynamicProtocolHandler ff_h263_rfc2190_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_h263_rfc2190_dynamic_handler = {
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_H263,
.need_parsing = AVSTREAM_PARSE_FULL,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_h264.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_h264.c
index 6f8148ab6d5..a785120c230 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_h264.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_h264.c
@@ -408,7 +408,7 @@ static int parse_h264_sdp_line(AVFormatContext *s, int st_index,
return 0;
}
-RTPDynamicProtocolHandler ff_h264_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_h264_dynamic_handler = {
.enc_name = "H264",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_H264,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_hevc.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_hevc.c
index a0e3a7c2f49..5a06b2362cc 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_hevc.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_hevc.c
@@ -347,7 +347,7 @@ static int hevc_handle_packet(AVFormatContext *ctx, PayloadContext *rtp_hevc_ctx
return res;
}
-RTPDynamicProtocolHandler ff_hevc_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_hevc_dynamic_handler = {
.enc_name = "H265",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_HEVC,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_ilbc.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_ilbc.c
index cb48f7661da..9094f2c786f 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_ilbc.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_ilbc.c
@@ -66,7 +66,7 @@ static int ilbc_parse_sdp_line(AVFormatContext *s, int st_index,
return 0;
}
-RTPDynamicProtocolHandler ff_ilbc_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_ilbc_dynamic_handler = {
.enc_name = "iLBC",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_ILBC,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_jpeg.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_jpeg.c
index 465d9bc2921..931463cec40 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_jpeg.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_jpeg.c
@@ -379,7 +379,7 @@ static int jpeg_parse_packet(AVFormatContext *ctx, PayloadContext *jpeg,
return AVERROR(EAGAIN);
}
-RTPDynamicProtocolHandler ff_jpeg_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_jpeg_dynamic_handler = {
.enc_name = "JPEG",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_MJPEG,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_latm.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_latm.c
index a25c07fe52f..9087d6bec54 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_latm.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_latm.c
@@ -162,7 +162,7 @@ static int latm_parse_sdp_line(AVFormatContext *s, int st_index,
return 0;
}
-RTPDynamicProtocolHandler ff_mp4a_latm_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_mp4a_latm_dynamic_handler = {
.enc_name = "MP4A-LATM",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_AAC,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_mpa_robust.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_mpa_robust.c
index 86c8958d5ce..f4716edf747 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_mpa_robust.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_mpa_robust.c
@@ -189,7 +189,7 @@ static int mpa_robust_parse_packet(AVFormatContext *ctx, PayloadContext *data,
return 0;
}
-RTPDynamicProtocolHandler ff_mpeg_audio_robust_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_mpeg_audio_robust_dynamic_handler = {
.enc_name = "mpa-robust",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_MP3ADU,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg12.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg12.c
index b93de3d9e4d..43d9d5854c4 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg12.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg12.c
@@ -48,7 +48,7 @@ static int mpeg_parse_packet(AVFormatContext *ctx, PayloadContext *data,
return 0;
}
-RTPDynamicProtocolHandler ff_mpeg_audio_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_mpeg_audio_dynamic_handler = {
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_MP3,
.need_parsing = AVSTREAM_PARSE_FULL,
@@ -56,7 +56,7 @@ RTPDynamicProtocolHandler ff_mpeg_audio_dynamic_handler = {
.static_payload_id = 14,
};
-RTPDynamicProtocolHandler ff_mpeg_video_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_mpeg_video_dynamic_handler = {
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_MPEG2VIDEO,
.need_parsing = AVSTREAM_PARSE_FULL,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg4.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg4.c
index 994ab492517..4f705990845 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg4.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_mpeg4.c
@@ -325,7 +325,7 @@ static int parse_sdp_line(AVFormatContext *s, int st_index,
return 0;
}
-RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler = {
.enc_name = "MP4V-ES",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_MPEG4,
@@ -334,7 +334,7 @@ RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler = {
.parse_sdp_a_line = parse_sdp_line,
};
-RTPDynamicProtocolHandler ff_mpeg4_generic_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_mpeg4_generic_dynamic_handler = {
.enc_name = "mpeg4-generic",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_AAC,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_mpegts.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_mpegts.c
index 5bf0f186dbd..405271f744a 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_mpegts.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_mpegts.c
@@ -89,7 +89,7 @@ static int mpegts_handle_packet(AVFormatContext *ctx, PayloadContext *data,
return 0;
}
-RTPDynamicProtocolHandler ff_mpegts_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_mpegts_dynamic_handler = {
.codec_type = AVMEDIA_TYPE_DATA,
.priv_data_size = sizeof(PayloadContext),
.parse_packet = mpegts_handle_packet,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_qcelp.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_qcelp.c
index 41cc8263dfc..3485c27b685 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_qcelp.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_qcelp.c
@@ -209,7 +209,7 @@ static int qcelp_parse_packet(AVFormatContext *ctx, PayloadContext *data,
return return_stored_frame(ctx, data, st, pkt, timestamp, buf, len);
}
-RTPDynamicProtocolHandler ff_qcelp_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_qcelp_dynamic_handler = {
.enc_name = "x-Purevoice",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_QCELP,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_qdm2.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_qdm2.c
index 1f4fd5aace5..fa2b1b9302f 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_qdm2.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_qdm2.c
@@ -298,7 +298,7 @@ static int qdm2_parse_packet(AVFormatContext *s, PayloadContext *qdm,
return (qdm->cache > 0) ? 1 : 0;
}
-RTPDynamicProtocolHandler ff_qdm2_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_qdm2_dynamic_handler = {
.enc_name = "X-QDM",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_NONE,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_rfc4175.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_rfc4175.c
index 498381dfd3f..e9c62c13897 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_rfc4175.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_rfc4175.c
@@ -226,7 +226,7 @@ static int rfc4175_handle_packet(AVFormatContext *ctx, PayloadContext *data,
return AVERROR(EAGAIN);
}
-RTPDynamicProtocolHandler ff_rfc4175_rtp_handler = {
+const RTPDynamicProtocolHandler ff_rfc4175_rtp_handler = {
.enc_name = "raw",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_BITPACKED,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_svq3.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_svq3.c
index 18d79d2e22d..77164dd6f91 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_svq3.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_svq3.c
@@ -110,7 +110,7 @@ static void svq3_close_context(PayloadContext *sv)
ffio_free_dyn_buf(&sv->pktbuf);
}
-RTPDynamicProtocolHandler ff_svq3_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_svq3_dynamic_handler = {
.enc_name = "X-SV3V-ES",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_NONE, // see if (config_packet) above
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_vc2hq.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_vc2hq.c
index 8a3996a035a..1a11ace9a28 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_vc2hq.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_vc2hq.c
@@ -216,7 +216,7 @@ static int vc2hq_handle_packet(AVFormatContext *ctx, PayloadContext *pl_ctx,
return res;
}
-RTPDynamicProtocolHandler ff_vc2hq_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_vc2hq_dynamic_handler = {
.enc_name = "VC2",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_DIRAC,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_vp8.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_vp8.c
index f0e457b70fb..360dd5c782a 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_vp8.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_vp8.c
@@ -276,7 +276,7 @@ static int vp8_need_keyframe(PayloadContext *vp8)
return vp8->sequence_dirty || !vp8->sequence_ok;
}
-RTPDynamicProtocolHandler ff_vp8_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_vp8_dynamic_handler = {
.enc_name = "VP8",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_VP8,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_vp9.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_vp9.c
index 4a7f934d6a6..6bbdf4847ad 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_vp9.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_vp9.c
@@ -330,7 +330,7 @@ static void vp9_close_context(PayloadContext *vp9)
ffio_free_dyn_buf(&vp9->buf);
}
-RTPDynamicProtocolHandler ff_vp9_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_vp9_dynamic_handler = {
.enc_name = "VP9",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_VP9,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtpdec_xiph.c b/chromium/third_party/ffmpeg/libavformat/rtpdec_xiph.c
index 43de6ce3431..574508affb6 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtpdec_xiph.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtpdec_xiph.c
@@ -365,7 +365,7 @@ static int xiph_parse_sdp_line(AVFormatContext *s, int st_index,
return 0;
}
-RTPDynamicProtocolHandler ff_theora_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_theora_dynamic_handler = {
.enc_name = "theora",
.codec_type = AVMEDIA_TYPE_VIDEO,
.codec_id = AV_CODEC_ID_THEORA,
@@ -375,7 +375,7 @@ RTPDynamicProtocolHandler ff_theora_dynamic_handler = {
.parse_packet = xiph_handle_packet,
};
-RTPDynamicProtocolHandler ff_vorbis_dynamic_handler = {
+const RTPDynamicProtocolHandler ff_vorbis_dynamic_handler = {
.enc_name = "vorbis",
.codec_type = AVMEDIA_TYPE_AUDIO,
.codec_id = AV_CODEC_ID_VORBIS,
diff --git a/chromium/third_party/ffmpeg/libavformat/rtsp.c b/chromium/third_party/ffmpeg/libavformat/rtsp.c
index cf7cdb2f2b6..ceb770a3a49 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtsp.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtsp.c
@@ -93,10 +93,18 @@ const AVOption ff_rtsp_options[] = {
RTSP_MEDIATYPE_OPTS("allowed_media_types", "set media types to accept from the server"),
{ "min_port", "set minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
{ "max_port", "set maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
- { "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+ { "listen_timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+#if FF_API_OLD_RTSP_OPTIONS
+ { "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen) (deprecated, use listen_timeout)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
{ "stimeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#else
+ { "timeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#endif
COMMON_OPTS(),
- { "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+ { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#if FF_API_OLD_RTSP_OPTIONS
+ { "user-agent", "override User-Agent header (deprecated, use user_agent)", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#endif
{ NULL },
};
@@ -203,7 +211,7 @@ static int get_sockaddr(AVFormatContext *s,
}
#if CONFIG_RTPDEC
-static void init_rtp_handler(RTPDynamicProtocolHandler *handler,
+static void init_rtp_handler(const RTPDynamicProtocolHandler *handler,
RTSPStream *rtsp_st, AVStream *st)
{
AVCodecParameters *par = st ? st->codecpar : NULL;
@@ -263,7 +271,7 @@ static int sdp_parse_rtpmap(AVFormatContext *s,
}
if (par->codec_id == AV_CODEC_ID_NONE) {
- RTPDynamicProtocolHandler *handler =
+ const RTPDynamicProtocolHandler *handler =
ff_rtp_handler_find_by_name(buf, par->codec_type);
init_rtp_handler(handler, rtsp_st, st);
/* If no dynamic handler was found, check with the list of standard
@@ -487,7 +495,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
if (CONFIG_RTPDEC && !rt->ts)
rt->ts = avpriv_mpegts_parse_open(s);
} else {
- RTPDynamicProtocolHandler *handler;
+ const RTPDynamicProtocolHandler *handler;
handler = ff_rtp_handler_find_by_id(
rtsp_st->sdp_payload_type, AVMEDIA_TYPE_DATA);
init_rtp_handler(handler, rtsp_st, NULL);
@@ -505,7 +513,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
rtsp_st->stream_index = st->index;
st->codecpar->codec_type = codec_type;
if (rtsp_st->sdp_payload_type < RTP_PT_PRIVATE) {
- RTPDynamicProtocolHandler *handler;
+ const RTPDynamicProtocolHandler *handler;
/* if standard payload type, we can find the codec right now */
ff_rtp_get_codec_info(st->codecpar, rtsp_st->sdp_payload_type);
if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
@@ -1686,7 +1694,7 @@ int ff_rtsp_connect(AVFormatContext *s)
redirect:
/* extract hostname and port */
av_url_split(proto, sizeof(proto), auth, sizeof(auth),
- host, sizeof(host), &port, path, sizeof(path), s->filename);
+ host, sizeof(host), &port, path, sizeof(path), s->url);
if (!strcmp(proto, "rtsps")) {
lower_rtsp_proto = "tls";
@@ -1717,7 +1725,7 @@ redirect:
}
}
- /* Construct the URI used in request; this is similar to s->filename,
+ /* Construct the URI used in request; this is similar to s->url,
* but with authentication credentials removed and RTSP specific options
* stripped out. */
ff_url_join(rt->control_uri, sizeof(rt->control_uri), proto, NULL,
@@ -1905,13 +1913,19 @@ redirect:
ff_rtsp_close_streams(s);
ff_rtsp_close_connections(s);
if (reply->status_code >=300 && reply->status_code < 400 && s->iformat) {
- av_strlcpy(s->filename, reply->location, sizeof(s->filename));
+ char *new_url = av_strdup(reply->location);
+ if (!new_url) {
+ err = AVERROR(ENOMEM);
+ goto fail2;
+ }
+ ff_format_set_url(s, new_url);
rt->session_id[0] = '\0';
av_log(s, AV_LOG_INFO, "Status %d: Redirecting to %s\n",
reply->status_code,
- s->filename);
+ s->url);
goto redirect;
}
+ fail2:
ff_network_close();
return err;
}
@@ -2425,7 +2439,7 @@ static int rtp_read_header(AVFormatContext *s)
if (!ff_network_init())
return AVERROR(EIO);
- ret = ffurl_open_whitelist(&in, s->filename, AVIO_FLAG_READ,
+ ret = ffurl_open_whitelist(&in, s->url, AVIO_FLAG_READ,
&s->interrupt_callback, NULL, s->protocol_whitelist, s->protocol_blacklist, NULL);
if (ret)
goto fail;
@@ -2476,7 +2490,7 @@ static int rtp_read_header(AVFormatContext *s)
}
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
- NULL, 0, s->filename);
+ NULL, 0, s->url);
snprintf(sdp, sizeof(sdp),
"v=0\r\nc=IN IP%d %s\r\nm=%s %d RTP/AVP %d\r\n",
diff --git a/chromium/third_party/ffmpeg/libavformat/rtsp.h b/chromium/third_party/ffmpeg/libavformat/rtsp.h
index 36fdae492b4..9a7f366b392 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtsp.h
+++ b/chromium/third_party/ffmpeg/libavformat/rtsp.h
@@ -458,7 +458,7 @@ typedef struct RTSPStream {
/** The following are used for dynamic protocols (rtpdec_*.c/rdt.c) */
//@{
/** handler structure */
- RTPDynamicProtocolHandler *dynamic_handler;
+ const RTPDynamicProtocolHandler *dynamic_handler;
/** private data associated with the dynamic protocol */
PayloadContext *dynamic_protocol_context;
diff --git a/chromium/third_party/ffmpeg/libavformat/rtspdec.c b/chromium/third_party/ffmpeg/libavformat/rtspdec.c
index fdf75a0979f..32dff2319c5 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtspdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtspdec.c
@@ -644,7 +644,7 @@ static int rtsp_listen(AVFormatContext *s)
/* extract hostname and port */
av_url_split(proto, sizeof(proto), auth, sizeof(auth), host, sizeof(host),
- &port, path, sizeof(path), s->filename);
+ &port, path, sizeof(path), s->url);
/* ff_url_join. No authorization by now (NULL) */
ff_url_join(rt->control_uri, sizeof(rt->control_uri), proto, NULL, host,
@@ -804,7 +804,7 @@ static int resetup_tcp(AVFormatContext *s)
int port;
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port, NULL, 0,
- s->filename);
+ s->url);
ff_rtsp_undo_setup(s, 0);
return ff_rtsp_make_setup_request(s, host, port, RTSP_LOWER_TRANSPORT_TCP,
rt->real_challenge);
diff --git a/chromium/third_party/ffmpeg/libavformat/rtspenc.c b/chromium/third_party/ffmpeg/libavformat/rtspenc.c
index e7707bb5fb4..97e3ef6da3c 100644
--- a/chromium/third_party/ffmpeg/libavformat/rtspenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/rtspenc.c
@@ -50,6 +50,7 @@ int ff_rtsp_setup_output_streams(AVFormatContext *s, const char *addr)
int i;
char *sdp;
AVFormatContext sdp_ctx, *ctx_array[1];
+ char url[1024];
if (s->start_time_realtime == 0 || s->start_time_realtime == AV_NOPTS_VALUE)
s->start_time_realtime = av_gettime();
@@ -71,7 +72,8 @@ int ff_rtsp_setup_output_streams(AVFormatContext *s, const char *addr)
* flexible SDP creation interface.
*/
sdp_ctx = *s;
- ff_url_join(sdp_ctx.filename, sizeof(sdp_ctx.filename),
+ sdp_ctx.url = url;
+ ff_url_join(url, sizeof(url),
"rtsp", NULL, addr, -1, NULL);
ctx_array[0] = &sdp_ctx;
if (av_sdp_create(ctx_array, 1, sdp, SDP_MAX_SIZE)) {
diff --git a/chromium/third_party/ffmpeg/libavformat/sapdec.c b/chromium/third_party/ffmpeg/libavformat/sapdec.c
index 522b38d10a2..7a6c8bf1761 100644
--- a/chromium/third_party/ffmpeg/libavformat/sapdec.c
+++ b/chromium/third_party/ffmpeg/libavformat/sapdec.c
@@ -74,7 +74,7 @@ static int sap_read_header(AVFormatContext *s)
return AVERROR(EIO);
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
- path, sizeof(path), s->filename);
+ path, sizeof(path), s->url);
if (port < 0)
port = 9875;
diff --git a/chromium/third_party/ffmpeg/libavformat/sapenc.c b/chromium/third_party/ffmpeg/libavformat/sapenc.c
index 3098e340ca9..f9afab0c33e 100644
--- a/chromium/third_party/ffmpeg/libavformat/sapenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/sapenc.c
@@ -84,7 +84,7 @@ static int sap_write_header(AVFormatContext *s)
/* extract hostname and port */
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &base_port,
- path, sizeof(path), s->filename);
+ path, sizeof(path), s->url);
if (base_port < 0)
base_port = 5004;
@@ -144,6 +144,7 @@ static int sap_write_header(AVFormatContext *s)
s->start_time_realtime = av_gettime();
for (i = 0; i < s->nb_streams; i++) {
URLContext *fd;
+ char *new_url;
ff_url_join(url, sizeof(url), "rtp", NULL, host, base_port,
"?ttl=%d", ttl);
@@ -161,7 +162,12 @@ static int sap_write_header(AVFormatContext *s)
goto fail;
s->streams[i]->priv_data = contexts[i];
s->streams[i]->time_base = contexts[i]->streams[0]->time_base;
- av_strlcpy(contexts[i]->filename, url, sizeof(contexts[i]->filename));
+ new_url = av_strdup(url);
+ if (!new_url) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+ ff_format_set_url(contexts[i], new_url);
}
if (s->nb_streams > 0 && title)
diff --git a/chromium/third_party/ffmpeg/libavformat/sbcdec.c b/chromium/third_party/ffmpeg/libavformat/sbcdec.c
new file mode 100644
index 00000000000..ae74a220dc8
--- /dev/null
+++ b/chromium/third_party/ffmpeg/libavformat/sbcdec.c
@@ -0,0 +1,33 @@
+/*
+ * RAW SBC demuxer
+ * Copyright (C) 2017 Aurelien Jacobs <aurel@gnuage.org>
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU 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 "avformat.h"
+#include "rawdec.h"
+
+AVInputFormat ff_sbc_demuxer = {
+ .name = "sbc",
+ .long_name = NULL_IF_CONFIG_SMALL("raw SBC (low-complexity subband codec)"),
+ .extensions = "sbc,msbc",
+ .raw_codec_id = AV_CODEC_ID_SBC,
+ .read_header = ff_raw_audio_read_header,
+ .read_packet = ff_raw_read_partial_packet,
+ .flags = AVFMT_GENERIC_INDEX,
+};
diff --git a/chromium/third_party/ffmpeg/libavformat/sdp.c b/chromium/third_party/ffmpeg/libavformat/sdp.c
index e7149167a14..a5d202e99cb 100644
--- a/chromium/third_party/ffmpeg/libavformat/sdp.c
+++ b/chromium/third_party/ffmpeg/libavformat/sdp.c
@@ -784,7 +784,7 @@ int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size)
port = 0;
ttl = 0;
if (n_files == 1) {
- port = sdp_get_address(dst, sizeof(dst), &ttl, ac[0]->filename);
+ port = sdp_get_address(dst, sizeof(dst), &ttl, ac[0]->url ? ac[0]->url : "");
is_multicast = resolve_destination(dst, sizeof(dst), dst_type,
sizeof(dst_type));
if (!is_multicast)
@@ -804,7 +804,7 @@ int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size)
dst[0] = 0;
for (i = 0; i < n_files; i++) {
if (n_files != 1) {
- port = sdp_get_address(dst, sizeof(dst), &ttl, ac[i]->filename);
+ port = sdp_get_address(dst, sizeof(dst), &ttl, ac[i]->url ? ac[i]->url : "");
is_multicast = resolve_destination(dst, sizeof(dst), dst_type,
sizeof(dst_type));
if (!is_multicast)
diff --git a/chromium/third_party/ffmpeg/libavformat/segment.c b/chromium/third_party/ffmpeg/libavformat/segment.c
index 81d3f1d9408..7fb4dc7d212 100644
--- a/chromium/third_party/ffmpeg/libavformat/segment.c
+++ b/chromium/third_party/ffmpeg/libavformat/segment.c
@@ -192,6 +192,8 @@ static int set_segment_filename(AVFormatContext *s)
AVFormatContext *oc = seg->avf;
size_t size;
int ret;
+ char buf[1024];
+ char *new_name;
if (seg->segment_idx_wrap)
seg->segment_idx %= seg->segment_idx_wrap;
@@ -200,18 +202,22 @@ static int set_segment_filename(AVFormatContext *s)
struct tm *tm, tmpbuf;
time(&now0);
tm = localtime_r(&now0, &tmpbuf);
- if (!strftime(oc->filename, sizeof(oc->filename), s->filename, tm)) {
+ if (!strftime(buf, sizeof(buf), s->url, tm)) {
av_log(oc, AV_LOG_ERROR, "Could not get segment filename with strftime\n");
return AVERROR(EINVAL);
}
- } else if (av_get_frame_filename(oc->filename, sizeof(oc->filename),
- s->filename, seg->segment_idx) < 0) {
- av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->filename);
+ } else if (av_get_frame_filename(buf, sizeof(buf),
+ s->url, seg->segment_idx) < 0) {
+ av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->url);
return AVERROR(EINVAL);
}
+ new_name = av_strdup(buf);
+ if (!new_name)
+ return AVERROR(ENOMEM);
+ ff_format_set_url(oc, new_name);
/* copy modified name in list entry */
- size = strlen(av_basename(oc->filename)) + 1;
+ size = strlen(av_basename(oc->url)) + 1;
if (seg->entry_prefix)
size += strlen(seg->entry_prefix);
@@ -219,7 +225,7 @@ static int set_segment_filename(AVFormatContext *s)
return ret;
snprintf(seg->cur_entry.filename, size, "%s%s",
seg->entry_prefix ? seg->entry_prefix : "",
- av_basename(oc->filename));
+ av_basename(oc->url));
return 0;
}
@@ -245,8 +251,8 @@ static int segment_start(AVFormatContext *s, int write_header)
if ((err = set_segment_filename(s)) < 0)
return err;
- if ((err = s->io_open(s, &oc->pb, oc->filename, AVIO_FLAG_WRITE, NULL)) < 0) {
- av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->filename);
+ if ((err = s->io_open(s, &oc->pb, oc->url, AVIO_FLAG_WRITE, NULL)) < 0) {
+ av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->url);
return err;
}
if (!seg->individual_header_trailer)
@@ -360,7 +366,7 @@ static int segment_end(AVFormatContext *s, int write_trailer, int is_last)
if (ret < 0)
av_log(s, AV_LOG_ERROR, "Failure occurred when ending segment '%s'\n",
- oc->filename);
+ oc->url);
if (seg->list) {
if (seg->list_size || seg->list_type == LIST_TYPE_M3U8) {
@@ -403,7 +409,7 @@ static int segment_end(AVFormatContext *s, int write_trailer, int is_last)
}
av_log(s, AV_LOG_VERBOSE, "segment:'%s' count:%d ended\n",
- seg->avf->filename, seg->segment_count);
+ seg->avf->url, seg->segment_count);
seg->segment_count++;
if (seg->increment_tc) {
@@ -726,7 +732,7 @@ static int seg_init(AVFormatContext *s)
seg->reference_stream_index,
av_get_media_type_string(s->streams[seg->reference_stream_index]->codecpar->codec_type));
- seg->oformat = av_guess_format(seg->format, s->filename, NULL);
+ seg->oformat = av_guess_format(seg->format, s->url, NULL);
if (!seg->oformat)
return AVERROR_MUXER_NOT_FOUND;
@@ -745,9 +751,9 @@ static int seg_init(AVFormatContext *s)
if (seg->write_header_trailer) {
if ((ret = s->io_open(s, &oc->pb,
- seg->header_filename ? seg->header_filename : oc->filename,
+ seg->header_filename ? seg->header_filename : oc->url,
AVIO_FLAG_WRITE, NULL)) < 0) {
- av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->filename);
+ av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->url);
return ret;
}
if (!seg->individual_header_trailer)
@@ -830,7 +836,7 @@ static int seg_write_header(AVFormatContext *s)
} else {
close_null_ctxp(&oc->pb);
}
- if ((ret = oc->io_open(oc, &oc->pb, oc->filename, AVIO_FLAG_WRITE, NULL)) < 0)
+ if ((ret = oc->io_open(oc, &oc->pb, oc->url, AVIO_FLAG_WRITE, NULL)) < 0)
return ret;
if (!seg->individual_header_trailer)
oc->pb->seekable = 0;
@@ -917,7 +923,7 @@ calc_times:
if (seg->segment_frame_count == 0) {
av_log(s, AV_LOG_VERBOSE, "segment:'%s' starts with packet stream:%d pts:%s pts_time:%s frame:%d\n",
- seg->avf->filename, pkt->stream_index,
+ seg->avf->url, pkt->stream_index,
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), seg->frame_count);
}
@@ -1058,6 +1064,7 @@ static const AVOption options[] = {
{ NULL },
};
+#if CONFIG_SEGMENT_MUXER
static const AVClass seg_class = {
.class_name = "segment muxer",
.item_name = av_default_item_name,
@@ -1078,7 +1085,9 @@ AVOutputFormat ff_segment_muxer = {
.check_bitstream = seg_check_bitstream,
.priv_class = &seg_class,
};
+#endif
+#if CONFIG_STREAM_SEGMENT_MUXER
static const AVClass sseg_class = {
.class_name = "stream_segment muxer",
.item_name = av_default_item_name,
@@ -1099,3 +1108,4 @@ AVOutputFormat ff_stream_segment_muxer = {
.check_bitstream = seg_check_bitstream,
.priv_class = &sseg_class,
};
+#endif
diff --git a/chromium/third_party/ffmpeg/libavformat/smoothstreamingenc.c b/chromium/third_party/ffmpeg/libavformat/smoothstreamingenc.c
index 54a1c49caae..094712af27d 100644
--- a/chromium/third_party/ffmpeg/libavformat/smoothstreamingenc.c
+++ b/chromium/third_party/ffmpeg/libavformat/smoothstreamingenc.c
@@ -221,8 +221,8 @@ static int write_manifest(AVFormatContext *s, int final)
int ret, i, video_chunks = 0, audio_chunks = 0, video_streams = 0, audio_streams = 0;
int64_t duration = 0;
- snprintf(filename, sizeof(filename), "%s/Manifest", s->filename);
- snprintf(temp_filename, sizeof(temp_filename), "%s/Manifest.tmp", s->filename);
+ snprintf(filename, sizeof(filename), "%s/Manifest", s->url);
+ snprintf(temp_filename, sizeof(temp_filename), "%s/Manifest.tmp", s->url);
ret = s->io_open(s, &out, temp_filename, AVIO_FLAG_WRITE, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename);
@@ -295,7 +295,7 @@ static int ism_write_header(AVFormatContext *s)
int ret = 0, i;
AVOutputFormat *oformat;
- if (mkdir(s->filename, 0777) == -1 && errno != EEXIST) {
+ if (mkdir(s->url, 0777) == -1 && errno != EEXIST) {
ret = AVERROR(errno);
av_log(s, AV_LOG_ERROR, "mkdir failed\n");
goto fail;
@@ -324,7 +324,7 @@ static int ism_write_header(AVFormatContext *s)
ret = AVERROR(EINVAL);
goto fail;
}
- snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(%"PRId64")", s->filename, s->streams[i]->codecpar->bit_rate);
+ snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(%"PRId64")", s->url, s->streams[i]->codecpar->bit_rate);
if (mkdir(os->dirname, 0777) == -1 && errno != EEXIST) {
ret = AVERROR(errno);
av_log(s, AV_LOG_ERROR, "mkdir failed\n");
@@ -609,9 +609,9 @@ static int ism_write_trailer(AVFormatContext *s)
if (c->remove_at_exit) {
char filename[1024];
- snprintf(filename, sizeof(filename), "%s/Manifest", s->filename);
+ snprintf(filename, sizeof(filename), "%s/Manifest", s->url);
unlink(filename);
- rmdir(s->filename);
+ rmdir(s->url);
}
ism_free(s);
diff --git a/chromium/third_party/ffmpeg/libavformat/tee.c b/chromium/third_party/ffmpeg/libavformat/tee.c
index dd1844ac0e1..ef3b113a471 100644
--- a/chromium/third_party/ffmpeg/libavformat/tee.c
+++ b/chromium/third_party/ffmpeg/libavformat/tee.c
@@ -406,7 +406,7 @@ static void log_slave(TeeSlave *slave, void *log_ctx, int log_level)
{
int i;
av_log(log_ctx, log_level, "filename:'%s' format:%s\n",
- slave->avf->filename, slave->avf->oformat->name);
+ slave->avf->url, slave->avf->oformat->name);
for (i = 0; i < slave->avf->nb_streams; i++) {
AVStream *st = slave->avf->streams[i];
AVBSFContext *bsf = slave->bsfs[i];
@@ -448,7 +448,7 @@ static int tee_write_header(AVFormatContext *avf)
{
TeeContext *tee = avf->priv_data;
unsigned nb_slaves = 0, i;
- const char *filename = avf->filename;
+ const char *filename = avf->url;
char **slaves = NULL;
int ret;
diff --git a/chromium/third_party/ffmpeg/libavformat/tls.h b/chromium/third_party/ffmpeg/libavformat/tls.h
index 9c851bf1327..beb19d6d557 100644
--- a/chromium/third_party/ffmpeg/libavformat/tls.h
+++ b/chromium/third_party/ffmpeg/libavformat/tls.h
@@ -22,10 +22,10 @@
#ifndef AVFORMAT_TLS_H
#define AVFORMAT_TLS_H
-#include "config.h"
-#include "url.h"
#include "libavutil/opt.h"
+#include "url.h"
+
typedef struct TLSShared {
char *ca_file;
int verify;
diff --git a/chromium/third_party/ffmpeg/libavformat/tls_libtls.c b/chromium/third_party/ffmpeg/libavformat/tls_libtls.c
index 1321f79229f..ba83b56ffe2 100644
--- a/chromium/third_party/ffmpeg/libavformat/tls_libtls.c
+++ b/chromium/third_party/ffmpeg/libavformat/tls_libtls.c
@@ -119,7 +119,7 @@ static int ff_tls_open(URLContext *h, const char *uri, int flags, AVDictionary *
if (!c->listen) {
ret = tls_connect_cbs(p->ctx, tls_read_callback, tls_write_callback,
- c->tcp, !c->numerichost ? c->host : NULL);
+ c->tcp, c->host);
} else {
struct tls *ctx_new;
ret = tls_accept_cbs(p->ctx, &ctx_new, tls_read_callback,
diff --git a/chromium/third_party/ffmpeg/libavformat/utils.c b/chromium/third_party/ffmpeg/libavformat/utils.c
index 000fe88f17d..259549476dc 100644
--- a/chromium/third_party/ffmpeg/libavformat/utils.c
+++ b/chromium/third_party/ffmpeg/libavformat/utils.c
@@ -555,7 +555,16 @@ int avformat_open_input(AVFormatContext **ps, const char *filename,
if ((ret = av_opt_set_dict(s, &tmp)) < 0)
goto fail;
+ if (!(s->url = av_strdup(filename ? filename : ""))) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+
+#if FF_API_FORMAT_FILENAME
+FF_DISABLE_DEPRECATION_WARNINGS
av_strlcpy(s->filename, filename ? filename : "", sizeof(s->filename));
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
if ((ret = init_input(s, filename, &tmp)) < 0)
goto fail;
s->probe_score = ret;
@@ -637,6 +646,8 @@ int avformat_open_input(AVFormatContext **ps, const char *filename,
goto fail;
if ((ret = ff_id3v2_parse_chapters(s, &id3v2_extra_meta)) < 0)
goto fail;
+ if ((ret = ff_id3v2_parse_priv(s, &id3v2_extra_meta)) < 0)
+ goto fail;
} else
av_log(s, AV_LOG_DEBUG, "demuxer does not support additional id3 data, skipping\n");
}
@@ -858,9 +869,9 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt)
if (!pkt->buf) {
AVPacket tmp = { 0 };
- ret = av_packet_ref(&tmp, pkt);
- if (ret < 0)
- return ret;
+ err = av_packet_ref(&tmp, pkt);
+ if (err < 0)
+ return err;
*pkt = tmp;
}
@@ -922,6 +933,7 @@ static int determinable_frame_size(AVCodecContext *avctx)
case AV_CODEC_ID_MP1:
case AV_CODEC_ID_MP2:
case AV_CODEC_ID_MP3:
+ case AV_CODEC_ID_CODEC2:
return 1;
}
@@ -2054,7 +2066,7 @@ void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance)
int64_t pos_delta = 0;
int64_t skip = 0;
//We could use URLProtocol flags here but as many user applications do not use URLProtocols this would be unreliable
- const char *proto = avio_find_protocol_name(s->filename);
+ const char *proto = avio_find_protocol_name(s->url);
if (!proto) {
av_log(s, AV_LOG_INFO,
@@ -3231,23 +3243,20 @@ static int tb_unreliable(AVCodecContext *c)
int ff_alloc_extradata(AVCodecParameters *par, int size)
{
- int ret;
+ av_freep(&par->extradata);
+ par->extradata_size = 0;
- if (size < 0 || size >= INT32_MAX - AV_INPUT_BUFFER_PADDING_SIZE) {
- par->extradata = NULL;
- par->extradata_size = 0;
+ if (size < 0 || size >= INT32_MAX - AV_INPUT_BUFFER_PADDING_SIZE)
return AVERROR(EINVAL);
- }
+
par->extradata = av_malloc(size + AV_INPUT_BUFFER_PADDING_SIZE);
- if (par->extradata) {
- memset(par->extradata + size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
- par->extradata_size = size;
- ret = 0;
- } else {
- par->extradata_size = 0;
- ret = AVERROR(ENOMEM);
- }
- return ret;
+ if (!par->extradata)
+ return AVERROR(ENOMEM);
+
+ memset(par->extradata + size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+ par->extradata_size = size;
+
+ return 0;
}
int ff_get_extradata(AVFormatContext *s, AVCodecParameters *par, AVIOContext *pb, int size)
@@ -3769,7 +3778,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
if (st->info->fps_last_dts != AV_NOPTS_VALUE &&
st->info->fps_last_dts_idx > st->info->fps_first_dts_idx &&
(pkt->dts - st->info->fps_last_dts) / 1000 >
- (st->info->fps_last_dts - st->info->fps_first_dts) /
+ (st->info->fps_last_dts - (uint64_t)st->info->fps_first_dts) /
(st->info->fps_last_dts_idx - st->info->fps_first_dts_idx)) {
av_log(ic, AV_LOG_WARNING,
"DTS discontinuity in stream %d: packet %d with DTS "
@@ -4369,6 +4378,7 @@ void avformat_free_context(AVFormatContext *s)
av_freep(&s->streams);
flush_packet_queue(s);
av_freep(&s->internal);
+ av_freep(&s->url);
av_free(s);
}
@@ -5634,3 +5644,15 @@ FF_ENABLE_DEPRECATION_WARNINGS
return st->internal->avctx->time_base;
#endif
}
+
+void ff_format_set_url(AVFormatContext *s, char *url)
+{
+ av_assert0(url);
+ av_freep(&s->url);
+ s->url = url;
+#if FF_API_FORMAT_FILENAME
+FF_DISABLE_DEPRECATION_WARNINGS
+ av_strlcpy(s->filename, url, sizeof(s->filename));
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+}
diff --git a/chromium/third_party/ffmpeg/libavformat/version.h b/chromium/third_party/ffmpeg/libavformat/version.h
index 87758b027ce..e28a9e7dfec 100644
--- a/chromium/third_party/ffmpeg/libavformat/version.h
+++ b/chromium/third_party/ffmpeg/libavformat/version.h
@@ -32,7 +32,7 @@
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
// Also please add any ticket numbers that you believe might be affected here
#define LIBAVFORMAT_VERSION_MAJOR 58
-#define LIBAVFORMAT_VERSION_MINOR 5
+#define LIBAVFORMAT_VERSION_MINOR 10
#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
@@ -85,6 +85,15 @@
#ifndef FF_API_LAVF_FFSERVER
#define FF_API_LAVF_FFSERVER (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
+#ifndef FF_API_FORMAT_FILENAME
+#define FF_API_FORMAT_FILENAME (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif
+#ifndef FF_API_OLD_RTSP_OPTIONS
+#define FF_API_OLD_RTSP_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif
+#ifndef FF_API_NEXT
+#define FF_API_NEXT (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif
#ifndef FF_API_R_FRAME_RATE
diff --git a/chromium/third_party/ffmpeg/libavformat/webm_chunk.c b/chromium/third_party/ffmpeg/libavformat/webm_chunk.c
index f8dbaa33395..549ec2879a5 100644
--- a/chromium/third_party/ffmpeg/libavformat/webm_chunk.c
+++ b/chromium/third_party/ffmpeg/libavformat/webm_chunk.c
@@ -99,8 +99,8 @@ static int get_chunk_filename(AVFormatContext *s, int is_header, char *filename)
av_strlcpy(filename, wc->header_filename, strlen(wc->header_filename) + 1);
} else {
if (av_get_frame_filename(filename, MAX_FILENAME_SIZE,
- s->filename, wc->chunk_index - 1) < 0) {
- av_log(oc, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n", s->filename);
+ s->url, wc->chunk_index - 1) < 0) {
+ av_log(oc, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n", s->url);
return AVERROR(EINVAL);
}
}
@@ -119,7 +119,7 @@ static int webm_chunk_write_header(AVFormatContext *s)
if (s->nb_streams != 1) { return AVERROR_INVALIDDATA; }
wc->chunk_index = wc->chunk_start_index;
- wc->oformat = av_guess_format("webm", s->filename, "video/webm");
+ wc->oformat = av_guess_format("webm", s->url, "video/webm");
if (!wc->oformat)
return AVERROR_MUXER_NOT_FOUND;
@@ -127,12 +127,12 @@ static int webm_chunk_write_header(AVFormatContext *s)
if (ret < 0)
return ret;
oc = wc->avf;
- ret = get_chunk_filename(s, 1, oc->filename);
+ ret = get_chunk_filename(s, 1, oc->url);
if (ret < 0)
return ret;
if (wc->http_method)
av_dict_set(&options, "method", wc->http_method, 0);
- ret = s->io_open(s, &oc->pb, oc->filename, AVIO_FLAG_WRITE, &options);
+ ret = s->io_open(s, &oc->pb, oc->url, AVIO_FLAG_WRITE, &options);
av_dict_free(&options);
if (ret < 0)
return ret;
diff --git a/chromium/third_party/ffmpeg/libavutil/aarch64/cpu.h b/chromium/third_party/ffmpeg/libavutil/aarch64/cpu.h
index cf1b9cc5168..2ee3f9323af 100644
--- a/chromium/third_party/ffmpeg/libavutil/aarch64/cpu.h
+++ b/chromium/third_party/ffmpeg/libavutil/aarch64/cpu.h
@@ -19,7 +19,6 @@
#ifndef AVUTIL_AARCH64_CPU_H
#define AVUTIL_AARCH64_CPU_H
-#include "config.h"
#include "libavutil/cpu.h"
#include "libavutil/cpu_internal.h"
diff --git a/chromium/third_party/ffmpeg/libavutil/aes_ctr.c b/chromium/third_party/ffmpeg/libavutil/aes_ctr.c
index e9c568fe0d1..0c2e86785f1 100644
--- a/chromium/third_party/ffmpeg/libavutil/aes_ctr.c
+++ b/chromium/third_party/ffmpeg/libavutil/aes_ctr.c
@@ -45,6 +45,12 @@ void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv)
a->block_offset = 0;
}
+void av_aes_ctr_set_full_iv(struct AVAESCTR *a, const uint8_t* iv)
+{
+ memcpy(a->counter, iv, sizeof(a->counter));
+ a->block_offset = 0;
+}
+
const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a)
{
return a->counter;
diff --git a/chromium/third_party/ffmpeg/libavutil/aes_ctr.h b/chromium/third_party/ffmpeg/libavutil/aes_ctr.h
index f596fa6a46b..e4aae126a76 100644
--- a/chromium/third_party/ffmpeg/libavutil/aes_ctr.h
+++ b/chromium/third_party/ffmpeg/libavutil/aes_ctr.h
@@ -67,11 +67,16 @@ const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a);
void av_aes_ctr_set_random_iv(struct AVAESCTR *a);
/**
- * Forcefully change the iv
+ * Forcefully change the 8-byte iv
*/
void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv);
/**
+ * Forcefully change the "full" 16-byte iv, including the counter
+ */
+void av_aes_ctr_set_full_iv(struct AVAESCTR *a, const uint8_t* iv);
+
+/**
* Increment the top 64 bit of the iv (performed after each frame)
*/
void av_aes_ctr_increment_iv(struct AVAESCTR *a);
diff --git a/chromium/third_party/ffmpeg/libavutil/arm/cpu.h b/chromium/third_party/ffmpeg/libavutil/arm/cpu.h
index eb64ed5fcd1..1d6cc65dc48 100644
--- a/chromium/third_party/ffmpeg/libavutil/arm/cpu.h
+++ b/chromium/third_party/ffmpeg/libavutil/arm/cpu.h
@@ -19,7 +19,6 @@
#ifndef AVUTIL_ARM_CPU_H
#define AVUTIL_ARM_CPU_H
-#include "config.h"
#include "libavutil/cpu.h"
#include "libavutil/cpu_internal.h"
diff --git a/chromium/third_party/ffmpeg/libavutil/common.h b/chromium/third_party/ffmpeg/libavutil/common.h
index 5e0382827b0..0fffa67714e 100644
--- a/chromium/third_party/ffmpeg/libavutil/common.h
+++ b/chromium/third_party/ffmpeg/libavutil/common.h
@@ -158,7 +158,7 @@ static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, in
*/
static av_always_inline av_const uint8_t av_clip_uint8_c(int a)
{
- if (a&(~0xFF)) return (-a)>>31;
+ if (a&(~0xFF)) return (~a)>>31;
else return a;
}
@@ -180,7 +180,7 @@ static av_always_inline av_const int8_t av_clip_int8_c(int a)
*/
static av_always_inline av_const uint16_t av_clip_uint16_c(int a)
{
- if (a&(~0xFFFF)) return (-a)>>31;
+ if (a&(~0xFFFF)) return (~a)>>31;
else return a;
}
diff --git a/chromium/third_party/ffmpeg/libavutil/cpu_internal.h b/chromium/third_party/ffmpeg/libavutil/cpu_internal.h
index b8bf1e53964..37122d1c5f5 100644
--- a/chromium/third_party/ffmpeg/libavutil/cpu_internal.h
+++ b/chromium/third_party/ffmpeg/libavutil/cpu_internal.h
@@ -19,6 +19,8 @@
#ifndef AVUTIL_CPU_INTERNAL_H
#define AVUTIL_CPU_INTERNAL_H
+#include "config.h"
+
#include "cpu.h"
#define CPUEXT_SUFFIX(flags, suffix, cpuext) \
diff --git a/chromium/third_party/ffmpeg/libavutil/crc.c b/chromium/third_party/ffmpeg/libavutil/crc.c
index d44550c9c00..c45ea63a622 100644
--- a/chromium/third_party/ffmpeg/libavutil/crc.c
+++ b/chromium/third_party/ffmpeg/libavutil/crc.c
@@ -52,6 +52,30 @@ static const AVCRC av_crc_table[AV_CRC_MAX][257] = {
0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF,
0xFA, 0xFD, 0xF4, 0xF3, 0x01
},
+ [AV_CRC_8_EBU] = {
+ 0x00, 0x1D, 0x3A, 0x27, 0x74, 0x69, 0x4E, 0x53, 0xE8, 0xF5, 0xD2, 0xCF,
+ 0x9C, 0x81, 0xA6, 0xBB, 0xCD, 0xD0, 0xF7, 0xEA, 0xB9, 0xA4, 0x83, 0x9E,
+ 0x25, 0x38, 0x1F, 0x02, 0x51, 0x4C, 0x6B, 0x76, 0x87, 0x9A, 0xBD, 0xA0,
+ 0xF3, 0xEE, 0xC9, 0xD4, 0x6F, 0x72, 0x55, 0x48, 0x1B, 0x06, 0x21, 0x3C,
+ 0x4A, 0x57, 0x70, 0x6D, 0x3E, 0x23, 0x04, 0x19, 0xA2, 0xBF, 0x98, 0x85,
+ 0xD6, 0xCB, 0xEC, 0xF1, 0x13, 0x0E, 0x29, 0x34, 0x67, 0x7A, 0x5D, 0x40,
+ 0xFB, 0xE6, 0xC1, 0xDC, 0x8F, 0x92, 0xB5, 0xA8, 0xDE, 0xC3, 0xE4, 0xF9,
+ 0xAA, 0xB7, 0x90, 0x8D, 0x36, 0x2B, 0x0C, 0x11, 0x42, 0x5F, 0x78, 0x65,
+ 0x94, 0x89, 0xAE, 0xB3, 0xE0, 0xFD, 0xDA, 0xC7, 0x7C, 0x61, 0x46, 0x5B,
+ 0x08, 0x15, 0x32, 0x2F, 0x59, 0x44, 0x63, 0x7E, 0x2D, 0x30, 0x17, 0x0A,
+ 0xB1, 0xAC, 0x8B, 0x96, 0xC5, 0xD8, 0xFF, 0xE2, 0x26, 0x3B, 0x1C, 0x01,
+ 0x52, 0x4F, 0x68, 0x75, 0xCE, 0xD3, 0xF4, 0xE9, 0xBA, 0xA7, 0x80, 0x9D,
+ 0xEB, 0xF6, 0xD1, 0xCC, 0x9F, 0x82, 0xA5, 0xB8, 0x03, 0x1E, 0x39, 0x24,
+ 0x77, 0x6A, 0x4D, 0x50, 0xA1, 0xBC, 0x9B, 0x86, 0xD5, 0xC8, 0xEF, 0xF2,
+ 0x49, 0x54, 0x73, 0x6E, 0x3D, 0x20, 0x07, 0x1A, 0x6C, 0x71, 0x56, 0x4B,
+ 0x18, 0x05, 0x22, 0x3F, 0x84, 0x99, 0xBE, 0xA3, 0xF0, 0xED, 0xCA, 0xD7,
+ 0x35, 0x28, 0x0F, 0x12, 0x41, 0x5C, 0x7B, 0x66, 0xDD, 0xC0, 0xE7, 0xFA,
+ 0xA9, 0xB4, 0x93, 0x8E, 0xF8, 0xE5, 0xC2, 0xDF, 0x8C, 0x91, 0xB6, 0xAB,
+ 0x10, 0x0D, 0x2A, 0x37, 0x64, 0x79, 0x5E, 0x43, 0xB2, 0xAF, 0x88, 0x95,
+ 0xC6, 0xDB, 0xFC, 0xE1, 0x5A, 0x47, 0x60, 0x7D, 0x2E, 0x33, 0x14, 0x09,
+ 0x7F, 0x62, 0x45, 0x58, 0x0B, 0x16, 0x31, 0x2C, 0x97, 0x8A, 0xAD, 0xB0,
+ 0xE3, 0xFE, 0xD9, 0xC4, 0x01
+ },
[AV_CRC_16_ANSI] = {
0x0000, 0x0580, 0x0F80, 0x0A00, 0x1B80, 0x1E00, 0x1400, 0x1180,
0x3380, 0x3600, 0x3C00, 0x3980, 0x2800, 0x2D80, 0x2780, 0x2200,
@@ -305,6 +329,7 @@ static void id ## _init_table_once(void)
#define CRC_INIT_TABLE_ONCE(id) ff_thread_once(&id ## _once_control, id ## _init_table_once)
DECLARE_CRC_INIT_TABLE_ONCE(AV_CRC_8_ATM, 0, 8, 0x07)
+DECLARE_CRC_INIT_TABLE_ONCE(AV_CRC_8_EBU, 0, 8, 0x1D)
DECLARE_CRC_INIT_TABLE_ONCE(AV_CRC_16_ANSI, 0, 16, 0x8005)
DECLARE_CRC_INIT_TABLE_ONCE(AV_CRC_16_CCITT, 0, 16, 0x1021)
DECLARE_CRC_INIT_TABLE_ONCE(AV_CRC_24_IEEE, 0, 24, 0x864CFB)
@@ -351,6 +376,7 @@ const AVCRC *av_crc_get_table(AVCRCId crc_id)
#if !CONFIG_HARDCODED_TABLES
switch (crc_id) {
case AV_CRC_8_ATM: CRC_INIT_TABLE_ONCE(AV_CRC_8_ATM); break;
+ case AV_CRC_8_EBU: CRC_INIT_TABLE_ONCE(AV_CRC_8_EBU); break;
case AV_CRC_16_ANSI: CRC_INIT_TABLE_ONCE(AV_CRC_16_ANSI); break;
case AV_CRC_16_CCITT: CRC_INIT_TABLE_ONCE(AV_CRC_16_CCITT); break;
case AV_CRC_24_IEEE: CRC_INIT_TABLE_ONCE(AV_CRC_24_IEEE); break;
diff --git a/chromium/third_party/ffmpeg/libavutil/crc.h b/chromium/third_party/ffmpeg/libavutil/crc.h
index fe9a7c8fcbf..47e22b4c787 100644
--- a/chromium/third_party/ffmpeg/libavutil/crc.h
+++ b/chromium/third_party/ffmpeg/libavutil/crc.h
@@ -54,6 +54,7 @@ typedef enum {
AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */
AV_CRC_16_ANSI_LE, /*< reversed bitorder version of AV_CRC_16_ANSI */
AV_CRC_24_IEEE,
+ AV_CRC_8_EBU,
AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */
}AVCRCId;
diff --git a/chromium/third_party/ffmpeg/libavutil/frame.c b/chromium/third_party/ffmpeg/libavutil/frame.c
index 662a7e5ab5c..61c45f0f532 100644
--- a/chromium/third_party/ffmpeg/libavutil/frame.c
+++ b/chromium/third_party/ffmpeg/libavutil/frame.c
@@ -26,11 +26,6 @@
#include "mem.h"
#include "samplefmt.h"
-
-static AVFrameSideData *frame_new_side_data(AVFrame *frame,
- enum AVFrameSideDataType type,
- AVBufferRef *buf);
-
#if FF_API_FRAME_GET_SET
MAKE_ACCESSORS(AVFrame, frame, int64_t, best_effort_timestamp)
MAKE_ACCESSORS(AVFrame, frame, int64_t, pkt_duration)
@@ -356,8 +351,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
}
memcpy(sd_dst->data, sd_src->data, sd_src->size);
} else {
- sd_dst = frame_new_side_data(dst, sd_src->type, av_buffer_ref(sd_src->buf));
+ AVBufferRef *ref = av_buffer_ref(sd_src->buf);
+ sd_dst = av_frame_new_side_data_from_buf(dst, sd_src->type, ref);
if (!sd_dst) {
+ av_buffer_unref(&ref);
wipe_side_data(dst);
return AVERROR(ENOMEM);
}
@@ -642,9 +639,9 @@ AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane)
return NULL;
}
-static AVFrameSideData *frame_new_side_data(AVFrame *frame,
- enum AVFrameSideDataType type,
- AVBufferRef *buf)
+AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame,
+ enum AVFrameSideDataType type,
+ AVBufferRef *buf)
{
AVFrameSideData *ret, **tmp;
@@ -652,17 +649,17 @@ static AVFrameSideData *frame_new_side_data(AVFrame *frame,
return NULL;
if (frame->nb_side_data > INT_MAX / sizeof(*frame->side_data) - 1)
- goto fail;
+ return NULL;
tmp = av_realloc(frame->side_data,
(frame->nb_side_data + 1) * sizeof(*frame->side_data));
if (!tmp)
- goto fail;
+ return NULL;
frame->side_data = tmp;
ret = av_mallocz(sizeof(*ret));
if (!ret)
- goto fail;
+ return NULL;
ret->buf = buf;
ret->data = ret->buf->data;
@@ -672,17 +669,18 @@ static AVFrameSideData *frame_new_side_data(AVFrame *frame,
frame->side_data[frame->nb_side_data++] = ret;
return ret;
-fail:
- av_buffer_unref(&buf);
- return NULL;
}
AVFrameSideData *av_frame_new_side_data(AVFrame *frame,
enum AVFrameSideDataType type,
int size)
{
-
- return frame_new_side_data(frame, type, av_buffer_alloc(size));
+ AVFrameSideData *ret;
+ AVBufferRef *buf = av_buffer_alloc(size);
+ ret = av_frame_new_side_data_from_buf(frame, type, buf);
+ if (!ret)
+ av_buffer_unref(&buf);
+ return ret;
}
AVFrameSideData *av_frame_get_side_data(const AVFrame *frame,
diff --git a/chromium/third_party/ffmpeg/libavutil/frame.h b/chromium/third_party/ffmpeg/libavutil/frame.h
index d54bd9a3543..59cee8ceabc 100644
--- a/chromium/third_party/ffmpeg/libavutil/frame.h
+++ b/chromium/third_party/ffmpeg/libavutil/frame.h
@@ -801,6 +801,22 @@ AVFrameSideData *av_frame_new_side_data(AVFrame *frame,
int size);
/**
+ * Add a new side data to a frame from an existing AVBufferRef
+ *
+ * @param frame a frame to which the side data should be added
+ * @param type the type of the added side data
+ * @param buf an AVBufferRef to add as side data. The ownership of
+ * the reference is transferred to the frame.
+ *
+ * @return newly added side data on success, NULL on error. On failure
+ * the frame is unchanged and the AVBufferRef remains owned by
+ * the caller.
+ */
+AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame,
+ enum AVFrameSideDataType type,
+ AVBufferRef *buf);
+
+/**
* @return a pointer to the side data of a given type on success, NULL if there
* is no side data with such type in this frame.
*/
diff --git a/chromium/third_party/ffmpeg/libavutil/hash.c b/chromium/third_party/ffmpeg/libavutil/hash.c
index 7037b0d6ff7..75edb6db788 100644
--- a/chromium/third_party/ffmpeg/libavutil/hash.c
+++ b/chromium/third_party/ffmpeg/libavutil/hash.c
@@ -155,7 +155,11 @@ void av_hash_init(AVHashContext *ctx)
}
}
+#if FF_API_CRYPTO_SIZE_T
void av_hash_update(AVHashContext *ctx, const uint8_t *src, int len)
+#else
+void av_hash_update(AVHashContext *ctx, const uint8_t *src, size_t len)
+#endif
{
switch (ctx->type) {
case MD5: av_md5_update(ctx->ctx, src, len); break;
diff --git a/chromium/third_party/ffmpeg/libavutil/hash.h b/chromium/third_party/ffmpeg/libavutil/hash.h
index a20b8934f19..7693e6bf0db 100644
--- a/chromium/third_party/ffmpeg/libavutil/hash.h
+++ b/chromium/third_party/ffmpeg/libavutil/hash.h
@@ -29,6 +29,8 @@
#include <stdint.h>
+#include "version.h"
+
/**
* @defgroup lavu_hash Hash Functions
* @ingroup lavu_crypto
@@ -179,7 +181,11 @@ void av_hash_init(struct AVHashContext *ctx);
* @param[in] src Data to be added to the hash context
* @param[in] len Size of the additional data
*/
+#if FF_API_CRYPTO_SIZE_T
void av_hash_update(struct AVHashContext *ctx, const uint8_t *src, int len);
+#else
+void av_hash_update(struct AVHashContext *ctx, const uint8_t *src, size_t len);
+#endif
/**
* Finalize a hash context and compute the actual hash value.
diff --git a/chromium/third_party/ffmpeg/libavutil/hwcontext.c b/chromium/third_party/ffmpeg/libavutil/hwcontext.c
index 31ac12807bf..70c556ecacb 100644
--- a/chromium/third_party/ffmpeg/libavutil/hwcontext.c
+++ b/chromium/third_party/ffmpeg/libavutil/hwcontext.c
@@ -483,8 +483,10 @@ int av_hwframe_get_buffer(AVBufferRef *hwframe_ref, AVFrame *frame, int flags)
ret = av_hwframe_get_buffer(ctx->internal->source_frames,
src_frame, 0);
- if (ret < 0)
+ if (ret < 0) {
+ av_frame_free(&src_frame);
return ret;
+ }
ret = av_hwframe_map(frame, src_frame,
ctx->internal->source_allocation_map_flags);
diff --git a/chromium/third_party/ffmpeg/libavutil/hwcontext_qsv.c b/chromium/third_party/ffmpeg/libavutil/hwcontext_qsv.c
index 6228c04de52..0fefec341f8 100644
--- a/chromium/third_party/ffmpeg/libavutil/hwcontext_qsv.c
+++ b/chromium/third_party/ffmpeg/libavutil/hwcontext_qsv.c
@@ -313,6 +313,7 @@ static int qsv_init_surface(AVHWFramesContext *ctx, mfxFrameSurface1 *surf)
surf->Info.CropH = ctx->height;
surf->Info.FrameRateExtN = 25;
surf->Info.FrameRateExtD = 1;
+ surf->Info.PicStruct = MFX_PICSTRUCT_PROGRESSIVE;
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavutil/hwcontext_vaapi.c b/chromium/third_party/ffmpeg/libavutil/hwcontext_vaapi.c
index 29698d1b278..af9a136ef05 100644
--- a/chromium/third_party/ffmpeg/libavutil/hwcontext_vaapi.c
+++ b/chromium/third_party/ffmpeg/libavutil/hwcontext_vaapi.c
@@ -110,6 +110,9 @@ static const struct {
MAP(422H, YUV422, YUV422P),
MAP(UYVY, YUV422, UYVY422),
MAP(YUY2, YUV422, YUYV422),
+ MAP(411P, YUV411, YUV411P),
+ MAP(422V, YUV422, YUV440P),
+ MAP(444P, YUV444, YUV444P),
MAP(Y800, YUV400, GRAY8),
#ifdef VA_FOURCC_P010
MAP(P010, YUV420_10BPP, P010),
@@ -472,9 +475,9 @@ static int vaapi_frames_init(AVHWFramesContext *hwfc)
int need_memory_type = !(hwctx->driver_quirks & AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE);
int need_pixel_format = 1;
for (i = 0; i < avfc->nb_attributes; i++) {
- if (ctx->attributes[i].type == VASurfaceAttribMemoryType)
+ if (avfc->attributes[i].type == VASurfaceAttribMemoryType)
need_memory_type = 0;
- if (ctx->attributes[i].type == VASurfaceAttribPixelFormat)
+ if (avfc->attributes[i].type == VASurfaceAttribPixelFormat)
need_pixel_format = 0;
}
ctx->nb_attributes =
diff --git a/chromium/third_party/ffmpeg/libavutil/intreadwrite.h b/chromium/third_party/ffmpeg/libavutil/intreadwrite.h
index 0c0309b4a72..67c763b135c 100644
--- a/chromium/third_party/ffmpeg/libavutil/intreadwrite.h
+++ b/chromium/third_party/ffmpeg/libavutil/intreadwrite.h
@@ -224,7 +224,7 @@ union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias;
# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l)
# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v))
-#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_X64)) && AV_HAVE_FAST_UNALIGNED
+#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_X64) || defined(_M_ARM64)) && AV_HAVE_FAST_UNALIGNED
# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p)))
# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v))
diff --git a/chromium/third_party/ffmpeg/libavutil/murmur3.c b/chromium/third_party/ffmpeg/libavutil/murmur3.c
index ef853f404ab..79617525156 100644
--- a/chromium/third_party/ffmpeg/libavutil/murmur3.c
+++ b/chromium/third_party/ffmpeg/libavutil/murmur3.c
@@ -89,7 +89,11 @@ static inline uint64_t update_h2(uint64_t k, uint64_t h1, uint64_t h2)
return k;
}
+#if FF_API_CRYPTO_SIZE_T
void av_murmur3_update(AVMurMur3 *c, const uint8_t *src, int len)
+#else
+void av_murmur3_update(AVMurMur3 *c, const uint8_t *src, size_t len)
+#endif
{
const uint8_t *end;
uint64_t h1 = c->h1, h2 = c->h2;
diff --git a/chromium/third_party/ffmpeg/libavutil/murmur3.h b/chromium/third_party/ffmpeg/libavutil/murmur3.h
index 6a1694c08df..1b09175c1ec 100644
--- a/chromium/third_party/ffmpeg/libavutil/murmur3.h
+++ b/chromium/third_party/ffmpeg/libavutil/murmur3.h
@@ -29,6 +29,8 @@
#include <stdint.h>
+#include "version.h"
+
/**
* @defgroup lavu_murmur3 Murmur3
* @ingroup lavu_hash
@@ -97,7 +99,11 @@ void av_murmur3_init(struct AVMurMur3 *c);
* @param[in] src Input data to update hash with
* @param[in] len Number of bytes to read from `src`
*/
+#if FF_API_CRYPTO_SIZE_T
void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, int len);
+#else
+void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, size_t len);
+#endif
/**
* Finish hashing and output digest value.
diff --git a/chromium/third_party/ffmpeg/libavutil/opt.h b/chromium/third_party/ffmpeg/libavutil/opt.h
index 555929dd6b1..391720f2e25 100644
--- a/chromium/third_party/ffmpeg/libavutil/opt.h
+++ b/chromium/third_party/ffmpeg/libavutil/opt.h
@@ -229,15 +229,15 @@ enum AVOptionType{
AV_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length
AV_OPT_TYPE_DICT,
AV_OPT_TYPE_UINT64,
- AV_OPT_TYPE_CONST = 128,
- AV_OPT_TYPE_IMAGE_SIZE = MKBETAG('S','I','Z','E'), ///< offset must point to two consecutive integers
- AV_OPT_TYPE_PIXEL_FMT = MKBETAG('P','F','M','T'),
- AV_OPT_TYPE_SAMPLE_FMT = MKBETAG('S','F','M','T'),
- AV_OPT_TYPE_VIDEO_RATE = MKBETAG('V','R','A','T'), ///< offset must point to AVRational
- AV_OPT_TYPE_DURATION = MKBETAG('D','U','R',' '),
- AV_OPT_TYPE_COLOR = MKBETAG('C','O','L','R'),
- AV_OPT_TYPE_CHANNEL_LAYOUT = MKBETAG('C','H','L','A'),
- AV_OPT_TYPE_BOOL = MKBETAG('B','O','O','L'),
+ AV_OPT_TYPE_CONST,
+ AV_OPT_TYPE_IMAGE_SIZE, ///< offset must point to two consecutive integers
+ AV_OPT_TYPE_PIXEL_FMT,
+ AV_OPT_TYPE_SAMPLE_FMT,
+ AV_OPT_TYPE_VIDEO_RATE, ///< offset must point to AVRational
+ AV_OPT_TYPE_DURATION,
+ AV_OPT_TYPE_COLOR,
+ AV_OPT_TYPE_CHANNEL_LAYOUT,
+ AV_OPT_TYPE_BOOL,
};
/**
diff --git a/chromium/third_party/ffmpeg/libavutil/parseutils.c b/chromium/third_party/ffmpeg/libavutil/parseutils.c
index 7ca07b37a19..924c49d52cf 100644
--- a/chromium/third_party/ffmpeg/libavutil/parseutils.c
+++ b/chromium/third_party/ffmpeg/libavutil/parseutils.c
@@ -590,7 +590,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
int64_t t, now64;
time_t now;
struct tm dt = { 0 }, tmbuf;
- int today = 0, negative = 0, microseconds = 0;
+ int today = 0, negative = 0, microseconds = 0, suffix = 1000000;
int i;
static const char * const date_fmt[] = {
"%Y - %m - %d",
@@ -689,6 +689,16 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
if (duration) {
t = dt.tm_hour * 3600 + dt.tm_min * 60 + dt.tm_sec;
+ if (q[0] == 'm' && q[1] == 's') {
+ suffix = 1000;
+ microseconds /= 1000;
+ q += 2;
+ } else if (q[0] == 'u' && q[1] == 's') {
+ suffix = 1;
+ microseconds = 0;
+ q += 2;
+ } else if (*q == 's')
+ q++;
} else {
int is_utc = *q == 'Z' || *q == 'z';
int tzoffset = 0;
@@ -724,7 +734,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
if (*q)
return AVERROR(EINVAL);
- t *= 1000000;
+ t *= suffix;
t += microseconds;
*timeval = negative ? -t : t;
return 0;
diff --git a/chromium/third_party/ffmpeg/libavutil/ppc/cpu.h b/chromium/third_party/ffmpeg/libavutil/ppc/cpu.h
index 0744157c87a..36973a54ea0 100644
--- a/chromium/third_party/ffmpeg/libavutil/ppc/cpu.h
+++ b/chromium/third_party/ffmpeg/libavutil/ppc/cpu.h
@@ -19,7 +19,6 @@
#ifndef AVUTIL_PPC_CPU_H
#define AVUTIL_PPC_CPU_H
-#include "config.h"
#include "libavutil/cpu.h"
#include "libavutil/cpu_internal.h"
diff --git a/chromium/third_party/ffmpeg/libavutil/ripemd.c b/chromium/third_party/ffmpeg/libavutil/ripemd.c
index b0db2970db8..4f1c4ea899f 100644
--- a/chromium/third_party/ffmpeg/libavutil/ripemd.c
+++ b/chromium/third_party/ffmpeg/libavutil/ripemd.c
@@ -510,7 +510,11 @@ av_cold int av_ripemd_init(AVRIPEMD *ctx, int bits)
return 0;
}
+#if FF_API_CRYPTO_SIZE_T
void av_ripemd_update(AVRIPEMD* ctx, const uint8_t* data, unsigned int len)
+#else
+void av_ripemd_update(AVRIPEMD* ctx, const uint8_t* data, size_t len)
+#endif
{
unsigned int i, j;
diff --git a/chromium/third_party/ffmpeg/libavutil/ripemd.h b/chromium/third_party/ffmpeg/libavutil/ripemd.h
index 6d6bb3208f1..0db6858ff33 100644
--- a/chromium/third_party/ffmpeg/libavutil/ripemd.h
+++ b/chromium/third_party/ffmpeg/libavutil/ripemd.h
@@ -66,7 +66,11 @@ int av_ripemd_init(struct AVRIPEMD* context, int bits);
* @param data input data to update hash with
* @param len input data length
*/
+#if FF_API_CRYPTO_SIZE_T
void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, unsigned int len);
+#else
+void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, size_t len);
+#endif
/**
* Finish hashing and output digest value.
diff --git a/chromium/third_party/ffmpeg/libavutil/timecode.c b/chromium/third_party/ffmpeg/libavutil/timecode.c
index e9d8504ee7a..60077ba0c04 100644
--- a/chromium/third_party/ffmpeg/libavutil/timecode.c
+++ b/chromium/third_party/ffmpeg/libavutil/timecode.c
@@ -214,7 +214,7 @@ int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *st
tc->start = (hh*3600 + mm*60 + ss) * tc->fps + ff;
if (tc->flags & AV_TIMECODE_FLAG_DROPFRAME) { /* adjust frame number */
int tmins = 60*hh + mm;
- tc->start -= 2 * (tmins - tmins/10);
+ tc->start -= (tc->fps == 30 ? 2 : 4) * (tmins - tmins/10);
}
return 0;
}
diff --git a/chromium/third_party/ffmpeg/libavutil/version.h b/chromium/third_party/ffmpeg/libavutil/version.h
index d81ec6fa7bf..0c032c85532 100644
--- a/chromium/third_party/ffmpeg/libavutil/version.h
+++ b/chromium/third_party/ffmpeg/libavutil/version.h
@@ -79,7 +79,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 56
-#define LIBAVUTIL_VERSION_MINOR 7
+#define LIBAVUTIL_VERSION_MINOR 9
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
diff --git a/chromium/third_party/ffmpeg/libavutil/x86/cpu.h b/chromium/third_party/ffmpeg/libavutil/x86/cpu.h
index 7f4e5d08bb2..937c697fa0e 100644
--- a/chromium/third_party/ffmpeg/libavutil/x86/cpu.h
+++ b/chromium/third_party/ffmpeg/libavutil/x86/cpu.h
@@ -19,7 +19,6 @@
#ifndef AVUTIL_X86_CPU_H
#define AVUTIL_X86_CPU_H
-#include "config.h"
#include "libavutil/cpu.h"
#include "libavutil/cpu_internal.h"
diff --git a/chromium/third_party/ffmpeg/libswresample/rematrix.c b/chromium/third_party/ffmpeg/libswresample/rematrix.c
index 9fcfff1318c..82277300564 100644
--- a/chromium/third_party/ffmpeg/libswresample/rematrix.c
+++ b/chromium/third_party/ffmpeg/libswresample/rematrix.c
@@ -69,8 +69,10 @@ int swr_set_matrix(struct SwrContext *s, const double *matrix, int stride)
return AVERROR(EINVAL);
memset(s->matrix, 0, sizeof(s->matrix));
memset(s->matrix_flt, 0, sizeof(s->matrix_flt));
- nb_in = av_get_channel_layout_nb_channels(s->user_in_ch_layout);
- nb_out = av_get_channel_layout_nb_channels(s->user_out_ch_layout);
+ nb_in = (s->user_in_ch_count > 0) ? s->user_in_ch_count :
+ av_get_channel_layout_nb_channels(s->user_in_ch_layout);
+ nb_out = (s->user_out_ch_count > 0) ? s->user_out_ch_count :
+ av_get_channel_layout_nb_channels(s->user_out_ch_layout);
for (out = 0; out < nb_out; out++) {
for (in = 0; in < nb_in; in++)
s->matrix_flt[out][in] = s->matrix[out][in] = matrix[in];
diff --git a/chromium/third_party/ffmpeg/libswscale/output.c b/chromium/third_party/ffmpeg/libswscale/output.c
index f30bce8dd3c..0af2fffea4e 100644
--- a/chromium/third_party/ffmpeg/libswscale/output.c
+++ b/chromium/third_party/ffmpeg/libswscale/output.c
@@ -180,6 +180,34 @@ yuv2planeX_16_c_template(const int16_t *filter, int filterSize,
}
}
+static void yuv2p016cX_c(SwsContext *c, const int16_t *chrFilter, int chrFilterSize,
+ const int16_t **chrUSrc, const int16_t **chrVSrc,
+ uint8_t *dest8, int chrDstW)
+{
+ uint16_t *dest = (uint16_t*)dest8;
+ const int32_t **uSrc = (const int32_t **)chrUSrc;
+ const int32_t **vSrc = (const int32_t **)chrVSrc;
+ int shift = 15;
+ int big_endian = c->dstFormat == AV_PIX_FMT_P016BE;
+ int i, j;
+
+ for (i = 0; i < chrDstW; i++) {
+ int u = 1 << (shift - 1);
+ int v = 1 << (shift - 1);
+
+ /* See yuv2planeX_16_c_template for details. */
+ u -= 0x40000000;
+ v -= 0x40000000;
+ for (j = 0; j < chrFilterSize; j++) {
+ u += uSrc[j][i] * (unsigned)chrFilter[j];
+ v += vSrc[j][i] * (unsigned)chrFilter[j];
+ }
+
+ output_pixel(&dest[2*i] , u, 0x8000, int);
+ output_pixel(&dest[2*i+1], v, 0x8000, int);
+ }
+}
+
#undef output_pixel
#define output_pixel(pos, val) \
@@ -2257,6 +2285,9 @@ av_cold void ff_sws_init_output_funcs(SwsContext *c,
} else if (is16BPS(dstFormat)) {
*yuv2planeX = isBE(dstFormat) ? yuv2planeX_16BE_c : yuv2planeX_16LE_c;
*yuv2plane1 = isBE(dstFormat) ? yuv2plane1_16BE_c : yuv2plane1_16LE_c;
+ if (dstFormat == AV_PIX_FMT_P016LE || dstFormat == AV_PIX_FMT_P016BE) {
+ *yuv2nv12cX = yuv2p016cX_c;
+ }
} else if (isNBPS(dstFormat)) {
if (desc->comp[0].depth == 9) {
*yuv2planeX = isBE(dstFormat) ? yuv2planeX_9BE_c : yuv2planeX_9LE_c;
diff --git a/chromium/third_party/ffmpeg/libswscale/swscale_internal.h b/chromium/third_party/ffmpeg/libswscale/swscale_internal.h
index 0f51df95d75..c9120d8f5f1 100644
--- a/chromium/third_party/ffmpeg/libswscale/swscale_internal.h
+++ b/chromium/third_party/ffmpeg/libswscale/swscale_internal.h
@@ -676,6 +676,17 @@ static av_always_inline int isPlanarYUV(enum AVPixelFormat pix_fmt)
return ((desc->flags & AV_PIX_FMT_FLAG_PLANAR) && isYUV(pix_fmt));
}
+/*
+ * Identity semi-planar YUV formats. Specifically, those are YUV formats
+ * where the second and third components (U & V) are on the same plane.
+ */
+static av_always_inline int isSemiPlanarYUV(enum AVPixelFormat pix_fmt)
+{
+ const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
+ av_assert0(desc);
+ return (isPlanarYUV(pix_fmt) && desc->comp[1].plane == desc->comp[2].plane);
+}
+
static av_always_inline int isRGB(enum AVPixelFormat pix_fmt)
{
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
diff --git a/chromium/third_party/ffmpeg/libswscale/swscale_unscaled.c b/chromium/third_party/ffmpeg/libswscale/swscale_unscaled.c
index 5ec2116bcfa..13f9cd83e36 100644
--- a/chromium/third_party/ffmpeg/libswscale/swscale_unscaled.c
+++ b/chromium/third_party/ffmpeg/libswscale/swscale_unscaled.c
@@ -180,16 +180,28 @@ static int nv12ToPlanarWrapper(SwsContext *c, const uint8_t *src[],
return srcSliceH;
}
-static int planarToP010Wrapper(SwsContext *c, const uint8_t *src8[],
+static int planarToP01xWrapper(SwsContext *c, const uint8_t *src8[],
int srcStride[], int srcSliceY,
int srcSliceH, uint8_t *dstParam8[],
int dstStride[])
{
+ const AVPixFmtDescriptor *src_format = av_pix_fmt_desc_get(c->srcFormat);
+ const AVPixFmtDescriptor *dst_format = av_pix_fmt_desc_get(c->dstFormat);
const uint16_t **src = (const uint16_t**)src8;
uint16_t *dstY = (uint16_t*)(dstParam8[0] + dstStride[0] * srcSliceY);
uint16_t *dstUV = (uint16_t*)(dstParam8[1] + dstStride[1] * srcSliceY / 2);
int x, y;
+ /* Calculate net shift required for values. */
+ const int shift[3] = {
+ dst_format->comp[0].depth + dst_format->comp[0].shift -
+ src_format->comp[0].depth - src_format->comp[0].shift,
+ dst_format->comp[1].depth + dst_format->comp[1].shift -
+ src_format->comp[1].depth - src_format->comp[1].shift,
+ dst_format->comp[2].depth + dst_format->comp[2].shift -
+ src_format->comp[2].depth - src_format->comp[2].shift,
+ };
+
av_assert0(!(srcStride[0] % 2 || srcStride[1] % 2 || srcStride[2] % 2 ||
dstStride[0] % 2 || dstStride[1] % 2));
@@ -197,7 +209,7 @@ static int planarToP010Wrapper(SwsContext *c, const uint8_t *src8[],
uint16_t *tdstY = dstY;
const uint16_t *tsrc0 = src[0];
for (x = c->srcW; x > 0; x--) {
- *tdstY++ = *tsrc0++ << 6;
+ *tdstY++ = *tsrc0++ << shift[0];
}
src[0] += srcStride[0] / 2;
dstY += dstStride[0] / 2;
@@ -207,8 +219,8 @@ static int planarToP010Wrapper(SwsContext *c, const uint8_t *src8[],
const uint16_t *tsrc1 = src[1];
const uint16_t *tsrc2 = src[2];
for (x = c->srcW / 2; x > 0; x--) {
- *tdstUV++ = *tsrc1++ << 6;
- *tdstUV++ = *tsrc2++ << 6;
+ *tdstUV++ = *tsrc1++ << shift[1];
+ *tdstUV++ = *tsrc2++ << shift[2];
}
src[1] += srcStride[1] / 2;
src[2] += srcStride[2] / 2;
@@ -1738,14 +1750,17 @@ void ff_get_unscaled_swscale(SwsContext *c)
!(flags & SWS_ACCURATE_RND) && (c->dither == SWS_DITHER_BAYER || c->dither == SWS_DITHER_AUTO) && !(dstH & 1)) {
c->swscale = ff_yuv2rgb_get_func_ptr(c);
}
- /* yuv420p10_to_p010 */
- if ((srcFormat == AV_PIX_FMT_YUV420P10 || srcFormat == AV_PIX_FMT_YUVA420P10) &&
- dstFormat == AV_PIX_FMT_P010) {
- c->swscale = planarToP010Wrapper;
+ /* yuv420p1x_to_p01x */
+ if ((srcFormat == AV_PIX_FMT_YUV420P10 || srcFormat == AV_PIX_FMT_YUVA420P10 ||
+ srcFormat == AV_PIX_FMT_YUV420P12 ||
+ srcFormat == AV_PIX_FMT_YUV420P14 ||
+ srcFormat == AV_PIX_FMT_YUV420P16 || srcFormat == AV_PIX_FMT_YUVA420P16) &&
+ (dstFormat == AV_PIX_FMT_P010 || dstFormat == AV_PIX_FMT_P016)) {
+ c->swscale = planarToP01xWrapper;
}
- /* yuv420p_to_p010le */
+ /* yuv420p_to_p01xle */
if ((srcFormat == AV_PIX_FMT_YUV420P || srcFormat == AV_PIX_FMT_YUVA420P) &&
- dstFormat == AV_PIX_FMT_P010LE) {
+ (dstFormat == AV_PIX_FMT_P010LE || dstFormat == AV_PIX_FMT_P016LE)) {
c->swscale = planar8ToP01xleWrapper;
}
@@ -1915,12 +1930,7 @@ void ff_get_unscaled_swscale(SwsContext *c)
(isPlanarYUV(srcFormat) && isPlanarYUV(dstFormat) &&
c->chrDstHSubSample == c->chrSrcHSubSample &&
c->chrDstVSubSample == c->chrSrcVSubSample &&
- dstFormat != AV_PIX_FMT_NV12 && dstFormat != AV_PIX_FMT_NV21 &&
- dstFormat != AV_PIX_FMT_P010LE && dstFormat != AV_PIX_FMT_P010BE &&
- dstFormat != AV_PIX_FMT_P016LE && dstFormat != AV_PIX_FMT_P016BE &&
- srcFormat != AV_PIX_FMT_NV12 && srcFormat != AV_PIX_FMT_NV21 &&
- srcFormat != AV_PIX_FMT_P010LE && srcFormat != AV_PIX_FMT_P010BE &&
- srcFormat != AV_PIX_FMT_P016LE && srcFormat != AV_PIX_FMT_P016BE))
+ !isSemiPlanarYUV(srcFormat) && !isSemiPlanarYUV(dstFormat)))
{
if (isPacked(c->srcFormat))
c->swscale = packedCopyWrapper;
diff --git a/chromium/third_party/ffmpeg/libswscale/utils.c b/chromium/third_party/ffmpeg/libswscale/utils.c
index 4df09306d36..98a6b994760 100644
--- a/chromium/third_party/ffmpeg/libswscale/utils.c
+++ b/chromium/third_party/ffmpeg/libswscale/utils.c
@@ -254,8 +254,8 @@ static const FormatEntry format_entries[AV_PIX_FMT_NB] = {
[AV_PIX_FMT_AYUV64LE] = { 1, 1},
[AV_PIX_FMT_P010LE] = { 1, 1 },
[AV_PIX_FMT_P010BE] = { 1, 1 },
- [AV_PIX_FMT_P016LE] = { 1, 0 },
- [AV_PIX_FMT_P016BE] = { 1, 0 },
+ [AV_PIX_FMT_P016LE] = { 1, 1 },
+ [AV_PIX_FMT_P016BE] = { 1, 1 },
};
int sws_isSupportedInput(enum AVPixelFormat pix_fmt)
diff --git a/chromium/third_party/ffmpeg/libswscale/version.h b/chromium/third_party/ffmpeg/libswscale/version.h
index 0393a6fe4af..edc133b2339 100644
--- a/chromium/third_party/ffmpeg/libswscale/version.h
+++ b/chromium/third_party/ffmpeg/libswscale/version.h
@@ -28,7 +28,7 @@
#define LIBSWSCALE_VERSION_MAJOR 5
#define LIBSWSCALE_VERSION_MINOR 0
-#define LIBSWSCALE_VERSION_MICRO 101
+#define LIBSWSCALE_VERSION_MICRO 102
#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
LIBSWSCALE_VERSION_MINOR, \
diff --git a/chromium/third_party/ffmpeg/tools/uncoded_frame.c b/chromium/third_party/ffmpeg/tools/uncoded_frame.c
index 606bdb746ae..3aaa4b68975 100644
--- a/chromium/third_party/ffmpeg/tools/uncoded_frame.c
+++ b/chromium/third_party/ffmpeg/tools/uncoded_frame.c
@@ -141,7 +141,7 @@ int main(int argc, char **argv)
goto fail;
}
if (!(st->mux->oformat->flags & AVFMT_NOFILE)) {
- ret = avio_open2(&st->mux->pb, st->mux->filename, AVIO_FLAG_WRITE,
+ ret = avio_open2(&st->mux->pb, st->mux->url, AVIO_FLAG_WRITE,
NULL, NULL);
if (ret < 0) {
av_log(st->mux, AV_LOG_ERROR, "Failed to init output: %s\n",