From 82d4ed5e96989722d4714e6a695d9cc1e93a4494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Wed, 28 Sep 2022 22:53:25 +0200 Subject: [PATCH 1/3] ppc64le port --- chromium/sandbox/features.gni | 3 +- chromium/sandbox/linux/BUILD.gn | 2 + .../linux/bpf_dsl/linux_syscall_ranges.h | 7 + .../sandbox/linux/bpf_dsl/seccomp_macros.h | 48 + .../seccomp-bpf-helpers/baseline_policy.cc | 10 +- .../baseline_policy_unittest.cc | 2 + .../syscall_parameters_restrictions.cc | 38 +- .../syscall_parameters_restrictions.h | 2 +- .../linux/seccomp-bpf-helpers/syscall_sets.cc | 132 +- .../linux/seccomp-bpf-helpers/syscall_sets.h | 11 +- chromium/sandbox/linux/seccomp-bpf/syscall.cc | 62 +- chromium/sandbox/linux/seccomp-bpf/trap.cc | 14 + .../sandbox/linux/services/credentials.cc | 2 +- .../linux/services/syscall_wrappers.cc | 2 +- .../linux/syscall_broker/broker_process.cc | 2 +- .../linux/system_headers/linux_seccomp.h | 9 + .../linux/system_headers/linux_signal.h | 2 +- .../sandbox/linux/system_headers/linux_stat.h | 22 + .../linux/system_headers/linux_syscalls.h | 4 + .../linux/system_headers/linux_ucontext.h | 2 + .../system_headers/ppc64_linux_syscalls.h | 25 + .../system_headers/ppc64_linux_ucontext.h | 12 + .../policy/linux/bpf_renderer_policy_linux.cc | 5 + .../angle/src/libANGLE/Constants.h | 1 + chromium/third_party/boringssl/BUILD.gn | 7 + chromium/third_party/breakpad/BUILD.gn | 4 +- .../dump_writer_common/raw_context_cpu.h | 2 + .../linux/dump_writer_common/thread_info.cc | 56 +- .../linux/dump_writer_common/thread_info.h | 9 + .../dump_writer_common/ucontext_reader.cc | 42 + .../dump_writer_common/ucontext_reader.h | 3 + .../client/linux/handler/exception_handler.cc | 22 +- .../client/linux/handler/exception_handler.h | 6 +- .../handler/exception_handler_unittest.cc | 8 +- .../microdump_writer/microdump_writer.cc | 14 +- .../microdump_writer_unittest.cc | 15 +- .../minidump_writer/linux_core_dumper.cc | 8 +- .../linux/minidump_writer/linux_dumper.cc | 4 +- .../linux/minidump_writer/linux_dumper.h | 3 +- .../linux_dumper_unittest_helper.cc | 2 + .../minidump_writer/linux_ptrace_dumper.cc | 19 +- .../linux_ptrace_dumper_unittest.cc | 5 + .../linux/minidump_writer/minidump_writer.cc | 18 +- .../linux/minidump_writer/minidump_writer.h | 2 + .../minidump_writer_unittest.cc | 3 + .../src/common/linux/memory_mapped_file.cc | 3 +- .../linux/memory_mapped_file_unittest.cc | 7 +- .../src/processor/exploitability_linux.cc | 2 + .../src/processor/exploitability_unittest.cc | 15 +- .../tools/linux/md2core/minidump-2-core.cc | 45 + .../crashpad/crashpad/CONTRIBUTORS | 1 + .../crashpad/crashpad/compat/linux/sys/user.h | 1 + .../crashpad/minidump/minidump_context.h | 64 + .../minidump/minidump_context_writer.cc | 50 + .../minidump/minidump_context_writer.h | 39 + .../minidump/minidump_context_writer_test.cc | 15 + .../minidump/minidump_misc_info_writer.cc | 2 + .../crashpad/snapshot/capture_memory.cc | 5 + .../crashpad/snapshot/cpu_architecture.h | 5 +- .../crashpad/crashpad/snapshot/cpu_context.cc | 5 + .../crashpad/crashpad/snapshot/cpu_context.h | 19 + .../snapshot/linux/cpu_context_linux.h | 73 + .../snapshot/linux/debug_rendezvous_test.cc | 4 +- .../linux/exception_snapshot_linux.cc | 63 + .../snapshot/linux/exception_snapshot_linux.h | 2 + .../linux/exception_snapshot_linux_test.cc | 21 + .../snapshot/linux/process_reader_linux.cc | 2 + .../linux/process_reader_linux_test.cc | 2 + .../crashpad/snapshot/linux/signal_context.h | 83 + .../snapshot/linux/system_snapshot_linux.cc | 11 + .../snapshot/linux/thread_snapshot_linux.cc | 8 + .../snapshot/linux/thread_snapshot_linux.h | 2 + .../crashpad/util/linux/auxiliary_vector.cc | 5 + .../crashpad/util/linux/ptrace_broker.cc | 4 +- .../crashpad/crashpad/util/linux/ptracer.cc | 61 + .../crashpad/util/linux/thread_info.h | 55 + .../crashpad/util/misc/capture_context.h | 1 + .../util/misc/capture_context_linux.S | 212 +- .../util/misc/capture_context_test.cc | 2 +- .../misc/capture_context_test_util_linux.cc | 6 + .../crashpad/util/posix/signals_test.cc | 6 +- .../dav1d/config/linux/ppc64/config.h | 40 + .../third_party/dav1d/dav1d_generated.gni | 5 + .../config/Chrome/linux/ppc64/config.h | 2217 ++++++++++++ .../Chrome/linux/ppc64/libavcodec/bsf_list.c | 2 + .../linux/ppc64/libavcodec/codec_list.c | 18 + .../linux/ppc64/libavcodec/parser_list.c | 9 + .../linux/ppc64/libavformat/demuxer_list.c | 8 + .../linux/ppc64/libavformat/muxer_list.c | 2 + .../linux/ppc64/libavformat/protocol_list.c | 2 + .../Chrome/linux/ppc64/libavutil/avconfig.h | 6 + .../Chrome/linux/ppc64/libavutil/ffversion.h | 5 + .../config/Chromium/linux/ppc64/config.h | 2217 ++++++++++++ .../linux/ppc64/libavcodec/bsf_list.c | 2 + .../linux/ppc64/libavcodec/codec_list.c | 18 + .../linux/ppc64/libavcodec/parser_list.c | 9 + .../linux/ppc64/libavformat/demuxer_list.c | 8 + .../linux/ppc64/libavformat/muxer_list.c | 2 + .../linux/ppc64/libavformat/protocol_list.c | 2 + .../Chromium/linux/ppc64/libavutil/avconfig.h | 6 + .../linux/ppc64/libavutil/ffversion.h | 5 + .../ffmpeg/chromium/scripts/build_ffmpeg.py | 9 +- .../ffmpeg/chromium/scripts/copy_config.sh | 2 +- .../ffmpeg/chromium/scripts/generate_gn.py | 2 +- .../third_party/ffmpeg/ffmpeg_generated.gni | 36 + .../third_party/ffmpeg/libavcodec/bsf_list.c | 38 + .../ffmpeg/libavcodec/codec_list.c | 636 ++++ .../ffmpeg/libavcodec/parser_list.c | 49 + .../ffmpeg/libavdevice/indev_list.c | 8 + .../ffmpeg/libavdevice/outdev_list.c | 6 + .../ffmpeg/libavfilter/filter_list.c | 377 ++ .../ffmpeg/libavformat/demuxer_list.c | 309 ++ .../ffmpeg/libavformat/muxer_list.c | 168 + .../ffmpeg/libavformat/protocol_list.c | 30 + .../third_party/ffmpeg/libavutil/avconfig.h | 6 + chromium/third_party/libaom/BUILD.gn | 15 + chromium/third_party/libaom/cmake_update.sh | 3 + .../config/linux/ppc64/config/aom_config.asm | 78 + .../config/linux/ppc64/config/aom_config.c | 13 + .../config/linux/ppc64/config/aom_config.h | 82 + .../config/linux/ppc64/config/aom_dsp_rtcd.h | 3128 +++++++++++++++++ .../linux/ppc64/config/aom_scale_rtcd.h | 166 + .../config/linux/ppc64/config/av1_rtcd.h | 896 +++++ .../third_party/lss/linux_syscall_support.h | 4 +- .../internal/base_pcp_handler_test.cc.orig | 538 --- .../offline_service_controller.h.orig | 81 - chromium/third_party/pffft/src/pffft.c | 1 + .../sqlite/src/amalgamation/sqlite3.c | 3 +- .../sqlite/src/amalgamation_dev/sqlite3.c | 3 +- .../third_party/sqlite/src/ext/rtree/rtree.c | 2 +- .../third_party/sqlite/src/src/sqliteInt.h | 3 +- .../modules/desktop_capture/differ_block.cc | 4 + .../third_party/webrtc/rtc_base/system/arch.h | 12 + chromium/v8/BUILD.gn | 6 + 134 files changed, 12124 insertions(+), 745 deletions(-) create mode 100644 chromium/sandbox/linux/system_headers/ppc64_linux_syscalls.h create mode 100644 chromium/sandbox/linux/system_headers/ppc64_linux_ucontext.h create mode 100644 chromium/third_party/dav1d/config/linux/ppc64/config.h create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/config.h create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/bsf_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/codec_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/parser_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavformat/demuxer_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavformat/muxer_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavformat/protocol_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavutil/avconfig.h create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavutil/ffversion.h create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/config.h create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/bsf_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/codec_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/parser_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavformat/demuxer_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavformat/muxer_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavformat/protocol_list.c create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavutil/avconfig.h create mode 100644 chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavutil/ffversion.h create mode 100644 chromium/third_party/ffmpeg/libavcodec/bsf_list.c create mode 100644 chromium/third_party/ffmpeg/libavcodec/codec_list.c create mode 100644 chromium/third_party/ffmpeg/libavcodec/parser_list.c create mode 100644 chromium/third_party/ffmpeg/libavdevice/indev_list.c create mode 100644 chromium/third_party/ffmpeg/libavdevice/outdev_list.c create mode 100644 chromium/third_party/ffmpeg/libavfilter/filter_list.c create mode 100644 chromium/third_party/ffmpeg/libavformat/demuxer_list.c create mode 100644 chromium/third_party/ffmpeg/libavformat/muxer_list.c create mode 100644 chromium/third_party/ffmpeg/libavformat/protocol_list.c create mode 100644 chromium/third_party/ffmpeg/libavutil/avconfig.h create mode 100644 chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm create mode 100644 chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.c create mode 100644 chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.h create mode 100644 chromium/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h create mode 100644 chromium/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h create mode 100644 chromium/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h delete mode 100644 chromium/third_party/nearby/src/cpp/core_v2/internal/base_pcp_handler_test.cc.orig delete mode 100644 chromium/third_party/nearby/src/cpp/core_v2/internal/offline_service_controller.h.orig diff --git a/chromium/sandbox/features.gni b/chromium/sandbox/features.gni index db30ae6d63e..9dc09bf53b3 100644 --- a/chromium/sandbox/features.gni +++ b/chromium/sandbox/features.gni @@ -11,7 +11,8 @@ import("//build/config/nacl/config.gni") use_seccomp_bpf = (is_linux || is_chromeos || is_android) && (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" || current_cpu == "arm64" || - current_cpu == "mipsel" || current_cpu == "mips64el") + current_cpu == "mipsel" || current_cpu == "mips64el" || + current_cpu == "ppc64") use_seccomp_bpf = use_seccomp_bpf || is_nacl_nonsfi diff --git a/chromium/sandbox/linux/BUILD.gn b/chromium/sandbox/linux/BUILD.gn index 1d080c01b53..efebb21df0d 100644 --- a/chromium/sandbox/linux/BUILD.gn +++ b/chromium/sandbox/linux/BUILD.gn @@ -427,6 +427,8 @@ component("sandbox_services") { source_set("sandbox_services_headers") { sources = [ + "system_headers/ppc64_linux_syscalls.h", + "system_headers/ppc64_linux_ucontext.h", "system_headers/arm64_linux_syscalls.h", "system_headers/arm_linux_syscalls.h", "system_headers/arm_linux_ucontext.h", diff --git a/chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h b/chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h index 313511f22e9..0ca3a326f77 100644 --- a/chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +++ b/chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h @@ -56,6 +56,13 @@ #define MAX_PUBLIC_SYSCALL __NR_syscalls #define MAX_SYSCALL MAX_PUBLIC_SYSCALL +#elif defined(__powerpc64__) + +#include +#define MIN_SYSCALL 0u +#define MAX_PUBLIC_SYSCALL 386u +#define MAX_SYSCALL MAX_PUBLIC_SYSCALL + #else #error "Unsupported architecture" #endif diff --git a/chromium/sandbox/linux/bpf_dsl/seccomp_macros.h b/chromium/sandbox/linux/bpf_dsl/seccomp_macros.h index 1a407b95237..a6aec544e09 100644 --- a/chromium/sandbox/linux/bpf_dsl/seccomp_macros.h +++ b/chromium/sandbox/linux/bpf_dsl/seccomp_macros.h @@ -16,6 +16,9 @@ #if defined(__mips__) // sys/user.h in eglibc misses size_t definition #include +#elif defined(__powerpc64__) +// Manually define greg_t on ppc64 +typedef unsigned long long greg_t; #endif #endif @@ -346,6 +349,51 @@ struct regs_struct { #define SECCOMP_PT_PARM4(_regs) (_regs).regs[3] #define SECCOMP_PT_PARM5(_regs) (_regs).regs[4] #define SECCOMP_PT_PARM6(_regs) (_regs).regs[5] + +#elif defined(__powerpc64__) +#include + +typedef struct pt_regs regs_struct; + +#ifdef ARCH_CPU_LITTLE_ENDIAN +#define SECCOMP_ARCH AUDIT_ARCH_PPC64LE +#else +#define SECCOMP_ARCH AUDIT_ARCH_PPC64 +#endif + +#define SECCOMP_REG(_ctx, _reg) ((_ctx)->uc_mcontext.regs->gpr[_reg]) + +#define SECCOMP_RESULT(_ctx) SECCOMP_REG(_ctx, 3) +#define SECCOMP_SYSCALL(_ctx) SECCOMP_REG(_ctx, 0) +#define SECCOMP_IP(_ctx) (_ctx)->uc_mcontext.regs->nip +#define SECCOMP_PARM1(_ctx) SECCOMP_REG(_ctx, 3) +#define SECCOMP_PARM2(_ctx) SECCOMP_REG(_ctx, 4) +#define SECCOMP_PARM3(_ctx) SECCOMP_REG(_ctx, 5) +#define SECCOMP_PARM4(_ctx) SECCOMP_REG(_ctx, 6) +#define SECCOMP_PARM5(_ctx) SECCOMP_REG(_ctx, 7) +#define SECCOMP_PARM6(_ctx) SECCOMP_REG(_ctx, 8) + +#define SECCOMP_NR_IDX (offsetof(struct arch_seccomp_data, nr)) +#define SECCOMP_ARCH_IDX (offsetof(struct arch_seccomp_data, arch)) +#define SECCOMP_IP_MSB_IDX \ + (offsetof(struct arch_seccomp_data, instruction_pointer) + 4) +#define SECCOMP_IP_LSB_IDX \ + (offsetof(struct arch_seccomp_data, instruction_pointer) + 0) +#define SECCOMP_ARG_MSB_IDX(nr) \ + (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 4) +#define SECCOMP_ARG_LSB_IDX(nr) \ + (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 0) + +#define SECCOMP_PT_RESULT(_regs) (_regs).gpr[3] +#define SECCOMP_PT_SYSCALL(_regs) (_regs).gpr[0] +#define SECCOMP_PT_IP(_regs) (_regs).nip +#define SECCOMP_PT_PARM1(_regs) (_regs).gpr[3] +#define SECCOMP_PT_PARM2(_regs) (_regs).gpr[4] +#define SECCOMP_PT_PARM3(_regs) (_regs).gpr[5] +#define SECCOMP_PT_PARM4(_regs) (_regs).gpr[6] +#define SECCOMP_PT_PARM5(_regs) (_regs).gpr[7] +#define SECCOMP_PT_PARM6(_regs) (_regs).gpr[8] + #else #error Unsupported target platform diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc index 5e650d93c4b..4a2ead96583 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc @@ -89,7 +89,8 @@ bool IsBaselinePolicyWatched(int sysno) { SyscallSets::IsPrctl(sysno) || SyscallSets::IsProcessGroupOrSession(sysno) || #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) SyscallSets::IsSocketCall(sysno) || #endif #if defined(__arm__) @@ -226,7 +227,7 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno, } #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) if (sysno == __NR_mmap) return RestrictMmapFlags(); #endif @@ -244,7 +245,7 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno, return RestrictPrctl(); #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) if (sysno == __NR_socketpair) { // Only allow AF_UNIX, PF_UNIX. Crash if anything else is seen. static_assert(AF_UNIX == PF_UNIX, @@ -302,7 +303,8 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno, } #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) if (SyscallSets::IsSocketCall(sysno)) return RestrictSocketcallCommand(); #endif diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc index 814b7004c7b..8b410e14bd0 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc @@ -319,8 +319,10 @@ TEST_BASELINE_SIGSYS(__NR_timer_create) #if !defined(__aarch64__) TEST_BASELINE_SIGSYS(__NR_eventfd) TEST_BASELINE_SIGSYS(__NR_inotify_init) +#if !defined(__powerpc64__) TEST_BASELINE_SIGSYS(__NR_vserver) #endif +#endif #if defined(LIBC_GLIBC) && !defined(OS_CHROMEOS) BPF_TEST_C(BaselinePolicy, FutexEINVAL, BaselinePolicy) { diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc index 6ae09fb1035..c923fc9ec64 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc @@ -37,7 +37,8 @@ #include #include #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(__arm__) && \ - !defined(__aarch64__) && !defined(PTRACE_GET_THREAD_AREA) + !defined(__aarch64__) && !defined(PTRACE_GET_THREAD_AREA) && \ + !defined(__powerpc64__) // Also include asm/ptrace-abi.h since ptrace.h in older libc (for instance // the one in Ubuntu 16.04 LTS) is missing PTRACE_GET_THREAD_AREA. // asm/ptrace-abi.h doesn't exist on arm32 and PTRACE_GET_THREAD_AREA isn't @@ -46,6 +47,11 @@ #endif #endif // !OS_NACL_NONSFI +// On PPC64, TCGETS is defined in terms of struct termios, so we must include termios.h +#ifdef __powerpc64__ +#include +#endif + #if defined(OS_ANDROID) #if !defined(F_DUPFD_CLOEXEC) @@ -95,6 +101,15 @@ inline bool IsArchitectureMips() { #endif } +inline bool IsArchitecturePPC64() { +#if defined(__powerpc64__) + return true; +#else + return false; +#endif +} + + // Ubuntu's version of glibc has a race condition in sem_post that can cause // it to call futex(2) with bogus op arguments. To workaround this, we need // to allow those futex(2) calls to fail with EINVAL, instead of crashing the @@ -234,9 +249,11 @@ ResultExpr RestrictFcntlCommands() { // operator. // Glibc overrides the kernel's O_LARGEFILE value. Account for this. uint64_t kOLargeFileFlag = O_LARGEFILE; - if (IsArchitectureX86_64() || IsArchitectureI386() || IsArchitectureMips()) + if (IsArchitectureX86_64() || IsArchitectureI386() || IsArchitectureMips() \ + || IsArchitecturePPC64()) kOLargeFileFlag = 0100000; + const Arg cmd(1); const Arg long_arg(2); @@ -250,14 +267,23 @@ ResultExpr RestrictFcntlCommands() { F_SETLKW, F_GETLK, F_DUPFD, - F_DUPFD_CLOEXEC), - Allow()) + F_DUPFD_CLOEXEC +#if defined(__powerpc64__) +// On PPC64, F_SETLK, F_GETLK, F_SETLKW are defined as the 64-bit variants +// but glibc will sometimes still use the 32-bit versions. Allow both. + , + 5, /* F_GETLK (32) */ + 6, /* F_SETLK (32) */ + 7 /* F_SETLKW (32) */ +#endif + ), + Allow()) .Case(F_SETFL, If((long_arg & ~kAllowedMask) == 0, Allow()).Else(CrashSIGSYS())) .Default(CrashSIGSYS()); } -#if defined(__i386__) || defined(__mips__) +#if defined(__i386__) || defined(__mips__) || defined(__powerpc64__) ResultExpr RestrictSocketcallCommand() { // Unfortunately, we are unable to restrict the first parameter to // socketpair(2). Whilst initially sounding bad, it's noteworthy that very @@ -406,7 +432,7 @@ ResultExpr RestrictPrlimitToGetrlimit(pid_t target_pid) { ResultExpr RestrictPtrace() { const Arg request(0); return Switch(request).CASES(( -#if !defined(__aarch64__) +#if !defined(__aarch64__) && !defined(__powerpc64__) PTRACE_GETREGS, PTRACE_GETFPREGS, #if defined(TRACE_GET_THREAD_AREA) diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h index ba4289f05be..9a4d5ab2db2 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h @@ -48,7 +48,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictMprotectFlags(); // O_NONBLOCK | O_SYNC | O_LARGEFILE | O_CLOEXEC | O_NOATIME. SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictFcntlCommands(); -#if defined(__i386__) || defined(__mips__) +#if defined(__i386__) || defined(__mips__) || defined(__powerpc64__) // Restrict socketcall(2) to only allow socketpair(2), send(2), recv(2), // sendto(2), recvfrom(2), shutdown(2), sendmsg(2) and recvmsg(2). SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictSocketcallCommand(); diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc index d1ea8e99a1c..f6752f67c92 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc @@ -29,7 +29,8 @@ bool SyscallSets::IsAllowedGettime(int sysno) { switch (sysno) { case __NR_gettimeofday: #if defined(__i386__) || defined(__x86_64__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_time: #endif return true; @@ -47,12 +48,14 @@ bool SyscallSets::IsAllowedGettime(int sysno) { #endif case __NR_clock_settime: // Privileged. #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_ftime: // Obsolete. #endif case __NR_settimeofday: // Privileged. #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_stime: #endif default: @@ -118,7 +121,7 @@ bool SyscallSets::IsFileSystem(int sysno) { case __NR_faccessat: // EPERM not a valid errno. case __NR_fchmodat: case __NR_fchownat: // Should be called chownat ? -#if defined(__x86_64__) || defined(__aarch64__) +#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__) case __NR_newfstatat: // fstatat(). EPERM not a valid errno. #elif defined(__i386__) || defined(__arm__) || \ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) @@ -137,7 +140,7 @@ bool SyscallSets::IsFileSystem(int sysno) { case __NR_memfd_create: case __NR_mkdirat: case __NR_mknodat: -#if defined(__i386__) +#if defined(__i386__) || defined(__powerpc64__) case __NR_oldlstat: case __NR_oldstat: #endif @@ -151,7 +154,8 @@ bool SyscallSets::IsFileSystem(int sysno) { #endif case __NR_statfs: // EPERM not a valid errno. #if defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_statfs64: #endif case __NR_statx: // EPERM not a valid errno. @@ -162,7 +166,8 @@ bool SyscallSets::IsFileSystem(int sysno) { case __NR_truncate64: #endif case __NR_unlinkat: -#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) +#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ + defined(__powerpc64__) case __NR_utime: #endif case __NR_utimensat: // New. @@ -181,7 +186,8 @@ bool SyscallSets::IsAllowedFileSystemAccessViaFd(int sysno) { #endif return true; // TODO(jln): these should be denied gracefully as well (moved below). -#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) +#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ + defined(__powerpc64__) case __NR_fadvise64: // EPERM not a valid errno. #endif #if defined(__i386__) @@ -194,11 +200,12 @@ bool SyscallSets::IsAllowedFileSystemAccessViaFd(int sysno) { case __NR_flock: // EPERM not a valid errno. case __NR_fstatfs: // Give information about the whole filesystem. #if defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_fstatfs64: #endif case __NR_fsync: // EPERM not a valid errno. -#if defined(__i386__) +#if defined(__i386__) || defined(__powerpc64__) case __NR_oldfstat: #endif #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ @@ -206,6 +213,8 @@ bool SyscallSets::IsAllowedFileSystemAccessViaFd(int sysno) { case __NR_sync_file_range: // EPERM not a valid errno. #elif defined(__arm__) case __NR_arm_sync_file_range: // EPERM not a valid errno. +#elif defined(__powerpc64__) + case __NR_sync_file_range2: // EPERM not a valid errno. #endif default: return false; @@ -231,7 +240,8 @@ bool SyscallSets::IsDeniedFileSystemAccessViaFd(int sysno) { #endif case __NR_getdents64: // EPERM not a valid errno. #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_readdir: #endif return true; @@ -272,7 +282,7 @@ bool SyscallSets::IsGetSimpleId(int sysno) { bool SyscallSets::IsProcessPrivilegeChange(int sysno) { switch (sysno) { case __NR_capset: -#if defined(__i386__) || defined(__x86_64__) +#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__) case __NR_ioperm: // Intel privilege. case __NR_iopl: // Intel privilege. #endif @@ -323,7 +333,8 @@ bool SyscallSets::IsAllowedSignalHandling(int sysno) { case __NR_rt_sigreturn: case __NR_rt_sigtimedwait: #if defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_sigaction: case __NR_sigprocmask: case __NR_sigreturn: @@ -339,7 +350,8 @@ bool SyscallSets::IsAllowedSignalHandling(int sysno) { #endif case __NR_signalfd4: #if defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_sigpending: case __NR_sigsuspend: #endif @@ -363,7 +375,7 @@ bool SyscallSets::IsAllowedOperationOnFd(int sysno) { #endif case __NR_dup3: #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_shutdown: #endif return true; @@ -396,7 +408,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { case __NR_exit_group: case __NR_wait4: case __NR_waitid: -#if defined(__i386__) +#if defined(__i386__) || defined(__powerpc64__) case __NR_waitpid: #endif return true; @@ -413,7 +425,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { #endif case __NR_set_tid_address: case __NR_unshare: -#if !defined(__mips__) && !defined(__aarch64__) +#if !defined(__mips__) && !defined(__aarch64__) || defined(__powerpc64__) case __NR_vfork: #endif default: @@ -462,7 +474,7 @@ bool SyscallSets::IsAllowedGetOrModifySocket(int sysno) { return true; default: #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_socketpair: // We will want to inspect its argument. #endif return false; @@ -472,7 +484,7 @@ bool SyscallSets::IsAllowedGetOrModifySocket(int sysno) { bool SyscallSets::IsDeniedGetOrModifySocket(int sysno) { switch (sysno) { #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_accept: case __NR_accept4: case __NR_bind: @@ -487,7 +499,8 @@ bool SyscallSets::IsDeniedGetOrModifySocket(int sysno) { } #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) // Big multiplexing system call for sockets. bool SyscallSets::IsSocketCall(int sysno) { switch (sysno) { @@ -501,7 +514,8 @@ bool SyscallSets::IsSocketCall(int sysno) { } #endif -#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) +#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ + defined(__powerpc64__) bool SyscallSets::IsNetworkSocketInformation(int sysno) { switch (sysno) { case __NR_getpeername: @@ -526,7 +540,7 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) { case __NR_mincore: case __NR_mlockall: #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_mmap: #endif #if defined(__i386__) || defined(__arm__) || \ @@ -556,7 +570,8 @@ bool SyscallSets::IsAllowedGeneralIo(int sysno) { switch (sysno) { case __NR_lseek: #if defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR__llseek: #endif #if !defined(__aarch64__) @@ -568,26 +583,28 @@ bool SyscallSets::IsAllowedGeneralIo(int sysno) { case __NR_readv: case __NR_pread64: #if defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_recv: #endif #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_recvfrom: // Could specify source. case __NR_recvmsg: // Could specify source. #endif -#if defined(__i386__) || defined(__x86_64__) +#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__) case __NR_select: #endif -#if defined(__i386__) || defined(__arm__) || defined(__mips__) +#if defined(__i386__) || defined(__arm__) || defined(__mips__) || defined(__powerpc64__) case __NR__newselect: #endif #if defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_send: #endif #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_sendmsg: // Could specify destination. case __NR_sendto: // Could specify destination. #endif @@ -644,7 +661,8 @@ bool SyscallSets::IsAllowedBasicScheduler(int sysno) { return true; case __NR_getpriority: #if defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_nice: #endif case __NR_setpriority: @@ -656,7 +674,8 @@ bool SyscallSets::IsAllowedBasicScheduler(int sysno) { bool SyscallSets::IsAdminOperation(int sysno) { switch (sysno) { #if defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_bdflush: #endif case __NR_kexec_load: @@ -672,7 +691,8 @@ bool SyscallSets::IsAdminOperation(int sysno) { bool SyscallSets::IsKernelModule(int sysno) { switch (sysno) { -#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) +#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ + defined(__powerpc64__) case __NR_create_module: case __NR_get_kernel_syms: // Should ENOSYS. case __NR_query_module: @@ -705,7 +725,8 @@ bool SyscallSets::IsFsControl(int sysno) { case __NR_swapoff: case __NR_swapon: #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_umount: #endif case __NR_umount2: @@ -721,7 +742,7 @@ bool SyscallSets::IsNuma(int sysno) { case __NR_getcpu: case __NR_mbind: #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_migrate_pages: #endif case __NR_move_pages: @@ -750,14 +771,15 @@ bool SyscallSets::IsGlobalProcessEnvironment(int sysno) { switch (sysno) { case __NR_acct: // Privileged. #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_getrlimit: #endif -#if defined(__i386__) || defined(__arm__) +#if defined(__i386__) || defined(__arm__) || defined(__powerpc64__) case __NR_ugetrlimit: #endif #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_ulimit: #endif case __NR_getrusage: @@ -791,7 +813,7 @@ bool SyscallSets::IsGlobalSystemStatus(int sysno) { #endif case __NR_sysinfo: case __NR_uname: -#if defined(__i386__) +#if defined(__i386__) || defined(__powerpc64__) case __NR_olduname: case __NR_oldolduname: #endif @@ -855,7 +877,8 @@ bool SyscallSets::IsSystemVSemaphores(int sysno) { #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ defined(__aarch64__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) || \ + defined(__powerpc64__) // These give a lot of ambient authority and bypass the setuid sandbox. bool SyscallSets::IsSystemVSharedMemory(int sysno) { switch (sysno) { @@ -886,7 +909,8 @@ bool SyscallSets::IsSystemVMessageQueue(int sysno) { #endif #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) // Big system V multiplexing system call. bool SyscallSets::IsSystemVIpc(int sysno) { switch (sysno) { @@ -906,7 +930,8 @@ bool SyscallSets::IsAnySystemV(int sysno) { return IsSystemVMessageQueue(sysno) || IsSystemVSemaphores(sysno) || IsSystemVSharedMemory(sysno); #elif defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) return IsSystemVIpc(sysno); #endif } @@ -959,7 +984,8 @@ bool SyscallSets::IsFaNotify(int sysno) { bool SyscallSets::IsTimer(int sysno) { switch (sysno) { case __NR_getitimer: -#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) +#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ + defined(__powerpc64__) case __NR_alarm: #endif case __NR_setitimer: @@ -1034,18 +1060,22 @@ bool SyscallSets::IsMisc(int sysno) { case __NR_syncfs: case __NR_vhangup: // The system calls below are not implemented. -#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) +#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ + defined(__powerpc64__) case __NR_afs_syscall: #endif #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_break: #endif -#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) +#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ + defined(__powerpc64__) case __NR_getpmsg: #endif #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_gtty: case __NR_idle: case __NR_lock: @@ -1053,20 +1083,22 @@ bool SyscallSets::IsMisc(int sysno) { case __NR_prof: case __NR_profil: #endif -#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) +#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ + defined(__powerpc64__) case __NR_putpmsg: #endif #if defined(__x86_64__) case __NR_security: #endif #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) case __NR_stty: #endif -#if defined(__x86_64__) +#if defined(__x86_64__) || defined(__powerpc64__) case __NR_tuxcall: #endif -#if !defined(__aarch64__) +#if !defined(__aarch64__) && !defined(__powerpc64__) case __NR_vserver: #endif return true; diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h index 0fc7b2b9c1d..803dcf147bc 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h @@ -43,13 +43,14 @@ class SANDBOX_EXPORT SyscallSets { static bool IsDeniedGetOrModifySocket(int sysno); #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) // Big multiplexing system call for sockets. static bool IsSocketCall(int sysno); #endif #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) static bool IsNetworkSocketInformation(int sysno); #endif @@ -77,7 +78,8 @@ class SANDBOX_EXPORT SyscallSets { #endif #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ defined(__aarch64__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) || \ + defined(__powerpc64__) // These give a lot of ambient authority and bypass the setuid sandbox. static bool IsSystemVSharedMemory(int sysno); #endif @@ -88,7 +90,8 @@ class SANDBOX_EXPORT SyscallSets { #endif #if defined(__i386__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) // Big system V multiplexing system call. static bool IsSystemVIpc(int sysno); #endif diff --git a/chromium/sandbox/linux/seccomp-bpf/syscall.cc b/chromium/sandbox/linux/seccomp-bpf/syscall.cc index e47e98bf5b7..d53a7ff564b 100644 --- a/chromium/sandbox/linux/seccomp-bpf/syscall.cc +++ b/chromium/sandbox/linux/seccomp-bpf/syscall.cc @@ -18,7 +18,7 @@ namespace sandbox { namespace { #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \ - defined(ARCH_CPU_MIPS_FAMILY) + defined(ARCH_CPU_MIPS_FAMILY) || defined (ARCH_CPU_PPC64_FAMILY) // Number that's not currently used by any Linux kernel ABIs. const int kInvalidSyscallNumber = 0x351d3; #else @@ -310,12 +310,56 @@ asm(// We need to be able to tell the kernel exactly where we made a // Enter the kernel "svc 0\n" "2:ret\n" + ".cfi_endproc\n" + ".size SyscallAsm, .-SyscallAsm\n" +#elif defined(__powerpc64__) + ".text\n" + ".align 4\n" + ".type SyscallAsm @function\n" + "SyscallAsm:\n" + ".cfi_startproc\n" + + // Check if r3 is negative + "cmpdi 3, 0\n" + "bgt 2f\n" + + // Load address of 3f into r3 and return + "mflr 10\n" + "bl 1f\n" + "1: mflr 3\n" + "mtlr 10\n" + "addi 3, 3, 4*13\n" + "blr\n" + + // Load arguments from array into r3-8 + // save param 3 in r10 + "2:\n" + "mr 0, 3\n" + "ld 3, 0(4)\n" + "ld 5, 16(4)\n" + "ld 6, 24(4)\n" + "ld 7, 32(4)\n" + "ld 8, 40(4)\n" + "ld 4, 8(4)\n" + "li 9, 0\n" + + // Enter kernel + "sc\n" + + // Magic return address + "3:\n" + // Like MIPS, ppc64 return values are always positive. + // Check for error in cr0.SO and negate upon error + "bc 4, 3, 4f\n" + "neg 3, 3\n" + "4: blr\n" + ".cfi_endproc\n" ".size SyscallAsm, .-SyscallAsm\n" #endif ); // asm -#if defined(__x86_64__) +#if defined(__x86_64__) || defined(__powerpc64__) extern "C" { intptr_t SyscallAsm(intptr_t nr, const intptr_t args[6]); } @@ -429,6 +473,8 @@ intptr_t Syscall::Call(int nr, ret = inout; } +#elif defined(__powerpc64__) + intptr_t ret = SyscallAsm(nr, args); #else #error "Unimplemented architecture" #endif @@ -445,8 +491,18 @@ void Syscall::PutValueInUcontext(intptr_t ret_val, ucontext_t* ctx) { // needs to be changed back. ret_val = -ret_val; SECCOMP_PARM4(ctx) = 1; - } else + } else { SECCOMP_PARM4(ctx) = 0; + } +#endif +#if defined(__powerpc64__) + // Same as MIPS, need to invert ret and set error register (cr0.SO) + if (ret_val <= -1 && ret_val >= -4095) { + ret_val = -ret_val; + ctx->uc_mcontext.regs->ccr |= (1 << 28); + } else { + ctx->uc_mcontext.regs->ccr &= ~(1 << 28); + } #endif SECCOMP_RESULT(ctx) = static_cast(ret_val); } diff --git a/chromium/sandbox/linux/seccomp-bpf/trap.cc b/chromium/sandbox/linux/seccomp-bpf/trap.cc index f5b86a73ac7..5e6c4a0687a 100644 --- a/chromium/sandbox/linux/seccomp-bpf/trap.cc +++ b/chromium/sandbox/linux/seccomp-bpf/trap.cc @@ -232,6 +232,20 @@ void Trap::SigSys(int nr, LinuxSigInfo* info, ucontext_t* ctx) { SetIsInSigHandler(); } +#if defined(__powerpc64__) + // On ppc64+glibc, some syscalls seem to accidentally negate the first + // parameter which causes checks against it to fail. For now, manually + // negate them back. + // TODO(shawn@anastas.io): investigate this issue further + auto nr = SECCOMP_SYSCALL(ctx); + if (nr == __NR_openat || nr == __NR_mkdirat || nr == __NR_faccessat || nr == __NR_readlinkat || + nr == __NR_renameat || nr == __NR_renameat2 || nr == __NR_newfstatat || nr == __NR_unlinkat) { + if (static_cast(SECCOMP_PARM1(ctx)) > 0) { + SECCOMP_PARM1(ctx) = -SECCOMP_PARM1(ctx); + } + } +#endif + // Copy the seccomp-specific data into a arch_seccomp_data structure. This // is what we are showing to TrapFnc callbacks that the system call // evaluator registered with the sandbox. diff --git a/chromium/sandbox/linux/services/credentials.cc b/chromium/sandbox/linux/services/credentials.cc index 8be3652fb4f..2be97817202 100644 --- a/chromium/sandbox/linux/services/credentials.cc +++ b/chromium/sandbox/linux/services/credentials.cc @@ -81,7 +81,7 @@ bool ChrootToSafeEmptyDir() { pid_t pid = -1; alignas(16) char stack_buf[PTHREAD_STACK_MIN]; #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \ - defined(ARCH_CPU_MIPS_FAMILY) + defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY) // The stack grows downward. void* stack = stack_buf + sizeof(stack_buf); #else diff --git a/chromium/sandbox/linux/services/syscall_wrappers.cc b/chromium/sandbox/linux/services/syscall_wrappers.cc index 3bec18a14e9..48109333963 100644 --- a/chromium/sandbox/linux/services/syscall_wrappers.cc +++ b/chromium/sandbox/linux/services/syscall_wrappers.cc @@ -61,7 +61,7 @@ long sys_clone(unsigned long flags, #if defined(ARCH_CPU_X86_64) return syscall(__NR_clone, flags, child_stack, ptid, ctid, tls); #elif defined(ARCH_CPU_X86) || defined(ARCH_CPU_ARM_FAMILY) || \ - defined(ARCH_CPU_MIPS_FAMILY) + defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY) // CONFIG_CLONE_BACKWARDS defined. return syscall(__NR_clone, flags, child_stack, ptid, tls, ctid); #endif diff --git a/chromium/sandbox/linux/syscall_broker/broker_process.cc b/chromium/sandbox/linux/syscall_broker/broker_process.cc index 36df5e4b1dd..a9b65f83d48 100644 --- a/chromium/sandbox/linux/syscall_broker/broker_process.cc +++ b/chromium/sandbox/linux/syscall_broker/broker_process.cc @@ -174,7 +174,7 @@ bool BrokerProcess::IsSyscallBrokerable(int sysno, bool fast_check) const { #if defined(__NR_fstatat64) case __NR_fstatat64: #endif -#if defined(__x86_64__) || defined(__aarch64__) +#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__) case __NR_newfstatat: #endif return !fast_check || allowed_command_set_.test(COMMAND_STAT); diff --git a/chromium/sandbox/linux/system_headers/linux_seccomp.h b/chromium/sandbox/linux/system_headers/linux_seccomp.h index 1fa47ed09ff..39cc9ab5364 100644 --- a/chromium/sandbox/linux/system_headers/linux_seccomp.h +++ b/chromium/sandbox/linux/system_headers/linux_seccomp.h @@ -41,6 +41,9 @@ #ifndef EM_AARCH64 #define EM_AARCH64 183 #endif +#ifndef EM_PPC64 +#define EM_PPC64 21 +#endif #ifndef __AUDIT_ARCH_64BIT #define __AUDIT_ARCH_64BIT 0x80000000 @@ -73,6 +76,12 @@ #ifndef AUDIT_ARCH_AARCH64 #define AUDIT_ARCH_AARCH64 (EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE) #endif +#ifndef AUDIT_ARCH_PPC64 +#define AUDIT_ARCH_PPC64 (EM_PPC64 | __AUDIT_ARCH_64BIT) +#endif +#ifndef AUDIT_ARCH_PPC64LE +#define AUDIT_ARCH_PPC64LE (EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE) +#endif // For prctl.h #ifndef PR_SET_SECCOMP diff --git a/chromium/sandbox/linux/system_headers/linux_signal.h b/chromium/sandbox/linux/system_headers/linux_signal.h index f5a73676174..515b21a5fdf 100644 --- a/chromium/sandbox/linux/system_headers/linux_signal.h +++ b/chromium/sandbox/linux/system_headers/linux_signal.h @@ -13,7 +13,7 @@ // (not undefined, but defined different values and in different memory // layouts). So, fill the gap here. #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) #define LINUX_SIGHUP 1 #define LINUX_SIGINT 2 diff --git a/chromium/sandbox/linux/system_headers/linux_stat.h b/chromium/sandbox/linux/system_headers/linux_stat.h index e697dd6777e..7521f56f65e 100644 --- a/chromium/sandbox/linux/system_headers/linux_stat.h +++ b/chromium/sandbox/linux/system_headers/linux_stat.h @@ -155,6 +155,28 @@ struct kernel_stat { unsigned int __unused4; unsigned int __unused5; }; +#elif defined(__powerpc64__) +struct kernel_stat { + unsigned long st_dev; + ino_t st_ino; + unsigned long st_nlink; + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + unsigned long st_rdev; + long st_size; + unsigned long st_blksize; + unsigned long st_blocks; + // unsigned long st_atime; + unsigned long st_atime_nsec; + //unsigned long st_mtime; + unsigned long st_mtime_nsec; + //unsigned long st_ctime; + unsigned long st_ctime_nsec; + unsigned long __unused4; + unsigned long __unused5; + unsigned long __unused6; +}; #endif #if !defined(AT_EMPTY_PATH) diff --git a/chromium/sandbox/linux/system_headers/linux_syscalls.h b/chromium/sandbox/linux/system_headers/linux_syscalls.h index 2b78a0cc3b9..0a70f5ea588 100644 --- a/chromium/sandbox/linux/system_headers/linux_syscalls.h +++ b/chromium/sandbox/linux/system_headers/linux_syscalls.h @@ -35,5 +35,9 @@ #include "sandbox/linux/system_headers/arm64_linux_syscalls.h" #endif +#if defined(__powerpc64__) +#include "sandbox/linux/system_headers/ppc64_linux_syscalls.h" +#endif + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ diff --git a/chromium/sandbox/linux/system_headers/linux_ucontext.h b/chromium/sandbox/linux/system_headers/linux_ucontext.h index 22ce7802743..a69b024c2f3 100644 --- a/chromium/sandbox/linux/system_headers/linux_ucontext.h +++ b/chromium/sandbox/linux/system_headers/linux_ucontext.h @@ -11,6 +11,8 @@ #include "sandbox/linux/system_headers/arm_linux_ucontext.h" #elif defined(__i386__) #include "sandbox/linux/system_headers/i386_linux_ucontext.h" +#elif defined(__powerpc64__) +#include "sandbox/linux/system_headers/ppc64_linux_ucontext.h" #else #error "No support for your architecture in PNaCl header" #endif diff --git a/chromium/sandbox/linux/system_headers/ppc64_linux_syscalls.h b/chromium/sandbox/linux/system_headers/ppc64_linux_syscalls.h new file mode 100644 index 00000000000..12ec770350f --- /dev/null +++ b/chromium/sandbox/linux/system_headers/ppc64_linux_syscalls.h @@ -0,0 +1,25 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ +#define SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ + +#include + +//TODO: is it necessary to redefine syscall numbers for PPC64? +// Needed for Ubuntu/Debian: +#if !defined(__NR_shmget) +#define __NR_shmget 395 +#endif +#if !defined(__NR_shmdt) +#define __NR_shmdt 398 +#endif +#if !defined(__NR_shmctl) +#define __NR_shmctl 396 +#endif +#if !defined(__NR_shmat) +#define __NR_shmat 397 +#endif + +#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ diff --git a/chromium/sandbox/linux/system_headers/ppc64_linux_ucontext.h b/chromium/sandbox/linux/system_headers/ppc64_linux_ucontext.h new file mode 100644 index 00000000000..07728e08791 --- /dev/null +++ b/chromium/sandbox/linux/system_headers/ppc64_linux_ucontext.h @@ -0,0 +1,12 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ +#define SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ + +#include + +//TODO: is it necessary to redefine ucontext on PPC64? + +#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ diff --git a/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc b/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc index 9fe9575eb63..1dc78a20921 100644 --- a/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc +++ b/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc @@ -15,6 +15,11 @@ #include "sandbox/linux/system_headers/linux_syscalls.h" #include "sandbox/policy/linux/sandbox_linux.h" +// On PPC64, TCGETS is defined in terms of struct termios, so we must include termios.h +#ifdef __powerpc64__ +#include +#endif + // TODO(vignatti): replace the local definitions below with #include // once kernel version 4.6 becomes widely used. #include diff --git a/chromium/third_party/angle/src/libANGLE/Constants.h b/chromium/third_party/angle/src/libANGLE/Constants.h index 42964cc14fa..6607deebe5b 100644 --- a/chromium/third_party/angle/src/libANGLE/Constants.h +++ b/chromium/third_party/angle/src/libANGLE/Constants.h @@ -9,6 +9,7 @@ #ifndef LIBANGLE_CONSTANTS_H_ #define LIBANGLE_CONSTANTS_H_ +#include #include "common/platform.h" #include diff --git a/chromium/third_party/boringssl/BUILD.gn b/chromium/third_party/boringssl/BUILD.gn index fab890501a2..4e3bb7992a1 100644 --- a/chromium/third_party/boringssl/BUILD.gn +++ b/chromium/third_party/boringssl/BUILD.gn @@ -101,6 +101,13 @@ if (is_win && !is_msan && current_cpu != "arm64") { } else { public_configs = [ ":no_asm_config" ] } + } else if (current_cpu == "ppc64") { + if (is_linux) { + # TODO: ppc64 (be) check + sources += crypto_sources_linux_ppc64le + } else { + public_configs = [ ":no_asm_config" ] + } } else { public_configs = [ ":no_asm_config" ] } diff --git a/chromium/third_party/breakpad/BUILD.gn b/chromium/third_party/breakpad/BUILD.gn index b5452e16a69..ee3f9063290 100644 --- a/chromium/third_party/breakpad/BUILD.gn +++ b/chromium/third_party/breakpad/BUILD.gn @@ -611,7 +611,6 @@ if (is_linux || is_chromeos || is_android) { "breakpad/src/client/minidump_file_writer.h", "breakpad/src/common/convert_UTF.cc", "breakpad/src/common/convert_UTF.h", - "breakpad/src/common/linux/breakpad_getcontext.S", "breakpad/src/common/linux/elf_core_dump.cc", "breakpad/src/common/linux/elf_core_dump.h", "breakpad/src/common/linux/elfutils.cc", @@ -641,6 +640,8 @@ if (is_linux || is_chromeos || is_android) { configs += [ "//build/config/compiler:no_chromium_code" ] public_configs = [ ":client_config" ] + defines = [ "HAVE_GETCONTEXT" ] + if (current_cpu == "arm" && is_chromeos) { # Avoid running out of registers in # linux_syscall_support.h:sys_clone()'s inline assembly. @@ -699,7 +700,6 @@ if (is_linux || is_chromeos || is_android) { "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc", "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc", "breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc", - "breakpad/src/common/linux/breakpad_getcontext_unittest.cc", "breakpad/src/common/linux/elf_core_dump_unittest.cc", "breakpad/src/common/linux/file_id_unittest.cc", "breakpad/src/common/linux/linux_libc_support_unittest.cc", diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h index 07d9171a0a6..9aed4cb369b 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h @@ -44,6 +44,8 @@ typedef MDRawContextARM RawContextCPU; typedef MDRawContextARM64_Old RawContextCPU; #elif defined(__mips__) typedef MDRawContextMIPS RawContextCPU; +#elif defined(__powerpc64__) +typedef MDRawContextPPC64 RawContextCPU; #else #error "This code has not been ported to your platform yet." #endif diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc index aae1dc13b25..03afec7a58d 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc @@ -270,7 +270,42 @@ void ThreadInfo::FillCPUContext(RawContextCPU* out) const { out->float_save.fir = mcontext.fpc_eir; #endif } -#endif // __mips__ + +#elif defined(__powerpc64__) + +uintptr_t ThreadInfo::GetInstructionPointer() const { + return mcontext.gp_regs[PT_NIP]; +} + +void ThreadInfo::FillCPUContext(RawContextCPU* out) const { + out->context_flags = MD_CONTEXT_PPC64_FULL; + for (int i = 0; i < MD_CONTEXT_PPC64_GPR_COUNT; i++) + out->gpr[i] = mcontext.gp_regs[i]; + + out->lr = mcontext.gp_regs[PT_LNK]; + out->srr0 = mcontext.gp_regs[PT_NIP]; + out->srr1 = mcontext.gp_regs[PT_MSR]; + out->cr = mcontext.gp_regs[PT_CCR]; + out->xer = mcontext.gp_regs[PT_XER]; + out->ctr = mcontext.gp_regs[PT_CTR]; + + for (int i = 0; i < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; i++) + out->float_save.fpregs[i] = mcontext.fp_regs[i]; + + out->float_save.fpscr = mcontext.fp_regs[NFPREG-1]; + + for (int i = 0; i < MD_VECTORSAVEAREA_PPC_VR_COUNT; i++) + out->vector_save.save_vr[i] = \ + {(((uint64_t)vregs.vrregs[i][0]) << 32) + | vregs.vrregs[i][1], + (((uint64_t)vregs.vrregs[i][2]) << 32) + | vregs.vrregs[i][3]}; + + out->vrsave = vregs.vrsave; + out->vector_save.save_vscr = {0, vregs.vscr.vscr_word}; + out->vector_save.save_vrvalid = 0xFFFFFFFF; +} +#endif // __powerpc64__ void ThreadInfo::GetGeneralPurposeRegisters(void** gp_regs, size_t* size) { assert(gp_regs || size); @@ -279,6 +314,11 @@ void ThreadInfo::GetGeneralPurposeRegisters(void** gp_regs, size_t* size) { *gp_regs = mcontext.gregs; if (size) *size = sizeof(mcontext.gregs); +#elif defined(__powerpc64__) + if (gp_regs) + *gp_regs = mcontext.gp_regs; + if (size) + *size = sizeof(mcontext.gp_regs); #else if (gp_regs) *gp_regs = ®s; @@ -294,6 +334,11 @@ void ThreadInfo::GetFloatingPointRegisters(void** fp_regs, size_t* size) { *fp_regs = &mcontext.fpregs; if (size) *size = sizeof(mcontext.fpregs); +#elif defined(__powerpc64__) + if (fp_regs) + *fp_regs = &mcontext.fp_regs; + if (size) + *size = sizeof(mcontext.fp_regs); #else if (fp_regs) *fp_regs = &fpregs; @@ -302,4 +347,13 @@ void ThreadInfo::GetFloatingPointRegisters(void** fp_regs, size_t* size) { #endif } +#if defined(__powerpc64__) +void ThreadInfo::GetVectorRegisters(void** v_regs, size_t* size) { + if (v_regs) + *v_regs = &vregs; + if (size) + *size = sizeof(vregs); +} +#endif + } // namespace google_breakpad diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h index fb216fa6d71..fb669126f7f 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h @@ -68,6 +68,10 @@ struct ThreadInfo { // Use the structures defined in struct user_regs_struct regs; struct user_fpsimd_struct fpregs; +#elif defined(__powerpc64__) + // Use the structures defined in . + mcontext_t mcontext; + struct _libc_vrstate vregs; #elif defined(__mips__) // Use the structure defined in . mcontext_t mcontext; @@ -84,6 +88,11 @@ struct ThreadInfo { // Returns the pointer and size of float point register area. void GetFloatingPointRegisters(void** fp_regs, size_t* size); + +#if defined(__powerpc64__) + // Returns the pointer and size of the vector register area. (PPC64 only) + void GetVectorRegisters(void** v_regs, size_t* size); +#endif }; } // namespace google_breakpad diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc index 6eec1be2465..69446bf5b64 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc @@ -254,6 +254,48 @@ void UContextReader::FillCPUContext(RawContextCPU* out, const ucontext_t* uc) { out->float_save.fir = uc->uc_mcontext.fpc_eir; // Unused. #endif } + +#elif defined(__powerpc64__) + +uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP]; +} + +uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gp_regs[PT_NIP]; +} + +void UContextReader::FillCPUContext(RawContextCPU* out, const ucontext_t* uc, + const struct _libc_vrstate* vregs) { + out->context_flags = MD_CONTEXT_PPC64_FULL; + + for (int i = 0; i < MD_CONTEXT_PPC64_GPR_COUNT; i++) + out->gpr[i] = uc->uc_mcontext.gp_regs[i]; + + out->lr = uc->uc_mcontext.gp_regs[PT_LNK]; + out->srr0 = uc->uc_mcontext.gp_regs[PT_NIP]; + out->srr1 = uc->uc_mcontext.gp_regs[PT_MSR]; + out->cr = uc->uc_mcontext.gp_regs[PT_CCR]; + out->xer = uc->uc_mcontext.gp_regs[PT_XER]; + out->ctr = uc->uc_mcontext.gp_regs[PT_CTR]; + + for (int i = 0; i < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; i++) + out->float_save.fpregs[i] = uc->uc_mcontext.fp_regs[i]; + + out->float_save.fpscr = uc->uc_mcontext.fp_regs[NFPREG-1]; + + for (int i = 0; i < MD_VECTORSAVEAREA_PPC_VR_COUNT; i++) + out->vector_save.save_vr[i] = + {(((uint64_t)vregs->vrregs[i][0]) << 32) + | vregs->vrregs[i][1], + (((uint64_t)vregs->vrregs[i][2]) << 32) + | vregs->vrregs[i][3]}; + + out->vrsave = vregs->vrsave; + out->vector_save.save_vscr = {0, vregs->vscr.vscr_word}; + out->vector_save.save_vrvalid = 0xFFFFFFFF; +} + #endif } // namespace google_breakpad diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h index 7d41008815f..2a61005040c 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h @@ -55,6 +55,9 @@ struct UContextReader { #elif defined(__aarch64__) static void FillCPUContext(RawContextCPU* out, const ucontext_t* uc, const struct fpsimd_context* fpregs); +#elif defined(__powerpc64__) + static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_vrstate* vregs); #else static void FillCPUContext(RawContextCPU* out, const ucontext_t* uc); #endif diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc index 5cdabcf64c1..5fd5cf001d3 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc @@ -461,9 +461,16 @@ bool ExceptionHandler::HandleSignal(int /*sig*/, siginfo_t* info, void* uc) { memcpy(&g_crash_context_.float_state, fp_ptr, sizeof(g_crash_context_.float_state)); } +#elif defined(__powerpc64__) + // On PPC64, we must copy VR state + ucontext_t* uc_ptr = (ucontext_t*)uc; + if (uc_ptr->uc_mcontext.v_regs) { + memcpy(&g_crash_context_.vector_state, uc_ptr->uc_mcontext.v_regs, + sizeof(g_crash_context_.vector_state)); + } #elif !defined(__ARM_EABI__) && !defined(__mips__) // FP state is not part of user ABI on ARM Linux. - // In case of MIPS Linux FP state is already part of ucontext_t + // In case of MIPS, Linux FP state is already part of ucontext_t // and 'float_state' is not a member of CrashContext. ucontext_t* uc_ptr = (ucontext_t*)uc; if (uc_ptr->uc_mcontext.fpregs) { @@ -701,11 +708,19 @@ bool ExceptionHandler::WriteMinidump() { } #endif -#if !defined(__ARM_EABI__) && !defined(__aarch64__) && !defined(__mips__) +#if !defined(__ARM_EABI__) && !defined(__aarch64__) && !defined(__mips__) \ + && !defined(__powerpc64__) // FPU state is not part of ARM EABI ucontext_t. memcpy(&context.float_state, context.context.uc_mcontext.fpregs, sizeof(context.float_state)); #endif + +#if defined(__powerpc64__) + // Vector registers must be copied on PPC64 + memcpy(&context.vector_state, context.context.uc_mcontext.v_regs, + sizeof(context.vector_state)); +#endif + context.tid = sys_gettid(); // Add an exception stream to the minidump for better reporting. @@ -726,6 +741,9 @@ bool ExceptionHandler::WriteMinidump() { #elif defined(__mips__) context.siginfo.si_addr = reinterpret_cast(context.context.uc_mcontext.pc); +#elif defined(__powerpc64__) + context.siginfo.si_addr = + reinterpret_cast(context.context.uc_mcontext.gp_regs[PT_NIP]); #else #error "This code has not been ported to your platform yet." #endif diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h b/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h index f80843ea720..260dd10f7c2 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h @@ -192,7 +192,11 @@ class ExceptionHandler { siginfo_t siginfo; pid_t tid; // the crashing thread. ucontext_t context; -#if !defined(__ARM_EABI__) && !defined(__mips__) +#if defined(__powerpc64__) + // PPC64's FP state is a part of ucontext_t like MIPS but the vector + // state is not, so a struct is needed. + vstate_t vector_state; +#elif !defined(__ARM_EABI__) && !defined(__mips__) // #ifdef this out because FP state is not part of user ABI for Linux ARM. // In case of MIPS Linux FP state is already part of ucontext_t so // 'float_state' is not required. diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler_unittest.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler_unittest.cc index 35dcbfd4d86..7934370fd67 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler_unittest.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler_unittest.cc @@ -307,7 +307,7 @@ TEST(ExceptionHandlerTest, ParallelChildCrashesDontHang) { } // Wait a while until the child should have crashed. - usleep(1000000); + usleep(2000000); // Kill the child if it is still running. kill(child, SIGKILL); @@ -559,6 +559,8 @@ const unsigned char kIllegalInstruction[] = { #if defined(__mips__) // mfc2 zero,Impl - usually illegal in userspace. 0x48, 0x00, 0x00, 0x48 +#elif defined(__powerpc64__) + 0x01, 0x01, 0x01, 0x01 // Crashes on a tested POWER9 cpu #else // This crashes with SIGILL on x86/x86-64/arm. 0xff, 0xff, 0xff, 0xff @@ -754,10 +756,10 @@ TEST(ExceptionHandlerTest, InstructionPointerMemoryMaxBound) { // These are defined here so the parent can use them to check the // data from the minidump afterwards. - // Use 4k here because the OS will hand out a single page even + // Use the page size here because the OS will hand out a single page even // if a smaller size is requested, and this test wants to // test the upper bound of the memory range. - const uint32_t kMemorySize = 4096; // bytes + const uint32_t kMemorySize = getpagesize(); // bytes const int kOffset = kMemorySize - sizeof(kIllegalInstruction); const pid_t child = fork(); diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc index fa3c1713a56..6ce709e2f00 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc @@ -138,7 +138,9 @@ class MicrodumpWriter { const MicrodumpExtraInfo& microdump_extra_info, LinuxDumper* dumper) : ucontext_(context ? &context->context : NULL), -#if !defined(__ARM_EABI__) && !defined(__mips__) +#if defined(__powerpc64__) + vector_state_(context ? &context->vector_state : NULL), +#elif !defined(__ARM_EABI__) && !defined(__mips__) float_state_(context ? &context->float_state : NULL), #endif dumper_(dumper), @@ -337,6 +339,8 @@ class MicrodumpWriter { # else # error "This mips ABI is currently not supported (n32)" #endif +#elif defined(__powerpc64__) + const char kArch[] = "ppc64"; #else #error "This code has not been ported to your platform yet" #endif @@ -409,7 +413,9 @@ class MicrodumpWriter { void DumpCPUState() { RawContextCPU cpu; my_memset(&cpu, 0, sizeof(RawContextCPU)); -#if !defined(__ARM_EABI__) && !defined(__mips__) +#if defined(__powerpc64__) + UContextReader::FillCPUContext(&cpu, ucontext_, vector_state_); +#elif !defined(__ARM_EABI__) && !defined(__mips__) UContextReader::FillCPUContext(&cpu, ucontext_, float_state_); #else UContextReader::FillCPUContext(&cpu, ucontext_); @@ -605,7 +611,9 @@ class MicrodumpWriter { void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); } const ucontext_t* const ucontext_; -#if !defined(__ARM_EABI__) && !defined(__mips__) +#if defined(__powerpc64__) + const google_breakpad::vstate_t* const vector_state_; +#elif !defined(__ARM_EABI__) && !defined(__mips__) const google_breakpad::fpstate_t* const float_state_; #endif LinuxDumper* dumper_; diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc index 6339ac0cd83..291af106baa 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc @@ -279,10 +279,19 @@ TEST(MicrodumpWriterTest, BasicWithMappings) { CrashAndGetMicrodump(mappings, MicrodumpExtraInfo(), &buf); ASSERT_TRUE(ContainsMicrodump(buf)); + int page_size = getpagesize(); #ifdef __LP64__ - ASSERT_NE(std::string::npos, - buf.find("M 0000000000001000 000000000000002A 0000000000001000 " - "33221100554477668899AABBCCDDEEFF0 libfoo.so")); + // This test is only available for the following page sizes + ASSERT_TRUE((page_size == 4096) || (page_size == 65536)); + if (page_size == 4096) { + ASSERT_NE(std::string::npos, + buf.find("M 0000000000001000 000000000000002A 0000000000001000 " + "33221100554477668899AABBCCDDEEFF0 libfoo.so")); + } else { + ASSERT_NE(std::string::npos, + buf.find("M 0000000000010000 000000000000002A 0000000000010000 " + "33221100554477668899AABBCCDDEEFF0 libfoo.so")); + } #else ASSERT_NE(std::string::npos, buf.find("M 00001000 0000002A 00001000 " diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc index 4150689839a..b93e4afcff3 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc @@ -112,6 +112,9 @@ bool LinuxCoreDumper::GetThreadInfoByIndex(size_t index, ThreadInfo* info) { #elif defined(__mips__) stack_pointer = reinterpret_cast(info->mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]); +#elif defined(__powerpc64__) + stack_pointer = + reinterpret_cast(info->mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP]); #else #error "This code hasn't been ported to your platform yet." #endif @@ -197,7 +200,10 @@ bool LinuxCoreDumper::EnumerateThreads() { memset(&info, 0, sizeof(ThreadInfo)); info.tgid = status->pr_pgrp; info.ppid = status->pr_ppid; -#if defined(__mips__) +#if defined(__powerpc64__) + for (int i = 0; i < 31; i++) + info.mcontext.gp_regs[i] = status->pr_reg[i]; +#elif defined(__mips__) #if defined(__ANDROID__) for (int i = EF_R0; i <= EF_R31; i++) info.mcontext.gregs[i - EF_R0] = status->pr_reg[i]; diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.cc index 7fd6532ad25..199cbfffd1c 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.cc @@ -765,7 +765,9 @@ bool LinuxDumper::GetStackInfo(const void** stack, size_t* stack_len, reinterpret_cast(int_stack_pointer & ~(page_size - 1)); // The number of bytes of stack which we try to capture. - static const ptrdiff_t kStackToCapture = 32 * 1024; + // This now depends on page_size to avoid missing data + // on systems with larger page sizes. + static const ptrdiff_t kStackToCapture = 8 * page_size; const MappingInfo* mapping = FindMapping(stack_pointer); if (!mapping) diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h index 7bee160f1ab..07bb2b81a95 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h @@ -63,7 +63,8 @@ namespace google_breakpad { (defined(__mips__) && _MIPS_SIM == _ABIO32) typedef Elf32_auxv_t elf_aux_entry; #elif defined(__x86_64) || defined(__aarch64__) || \ - (defined(__mips__) && _MIPS_SIM != _ABIO32) + (defined(__mips__) && _MIPS_SIM != _ABIO32) || \ + defined(__powerpc64__) typedef Elf64_auxv_t elf_aux_entry; #endif diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc index 331f4bb346c..3f722947f7e 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc @@ -51,6 +51,8 @@ #define TID_PTR_REGISTER "rcx" #elif defined(__mips__) #define TID_PTR_REGISTER "$1" +#elif defined(__powerpc64__) +#define TID_PTR_REGISTER "r8" #else #error This test has not been ported to this platform. #endif diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc index e3ddb81a659..fa28575ef54 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc @@ -149,19 +149,27 @@ bool LinuxPtraceDumper::CopyFromProcess(void* dest, pid_t child, return true; } -bool LinuxPtraceDumper::ReadRegisterSet(ThreadInfo* info, pid_t tid) -{ +bool LinuxPtraceDumper::ReadRegisterSet(ThreadInfo* info, pid_t tid) { #ifdef PTRACE_GETREGSET struct iovec io; info->GetGeneralPurposeRegisters(&io.iov_base, &io.iov_len); - if (sys_ptrace(PTRACE_GETREGSET, tid, (void*)NT_PRSTATUS, (void*)&io) == -1) { + if (ptrace(PTRACE_GETREGSET, tid, (void*)NT_PRSTATUS, (void*)&io) == -1) { return false; } info->GetFloatingPointRegisters(&io.iov_base, &io.iov_len); - if (sys_ptrace(PTRACE_GETREGSET, tid, (void*)NT_FPREGSET, (void*)&io) == -1) { + if (ptrace(PTRACE_GETREGSET, tid, (void*)NT_FPREGSET, (void*)&io) == -1) { return false; } + +#if defined(__powerpc64__) + // Grab the vector registers on PPC64 too + info->GetVectorRegisters(&io.iov_base, &io.iov_len); + if (ptrace(PTRACE_GETREGSET, tid, (void*)NT_PPC_VMX, (void*)&io) == -1) { + return false; + } +#endif // defined(__powerpc64__) + return true; #else return false; @@ -298,6 +306,9 @@ bool LinuxPtraceDumper::GetThreadInfoByIndex(size_t index, ThreadInfo* info) { #elif defined(__mips__) stack_pointer = reinterpret_cast(info->mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]); +#elif defined(__powerpc64__) + stack_pointer = + reinterpret_cast(info->mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP]); #else #error "This code hasn't been ported to your platform yet." #endif diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc index da71e15dc01..12bfb317af1 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc @@ -462,6 +462,9 @@ TEST(LinuxPtraceDumperTest, VerifyStackReadWithMultipleThreads) { #elif defined(__mips__) pid_t* process_tid_location = reinterpret_cast(one_thread.mcontext.gregs[1]); +#elif defined(__powerpc64__) + pid_t* process_tid_location = + reinterpret_cast(one_thread.mcontext.gp_regs[8]); #else #error This test has not been ported to this platform. #endif @@ -559,6 +562,8 @@ TEST_F(LinuxPtraceDumperTest, SanitizeStackCopy) { uintptr_t heap_addr = thread_info.regs.rcx; #elif defined(__mips__) uintptr_t heap_addr = thread_info.mcontext.gregs[1]; +#elif defined(__powerpc64__) + uintptr_t heap_addr = thread_info.mcontext.gp_regs[8]; #else #error This test has not been ported to this platform. #endif diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc index 32634ef002a..2a56948de29 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc @@ -136,7 +136,9 @@ class MinidumpWriter { : fd_(minidump_fd), path_(minidump_path), ucontext_(context ? &context->context : NULL), -#if !defined(__ARM_EABI__) && !defined(__mips__) +#if defined(__powerpc64__) + vector_state_(context ? &context->vector_state : NULL), +#elif !defined(__ARM_EABI__) && !defined(__mips__) float_state_(context ? &context->float_state : NULL), #endif dumper_(dumper), @@ -468,7 +470,9 @@ class MinidumpWriter { if (!cpu.Allocate()) return false; my_memset(cpu.get(), 0, sizeof(RawContextCPU)); -#if !defined(__ARM_EABI__) && !defined(__mips__) +#if defined(__powerpc64__) + UContextReader::FillCPUContext(cpu.get(), ucontext_, vector_state_); +#elif !defined(__ARM_EABI__) && !defined(__mips__) UContextReader::FillCPUContext(cpu.get(), ucontext_, float_state_); #else UContextReader::FillCPUContext(cpu.get(), ucontext_); @@ -897,7 +901,7 @@ class MinidumpWriter { dirent->location.rva = 0; } -#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) +#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || defined(__powerpc64__) bool WriteCPUInformation(MDRawSystemInfo* sys_info) { char vendor_id[sizeof(sys_info->cpu.x86_cpu_info.vendor_id) + 1] = {0}; static const char vendor_id_name[] = "vendor_id"; @@ -917,7 +921,9 @@ class MinidumpWriter { // processor_architecture should always be set, do this first sys_info->processor_architecture = -#if defined(__mips__) +#if defined(__powerpc64__) + MD_CPU_ARCHITECTURE_PPC64; +#elif defined(__mips__) # if _MIPS_SIM == _ABIO32 MD_CPU_ARCHITECTURE_MIPS; # elif _MIPS_SIM == _ABI64 @@ -1333,7 +1339,9 @@ class MinidumpWriter { const char* path_; // Path to the file where the minidum should be written. const ucontext_t* const ucontext_; // also from the signal handler -#if !defined(__ARM_EABI__) && !defined(__mips__) +#if defined(__powerpc64__) + const google_breakpad::vstate_t* const vector_state_; +#elif !defined(__ARM_EABI__) && !defined(__mips__) const google_breakpad::fpstate_t* const float_state_; // ditto #endif LinuxDumper* dumper_; diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h index e3b0b16daea..028e7783327 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h @@ -48,6 +48,8 @@ class ExceptionHandler; #if defined(__aarch64__) typedef struct fpsimd_context fpstate_t; +#elif defined(__powerpc64__) +typedef struct _libc_vrstate vstate_t; #elif !defined(__ARM_EABI__) && !defined(__mips__) typedef std::remove_pointer::type fpstate_t; #endif diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc index d192e5cbb7a..fc1bfa8d7d9 100644 --- a/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc +++ b/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc @@ -715,6 +715,9 @@ TEST(MinidumpWriterTest, InvalidStackPointer) { #elif defined(__mips__) context.context.uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP] = invalid_stack_pointer; +#elif defined(__powerpc64__) + context.context.uc_mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP] = + invalid_stack_pointer; #else # error "This code has not been ported to your platform yet." #endif diff --git a/chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc b/chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc index 99362945ca8..c54ba714599 100644 --- a/chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc +++ b/chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc @@ -65,8 +65,7 @@ bool MemoryMappedFile::Map(const char* path, size_t offset) { } #if defined(__x86_64__) || defined(__aarch64__) || \ - (defined(__mips__) && _MIPS_SIM == _ABI64) - + (defined(__mips__) && _MIPS_SIM == _ABI64) || defined(__powerpc64__) struct kernel_stat st; if (sys_fstat(fd, &st) == -1 || st.st_size < 0) { #else diff --git a/chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file_unittest.cc b/chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file_unittest.cc index fad59f40cd1..616496d672b 100644 --- a/chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file_unittest.cc +++ b/chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file_unittest.cc @@ -176,9 +176,10 @@ TEST_F(MemoryMappedFileTest, RemapAfterMap) { TEST_F(MemoryMappedFileTest, MapWithOffset) { // Put more data in the test file this time. Offsets can only be // done on page boundaries, so we need a two page file to test this. - const int page_size = 4096; - char data1[2 * page_size]; - size_t data1_size = sizeof(data1); + const int page_size = getpagesize(); + char *data1 = static_cast(malloc(2 * page_size)); + EXPECT_TRUE(data1 != NULL); + size_t data1_size = (2 * page_size); for (size_t i = 0; i < data1_size; ++i) { data1[i] = i & 0x7f; } diff --git a/chromium/third_party/breakpad/breakpad/src/processor/exploitability_linux.cc b/chromium/third_party/breakpad/breakpad/src/processor/exploitability_linux.cc index 798056dfa9f..22bd81fff79 100644 --- a/chromium/third_party/breakpad/breakpad/src/processor/exploitability_linux.cc +++ b/chromium/third_party/breakpad/breakpad/src/processor/exploitability_linux.cc @@ -202,12 +202,14 @@ bool ExploitabilityLinux::EndedOnIllegalWrite(uint64_t instruction_ptr) { // Check architecture and set architecture variable to corresponding flag // in objdump. switch (context->GetContextCPU()) { +#if defined(__i386) || defined(__x86_64) case MD_CONTEXT_X86: architecture = "i386"; break; case MD_CONTEXT_AMD64: architecture = "i386:x86-64"; break; +#endif default: // Unsupported architecture. Note that ARM architectures are not // supported because objdump does not support ARM. diff --git a/chromium/third_party/breakpad/breakpad/src/processor/exploitability_unittest.cc b/chromium/third_party/breakpad/breakpad/src/processor/exploitability_unittest.cc index 528ee5f2137..72764d6c1e0 100644 --- a/chromium/third_party/breakpad/breakpad/src/processor/exploitability_unittest.cc +++ b/chromium/third_party/breakpad/breakpad/src/processor/exploitability_unittest.cc @@ -104,6 +104,8 @@ ExploitabilityFor(const string& filename) { } TEST(ExploitabilityTest, TestWindowsEngine) { +// The following tests are only executable on an x86-class linux machine. +#if !defined(_WIN32) && (defined(__i386) || defined(__x86_64)) ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, ExploitabilityFor("ascii_read_av.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, @@ -136,9 +138,12 @@ TEST(ExploitabilityTest, TestWindowsEngine) { ExploitabilityFor("read_av_clobber_write.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_LOW, ExploitabilityFor("read_av_conditional.dmp")); +#endif } TEST(ExploitabilityTest, TestLinuxEngine) { +// The following tests are only executable on an x86-class linux machine. +#if defined(__i386) || defined(__x86_64) ASSERT_EQ(google_breakpad::EXPLOITABILITY_INTERESTING, ExploitabilityFor("linux_null_read_av.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, @@ -171,7 +176,8 @@ TEST(ExploitabilityTest, TestLinuxEngine) { ExploitabilityFor("linux_executable_heap.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, ExploitabilityFor("linux_jmp_to_module_not_exe_region.dmp")); -#ifndef _WIN32 +#endif +#if !defined(_WIN32) && (defined(__i386) || defined(__x86_64)) ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, ExploitabilityFor("linux_write_to_nonwritable_module.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, @@ -182,10 +188,10 @@ TEST(ExploitabilityTest, TestLinuxEngine) { ExploitabilityFor("linux_write_to_outside_module_via_math.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_INTERESTING, ExploitabilityFor("linux_write_to_under_4k.dmp")); -#endif // _WIN32 +#endif // !defined(_WIN32) && (!defined(__i386) && !defined(__x86_64)) } -#ifndef _WIN32 +#if !defined(_WIN32) && (defined(__i386) || defined(__x86_64)) TEST(ExploitabilityLinuxUtilsTest, DisassembleBytesTest) { ASSERT_FALSE(ExploitabilityLinuxTest::DisassembleBytes("", NULL, 5, NULL)); uint8_t bytes[6] = {0xc7, 0x0, 0x5, 0x0, 0x0, 0x0}; @@ -301,6 +307,7 @@ TEST(ExploitabilityLinuxUtilsTest, CalculateAddressTest) { context, &write_address)); } -#endif // _WIN32 +#endif // !defined(_WIN32) && (defined(__i386) || defined(__x86_64)) + } // namespace diff --git a/chromium/third_party/breakpad/breakpad/src/tools/linux/md2core/minidump-2-core.cc b/chromium/third_party/breakpad/breakpad/src/tools/linux/md2core/minidump-2-core.cc index aade82c996d..195aa73f31e 100644 --- a/chromium/third_party/breakpad/breakpad/src/tools/linux/md2core/minidump-2-core.cc +++ b/chromium/third_party/breakpad/breakpad/src/tools/linux/md2core/minidump-2-core.cc @@ -77,6 +77,8 @@ #define ELF_ARCH EM_MIPS #elif defined(__aarch64__) #define ELF_ARCH EM_AARCH64 +#elif defined(__powerpc64__) + #define ELF_ARCH EM_PPC64 #endif #if defined(__arm__) @@ -87,6 +89,8 @@ typedef user_regs user_regs_struct; #elif defined (__mips__) // This file-local typedef simplifies the source code. typedef gregset_t user_regs_struct; +#elif defined(__powerpc64__) +typedef struct pt_regs user_regs_struct; #endif using google_breakpad::MDTypeHelper; @@ -321,6 +325,9 @@ struct CrashedProcess { #endif #if defined(__aarch64__) user_fpsimd_struct fpregs; +#endif +#if defined(__powerpc64__) + mcontext_t mcontext; #endif uintptr_t stack_addr; const uint8_t* stack; @@ -535,6 +542,38 @@ ParseThreadRegisters(CrashedProcess::Thread* thread, thread->mcontext.fpc_eir = rawregs->float_save.fir; #endif } +#elif defined(__powerpc64__) +static void +ParseThreadRegisters(CrashedProcess::Thread* thread, + const MinidumpMemoryRange& range) { + const MDRawContextPPC64* rawregs = range.GetData(0); + + for (int i = 0; i < MD_CONTEXT_PPC64_GPR_COUNT; i++) + thread->mcontext.gp_regs[i] = rawregs->gpr[i]; + + thread->mcontext.gp_regs[PT_LNK] = rawregs->lr; + thread->mcontext.gp_regs[PT_NIP] = rawregs->srr0; + thread->mcontext.gp_regs[PT_MSR] = rawregs->srr1; + thread->mcontext.gp_regs[PT_CCR] = rawregs->cr; + thread->mcontext.gp_regs[PT_XER] = rawregs->xer; + thread->mcontext.gp_regs[PT_CTR] = rawregs->ctr; + thread->mcontext.v_regs->vrsave = rawregs->vrsave; + + for (int i = 0; i < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; i++) + thread->mcontext.fp_regs[i] = rawregs->float_save.fpregs[i]; + + thread->mcontext.fp_regs[NFPREG-1] = rawregs->float_save.fpscr; + + for (int i = 0; i < MD_VECTORSAVEAREA_PPC_VR_COUNT; i++) { + thread->mcontext.v_regs->vrregs[i][0] = rawregs->vector_save.save_vr[i].high >> 32; + thread->mcontext.v_regs->vrregs[i][1] = rawregs->vector_save.save_vr[i].high; + thread->mcontext.v_regs->vrregs[i][2] = rawregs->vector_save.save_vr[i].low >> 32; + thread->mcontext.v_regs->vrregs[i][3] = rawregs->vector_save.save_vr[i].low; + } + + thread->mcontext.v_regs->vscr.vscr_word = rawregs->vector_save.save_vscr.low & 0xFFFFFFFF; +} + #else #error "This code has not been ported to your platform yet" #endif @@ -623,6 +662,12 @@ ParseSystemInfo(const Options& options, CrashedProcess* crashinfo, # else # error "This mips ABI is currently not supported (n32)" # endif +#elif defined(__powerpc64__) + if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_PPC64) { + fprintf(stderr, + "This version of minidump-2-core only supports PPC64.\n"); + exit(1); + } #else #error "This code has not been ported to your platform yet" #endif diff --git a/chromium/third_party/crashpad/crashpad/CONTRIBUTORS b/chromium/third_party/crashpad/crashpad/CONTRIBUTORS index 8724b7f32f1..8e29424ef63 100644 --- a/chromium/third_party/crashpad/crashpad/CONTRIBUTORS +++ b/chromium/third_party/crashpad/crashpad/CONTRIBUTORS @@ -13,3 +13,4 @@ Mark Mentovai Robert Sesek Scott Graham Joshua Peraza +Shawn Anastasio diff --git a/chromium/third_party/crashpad/crashpad/compat/linux/sys/user.h b/chromium/third_party/crashpad/crashpad/compat/linux/sys/user.h index 6ed77a98e1c..1fd83469a0f 100644 --- a/chromium/third_party/crashpad/crashpad/compat/linux/sys/user.h +++ b/chromium/third_party/crashpad/crashpad/compat/linux/sys/user.h @@ -15,6 +15,7 @@ #ifndef CRASHPAD_COMPAT_LINUX_SYS_USER_H_ #define CRASHPAD_COMPAT_LINUX_SYS_USER_H_ +#include #include_next #include diff --git a/chromium/third_party/crashpad/crashpad/minidump/minidump_context.h b/chromium/third_party/crashpad/crashpad/minidump/minidump_context.h index 3a3e603cb0d..3118d9e9f9a 100644 --- a/chromium/third_party/crashpad/crashpad/minidump/minidump_context.h +++ b/chromium/third_party/crashpad/crashpad/minidump/minidump_context.h @@ -592,6 +592,70 @@ struct MinidumpContextMIPS64 { uint64_t fir; }; +//! \brief ppc64-specific flags for MinidumpPPC64::context_flags +//! Based on minidump_cpu_ppc64.h from breakpad +enum MinidumpContextPPC64Flags : uint32_t { + //! \brief Identifies the context as PPC64. + kMinidumpContextPPC64 = 0x01000000, + + //! \brief Indicates the validity of general purpose registers. + //! + //! Registers `r0`-`r31`, `nip`, `msr`, `lr`, etc. are valid. + kMinidumpContextPPC64Base = kMinidumpContextPPC64 | 0x00000001, + + //! \brief Indicates the validity of floating point registers. + //! + //! Registers `fp0`-`fp31`, `fpscr` are valid. + kMinidumpContextPPC64Floating = kMinidumpContextPPC64 | 0x00000008, + + //! \brief Indicates the validity of Altivec/VMX registers. + //! + //! Registers `v0`-`v31`, `vscr`, `vrsave`. + kMinidumpContextPPC64Vector = kMinidumpContextPPC64 | 0x00000020, + + //! \brief Indicates the validity of all registers + kMinidumpContextPPC64All = kMinidumpContextPPC64Base | + kMinidumpContextPPC64Floating | + kMinidumpContextPPC64Vector +}; + +//! \brief A PPC64 CPU context carried in a minidump file. +//! Based on minidump_cpu_ppc64.h from breakpad. +struct MinidumpContextPPC64 { + uint64_t context_flags; + + //! \brief General purpose registers. + uint64_t nip; + uint64_t msr; + uint64_t regs[32]; + uint64_t ccr; + uint64_t xer; + uint64_t lnk; + uint64_t ctr; + + //! \brief Floating point registers. + double fpregs[32]; + + //! \brief FPU status register. + double fpscr; + + //! \brief Altivec/VMX vector registers. + struct { + //! \brief Vector registers are 128bits. + uint128_struct save_vr[32]; + uint128_struct save_vscr; + + //! \brief Padding included for breakpad compatibiltiy. + uint32_t save_pad5[4]; + + //! \brief VRSAVE register. + uint32_t save_vrsave; + + //! \brief Padding included for breakpad compatibiltiy. + uint32_t save_pad6[7]; + } vregs; +}; + } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ diff --git a/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc b/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc index d7e53a4932f..d89eb9e0132 100644 --- a/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc +++ b/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc @@ -101,6 +101,13 @@ MinidumpContextWriter::CreateFromSnapshot(const CPUContext* context_snapshot) { break; } + case kCPUArchitecturePPC64: { + context = std::make_unique(); + reinterpret_cast(context.get()) + ->InitalizeFromSnapshot(context_snapshot->ppc64); + break; + } + default: { LOG(ERROR) << "unknown context architecture " << context_snapshot->architecture; @@ -453,4 +460,47 @@ size_t MinidumpContextMIPS64Writer::ContextSize() const { return sizeof(context_); } +MinidumpContextPPC64Writer::MinidumpContextPPC64Writer() + : MinidumpContextWriter(), context_() { + context_.context_flags = kMinidumpContextPPC64; +} + +MinidumpContextPPC64Writer::~MinidumpContextPPC64Writer() = default; + +void MinidumpContextPPC64Writer::InitalizeFromSnapshot( + const CPUContextPPC64* context_snapshot) { + DCHECK_EQ(state(), kStateMutable); + DCHECK_EQ(context_.context_flags, kMinidumpContextPPC64); + + context_.context_flags = kMinidumpContextPPC64All; + + memcpy(context_.regs, context_snapshot->regs, sizeof(context_.regs)); + context_.nip = context_snapshot->nip; + context_.msr = context_snapshot->msr; + context_.ccr = context_snapshot->ccr; + context_.xer = context_snapshot->xer; + context_.lnk = context_snapshot->lnk; + context_.ctr = context_snapshot->ctr; + + memcpy(context_.fpregs, context_snapshot->fpregs, sizeof(context_.fpregs)); + context_.fpscr = context_snapshot->fpscr; + + memcpy(context_.vregs.save_vr, context_snapshot->vregs.save_vr, + sizeof(context_.vregs.save_vr)); + memcpy(&context_.vregs.save_vscr, &context_snapshot->vregs.save_vscr, + sizeof(context_.vregs.save_vscr)); + context_.vregs.save_vrsave = context_snapshot->vregs.save_vrsave; +} + +bool MinidumpContextPPC64Writer::WriteObject( + FileWriterInterface* file_writer) { + DCHECK_EQ(state(), kStateWritable); + return file_writer->Write(&context_, sizeof(context_)); +} + +size_t MinidumpContextPPC64Writer::ContextSize() const { + DCHECK_GE(state(), kStateFrozen); + return sizeof(context_); +} + } // namespace crashpad diff --git a/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.h b/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.h index d4ab936ee7f..1d22fc59c97 100644 --- a/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.h +++ b/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.h @@ -315,6 +315,45 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter { DISALLOW_COPY_AND_ASSIGN(MinidumpContextMIPS64Writer); }; +class MinidumpContextPPC64Writer final : public MinidumpContextWriter { + public: + MinidumpContextPPC64Writer(); + ~MinidumpContextPPC64Writer() override; + + //! \brief Initalizes the MinidumpContextPPC64 based on \a context_snapshot. + //! + //! \param[in] context_snapshot The context snapshot to use as source data. + //! + //! \note Valid in #kStateMutable. No mutation of context() may be done before + //! calling this method, and it is not normally necessary to alter + //! context() after calling this method. + void InitalizeFromSnapshot(const CPUContextPPC64* context_snapshot); + + //! \brief Returns a pointer to the context structure that this object will + //! write. + //! + //! \attention This returns a non-`const` pointer to this object’s private + //! data so that a caller can populate the context structure directly. + //! This is done because providing setter interfaces to each field in the + //! context structure would be unwieldy and cumbersome. Care must be taken + //! to populate the context structure correctly. The context structure + //! must only be modified while this object is in the #kStateMutable + //! state. + MinidumpContextPPC64* context() { return &context_; } + + protected: + // MinidumpWritable: + bool WriteObject(FileWriterInterface* file_writer) override; + + // MinidumpContextWriter: + size_t ContextSize() const override; + + private: + MinidumpContextPPC64 context_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpContextPPC64Writer); +}; + } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_WRITER_H_ diff --git a/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc b/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc index 3216a906bae..a9fcbe9d8e8 100644 --- a/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc +++ b/chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc @@ -213,6 +213,21 @@ TEST(MinidumpContextWriter, MIPS64_FromSnapshot) { context, ExpectMinidumpContextMIPS64, kSeed); } +TEST(MinidumpContextWriter, PPC64_Zeros) { + EmptyContextTest( + ExpectMinidumpContextPPC64); +} + +TEST(MinidumpContextWriter, PPC64_FromSnapshot) { + constexpr uint32_t kSeed = 64; + CPUContextPPC64 context_ppc64; + CPUContext context; + context.ppc64 = &context_ppc64; + InitializeCPUContextPPC64(&context, kSeed); + FromSnapshotTest( + context, ExpectMinidumpContextPPC64, kSeed); +} + } // namespace } // namespace test } // namespace crashpad diff --git a/chromium/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc b/chromium/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc index 0974e3ddf5a..b71ec588020 100644 --- a/chromium/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc +++ b/chromium/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc @@ -135,6 +135,8 @@ std::string MinidumpMiscInfoDebugBuildString() { static constexpr char kCPU[] = "mips"; #elif defined(ARCH_CPU_MIPS64EL) static constexpr char kCPU[] = "mips64"; +#elif defined(ARCH_CPU_PPC64) + static constexpr char kCPU[] = "ppc64"; #else #error define kCPU for this CPU #endif diff --git a/chromium/third_party/crashpad/crashpad/snapshot/capture_memory.cc b/chromium/third_party/crashpad/crashpad/snapshot/capture_memory.cc index 7a1b2763c08..beda8da9ed5 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/capture_memory.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/capture_memory.cc @@ -112,6 +112,11 @@ void CaptureMemory::PointedToByContext(const CPUContext& context, for (size_t i = 0; i < base::size(context.mipsel->regs); ++i) { MaybeCaptureMemoryAround(delegate, context.mipsel->regs[i]); } +#elif defined(ARCH_CPU_PPC64_FAMILY) + MaybeCaptureMemoryAround(delegate, context.ppc64->nip); + for (size_t i = 0; i < base::size(context.ppc64->regs); ++i) { + MaybeCaptureMemoryAround(delegate, context.ppc64->regs[i]); + } #else #error Port. #endif diff --git a/chromium/third_party/crashpad/crashpad/snapshot/cpu_architecture.h b/chromium/third_party/crashpad/crashpad/snapshot/cpu_architecture.h index 811a7209587..f4f83981dfd 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/cpu_architecture.h +++ b/chromium/third_party/crashpad/crashpad/snapshot/cpu_architecture.h @@ -43,7 +43,10 @@ enum CPUArchitecture { kCPUArchitectureMIPSEL, //! \brief 64-bit MIPSEL. - kCPUArchitectureMIPS64EL + kCPUArchitectureMIPS64EL, + + //! \brief 64-bit PPC64. + kCPUArchitecturePPC64 }; } // namespace crashpad diff --git a/chromium/third_party/crashpad/crashpad/snapshot/cpu_context.cc b/chromium/third_party/crashpad/crashpad/snapshot/cpu_context.cc index c75b5555e1d..aeade577aaa 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/cpu_context.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/cpu_context.cc @@ -169,6 +169,8 @@ uint64_t CPUContext::InstructionPointer() const { return arm->pc; case kCPUArchitectureARM64: return arm64->pc; + case kCPUArchitecturePPC64: + return ppc64->nip; default: NOTREACHED(); return ~0ull; @@ -185,6 +187,8 @@ uint64_t CPUContext::StackPointer() const { return arm->sp; case kCPUArchitectureARM64: return arm64->sp; + case kCPUArchitecturePPC64: + return ppc64->regs[1]; default: NOTREACHED(); return ~0ull; @@ -196,6 +200,7 @@ bool CPUContext::Is64Bit() const { case kCPUArchitectureX86_64: case kCPUArchitectureARM64: case kCPUArchitectureMIPS64EL: + case kCPUArchitecturePPC64: return true; case kCPUArchitectureX86: case kCPUArchitectureARM: diff --git a/chromium/third_party/crashpad/crashpad/snapshot/cpu_context.h b/chromium/third_party/crashpad/crashpad/snapshot/cpu_context.h index fb23c4679f0..eebede63c6b 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/cpu_context.h +++ b/chromium/third_party/crashpad/crashpad/snapshot/cpu_context.h @@ -352,6 +352,24 @@ struct CPUContextMIPS64 { uint64_t fir; }; +//! \brief A context structure carrying PPC64 CPU state. +struct CPUContextPPC64 { + uint64_t nip; + uint64_t msr; + uint64_t regs[32]; + uint64_t ccr; + uint64_t xer; + uint64_t lnk; + uint64_t ctr; + double fpregs[32]; + double fpscr; + struct { + uint128_struct save_vr[32]; + uint128_struct save_vscr; + uint32_t save_vrsave; + } vregs; +}; + //! \brief A context structure capable of carrying the context of any supported //! CPU architecture. struct CPUContext { @@ -382,6 +400,7 @@ struct CPUContext { CPUContextARM64* arm64; CPUContextMIPS* mipsel; CPUContextMIPS64* mips64; + CPUContextPPC64* ppc64; }; }; diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h b/chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h index 9f46a48977e..aa677c4eb9c 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h @@ -15,6 +15,7 @@ #ifndef CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ #define CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ +#include #include "build/build_config.h" #include "snapshot/cpu_context.h" #include "snapshot/linux/signal_context.h" @@ -174,6 +175,78 @@ void InitializeCPUContextMIPS( #endif // ARCH_CPU_MIPS_FAMILY || DOXYGEN +#if defined(ARCH_CPU_PPC64_FAMILY) || DOXYGEN + +//! \brief Initalizes a CPUContextPPC64 structure from native context +//! structures on Linux. +//! +//! \param[in] thread_context The native thread context. +//! \param[in] float_context The native float context. +//! \param[in] vector_context The native vector context. +//! \param[out] context The CPUContextPPC64 structure to initalize. +template +void InitializeCPUContextPPC64( + const ThreadContext::t64_t& thread_context, + const FloatContext::f64_t& float_context, + const VectorContext::v64_t& vector_context, + typename Traits::CPUContext* context) { + + memcpy(context->regs, thread_context.gpr, sizeof(context->regs)); + context->nip = thread_context.nip; + context->msr = thread_context.msr; + context->ccr = thread_context.ccr; + context->xer = thread_context.xer; + context->lnk = thread_context.lnk; + context->ctr = thread_context.ctr; + + memcpy(context->fpregs, float_context.fpregs, sizeof(context->fpregs)); + context->fpscr = float_context.fpscr; + + for (uint8_t i = 0; i < 32; i++) { + context->vregs.save_vr[i] = { + (((uint64_t)vector_context.vrregs[i][0]) << 32) | + vector_context.vrregs[i][1], + (((uint64_t)vector_context.vrregs[i][2]) << 32) | + vector_context.vrregs[i][3] + }; + } + context->vregs.save_vrsave = vector_context.vrsave; + context->vregs.save_vscr = {0, (uint64_t)vector_context.vscr.vscr_word}; +} + +template +void InitializeCPUContextPPC64( + const SignalThreadContext64 &thread_context, + const SignalFloatContext64 &float_context, + const SignalVectorContext64 &vector_context, + typename Traits::CPUContext* context) { + + memcpy(context->regs, thread_context.regs, sizeof(context->regs)); + context->nip = thread_context.nip; + context->msr = thread_context.msr; + context->ccr = thread_context.ccr; + context->xer = thread_context.xer; + context->lnk = thread_context.lnk; + context->ctr = thread_context.ctr; + + memcpy(context->fpregs, float_context.regs, sizeof(context->fpregs)); + context->fpscr = float_context.fpscr; + + for (uint8_t i = 0; i < 32; i++) { + context->vregs.save_vr[i] = { + (((uint64_t)vector_context.vrregs[i][0]) << 32) | + vector_context.vrregs[i][1], + (((uint64_t)vector_context.vrregs[i][2]) << 32) | + vector_context.vrregs[i][3] + }; + } + context->vregs.save_vrsave = vector_context.vrsave; + context->vregs.save_vscr = {0, (uint64_t)vector_context.vscr.vscr_word}; +} + + +#endif + } // namespace internal } // namespace crashpad diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc b/chromium/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc index 45ba65025f1..12e888233b1 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc @@ -171,9 +171,11 @@ void TestAgainstTarget(PtraceConnection* connection) { const bool is_vdso_mapping = device == 0 && inode == 0 && mapping_name == "[vdso]"; static constexpr char kPrefix[] = "linux-vdso.so."; + static constexpr char kPrefix64[] = "linux-vdso64.so."; return is_vdso_mapping == (module_name.empty() || - module_name.compare(0, strlen(kPrefix), kPrefix) == 0); + module_name.compare(0, strlen(kPrefix), kPrefix) == 0 || + module_name.compare(0, strlen(kPrefix64), kPrefix64) == 0); }, module_mapping->name, module_mapping->device, diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc b/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc index cd40b3b12d6..6bcf23b6ffe 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc @@ -323,6 +323,69 @@ bool ExceptionSnapshotLinux::ReadContext( reader, context_address, context_.mips64); } +#elif defined(ARCH_CPU_PPC64_FAMILY) + +template +static bool ReadContext(ProcessReaderLinux* reader, + LinuxVMAddress context_address, + typename Traits::CPUContext* dest_context) { + const ProcessMemory* memory = reader->Memory(); + + LinuxVMAddress gp_regs_address = context_address + + offsetof(UContext, mcontext) + + offsetof(typename Traits::MContext, gp_regs); + + typename Traits::SignalThreadContext thread_context; + if (!memory->Read(gp_regs_address, sizeof(thread_context), &thread_context)) { + LOG(ERROR) << "Couldn't read gp_regs!"; + return false; + } + + LinuxVMAddress fp_regs_address = context_address + + offsetof(UContext, mcontext) + + offsetof(typename Traits::MContext, fp_regs); + + typename Traits::SignalFloatContext fp_context; + if (!memory->Read(fp_regs_address, sizeof(fp_context), &fp_context)) { + LOG(ERROR) << "Couldn't read fp_regs!"; + return false; + } + + LinuxVMAddress v_regs_ptr_address = context_address + + offsetof(UContext, mcontext) + + offsetof(typename Traits::MContext, vmx_reserve) + 8; + + typename Traits::SignalVectorContext v_context; + if (!memory->Read(v_regs_ptr_address, sizeof(v_context), &v_context)) { + LOG(ERROR) << "Couldn't read v_regs!"; + return false; + } + + InitializeCPUContextPPC64(thread_context, fp_context, + v_context, dest_context); + + return true; +} + +template<> +bool ExceptionSnapshotLinux::ReadContext( + ProcessReaderLinux* reader, + LinuxVMAddress context_address) { + context_.architecture = kCPUArchitecturePPC64; + context_.ppc64 = &context_union_.ppc64; + + return internal::ReadContext( + reader, context_address, context_.ppc64); +} + +template<> +bool ExceptionSnapshotLinux::ReadContext( + ProcessReaderLinux* reader, + LinuxVMAddress context_address) { + // PPC64 is 64-bit + return false; +} + #endif // ARCH_CPU_X86_FAMILY bool ExceptionSnapshotLinux::Initialize(ProcessReaderLinux* process_reader, diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h b/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h index ea0cd21066d..e42df520ff4 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h @@ -84,6 +84,8 @@ class ExceptionSnapshotLinux final : public ExceptionSnapshot { #elif defined(ARCH_CPU_MIPS_FAMILY) CPUContextMIPS mipsel; CPUContextMIPS64 mips64; +#elif defined(ARCH_CPU_PPC64_FAMILY) + CPUContextPPC64 ppc64; #endif } context_union_; CPUContext context_; diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc b/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc index c17170b437e..b6a714cc63d 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc @@ -296,7 +296,28 @@ void ExpectContext(const CPUContext& actual, const NativeCPUContext& expected) { 0); #undef CPU_ARCH_NAME } +#elif defined(ARCH_CPU_PPC64_FAMILY) +using NativeCPUContext = ucontext_t; + +void InitializeContext(NativeCPUContext* context) { + for (size_t reg = 0; reg < 32; ++reg) { + context->uc_mcontext.gp_regs[reg] = reg; + } + + memset(&context->uc_mcontext.fp_regs, 44, + sizeof(context->uc_mcontext.fp_regs)); +} +void ExpectContext(const CPUContext& actual, const NativeCPUContext& expected) { + EXPECT_EQ(actual.architecture, kCPUArchitecturePPC64); + + for (size_t reg = 0; reg < 32; ++reg) { + EXPECT_EQ(actual.ppc64->regs[reg], expected.uc_mcontext.gp_regs[reg]); + } + + EXPECT_EQ(memcmp(actual.ppc64->fpregs, expected.uc_mcontext.fp_regs, + sizeof(actual.ppc64->fpregs)), 0); +} #else #error Port. #endif diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc b/chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc index ee246e8bcbe..9555dce0479 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc @@ -108,6 +108,8 @@ void ProcessReaderLinux::Thread::InitializeStack(ProcessReaderLinux* reader) { #elif defined(ARCH_CPU_MIPS_FAMILY) stack_pointer = reader->Is64Bit() ? thread_info.thread_context.t64.regs[29] : thread_info.thread_context.t32.regs[29]; +#elif defined(ARCH_CPU_PPC64_FAMILY) + stack_pointer = thread_info.thread_context.t64.gpr[1]; #else #error Port. #endif diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux_test.cc b/chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux_test.cc index 73e350dbf8d..a757da2f144 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux_test.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux_test.cc @@ -622,6 +622,8 @@ bool WriteTestModule(const base::FilePath& module_path, module.ehdr.e_machine = EM_AARCH64; #elif defined(ARCH_CPU_MIPSEL) || defined(ARCH_CPU_MIPS64EL) module.ehdr.e_machine = EM_MIPS; +#elif defined(ARCH_CPU_PPC64) + module.ehdr.e_machine = EM_PPC64; #endif module.ehdr.e_version = EV_CURRENT; diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h b/chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h index 110024680bd..8e335a0960c 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h @@ -422,6 +422,89 @@ static_assert(offsetof(UContext, mcontext.fpregs) == "context offset mismatch"); #endif +#elif defined(ARCH_CPU_PPC64_FAMILY) + +struct SignalThreadContext64 { + uint64_t regs[32]; + uint64_t nip; + uint64_t msr; + uint64_t orig_r3; + uint64_t ctr; + uint64_t lnk; + uint64_t xer; + uint64_t ccr; + uint64_t softe; + uint64_t trap; + uint64_t dar; + uint64_t dsisr; + uint64_t result; + uint64_t dscr; + uint64_t fpr0[3]; +}; + +struct SignalFloatContext64 { + double regs[32]; + double fpscr; +}; + +struct SignalVectorContext64 { + int32_t vrregs[32][4]; + struct { + int32_t __pad[3]; + int32_t vscr_word; + } vscr; + int32_t vrsave; + int32_t __pad[3]; +} __attribute__((__aligned__(16))); + + +#pragma pack(pop) +struct MContext64 { + uint64_t reserved[4]; + int32_t signal; + int32_t __pad0; + uint64_t handler; + uint64_t oldmask; + uint64_t pt_regs_ptr; + SignalThreadContext64 gp_regs; + SignalFloatContext64 fp_regs; + SignalVectorContext64 *v_regs; + int64_t vmx_reserve[69]; +}; + +struct ContextTraits64 : public Traits64 { + using MContext = MContext64; + using SignalThreadContext = SignalThreadContext64; + using SignalFloatContext = SignalFloatContext64; + using SignalVectorContext = SignalVectorContext64; + using CPUContext = CPUContextPPC64; +}; + +struct ContextTraits32 : public Traits32 {}; + +struct UContext { + uint64_t flags; + uint64_t link; + SignalStack stack; + Sigset sigmask; + MContext64 mcontext; +}; +#pragma pack(push, 1) + +static_assert(sizeof(UContext) == sizeof(ucontext_t), + "ucontext_t size mismatch"); +static_assert(sizeof(MContext64) == sizeof(mcontext_t), + "mcontext_t size mismatch"); +static_assert(sizeof(SignalThreadContext64) == sizeof(gregset_t), + "gregset_t size mismatch"); +static_assert(sizeof(SignalFloatContext64) == sizeof(fpregset_t), + "fpregset_t size mismatch"); +static_assert(sizeof(SignalVectorContext64) == sizeof(_libc_vrstate), + "vrstate size mismatch"); +static_assert(offsetof(UContext, mcontext) == + offsetof(ucontext_t, uc_mcontext), "mcontext offset mismatch"); +static_assert(offsetof(MContext64, gp_regs) == + offsetof(mcontext_t, gp_regs), "gp_regs offset mismatch"); #else #error Port. #endif // ARCH_CPU_X86_FAMILY diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc b/chromium/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc index a99da3e4b6d..03b97308353 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc @@ -204,6 +204,8 @@ CPUArchitecture SystemSnapshotLinux::GetCPUArchitecture() const { #elif defined(ARCH_CPU_MIPS_FAMILY) return process_reader_->Is64Bit() ? kCPUArchitectureMIPS64EL : kCPUArchitectureMIPSEL; +#elif defined(ARCH_CPU_PPC64_FAMILY) + return kCPUArchitecturePPC64; #else #error port to your architecture #endif @@ -219,6 +221,9 @@ uint32_t SystemSnapshotLinux::CPURevision() const { #elif defined(ARCH_CPU_MIPS_FAMILY) // Not implementable on MIPS return 0; +#elif defined(ARCH_CPU_PPC64_FAMILY) + // Not yet implemented on PPC64 + return 0; #else #error port to your architecture #endif @@ -239,6 +244,9 @@ std::string SystemSnapshotLinux::CPUVendor() const { #elif defined(ARCH_CPU_MIPS_FAMILY) // Not implementable on MIPS return std::string(); +#elif defined(ARCH_CPU_PPC64_FAMILY) + // Not yet implemented on PPC64 + return std::string(); #else #error port to your architecture #endif @@ -372,6 +380,9 @@ bool SystemSnapshotLinux::NXEnabled() const { #elif defined(ARCH_CPU_MIPS_FAMILY) // Not implementable on MIPS return false; +#elif defined(ARCH_CPU_PPC64_FAMILY) + // Not yet implemented on PPC64 + return false; #else #error Port. #endif // ARCH_CPU_X86_FAMILY diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc b/chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc index e3e2bebddb9..8ef43752ebd 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc @@ -186,6 +186,14 @@ bool ThreadSnapshotLinux::Initialize(ProcessReaderLinux* process_reader, thread.thread_info.float_context.f32, context_.mipsel); } +#elif defined(ARCH_CPU_PPC64_FAMILY) + context_.architecture = kCPUArchitecturePPC64; + context_.ppc64 = &context_union_.ppc64; + InitializeCPUContextPPC64( + thread.thread_info.thread_context.t64, + thread.thread_info.float_context.f64, + thread.thread_info.vector_context.v64, + context_.ppc64); #else #error Port. #endif diff --git a/chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h b/chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h index 44cc6f6d973..d4136461e21 100644 --- a/chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h +++ b/chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h @@ -68,6 +68,8 @@ class ThreadSnapshotLinux final : public ThreadSnapshot { #elif defined(ARCH_CPU_MIPS_FAMILY) CPUContextMIPS mipsel; CPUContextMIPS64 mips64; +#elif defined(ARCH_CPU_PPC64_FAMILY) + CPUContextPPC64 ppc64; #else #error Port. #endif // ARCH_CPU_X86_FAMILY diff --git a/chromium/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc b/chromium/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc index d3d5ebdfb9f..3fd730cb520 100644 --- a/chromium/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc +++ b/chromium/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc @@ -56,6 +56,11 @@ bool AuxiliaryVector::Read(PtraceConnection* connection) { if (type == AT_IGNORE) { continue; } +#if defined(ARCH_CPU_PPC64_FAMILY) + if (type == AT_IGNOREPPC) { + continue; + } +#endif if (!MapInsertOrReplace(&values_, type, value, nullptr)) { LOG(ERROR) << "duplicate auxv entry"; return false; diff --git a/chromium/third_party/crashpad/crashpad/util/linux/ptrace_broker.cc b/chromium/third_party/crashpad/crashpad/util/linux/ptrace_broker.cc index b6b5bb131de..577f67cf051 100644 --- a/chromium/third_party/crashpad/crashpad/util/linux/ptrace_broker.cc +++ b/chromium/third_party/crashpad/crashpad/util/linux/ptrace_broker.cc @@ -94,8 +94,8 @@ int PtraceBroker::Run() { } bool PtraceBroker::AllocateAttachments() { - constexpr size_t page_size = 4096; - constexpr size_t alloc_size = + static size_t page_size = getpagesize(); + size_t alloc_size = (sizeof(ScopedPtraceAttach) + page_size - 1) & ~(page_size - 1); void* alloc = sbrk(alloc_size); if (reinterpret_cast(alloc) == -1) { diff --git a/chromium/third_party/crashpad/crashpad/util/linux/ptracer.cc b/chromium/third_party/crashpad/crashpad/util/linux/ptracer.cc index 557e0d36357..08ae434b803 100644 --- a/chromium/third_party/crashpad/crashpad/util/linux/ptracer.cc +++ b/chromium/third_party/crashpad/crashpad/util/linux/ptracer.cc @@ -398,6 +398,64 @@ bool GetThreadArea64(pid_t tid, return true; } +#elif defined(ARCH_CPU_PPC64_FAMILY) +// PPC64 has had HAVE_ARCH_TRACEHOOK set since 2.6.27 (even before x86 had it). +// That means we can simply use PTRACE_GETREGESET. + +template +bool GetRegisterSet(pid_t tid, int set, Destination* dest, bool can_log) { + iovec iov; + iov.iov_base = reinterpret_cast(dest); + iov.iov_len = sizeof(*dest); + if (ptrace(PTRACE_GETREGSET, tid, reinterpret_cast(set), &iov) != 0) { + PLOG_IF(ERROR, can_log) << "ptrace"; + return false; + } + if (iov.iov_len != sizeof(*dest)) { + LOG_IF(ERROR, can_log) << "Unexpected registers size"; + return false; + } + return true; +} + +bool GetVectorRegisters64(pid_t tid, + VectorContext* context, + bool can_log) { + return GetRegisterSet(tid, NT_PPC_VMX, &context->v64, can_log); +} + +bool GetFloatingPointRegisters64(pid_t tid, + FloatContext* context, + bool can_log) { + return GetRegisterSet(tid, NT_PRFPREG, &context->f64, can_log); +} + +bool GetThreadArea64(pid_t tid, + const ThreadContext& context, + LinuxVMAddress* address, + bool can_log) { + // PPC64 doesn't have PTRACE_GET_THREAD_AREA since the thread pointer + // is stored in GPR 13. + ThreadContext::t64_t tc; + if (!GetRegisterSet(tid, NT_PRSTATUS, &tc, can_log)) { + LOG_IF(ERROR, can_log) << "Unable to get thread pointer!"; + return false; + } + + *address = tc.gpr[13]; + + return true; +} + +// Stubs for 32-bit functions not applicable on PPC64 +bool GetFloatingPointRegisters32(pid_t tid, + FloatContext* context, + bool can_log) { return false; } +bool GetThreadArea32(pid_t tid, + const ThreadContext &context, + LinuxVMAddress *address, + bool can_log) { return false; } + #else #error Port. #endif // ARCH_CPU_X86_FAMILY @@ -494,6 +552,9 @@ bool Ptracer::GetThreadInfo(pid_t tid, ThreadInfo* info) { if (is_64_bit_) { return GetGeneralPurposeRegisters64(tid, &info->thread_context, can_log_) && GetFloatingPointRegisters64(tid, &info->float_context, can_log_) && +#if defined(ARCH_CPU_PPC64_FAMILY) + GetVectorRegisters64(tid, &info->vector_context, can_log_) && +#endif GetThreadArea64(tid, info->thread_context, &info->thread_specific_data_address, diff --git a/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h b/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h index 5b55c24a76d..dea0d1f39eb 100644 --- a/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h +++ b/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h @@ -28,6 +28,10 @@ #include #endif +#if defined(ARCH_CPU_PPC64_FAMILY) +#include +#endif + namespace crashpad { //! \brief The set of general purpose registers for an architecture family. @@ -79,6 +83,8 @@ union ThreadContext { uint32_t cp0_status; uint32_t cp0_cause; uint32_t padding1_; +#elif defined(ARCH_CPU_PPC64_FAMILY) + // PPC64 is 64-bit #else #error Port. #endif // ARCH_CPU_X86_FAMILY @@ -132,6 +138,21 @@ union ThreadContext { uint64_t cp0_badvaddr; uint64_t cp0_status; uint64_t cp0_cause; +#elif defined(ARCH_CPU_PPC64_FAMILY) + // Reflects struct pt_regs in asm/ptrace.h. + uint64_t gpr[32]; + uint64_t nip; + uint64_t msr; + uint64_t orig_gpr3; + uint64_t ctr; + uint64_t lnk; + uint64_t xer; + uint64_t ccr; + uint64_t softe; + uint64_t trap; + uint64_t dar; + uint64_t dsisr; + uint64_t result; #else #error Port. #endif // ARCH_CPU_X86_FAMILY @@ -143,6 +164,8 @@ union ThreadContext { using NativeThreadContext = user_regs; #elif defined(ARCH_CPU_MIPS_FAMILY) // No appropriate NativeThreadsContext type available for MIPS +#elif defined(ARCH_CPU_PPC64_FAMILY) + using NativeThreadContext = struct pt_regs; #else #error Port. #endif // ARCH_CPU_X86_FAMILY || ARCH_CPU_ARM64 @@ -218,6 +241,9 @@ union FloatContext { } fpregs[32]; uint32_t fpcsr; uint32_t fpu_id; +#elif defined(ARCH_CPU_PPC64_FAMILY) + // Crashpad's PPC support is 64-bit only, so this + // 32bit-only struct is declared as empty. #else #error Port. #endif // ARCH_CPU_X86_FAMILY @@ -252,6 +278,10 @@ union FloatContext { double fpregs[32]; uint32_t fpcsr; uint32_t fpu_id; +#elif defined(ARCH_CPU_PPC64_FAMILY) + // Reflects fpregset_t in sys/ucontext.h + double fpregs[32]; + double fpscr; #else #error Port. #endif // ARCH_CPU_X86_FAMILY @@ -280,6 +310,8 @@ union FloatContext { static_assert(sizeof(f64) == sizeof(user_fpsimd_struct), "Size mismatch"); #elif defined(ARCH_CPU_MIPS_FAMILY) // No appropriate floating point context native type for available MIPS. +#elif defined(ARCH_CPU_PPC64_FAMILY) + static_assert(sizeof(f64) == sizeof(fpregset_t), "Size mismatch"); #else #error Port. #endif // ARCH_CPU_X86 @@ -287,6 +319,26 @@ union FloatContext { static_assert(std::is_standard_layout::value, "Not standard layout"); +//! \brief The vector registers used for an architecture family +union VectorContext { + struct v32_t {} v32; +#if defined(ARCH_CPU_PPC64_FAMILY) + __attribute__((__aligned__(16))) // Vector context must be doubleword aligned. +#endif + struct v64_t { +#if defined(ARCH_CPU_PPC64_FAMILY) + // Reflects vrregset_t in sys/ucontext.h + uint32_t vrregs[32][4]; + struct { + uint32_t __pad[3]; + uint32_t vscr_word; + } vscr; + uint32_t vrsave; + uint32_t __pad[3]; +#endif + } v64; +}; + //! \brief A collection of `ptrace`-able information about a thread. struct ThreadInfo { ThreadInfo(); @@ -298,6 +350,9 @@ struct ThreadInfo { //! \brief The floating point registers for the thread. FloatContext float_context; + //! \brief (Optional) The vector registers used for the thread. + VectorContext vector_context; + //! \brief The thread-local storage address for the thread. LinuxVMAddress thread_specific_data_address; }; diff --git a/chromium/third_party/crashpad/crashpad/util/misc/capture_context.h b/chromium/third_party/crashpad/crashpad/util/misc/capture_context.h index d21a24f19fe..acc32534998 100644 --- a/chromium/third_party/crashpad/crashpad/util/misc/capture_context.h +++ b/chromium/third_party/crashpad/crashpad/util/misc/capture_context.h @@ -69,6 +69,7 @@ using NativeCPUContext = ucontext_t; //! macOS/Linux/Fuchsia | x86_64 | `%%rdi` //! Linux | ARM/ARM64 | `r0`/`x0` //! Linux | MIPS/MIPS64 | `$a0` +//! Linux | PPC64 | `r3` //! //! Additionally, the value `LR` on ARM/ARM64 will be the return address of //! this function. diff --git a/chromium/third_party/crashpad/crashpad/util/misc/capture_context_linux.S b/chromium/third_party/crashpad/crashpad/util/misc/capture_context_linux.S index 52215ee5d05..d4c3c8260b3 100644 --- a/chromium/third_party/crashpad/crashpad/util/misc/capture_context_linux.S +++ b/chromium/third_party/crashpad/crashpad/util/misc/capture_context_linux.S @@ -28,7 +28,7 @@ .globl CAPTURECONTEXT_SYMBOL2 #if defined(__i386__) || defined(__x86_64__) .balign 16, 0x90 -#elif defined(__arm__) || defined(__aarch64__) +#elif defined(__arm__) || defined(__aarch64__) || defined(__powerpc64__) .balign 4, 0x0 .type CAPTURECONTEXT_SYMBOL, %function .type CAPTURECONTEXT_SYMBOL2, %function @@ -423,4 +423,214 @@ CAPTURECONTEXT_SYMBOL2: jr $ra .set at +#elif defined(__powerpc64__) + // Store r0-r31 + std 0, 0xe8(3) // context->uc_mcontext.gp_regs[0] + std 1, 0xf0(3) // context->uc_mcontext.gp_regs[1] + std 2, 0xf8(3) // context->uc_mcontext.gp_regs[2] + // note that r3's original value was lost + std 3, 0x100(3) // context->uc_mcontext.gp_regs[3] + std 4, 0x108(3) // context->uc_mcontext.gp_regs[4] + std 5, 0x110(3) // context->uc_mcontext.gp_regs[5] + std 6, 0x118(3) // context->uc_mcontext.gp_regs[6] + std 7, 0x120(3) // context->uc_mcontext.gp_regs[7] + std 8, 0x128(3) // context->uc_mcontext.gp_regs[8] + std 9, 0x130(3) // context->uc_mcontext.gp_regs[9] + std 10, 0x138(3) // context->uc_mcontext.gp_regs[10] + std 11, 0x140(3) // context->uc_mcontext.gp_regs[11] + std 12, 0x148(3) // context->uc_mcontext.gp_regs[12] + std 13, 0x150(3) // context->uc_mcontext.gp_regs[13] + std 14, 0x158(3) // context->uc_mcontext.gp_regs[14] + std 15, 0x160(3) // context->uc_mcontext.gp_regs[15] + std 16, 0x168(3) // context->uc_mcontext.gp_regs[16] + std 17, 0x170(3) // context->uc_mcontext.gp_regs[17] + std 18, 0x178(3) // context->uc_mcontext.gp_regs[18] + std 19, 0x180(3) // context->uc_mcontext.gp_regs[19] + std 20, 0x188(3) // context->uc_mcontext.gp_regs[20] + std 21, 0x190(3) // context->uc_mcontext.gp_regs[21] + std 22, 0x198(3) // context->uc_mcontext.gp_regs[22] + std 23, 0x1a0(3) // context->uc_mcontext.gp_regs[23] + std 24, 0x1a8(3) // context->uc_mcontext.gp_regs[24] + std 25, 0x1b0(3) // context->uc_mcontext.gp_regs[25] + std 26, 0x1b8(3) // context->uc_mcontext.gp_regs[26] + std 27, 0x1c0(3) // context->uc_mcontext.gp_regs[27] + std 28, 0x1c8(3) // context->uc_mcontext.gp_regs[28] + std 29, 0x1d0(3) // context->uc_mcontext.gp_regs[29] + std 30, 0x1d8(3) // context->uc_mcontext.gp_regs[30] + std 31, 0x1e0(3) // context->uc_mcontext.gp_regs[31] + + // For NIP, we can use the value in the link register + mflr 0 + std 0, 0x1e8(3) // context->uc_mcontext.gp_regs[PT_NIP] + + // CTR + mfctr 0 + std 0, 0x200(3) // context->uc_mcontext.gp_regs[PT_CTR] + + // For LNK, we'll use the caller's LR save area (2 stack frames up). + // r4 can be used as a scratch register since it has already been saved. + ld 4, 0(1) + ld 4, 16(4) + std 4, 0x208(3) // context->uc_mcontext.gp_regs[PT_LNK] + + // XER + mfxer 0 + std 0, 0x210(3) // context->uc_mcontext.gp_regs[PT_XER] + + // CCR + mfcr 0 + std 0, 0x218(3) // context->uc_mcontext.gp_regs[PT_CCR] + + // MSR, orig_r3, MQ, TRAP, DAR, DSISR, RESULT, DSCR, + // not used or not relevant, zero them out. + li 4, 0 + std 4, 0x1f0(3) // context->uc_mcontext.gp_regs[PT_MSR] + std 4, 0x1f8(3) // context->uc_mcontext.gp_regs[PT_ORIG_R3] + std 4, 0x220(3) // context->uc_mcontext.gp_regs[PT_MQ] + std 4, 0x228(3) // context->uc_mcontext.gp_regs[PT_TRAP] + std 4, 0x230(3) // context->uc_mcontext.gp_regs[PT_DAR] + std 4, 0x238(3) // context->uc_mcontext.gp_regs[PT_DSISR] + std 4, 0x240(3) // context->uc_mcontext.gp_regs[PT_RESULT] + std 4, 0x248(3) // context->uc_mcontext.gp_regs[PT_DSCR] + + // Update context->uc_mcontext.regs to point to gp_regs + addi 0, 3, 0xe8 + std 0, 0xe0(3) + + // Save floating point registers 0-31 + stfd 0, 0x268(3) // context->uc_mcontext.fp_regs[0] + stfd 1, 0x270(3) // context->uc_mcontext.fp_regs[1] + stfd 2, 0x278(3) // context->uc_mcontext.fp_regs[2] + stfd 3, 0x280(3) // context->uc_mcontext.fp_regs[3] + stfd 4, 0x288(3) // context->uc_mcontext.fp_regs[4] + stfd 5, 0x290(3) // context->uc_mcontext.fp_regs[5] + stfd 6, 0x298(3) // context->uc_mcontext.fp_regs[6] + stfd 7, 0x2a0(3) // context->uc_mcontext.fp_regs[7] + stfd 8, 0x2a8(3) // context->uc_mcontext.fp_regs[8] + stfd 9, 0x2b0(3) // context->uc_mcontext.fp_regs[9] + stfd 10, 0x2b8(3) // context->uc_mcontext.fp_regs[10] + stfd 11, 0x2c0(3) // context->uc_mcontext.fp_regs[11] + stfd 12, 0x2c8(3) // context->uc_mcontext.fp_regs[12] + stfd 13, 0x2d0(3) // context->uc_mcontext.fp_regs[13] + stfd 14, 0x2d8(3) // context->uc_mcontext.fp_regs[14] + stfd 15, 0x2e0(3) // context->uc_mcontext.fp_regs[15] + stfd 16, 0x2e8(3) // context->uc_mcontext.fp_regs[16] + stfd 17, 0x2f0(3) // context->uc_mcontext.fp_regs[17] + stfd 18, 0x2f8(3) // context->uc_mcontext.fp_regs[18] + stfd 19, 0x300(3) // context->uc_mcontext.fp_regs[19] + stfd 20, 0x308(3) // context->uc_mcontext.fp_regs[20] + stfd 21, 0x310(3) // context->uc_mcontext.fp_regs[21] + stfd 22, 0x318(3) // context->uc_mcontext.fp_regs[22] + stfd 23, 0x320(3) // context->uc_mcontext.fp_regs[23] + stfd 24, 0x328(3) // context->uc_mcontext.fp_regs[24] + stfd 25, 0x330(3) // context->uc_mcontext.fp_regs[25] + stfd 26, 0x338(3) // context->uc_mcontext.fp_regs[26] + stfd 27, 0x340(3) // context->uc_mcontext.fp_regs[27] + stfd 28, 0x348(3) // context->uc_mcontext.fp_regs[28] + stfd 29, 0x350(3) // context->uc_mcontext.fp_regs[29] + stfd 30, 0x358(3) // context->uc_mcontext.fp_regs[30] + stfd 31, 0x360(3) // context->uc_mcontext.fp_regs[31] + + // FPSCR + mffs 0 + stfd 0, 0x368(3) // context->uc_mcontext.fp_regs[32] + + // Save VMX Vector registers + // Update r4 to contain the base address of vmx_reserve + addi 4, 3, 0x378 + // Ensure that it is quadword aligned + andi. 5, 4, 0xF + beq 1f // No alignment is necessary + // Address is doubleword aligned and not quadword aligned, add 8 + addi 4, 4, 8 + +1: + // Store VMX registers 0-31 + // r4 will contain the base address + // r5 will contain the index + li 5, 0 + stvx 0, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 0] + addi 5, 5, 16 + stvx 1, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 1] + addi 5, 5, 16 + stvx 2, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 2] + addi 5, 5, 16 + stvx 3, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 3] + addi 5, 5, 16 + stvx 4, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 4] + addi 5, 5, 16 + stvx 5, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 5] + addi 5, 5, 16 + stvx 6, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 6] + addi 5, 5, 16 + stvx 7, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 7] + addi 5, 5, 16 + stvx 8, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 8] + addi 5, 5, 16 + stvx 9, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 9] + addi 5, 5, 16 + stvx 10, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 10] + addi 5, 5, 16 + stvx 11, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 11] + addi 5, 5, 16 + stvx 12, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 12] + addi 5, 5, 16 + stvx 13, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 13] + addi 5, 5, 16 + stvx 14, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 14] + addi 5, 5, 16 + stvx 15, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 15] + addi 5, 5, 16 + stvx 16, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 16] + addi 5, 5, 16 + stvx 17, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 17] + addi 5, 5, 16 + stvx 18, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 18] + addi 5, 5, 16 + stvx 19, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 19] + addi 5, 5, 16 + stvx 20, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 20] + addi 5, 5, 16 + stvx 21, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 21] + addi 5, 5, 16 + stvx 22, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 22] + addi 5, 5, 16 + stvx 23, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 23] + addi 5, 5, 16 + stvx 24, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 24] + addi 5, 5, 16 + stvx 25, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 25] + addi 5, 5, 16 + stvx 26, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 26] + addi 5, 5, 16 + stvx 27, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 27] + addi 5, 5, 16 + stvx 28, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 28] + addi 5, 5, 16 + stvx 29, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 29] + addi 5, 5, 16 + stvx 30, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 30] + addi 5, 5, 16 + stvx 31, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 31] + addi 5, 5, 16 + + // VSCR + mfvscr 0 + stvx 0, 4, 5 + addi 5, 5, 16 + + // VRSAVE + mfvrsave 0 + stwx 0, 4, 5 + + // Update context->uc_mcontext.v_regs to point to vmx_reserve + alignment. + std 4, 0x370(3) + + // Zero out all unused fields + li 4, 0 + std 4, 0xc8(3) // context->uc_mcontext.signal + std 4, 0xd0(3) // context->uc_mcontext.handler + std 4, 0xd8(3) // context->uc_mcontext.oldmask + + blr #endif // __i386__ diff --git a/chromium/third_party/crashpad/crashpad/util/misc/capture_context_test.cc b/chromium/third_party/crashpad/crashpad/util/misc/capture_context_test.cc index cf23c2deffa..5f264bc9237 100644 --- a/chromium/third_party/crashpad/crashpad/util/misc/capture_context_test.cc +++ b/chromium/third_party/crashpad/crashpad/util/misc/capture_context_test.cc @@ -57,7 +57,7 @@ void TestCaptureContext() { uintptr_t pc = ProgramCounterFromContext(context_1); #if !defined(ADDRESS_SANITIZER) && !defined(ARCH_CPU_MIPS_FAMILY) && \ - !defined(MEMORY_SANITIZER) + !defined(MEMORY_SANITIZER) && !defined(ARCH_CPU_PPC64_FAMILY) // Sanitizers can cause enough code bloat that the “nearby” check would // likely fail. const uintptr_t kReferencePC = diff --git a/chromium/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc b/chromium/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc index 30a2ab21df1..60509f21d86 100644 --- a/chromium/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc +++ b/chromium/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc @@ -35,6 +35,8 @@ void SanityCheckContext(const NativeCPUContext& context) { EXPECT_EQ(context.uc_mcontext.regs[0], FromPointerCast(&context)); #elif defined(ARCH_CPU_MIPS_FAMILY) EXPECT_EQ(context.uc_mcontext.gregs[4], FromPointerCast(&context)); +#elif defined(ARCH_CPU_PPC64_FAMILY) + EXPECT_EQ(context.uc_mcontext.gp_regs[3], FromPointerCast(&context)); #endif } @@ -49,6 +51,8 @@ uintptr_t ProgramCounterFromContext(const NativeCPUContext& context) { return context.uc_mcontext.pc; #elif defined(ARCH_CPU_MIPS_FAMILY) return context.uc_mcontext.pc; +#elif defined(ARCH_CPU_PPC64_FAMILY) + return context.uc_mcontext.gp_regs[PT_NIP]; #endif } @@ -63,6 +67,8 @@ uintptr_t StackPointerFromContext(const NativeCPUContext& context) { return context.uc_mcontext.sp; #elif defined(ARCH_CPU_MIPS_FAMILY) return context.uc_mcontext.gregs[29]; +#elif defined(ARCH_CPU_PPC64_FAMILY) + return context.uc_mcontext.gp_regs[1]; #endif } diff --git a/chromium/third_party/crashpad/crashpad/util/posix/signals_test.cc b/chromium/third_party/crashpad/crashpad/util/posix/signals_test.cc index 54cc2f19f6e..62c9a8bba02 100644 --- a/chromium/third_party/crashpad/crashpad/util/posix/signals_test.cc +++ b/chromium/third_party/crashpad/crashpad/util/posix/signals_test.cc @@ -117,9 +117,11 @@ void CauseSignal(int sig) { break; } -#if !defined(ARCH_CPU_ARM64) +#if !defined(ARCH_CPU_ARM64) && !defined(ARCH_CPU_PPC64) // ARM64 has hardware integer division instructions that don’t generate a // trap for divide-by-zero, so this doesn’t produce SIGFPE. + // + // PPC64 fixed-point division by zero also doesn't produce a SIGFPE. case SIGFPE: { // Optimization makes this tricky, so get zero from a system call likely // to succeed, and try to do something with the result. @@ -137,7 +139,7 @@ void CauseSignal(int sig) { fstat(quotient, &stat_buf); break; } -#endif // ARCH_CPU_ARM64 +#endif // !defined(ARCH_CPU_ARM64) && !defined(ARCH_CPU_PPC64) #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARMEL) case SIGILL: { diff --git a/chromium/third_party/dav1d/config/linux/ppc64/config.h b/chromium/third_party/dav1d/config/linux/ppc64/config.h new file mode 100644 index 00000000000..6148436ba3c --- /dev/null +++ b/chromium/third_party/dav1d/config/linux/ppc64/config.h @@ -0,0 +1,40 @@ +/* + * Autogenerated by the Meson build system. + * Do not edit, your changes will be lost. + */ + +#pragma once + +#define ARCH_AARCH64 0 + +#define ARCH_ARM 0 + +#define ARCH_PPC64LE 1 + +#define ARCH_X86 0 + +#define ARCH_X86_32 0 + +#define ARCH_X86_64 0 + +#define CONFIG_16BPC 1 + +#define CONFIG_8BPC 1 + +// #define CONFIG_LOG 1 -- Logging is controlled by Chromium + +#define ENDIANNESS_BIG 0 + +#define HAVE_ASM 0 + +#define HAVE_AS_FUNC 0 + +#define HAVE_CLOCK_GETTIME 1 + +#define HAVE_DLSYM 1 + +#define HAVE_GETAUXVAL 1 + +#define HAVE_POSIX_MEMALIGN 1 + +#define HAVE_UNISTD_H 1 diff --git a/chromium/third_party/dav1d/dav1d_generated.gni b/chromium/third_party/dav1d/dav1d_generated.gni index 95fba31e1a7..c3851ca37a4 100644 --- a/chromium/third_party/dav1d/dav1d_generated.gni +++ b/chromium/third_party/dav1d/dav1d_generated.gni @@ -76,6 +76,11 @@ arm_template_sources = [ "libdav1d/src/arm/mc_init_tmpl.c", ] +ppc64_template_sources = [ + "libdav1d/src/ppc/cdef_init_tmpl.c", + "libdav1d/src/ppc/looprestoration_init_tmpl.c", +] + template_sources = [ "libdav1d/src/cdef_apply_tmpl.c", "libdav1d/src/cdef_tmpl.c", diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/config.h new file mode 100644 index 00000000000..ff43fd8921b --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/config.h @@ -0,0 +1,2217 @@ +/* Automatically generated by configure - do not modify! */ +#ifndef FFMPEG_CONFIG_H +#define FFMPEG_CONFIG_H +#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-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,vp9' --extra-cflags=-I/disk2/CHROMIUM_REBUILD/CHROMIUM_90/MODIFIED_TEST_BUILD/chromium-97.0.4692.99/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=ppc64le --extra-cflags='-mcpu=power9' --enable-pic --cc='ccache gcc' --cxx='ccache g++' --ld='ccache gcc' --extra-ldflags='-fuse-ld=lld'" +#define FFMPEG_LICENSE "LGPL version 2.1 or later" +#define CONFIG_THIS_YEAR 2021 +#define FFMPEG_DATADIR "/usr/local/share/ffmpeg" +#define AVCONV_DATADIR "/usr/local/share/ffmpeg" +#define CC_IDENT "gcc 10 (Debian 10.2.1-6)" +#define av_restrict restrict +#define EXTERN_PREFIX "" +#define EXTERN_ASM +#define BUILDSUF "" +#define SLIBSUF ".so" +#define HAVE_MMX2 HAVE_MMXEXT +#define SWS_MAX_FILTER_SIZE 256 +#define ARCH_AARCH64 0 +#define ARCH_ALPHA 0 +#define ARCH_ARM 0 +#define ARCH_AVR32 0 +#define ARCH_AVR32_AP 0 +#define ARCH_AVR32_UC 0 +#define ARCH_BFIN 0 +#define ARCH_IA64 0 +#define ARCH_M68K 0 +#define ARCH_MIPS 0 +#define ARCH_MIPS64 0 +#define ARCH_PARISC 0 +#define ARCH_PPC 1 +#define ARCH_PPC64 1 +#define ARCH_S390 0 +#define ARCH_SH4 0 +#define ARCH_SPARC 0 +#define ARCH_SPARC64 0 +#define ARCH_TILEGX 0 +#define ARCH_TILEPRO 0 +#define ARCH_TOMI 0 +#define ARCH_X86 0 +#define ARCH_X86_32 0 +#define ARCH_X86_64 0 +#define HAVE_ARMV5TE 0 +#define HAVE_ARMV6 0 +#define HAVE_ARMV6T2 0 +#define HAVE_ARMV8 0 +#define HAVE_NEON 0 +#define HAVE_VFP 0 +#define HAVE_VFPV3 0 +#define HAVE_SETEND 0 +#define HAVE_ALTIVEC 1 +#define HAVE_DCBZL 1 +#define HAVE_LDBRX 0 +#define HAVE_POWER8 1 +#define HAVE_PPC4XX 0 +#define HAVE_VSX 1 +#define HAVE_AESNI 0 +#define HAVE_AMD3DNOW 0 +#define HAVE_AMD3DNOWEXT 0 +#define HAVE_AVX 0 +#define HAVE_AVX2 0 +#define HAVE_AVX512 0 +#define HAVE_FMA3 0 +#define HAVE_FMA4 0 +#define HAVE_MMX 0 +#define HAVE_MMXEXT 0 +#define HAVE_SSE 0 +#define HAVE_SSE2 0 +#define HAVE_SSE3 0 +#define HAVE_SSE4 0 +#define HAVE_SSE42 0 +#define HAVE_SSSE3 0 +#define HAVE_XOP 0 +#define HAVE_CPUNOP 0 +#define HAVE_I686 0 +#define HAVE_MIPSFPU 0 +#define HAVE_MIPS32R2 0 +#define HAVE_MIPS32R5 0 +#define HAVE_MIPS64R2 0 +#define HAVE_MIPS32R6 0 +#define HAVE_MIPS64R6 0 +#define HAVE_MIPSDSP 0 +#define HAVE_MIPSDSPR2 0 +#define HAVE_MSA 0 +#define HAVE_MSA2 0 +#define HAVE_LOONGSON2 0 +#define HAVE_LOONGSON3 0 +#define HAVE_MMI 0 +#define HAVE_ARMV5TE_EXTERNAL 0 +#define HAVE_ARMV6_EXTERNAL 0 +#define HAVE_ARMV6T2_EXTERNAL 0 +#define HAVE_ARMV8_EXTERNAL 0 +#define HAVE_NEON_EXTERNAL 0 +#define HAVE_VFP_EXTERNAL 0 +#define HAVE_VFPV3_EXTERNAL 0 +#define HAVE_SETEND_EXTERNAL 0 +#define HAVE_ALTIVEC_EXTERNAL 0 +#define HAVE_DCBZL_EXTERNAL 0 +#define HAVE_LDBRX_EXTERNAL 0 +#define HAVE_POWER8_EXTERNAL 0 +#define HAVE_PPC4XX_EXTERNAL 0 +#define HAVE_VSX_EXTERNAL 0 +#define HAVE_AESNI_EXTERNAL 0 +#define HAVE_AMD3DNOW_EXTERNAL 0 +#define HAVE_AMD3DNOWEXT_EXTERNAL 0 +#define HAVE_AVX_EXTERNAL 0 +#define HAVE_AVX2_EXTERNAL 0 +#define HAVE_AVX512_EXTERNAL 0 +#define HAVE_FMA3_EXTERNAL 0 +#define HAVE_FMA4_EXTERNAL 0 +#define HAVE_MMX_EXTERNAL 0 +#define HAVE_MMXEXT_EXTERNAL 0 +#define HAVE_SSE_EXTERNAL 0 +#define HAVE_SSE2_EXTERNAL 0 +#define HAVE_SSE3_EXTERNAL 0 +#define HAVE_SSE4_EXTERNAL 0 +#define HAVE_SSE42_EXTERNAL 0 +#define HAVE_SSSE3_EXTERNAL 0 +#define HAVE_XOP_EXTERNAL 0 +#define HAVE_CPUNOP_EXTERNAL 0 +#define HAVE_I686_EXTERNAL 0 +#define HAVE_MIPSFPU_EXTERNAL 0 +#define HAVE_MIPS32R2_EXTERNAL 0 +#define HAVE_MIPS32R5_EXTERNAL 0 +#define HAVE_MIPS64R2_EXTERNAL 0 +#define HAVE_MIPS32R6_EXTERNAL 0 +#define HAVE_MIPS64R6_EXTERNAL 0 +#define HAVE_MIPSDSP_EXTERNAL 0 +#define HAVE_MIPSDSPR2_EXTERNAL 0 +#define HAVE_MSA_EXTERNAL 0 +#define HAVE_MSA2_EXTERNAL 0 +#define HAVE_LOONGSON2_EXTERNAL 0 +#define HAVE_LOONGSON3_EXTERNAL 0 +#define HAVE_MMI_EXTERNAL 0 +#define HAVE_ARMV5TE_INLINE 0 +#define HAVE_ARMV6_INLINE 0 +#define HAVE_ARMV6T2_INLINE 0 +#define HAVE_ARMV8_INLINE 0 +#define HAVE_NEON_INLINE 0 +#define HAVE_VFP_INLINE 0 +#define HAVE_VFPV3_INLINE 0 +#define HAVE_SETEND_INLINE 0 +#define HAVE_ALTIVEC_INLINE 0 +#define HAVE_DCBZL_INLINE 0 +#define HAVE_LDBRX_INLINE 0 +#define HAVE_POWER8_INLINE 0 +#define HAVE_PPC4XX_INLINE 0 +#define HAVE_VSX_INLINE 0 +#define HAVE_AESNI_INLINE 0 +#define HAVE_AMD3DNOW_INLINE 0 +#define HAVE_AMD3DNOWEXT_INLINE 0 +#define HAVE_AVX_INLINE 0 +#define HAVE_AVX2_INLINE 0 +#define HAVE_AVX512_INLINE 0 +#define HAVE_FMA3_INLINE 0 +#define HAVE_FMA4_INLINE 0 +#define HAVE_MMX_INLINE 0 +#define HAVE_MMXEXT_INLINE 0 +#define HAVE_SSE_INLINE 0 +#define HAVE_SSE2_INLINE 0 +#define HAVE_SSE3_INLINE 0 +#define HAVE_SSE4_INLINE 0 +#define HAVE_SSE42_INLINE 0 +#define HAVE_SSSE3_INLINE 0 +#define HAVE_XOP_INLINE 0 +#define HAVE_CPUNOP_INLINE 0 +#define HAVE_I686_INLINE 0 +#define HAVE_MIPSFPU_INLINE 0 +#define HAVE_MIPS32R2_INLINE 0 +#define HAVE_MIPS32R5_INLINE 0 +#define HAVE_MIPS64R2_INLINE 0 +#define HAVE_MIPS32R6_INLINE 0 +#define HAVE_MIPS64R6_INLINE 0 +#define HAVE_MIPSDSP_INLINE 0 +#define HAVE_MIPSDSPR2_INLINE 0 +#define HAVE_MSA_INLINE 0 +#define HAVE_MSA2_INLINE 0 +#define HAVE_LOONGSON2_INLINE 0 +#define HAVE_LOONGSON3_INLINE 0 +#define HAVE_MMI_INLINE 0 +#define HAVE_ALIGNED_STACK 1 +#define HAVE_FAST_64BIT 1 +#define HAVE_FAST_CLZ 1 +#define HAVE_FAST_CMOV 0 +#define HAVE_LOCAL_ALIGNED 1 +#define HAVE_SIMD_ALIGN_16 1 +#define HAVE_SIMD_ALIGN_32 0 +#define HAVE_SIMD_ALIGN_64 0 +#define HAVE_ATOMIC_CAS_PTR 0 +#define HAVE_MACHINE_RW_BARRIER 0 +#define HAVE_MEMORYBARRIER 0 +#define HAVE_MM_EMPTY 0 +#define HAVE_RDTSC 0 +#define HAVE_SEM_TIMEDWAIT 1 +#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1 +#define HAVE_CABS 0 +#define HAVE_CEXP 0 +#define HAVE_INLINE_ASM 1 +#define HAVE_SYMVER 0 +#define HAVE_X86ASM 0 +#define HAVE_BIGENDIAN 0 +#define HAVE_FAST_UNALIGNED 1 +#define HAVE_ARPA_INET_H 0 +#define HAVE_ASM_TYPES_H 1 +#define HAVE_CDIO_PARANOIA_H 0 +#define HAVE_CDIO_PARANOIA_PARANOIA_H 0 +#define HAVE_CUDA_H 0 +#define HAVE_DISPATCH_DISPATCH_H 0 +#define HAVE_DEV_BKTR_IOCTL_BT848_H 0 +#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0 +#define HAVE_DEV_IC_BT8XX_H 0 +#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0 +#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0 +#define HAVE_DIRECT_H 0 +#define HAVE_DIRENT_H 1 +#define HAVE_DXGIDEBUG_H 0 +#define HAVE_DXVA_H 0 +#define HAVE_ES2_GL_H 0 +#define HAVE_GSM_H 0 +#define HAVE_IO_H 0 +#define HAVE_LINUX_PERF_EVENT_H 1 +#define HAVE_MACHINE_IOCTL_BT848_H 0 +#define HAVE_MACHINE_IOCTL_METEOR_H 0 +#define HAVE_MALLOC_H 1 +#define HAVE_OPENCV2_CORE_CORE_C_H 0 +#define HAVE_OPENGL_GL3_H 0 +#define HAVE_POLL_H 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_SYS_RESOURCE_H 1 +#define HAVE_SYS_SELECT_H 1 +#define HAVE_SYS_SOUNDCARD_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_UN_H 1 +#define HAVE_SYS_VIDEOIO_H 0 +#define HAVE_TERMIOS_H 1 +#define HAVE_UDPLITE_H 0 +#define HAVE_UNISTD_H 1 +#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */ +#define HAVE_WINDOWS_H 0 +#define HAVE_WINSOCK2_H 0 +#define HAVE_INTRINSICS_NEON 0 +#define HAVE_ATANF 1 +#define HAVE_ATAN2F 1 +#define HAVE_CBRT 1 +#define HAVE_CBRTF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COSF 1 +#define HAVE_ERF 1 +#define HAVE_EXP2 1 +#define HAVE_EXP2F 1 +#define HAVE_EXPF 1 +#define HAVE_HYPOT 1 +#define HAVE_ISFINITE 1 +#define HAVE_ISINF 1 +#define HAVE_ISNAN 1 +#define HAVE_LDEXPF 1 +#define HAVE_LLRINT 1 +#define HAVE_LLRINTF 1 +#define HAVE_LOG2 1 +#define HAVE_LOG2F 1 +#define HAVE_LOG10F 1 +#define HAVE_LRINT 1 +#define HAVE_LRINTF 1 +#define HAVE_POWF 1 +#define HAVE_RINT 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SINF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_DOS_PATHS 0 +#define HAVE_LIBC_MSVCRT 0 +#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0 +#define HAVE_SECTION_DATA_REL_RO 1 +#define HAVE_THREADS 1 +#define HAVE_UWP 0 +#define HAVE_WINRT 0 +#define HAVE_ACCESS 1 +#define HAVE_ALIGNED_MALLOC 0 +#define HAVE_ARC4RANDOM 0 +#define HAVE_CLOCK_GETTIME 1 +#define HAVE_CLOSESOCKET 0 +#define HAVE_COMMANDLINETOARGVW 0 +#define HAVE_FCNTL 1 +#define HAVE_GETADDRINFO 0 +#define HAVE_GETHRTIME 0 +#define HAVE_GETOPT 1 +#define HAVE_GETMODULEHANDLE 0 +#define HAVE_GETPROCESSAFFINITYMASK 0 +#define HAVE_GETPROCESSMEMORYINFO 0 +#define HAVE_GETPROCESSTIMES 0 +#define HAVE_GETRUSAGE 1 +#define HAVE_GETSTDHANDLE 0 +#define HAVE_GETSYSTEMTIMEASFILETIME 0 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_GLOB 1 +#define HAVE_GLXGETPROCADDRESS 0 +#define HAVE_GMTIME_R 1 +#define HAVE_INET_ATON 0 +#define HAVE_ISATTY 1 +#define HAVE_KBHIT 0 +#define HAVE_LOCALTIME_R 1 +#define HAVE_LSTAT 1 +#define HAVE_LZO1X_999_COMPRESS 0 +#define HAVE_MACH_ABSOLUTE_TIME 0 +#define HAVE_MAPVIEWOFFILE 0 +#define HAVE_MEMALIGN 1 +#define HAVE_MKSTEMP 1 +#define HAVE_MMAP 1 +#define HAVE_MPROTECT 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_PEEKNAMEDPIPE 0 +#define HAVE_POSIX_MEMALIGN 1 +#define HAVE_PTHREAD_CANCEL 1 +#define HAVE_SCHED_GETAFFINITY 1 +#define HAVE_SECITEMIMPORT 0 +#define HAVE_SETCONSOLETEXTATTRIBUTE 0 +#define HAVE_SETCONSOLECTRLHANDLER 0 +#define HAVE_SETDLLDIRECTORY 0 +#define HAVE_SETMODE 0 +#define HAVE_SETRLIMIT 1 +#define HAVE_SLEEP 0 +#define HAVE_STRERROR_R 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTL 0 /* #define HAVE_SYSCTL 1 -- forced to 0 for Fuchsia */ +#define HAVE_USLEEP 1 +#define HAVE_UTGETOSTYPEFROMSTRING 0 +#define HAVE_VIRTUALALLOC 0 +#define HAVE_WGLGETPROCADDRESS 0 +#define HAVE_BCRYPT 0 +#define HAVE_VAAPI_DRM 0 +#define HAVE_VAAPI_X11 0 +#define HAVE_VDPAU_X11 0 +#define HAVE_PTHREADS 1 +#define HAVE_OS2THREADS 0 +#define HAVE_W32THREADS 0 +#define HAVE_AS_ARCH_DIRECTIVE 0 +#define HAVE_AS_DN_DIRECTIVE 0 +#define HAVE_AS_FPU_DIRECTIVE 0 +#define HAVE_AS_FUNC 1 +#define HAVE_AS_OBJECT_ARCH 0 +#define HAVE_ASM_MOD_Q 0 +#define HAVE_BLOCKS_EXTENSION 0 +#define HAVE_EBP_AVAILABLE 0 +#define HAVE_EBX_AVAILABLE 0 +#define HAVE_GNU_AS 0 +#define HAVE_GNU_WINDRES 0 +#define HAVE_IBM_ASM 1 +#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0 +#define HAVE_INLINE_ASM_LABELS 1 +#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1 +#define HAVE_PRAGMA_DEPRECATED 1 +#define HAVE_RSYNC_CONTIMEOUT 1 +#define HAVE_SYMVER_ASM_LABEL 0 +#define HAVE_SYMVER_GNU_ASM 1 +#define HAVE_VFP_ARGS 0 +#define HAVE_XFORM_ASM 1 +#define HAVE_XMM_CLOBBERS 0 +#define HAVE_KCMVIDEOCODECTYPE_HEVC 0 +#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0 +#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0 +#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0 +#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0 +#define HAVE_SOCKLEN_T 0 +#define HAVE_STRUCT_ADDRINFO 0 +#define HAVE_STRUCT_GROUP_SOURCE_REQ 0 +#define HAVE_STRUCT_IP_MREQ_SOURCE 0 +#define HAVE_STRUCT_IPV6_MREQ 0 +#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0 +#define HAVE_STRUCT_POLLFD 0 +#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1 +#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0 +#define HAVE_STRUCT_SOCKADDR_IN6 0 +#define HAVE_STRUCT_SOCKADDR_SA_LEN 0 +#define HAVE_STRUCT_SOCKADDR_STORAGE 0 +#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 +#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0 +#define HAVE_MAKEINFO 0 +#define HAVE_MAKEINFO_HTML 0 +#define HAVE_OPENCL_D3D11 0 +#define HAVE_OPENCL_DRM_ARM 0 +#define HAVE_OPENCL_DRM_BEIGNET 0 +#define HAVE_OPENCL_DXVA2 0 +#define HAVE_OPENCL_VAAPI_BEIGNET 0 +#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0 +#define HAVE_PERL 1 +#define HAVE_POD2MAN 1 +#define HAVE_TEXI2HTML 0 +#define CONFIG_DOC 0 +#define CONFIG_HTMLPAGES 0 +#define CONFIG_MANPAGES 0 +#define CONFIG_PODPAGES 0 +#define CONFIG_TXTPAGES 0 +#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1 +#define CONFIG_AVIO_READING_EXAMPLE 1 +#define CONFIG_DECODE_AUDIO_EXAMPLE 1 +#define CONFIG_DECODE_VIDEO_EXAMPLE 1 +#define CONFIG_DEMUXING_DECODING_EXAMPLE 1 +#define CONFIG_ENCODE_AUDIO_EXAMPLE 1 +#define CONFIG_ENCODE_VIDEO_EXAMPLE 1 +#define CONFIG_EXTRACT_MVS_EXAMPLE 1 +#define CONFIG_FILTER_AUDIO_EXAMPLE 0 +#define CONFIG_FILTERING_AUDIO_EXAMPLE 0 +#define CONFIG_FILTERING_VIDEO_EXAMPLE 0 +#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1 +#define CONFIG_HW_DECODE_EXAMPLE 1 +#define CONFIG_METADATA_EXAMPLE 1 +#define CONFIG_MUXING_EXAMPLE 0 +#define CONFIG_QSVDEC_EXAMPLE 0 +#define CONFIG_REMUXING_EXAMPLE 1 +#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0 +#define CONFIG_SCALING_VIDEO_EXAMPLE 0 +#define CONFIG_TRANSCODE_AAC_EXAMPLE 0 +#define CONFIG_TRANSCODING_EXAMPLE 0 +#define CONFIG_VAAPI_ENCODE_EXAMPLE 0 +#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0 +#define CONFIG_AVISYNTH 0 +#define CONFIG_FREI0R 0 +#define CONFIG_LIBCDIO 0 +#define CONFIG_LIBDAVS2 0 +#define CONFIG_LIBRUBBERBAND 0 +#define CONFIG_LIBVIDSTAB 0 +#define CONFIG_LIBX264 0 +#define CONFIG_LIBX265 0 +#define CONFIG_LIBXAVS 0 +#define CONFIG_LIBXAVS2 0 +#define CONFIG_LIBXVID 0 +#define CONFIG_DECKLINK 0 +#define CONFIG_LIBFDK_AAC 0 +#define CONFIG_OPENSSL 0 +#define CONFIG_LIBTLS 0 +#define CONFIG_GMP 0 +#define CONFIG_LIBARIBB24 0 +#define CONFIG_LIBLENSFUN 0 +#define CONFIG_LIBOPENCORE_AMRNB 0 +#define CONFIG_LIBOPENCORE_AMRWB 0 +#define CONFIG_LIBVMAF 0 +#define CONFIG_LIBVO_AMRWBENC 0 +#define CONFIG_MBEDTLS 0 +#define CONFIG_RKMPP 0 +#define CONFIG_LIBSMBCLIENT 0 +#define CONFIG_CHROMAPRINT 0 +#define CONFIG_GCRYPT 0 +#define CONFIG_GNUTLS 0 +#define CONFIG_JNI 0 +#define CONFIG_LADSPA 0 +#define CONFIG_LIBAOM 0 +#define CONFIG_LIBASS 0 +#define CONFIG_LIBBLURAY 0 +#define CONFIG_LIBBS2B 0 +#define CONFIG_LIBCACA 0 +#define CONFIG_LIBCELT 0 +#define CONFIG_LIBCODEC2 0 +#define CONFIG_LIBDAV1D 0 +#define CONFIG_LIBDC1394 0 +#define CONFIG_LIBDRM 0 +#define CONFIG_LIBFLITE 0 +#define CONFIG_LIBFONTCONFIG 0 +#define CONFIG_LIBFREETYPE 0 +#define CONFIG_LIBFRIBIDI 0 +#define CONFIG_LIBGLSLANG 0 +#define CONFIG_LIBGME 0 +#define CONFIG_LIBGSM 0 +#define CONFIG_LIBIEC61883 0 +#define CONFIG_LIBILBC 0 +#define CONFIG_LIBJACK 0 +#define CONFIG_LIBKLVANC 0 +#define CONFIG_LIBKVAZAAR 0 +#define CONFIG_LIBMODPLUG 0 +#define CONFIG_LIBMP3LAME 0 +#define CONFIG_LIBMYSOFA 0 +#define CONFIG_LIBOPENCV 0 +#define CONFIG_LIBOPENH264 0 +#define CONFIG_LIBOPENJPEG 0 +#define CONFIG_LIBOPENMPT 0 +#define CONFIG_LIBOPUS 1 +#define CONFIG_LIBPULSE 0 +#define CONFIG_LIBRABBITMQ 0 +#define CONFIG_LIBRAV1E 0 +#define CONFIG_LIBRSVG 0 +#define CONFIG_LIBRTMP 0 +#define CONFIG_LIBSHINE 0 +#define CONFIG_LIBSMBCLIENT 0 +#define CONFIG_LIBSNAPPY 0 +#define CONFIG_LIBSOXR 0 +#define CONFIG_LIBSPEEX 0 +#define CONFIG_LIBSRT 0 +#define CONFIG_LIBSSH 0 +#define CONFIG_LIBTENSORFLOW 0 +#define CONFIG_LIBTESSERACT 0 +#define CONFIG_LIBTHEORA 0 +#define CONFIG_LIBTWOLAME 0 +#define CONFIG_LIBV4L2 0 +#define CONFIG_LIBVORBIS 0 +#define CONFIG_LIBVPX 0 +#define CONFIG_LIBWAVPACK 0 +#define CONFIG_LIBWEBP 0 +#define CONFIG_LIBXML2 0 +#define CONFIG_LIBZIMG 0 +#define CONFIG_LIBZMQ 0 +#define CONFIG_LIBZVBI 0 +#define CONFIG_LV2 0 +#define CONFIG_MEDIACODEC 0 +#define CONFIG_OPENAL 0 +#define CONFIG_OPENGL 0 +#define CONFIG_POCKETSPHINX 0 +#define CONFIG_VAPOURSYNTH 0 +#define CONFIG_ALSA 0 +#define CONFIG_APPKIT 0 +#define CONFIG_AVFOUNDATION 0 +#define CONFIG_BZLIB 0 +#define CONFIG_COREIMAGE 0 +#define CONFIG_ICONV 0 +#define CONFIG_LIBXCB 0 +#define CONFIG_LIBXCB_SHM 0 +#define CONFIG_LIBXCB_SHAPE 0 +#define CONFIG_LIBXCB_XFIXES 0 +#define CONFIG_LZMA 0 +#define CONFIG_MEDIAFOUNDATION 0 +#define CONFIG_SCHANNEL 0 +#define CONFIG_SDL2 0 +#define CONFIG_SECURETRANSPORT 0 +#define CONFIG_SNDIO 0 +#define CONFIG_XLIB 0 +#define CONFIG_ZLIB 0 +#define CONFIG_CUDA_NVCC 0 +#define CONFIG_CUDA_SDK 0 +#define CONFIG_LIBNPP 0 +#define CONFIG_LIBMFX 0 +#define CONFIG_MMAL 0 +#define CONFIG_OMX 0 +#define CONFIG_OPENCL 0 +#define CONFIG_VULKAN 0 +#define CONFIG_AMF 0 +#define CONFIG_AUDIOTOOLBOX 0 +#define CONFIG_CRYSTALHD 0 +#define CONFIG_CUDA 0 +#define CONFIG_CUDA_LLVM 0 +#define CONFIG_CUVID 0 +#define CONFIG_D3D11VA 0 +#define CONFIG_DXVA2 0 +#define CONFIG_FFNVCODEC 0 +#define CONFIG_NVDEC 0 +#define CONFIG_NVENC 0 +#define CONFIG_VAAPI 0 +#define CONFIG_VDPAU 0 +#define CONFIG_VIDEOTOOLBOX 0 +#define CONFIG_V4L2_M2M 0 +#define CONFIG_XVMC 0 +#define CONFIG_FTRAPV 0 +#define CONFIG_GRAY 0 +#define CONFIG_HARDCODED_TABLES 0 +#define CONFIG_OMX_RPI 0 +#define CONFIG_RUNTIME_CPUDETECT 1 +#define CONFIG_SAFE_BITSTREAM_READER 1 +#define CONFIG_SHARED 0 +#define CONFIG_SMALL 0 +#define CONFIG_STATIC 1 +#define CONFIG_SWSCALE_ALPHA 1 +#define CONFIG_GPL 0 +#define CONFIG_NONFREE 0 +#define CONFIG_VERSION3 0 +#define CONFIG_AVDEVICE 0 +#define CONFIG_AVFILTER 0 +#define CONFIG_SWSCALE 0 +#define CONFIG_POSTPROC 0 +#define CONFIG_AVFORMAT 1 +#define CONFIG_AVCODEC 1 +#define CONFIG_SWRESAMPLE 0 +#define CONFIG_AVRESAMPLE 0 +#define CONFIG_AVUTIL 1 +#define CONFIG_FFPLAY 0 +#define CONFIG_FFPROBE 0 +#define CONFIG_FFMPEG 0 +#define CONFIG_DCT 1 +#define CONFIG_DWT 0 +#define CONFIG_ERROR_RESILIENCE 0 +#define CONFIG_FAAN 0 +#define CONFIG_FAST_UNALIGNED 1 +#define CONFIG_FFT 1 +#define CONFIG_LSP 0 +#define CONFIG_LZO 0 +#define CONFIG_MDCT 1 +#define CONFIG_PIXELUTILS 0 +#define CONFIG_NETWORK 0 +#define CONFIG_RDFT 1 +#define CONFIG_AUTODETECT 0 +#define CONFIG_FONTCONFIG 0 +#define CONFIG_LARGE_TESTS 1 +#define CONFIG_LINUX_PERF 0 +#define CONFIG_MEMORY_POISONING 0 +#define CONFIG_NEON_CLOBBER_TEST 0 +#define CONFIG_OSSFUZZ 0 +#define CONFIG_PIC 1 +#define CONFIG_THUMB 0 +#define CONFIG_VALGRIND_BACKTRACE 0 +#define CONFIG_XMM_CLOBBER_TEST 0 +#define CONFIG_BSFS 1 +#define CONFIG_DECODERS 1 +#define CONFIG_ENCODERS 0 +#define CONFIG_HWACCELS 0 +#define CONFIG_PARSERS 1 +#define CONFIG_INDEVS 0 +#define CONFIG_OUTDEVS 0 +#define CONFIG_FILTERS 0 +#define CONFIG_DEMUXERS 1 +#define CONFIG_MUXERS 0 +#define CONFIG_PROTOCOLS 0 +#define CONFIG_AANDCTTABLES 0 +#define CONFIG_AC3DSP 0 +#define CONFIG_ADTS_HEADER 0 +#define CONFIG_AUDIO_FRAME_QUEUE 0 +#define CONFIG_AUDIODSP 0 +#define CONFIG_BLOCKDSP 0 +#define CONFIG_BSWAPDSP 0 +#define CONFIG_CABAC 0 +#define CONFIG_CBS 0 +#define CONFIG_CBS_AV1 0 +#define CONFIG_CBS_H264 0 +#define CONFIG_CBS_H265 0 +#define CONFIG_CBS_JPEG 0 +#define CONFIG_CBS_MPEG2 0 +#define CONFIG_CBS_VP9 0 +#define CONFIG_DIRAC_PARSE 1 +#define CONFIG_DNN 0 +#define CONFIG_DVPROFILE 0 +#define CONFIG_EXIF 0 +#define CONFIG_FAANDCT 0 +#define CONFIG_FAANIDCT 0 +#define CONFIG_FDCTDSP 0 +#define CONFIG_FLACDSP 1 +#define CONFIG_FMTCONVERT 0 +#define CONFIG_FRAME_THREAD_ENCODER 0 +#define CONFIG_G722DSP 0 +#define CONFIG_GOLOMB 1 +#define CONFIG_GPLV3 0 +#define CONFIG_H263DSP 0 +#define CONFIG_H264CHROMA 0 +#define CONFIG_H264DSP 0 +#define CONFIG_H264PARSE 0 +#define CONFIG_H264PRED 1 +#define CONFIG_H264QPEL 0 +#define CONFIG_HEVCPARSE 0 +#define CONFIG_HPELDSP 1 +#define CONFIG_HUFFMAN 0 +#define CONFIG_HUFFYUVDSP 0 +#define CONFIG_HUFFYUVENCDSP 0 +#define CONFIG_IDCTDSP 0 +#define CONFIG_IIRFILTER 0 +#define CONFIG_MDCT15 0 +#define CONFIG_INTRAX8 0 +#define CONFIG_ISO_MEDIA 1 +#define CONFIG_IVIDSP 0 +#define CONFIG_JPEGTABLES 0 +#define CONFIG_LGPLV3 0 +#define CONFIG_LIBX262 0 +#define CONFIG_LLAUDDSP 0 +#define CONFIG_LLVIDDSP 0 +#define CONFIG_LLVIDENCDSP 0 +#define CONFIG_LPC 0 +#define CONFIG_LZF 0 +#define CONFIG_ME_CMP 0 +#define CONFIG_MPEG_ER 0 +#define CONFIG_MPEGAUDIO 1 +#define CONFIG_MPEGAUDIODSP 1 +#define CONFIG_MPEGAUDIOHEADER 1 +#define CONFIG_MPEGVIDEO 0 +#define CONFIG_MPEGVIDEOENC 0 +#define CONFIG_MSS34DSP 0 +#define CONFIG_PIXBLOCKDSP 0 +#define CONFIG_QPELDSP 0 +#define CONFIG_QSV 0 +#define CONFIG_QSVDEC 0 +#define CONFIG_QSVENC 0 +#define CONFIG_QSVVPP 0 +#define CONFIG_RANGECODER 0 +#define CONFIG_RIFFDEC 1 +#define CONFIG_RIFFENC 0 +#define CONFIG_RTPDEC 0 +#define CONFIG_RTPENC_CHAIN 0 +#define CONFIG_RV34DSP 0 +#define CONFIG_SCENE_SAD 0 +#define CONFIG_SINEWIN 0 +#define CONFIG_SNAPPY 0 +#define CONFIG_SRTP 0 +#define CONFIG_STARTCODE 0 +#define CONFIG_TEXTUREDSP 0 +#define CONFIG_TEXTUREDSPENC 0 +#define CONFIG_TPELDSP 0 +#define CONFIG_VAAPI_1 0 +#define CONFIG_VAAPI_ENCODE 0 +#define CONFIG_VC1DSP 0 +#define CONFIG_VIDEODSP 1 +#define CONFIG_VP3DSP 1 +#define CONFIG_VP56DSP 0 +#define CONFIG_VP8DSP 1 +#define CONFIG_WMA_FREQS 0 +#define CONFIG_WMV2DSP 0 +#define CONFIG_AAC_ADTSTOASC_BSF 0 +#define CONFIG_AV1_FRAME_MERGE_BSF 0 +#define CONFIG_AV1_FRAME_SPLIT_BSF 0 +#define CONFIG_AV1_METADATA_BSF 0 +#define CONFIG_CHOMP_BSF 0 +#define CONFIG_DUMP_EXTRADATA_BSF 0 +#define CONFIG_DCA_CORE_BSF 0 +#define CONFIG_EAC3_CORE_BSF 0 +#define CONFIG_EXTRACT_EXTRADATA_BSF 0 +#define CONFIG_FILTER_UNITS_BSF 0 +#define CONFIG_H264_METADATA_BSF 0 +#define CONFIG_H264_MP4TOANNEXB_BSF 0 +#define CONFIG_H264_REDUNDANT_PPS_BSF 0 +#define CONFIG_HAPQA_EXTRACT_BSF 0 +#define CONFIG_HEVC_METADATA_BSF 0 +#define CONFIG_HEVC_MP4TOANNEXB_BSF 0 +#define CONFIG_IMX_DUMP_HEADER_BSF 0 +#define CONFIG_MJPEG2JPEG_BSF 0 +#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0 +#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0 +#define CONFIG_MPEG2_METADATA_BSF 0 +#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0 +#define CONFIG_MOV2TEXTSUB_BSF 0 +#define CONFIG_NOISE_BSF 0 +#define CONFIG_NULL_BSF 0 +#define CONFIG_OPUS_METADATA_BSF 0 +#define CONFIG_PCM_RECHUNK_BSF 0 +#define CONFIG_PRORES_METADATA_BSF 0 +#define CONFIG_REMOVE_EXTRADATA_BSF 0 +#define CONFIG_SETTS_BSF 0 +#define CONFIG_TEXT2MOVSUB_BSF 0 +#define CONFIG_TRACE_HEADERS_BSF 0 +#define CONFIG_TRUEHD_CORE_BSF 0 +#define CONFIG_VP9_METADATA_BSF 0 +#define CONFIG_VP9_RAW_REORDER_BSF 0 +#define CONFIG_VP9_SUPERFRAME_BSF 0 +#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0 +#define CONFIG_AASC_DECODER 0 +#define CONFIG_AIC_DECODER 0 +#define CONFIG_ALIAS_PIX_DECODER 0 +#define CONFIG_AGM_DECODER 0 +#define CONFIG_AMV_DECODER 0 +#define CONFIG_ANM_DECODER 0 +#define CONFIG_ANSI_DECODER 0 +#define CONFIG_APNG_DECODER 0 +#define CONFIG_ARBC_DECODER 0 +#define CONFIG_ARGO_DECODER 0 +#define CONFIG_ASV1_DECODER 0 +#define CONFIG_ASV2_DECODER 0 +#define CONFIG_AURA_DECODER 0 +#define CONFIG_AURA2_DECODER 0 +#define CONFIG_AVRP_DECODER 0 +#define CONFIG_AVRN_DECODER 0 +#define CONFIG_AVS_DECODER 0 +#define CONFIG_AVUI_DECODER 0 +#define CONFIG_AYUV_DECODER 0 +#define CONFIG_BETHSOFTVID_DECODER 0 +#define CONFIG_BFI_DECODER 0 +#define CONFIG_BINK_DECODER 0 +#define CONFIG_BITPACKED_DECODER 0 +#define CONFIG_BMP_DECODER 0 +#define CONFIG_BMV_VIDEO_DECODER 0 +#define CONFIG_BRENDER_PIX_DECODER 0 +#define CONFIG_C93_DECODER 0 +#define CONFIG_CAVS_DECODER 0 +#define CONFIG_CDGRAPHICS_DECODER 0 +#define CONFIG_CDTOONS_DECODER 0 +#define CONFIG_CDXL_DECODER 0 +#define CONFIG_CFHD_DECODER 0 +#define CONFIG_CINEPAK_DECODER 0 +#define CONFIG_CLEARVIDEO_DECODER 0 +#define CONFIG_CLJR_DECODER 0 +#define CONFIG_CLLC_DECODER 0 +#define CONFIG_COMFORTNOISE_DECODER 0 +#define CONFIG_CPIA_DECODER 0 +#define CONFIG_CRI_DECODER 0 +#define CONFIG_CSCD_DECODER 0 +#define CONFIG_CYUV_DECODER 0 +#define CONFIG_DDS_DECODER 0 +#define CONFIG_DFA_DECODER 0 +#define CONFIG_DIRAC_DECODER 0 +#define CONFIG_DNXHD_DECODER 0 +#define CONFIG_DPX_DECODER 0 +#define CONFIG_DSICINVIDEO_DECODER 0 +#define CONFIG_DVAUDIO_DECODER 0 +#define CONFIG_DVVIDEO_DECODER 0 +#define CONFIG_DXA_DECODER 0 +#define CONFIG_DXTORY_DECODER 0 +#define CONFIG_DXV_DECODER 0 +#define CONFIG_EACMV_DECODER 0 +#define CONFIG_EAMAD_DECODER 0 +#define CONFIG_EATGQ_DECODER 0 +#define CONFIG_EATGV_DECODER 0 +#define CONFIG_EATQI_DECODER 0 +#define CONFIG_EIGHTBPS_DECODER 0 +#define CONFIG_EIGHTSVX_EXP_DECODER 0 +#define CONFIG_EIGHTSVX_FIB_DECODER 0 +#define CONFIG_ESCAPE124_DECODER 0 +#define CONFIG_ESCAPE130_DECODER 0 +#define CONFIG_EXR_DECODER 0 +#define CONFIG_FFV1_DECODER 0 +#define CONFIG_FFVHUFF_DECODER 0 +#define CONFIG_FIC_DECODER 0 +#define CONFIG_FITS_DECODER 0 +#define CONFIG_FLASHSV_DECODER 0 +#define CONFIG_FLASHSV2_DECODER 0 +#define CONFIG_FLIC_DECODER 0 +#define CONFIG_FLV_DECODER 0 +#define CONFIG_FMVC_DECODER 0 +#define CONFIG_FOURXM_DECODER 0 +#define CONFIG_FRAPS_DECODER 0 +#define CONFIG_FRWU_DECODER 0 +#define CONFIG_G2M_DECODER 0 +#define CONFIG_GDV_DECODER 0 +#define CONFIG_GIF_DECODER 0 +#define CONFIG_H261_DECODER 0 +#define CONFIG_H263_DECODER 0 +#define CONFIG_H263I_DECODER 0 +#define CONFIG_H263P_DECODER 0 +#define CONFIG_H263_V4L2M2M_DECODER 0 +#define CONFIG_H264_DECODER 0 +#define CONFIG_H264_CRYSTALHD_DECODER 0 +#define CONFIG_H264_V4L2M2M_DECODER 0 +#define CONFIG_H264_MEDIACODEC_DECODER 0 +#define CONFIG_H264_MMAL_DECODER 0 +#define CONFIG_H264_QSV_DECODER 0 +#define CONFIG_H264_RKMPP_DECODER 0 +#define CONFIG_HAP_DECODER 0 +#define CONFIG_HEVC_DECODER 0 +#define CONFIG_HEVC_QSV_DECODER 0 +#define CONFIG_HEVC_RKMPP_DECODER 0 +#define CONFIG_HEVC_V4L2M2M_DECODER 0 +#define CONFIG_HNM4_VIDEO_DECODER 0 +#define CONFIG_HQ_HQA_DECODER 0 +#define CONFIG_HQX_DECODER 0 +#define CONFIG_HUFFYUV_DECODER 0 +#define CONFIG_HYMT_DECODER 0 +#define CONFIG_IDCIN_DECODER 0 +#define CONFIG_IFF_ILBM_DECODER 0 +#define CONFIG_IMM4_DECODER 0 +#define CONFIG_IMM5_DECODER 0 +#define CONFIG_INDEO2_DECODER 0 +#define CONFIG_INDEO3_DECODER 0 +#define CONFIG_INDEO4_DECODER 0 +#define CONFIG_INDEO5_DECODER 0 +#define CONFIG_INTERPLAY_VIDEO_DECODER 0 +#define CONFIG_IPU_DECODER 0 +#define CONFIG_JPEG2000_DECODER 0 +#define CONFIG_JPEGLS_DECODER 0 +#define CONFIG_JV_DECODER 0 +#define CONFIG_KGV1_DECODER 0 +#define CONFIG_KMVC_DECODER 0 +#define CONFIG_LAGARITH_DECODER 0 +#define CONFIG_LOCO_DECODER 0 +#define CONFIG_LSCR_DECODER 0 +#define CONFIG_M101_DECODER 0 +#define CONFIG_MAGICYUV_DECODER 0 +#define CONFIG_MDEC_DECODER 0 +#define CONFIG_MIMIC_DECODER 0 +#define CONFIG_MJPEG_DECODER 0 +#define CONFIG_MJPEGB_DECODER 0 +#define CONFIG_MMVIDEO_DECODER 0 +#define CONFIG_MOBICLIP_DECODER 0 +#define CONFIG_MOTIONPIXELS_DECODER 0 +#define CONFIG_MPEG1VIDEO_DECODER 0 +#define CONFIG_MPEG2VIDEO_DECODER 0 +#define CONFIG_MPEG4_DECODER 0 +#define CONFIG_MPEG4_CRYSTALHD_DECODER 0 +#define CONFIG_MPEG4_V4L2M2M_DECODER 0 +#define CONFIG_MPEG4_MMAL_DECODER 0 +#define CONFIG_MPEGVIDEO_DECODER 0 +#define CONFIG_MPEG1_V4L2M2M_DECODER 0 +#define CONFIG_MPEG2_MMAL_DECODER 0 +#define CONFIG_MPEG2_CRYSTALHD_DECODER 0 +#define CONFIG_MPEG2_V4L2M2M_DECODER 0 +#define CONFIG_MPEG2_QSV_DECODER 0 +#define CONFIG_MPEG2_MEDIACODEC_DECODER 0 +#define CONFIG_MSA1_DECODER 0 +#define CONFIG_MSCC_DECODER 0 +#define CONFIG_MSMPEG4V1_DECODER 0 +#define CONFIG_MSMPEG4V2_DECODER 0 +#define CONFIG_MSMPEG4V3_DECODER 0 +#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0 +#define CONFIG_MSP2_DECODER 0 +#define CONFIG_MSRLE_DECODER 0 +#define CONFIG_MSS1_DECODER 0 +#define CONFIG_MSS2_DECODER 0 +#define CONFIG_MSVIDEO1_DECODER 0 +#define CONFIG_MSZH_DECODER 0 +#define CONFIG_MTS2_DECODER 0 +#define CONFIG_MV30_DECODER 0 +#define CONFIG_MVC1_DECODER 0 +#define CONFIG_MVC2_DECODER 0 +#define CONFIG_MVDV_DECODER 0 +#define CONFIG_MVHA_DECODER 0 +#define CONFIG_MWSC_DECODER 0 +#define CONFIG_MXPEG_DECODER 0 +#define CONFIG_NOTCHLC_DECODER 0 +#define CONFIG_NUV_DECODER 0 +#define CONFIG_PAF_VIDEO_DECODER 0 +#define CONFIG_PAM_DECODER 0 +#define CONFIG_PBM_DECODER 0 +#define CONFIG_PCX_DECODER 0 +#define CONFIG_PFM_DECODER 0 +#define CONFIG_PGM_DECODER 0 +#define CONFIG_PGMYUV_DECODER 0 +#define CONFIG_PGX_DECODER 0 +#define CONFIG_PHOTOCD_DECODER 0 +#define CONFIG_PICTOR_DECODER 0 +#define CONFIG_PIXLET_DECODER 0 +#define CONFIG_PNG_DECODER 0 +#define CONFIG_PPM_DECODER 0 +#define CONFIG_PRORES_DECODER 0 +#define CONFIG_PROSUMER_DECODER 0 +#define CONFIG_PSD_DECODER 0 +#define CONFIG_PTX_DECODER 0 +#define CONFIG_QDRAW_DECODER 0 +#define CONFIG_QPEG_DECODER 0 +#define CONFIG_QTRLE_DECODER 0 +#define CONFIG_R10K_DECODER 0 +#define CONFIG_R210_DECODER 0 +#define CONFIG_RASC_DECODER 0 +#define CONFIG_RAWVIDEO_DECODER 0 +#define CONFIG_RL2_DECODER 0 +#define CONFIG_ROQ_DECODER 0 +#define CONFIG_RPZA_DECODER 0 +#define CONFIG_RSCC_DECODER 0 +#define CONFIG_RV10_DECODER 0 +#define CONFIG_RV20_DECODER 0 +#define CONFIG_RV30_DECODER 0 +#define CONFIG_RV40_DECODER 0 +#define CONFIG_S302M_DECODER 0 +#define CONFIG_SANM_DECODER 0 +#define CONFIG_SCPR_DECODER 0 +#define CONFIG_SCREENPRESSO_DECODER 0 +#define CONFIG_SGA_DECODER 0 +#define CONFIG_SGI_DECODER 0 +#define CONFIG_SGIRLE_DECODER 0 +#define CONFIG_SHEERVIDEO_DECODER 0 +#define CONFIG_SIMBIOSIS_IMX_DECODER 0 +#define CONFIG_SMACKER_DECODER 0 +#define CONFIG_SMC_DECODER 0 +#define CONFIG_SMVJPEG_DECODER 0 +#define CONFIG_SNOW_DECODER 0 +#define CONFIG_SP5X_DECODER 0 +#define CONFIG_SPEEDHQ_DECODER 0 +#define CONFIG_SRGC_DECODER 0 +#define CONFIG_SUNRAST_DECODER 0 +#define CONFIG_SVQ1_DECODER 0 +#define CONFIG_SVQ3_DECODER 0 +#define CONFIG_TARGA_DECODER 0 +#define CONFIG_TARGA_Y216_DECODER 0 +#define CONFIG_TDSC_DECODER 0 +#define CONFIG_THEORA_DECODER 1 +#define CONFIG_THP_DECODER 0 +#define CONFIG_TIERTEXSEQVIDEO_DECODER 0 +#define CONFIG_TIFF_DECODER 0 +#define CONFIG_TMV_DECODER 0 +#define CONFIG_TRUEMOTION1_DECODER 0 +#define CONFIG_TRUEMOTION2_DECODER 0 +#define CONFIG_TRUEMOTION2RT_DECODER 0 +#define CONFIG_TSCC_DECODER 0 +#define CONFIG_TSCC2_DECODER 0 +#define CONFIG_TXD_DECODER 0 +#define CONFIG_ULTI_DECODER 0 +#define CONFIG_UTVIDEO_DECODER 0 +#define CONFIG_V210_DECODER 0 +#define CONFIG_V210X_DECODER 0 +#define CONFIG_V308_DECODER 0 +#define CONFIG_V408_DECODER 0 +#define CONFIG_V410_DECODER 0 +#define CONFIG_VB_DECODER 0 +#define CONFIG_VBLE_DECODER 0 +#define CONFIG_VC1_DECODER 0 +#define CONFIG_VC1_CRYSTALHD_DECODER 0 +#define CONFIG_VC1IMAGE_DECODER 0 +#define CONFIG_VC1_MMAL_DECODER 0 +#define CONFIG_VC1_QSV_DECODER 0 +#define CONFIG_VC1_V4L2M2M_DECODER 0 +#define CONFIG_VCR1_DECODER 0 +#define CONFIG_VMDVIDEO_DECODER 0 +#define CONFIG_VMNC_DECODER 0 +#define CONFIG_VP3_DECODER 1 +#define CONFIG_VP4_DECODER 0 +#define CONFIG_VP5_DECODER 0 +#define CONFIG_VP6_DECODER 0 +#define CONFIG_VP6A_DECODER 0 +#define CONFIG_VP6F_DECODER 0 +#define CONFIG_VP7_DECODER 0 +#define CONFIG_VP8_DECODER 1 +#define CONFIG_VP8_RKMPP_DECODER 0 +#define CONFIG_VP8_V4L2M2M_DECODER 0 +#define CONFIG_VP9_DECODER 0 +#define CONFIG_VP9_RKMPP_DECODER 0 +#define CONFIG_VP9_V4L2M2M_DECODER 0 +#define CONFIG_VQA_DECODER 0 +#define CONFIG_WEBP_DECODER 0 +#define CONFIG_WCMV_DECODER 0 +#define CONFIG_WRAPPED_AVFRAME_DECODER 0 +#define CONFIG_WMV1_DECODER 0 +#define CONFIG_WMV2_DECODER 0 +#define CONFIG_WMV3_DECODER 0 +#define CONFIG_WMV3_CRYSTALHD_DECODER 0 +#define CONFIG_WMV3IMAGE_DECODER 0 +#define CONFIG_WNV1_DECODER 0 +#define CONFIG_XAN_WC3_DECODER 0 +#define CONFIG_XAN_WC4_DECODER 0 +#define CONFIG_XBM_DECODER 0 +#define CONFIG_XFACE_DECODER 0 +#define CONFIG_XL_DECODER 0 +#define CONFIG_XPM_DECODER 0 +#define CONFIG_XWD_DECODER 0 +#define CONFIG_Y41P_DECODER 0 +#define CONFIG_YLC_DECODER 0 +#define CONFIG_YOP_DECODER 0 +#define CONFIG_YUV4_DECODER 0 +#define CONFIG_ZERO12V_DECODER 0 +#define CONFIG_ZEROCODEC_DECODER 0 +#define CONFIG_ZLIB_DECODER 0 +#define CONFIG_ZMBV_DECODER 0 +#define CONFIG_AAC_DECODER 0 +#define CONFIG_AAC_FIXED_DECODER 0 +#define CONFIG_AAC_LATM_DECODER 0 +#define CONFIG_AC3_DECODER 0 +#define CONFIG_AC3_FIXED_DECODER 0 +#define CONFIG_ACELP_KELVIN_DECODER 0 +#define CONFIG_ALAC_DECODER 0 +#define CONFIG_ALS_DECODER 0 +#define CONFIG_AMRNB_DECODER 0 +#define CONFIG_AMRWB_DECODER 0 +#define CONFIG_APE_DECODER 0 +#define CONFIG_APTX_DECODER 0 +#define CONFIG_APTX_HD_DECODER 0 +#define CONFIG_ATRAC1_DECODER 0 +#define CONFIG_ATRAC3_DECODER 0 +#define CONFIG_ATRAC3AL_DECODER 0 +#define CONFIG_ATRAC3P_DECODER 0 +#define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 +#define CONFIG_BINKAUDIO_DCT_DECODER 0 +#define CONFIG_BINKAUDIO_RDFT_DECODER 0 +#define CONFIG_BMV_AUDIO_DECODER 0 +#define CONFIG_COOK_DECODER 0 +#define CONFIG_DCA_DECODER 0 +#define CONFIG_DOLBY_E_DECODER 0 +#define CONFIG_DSD_LSBF_DECODER 0 +#define CONFIG_DSD_MSBF_DECODER 0 +#define CONFIG_DSD_LSBF_PLANAR_DECODER 0 +#define CONFIG_DSD_MSBF_PLANAR_DECODER 0 +#define CONFIG_DSICINAUDIO_DECODER 0 +#define CONFIG_DSS_SP_DECODER 0 +#define CONFIG_DST_DECODER 0 +#define CONFIG_EAC3_DECODER 0 +#define CONFIG_EVRC_DECODER 0 +#define CONFIG_FASTAUDIO_DECODER 0 +#define CONFIG_FFWAVESYNTH_DECODER 0 +#define CONFIG_FLAC_DECODER 1 +#define CONFIG_G723_1_DECODER 0 +#define CONFIG_G729_DECODER 0 +#define CONFIG_GSM_DECODER 0 +#define CONFIG_GSM_MS_DECODER 0 +#define CONFIG_HCA_DECODER 0 +#define CONFIG_HCOM_DECODER 0 +#define CONFIG_IAC_DECODER 0 +#define CONFIG_ILBC_DECODER 0 +#define CONFIG_IMC_DECODER 0 +#define CONFIG_INTERPLAY_ACM_DECODER 0 +#define CONFIG_MACE3_DECODER 0 +#define CONFIG_MACE6_DECODER 0 +#define CONFIG_METASOUND_DECODER 0 +#define CONFIG_MLP_DECODER 0 +#define CONFIG_MP1_DECODER 0 +#define CONFIG_MP1FLOAT_DECODER 0 +#define CONFIG_MP2_DECODER 0 +#define CONFIG_MP2FLOAT_DECODER 0 +#define CONFIG_MP3FLOAT_DECODER 0 +#define CONFIG_MP3_DECODER 1 +#define CONFIG_MP3ADUFLOAT_DECODER 0 +#define CONFIG_MP3ADU_DECODER 0 +#define CONFIG_MP3ON4FLOAT_DECODER 0 +#define CONFIG_MP3ON4_DECODER 0 +#define CONFIG_MPC7_DECODER 0 +#define CONFIG_MPC8_DECODER 0 +#define CONFIG_MSNSIREN_DECODER 0 +#define CONFIG_NELLYMOSER_DECODER 0 +#define CONFIG_ON2AVC_DECODER 0 +#define CONFIG_OPUS_DECODER 0 +#define CONFIG_PAF_AUDIO_DECODER 0 +#define CONFIG_QCELP_DECODER 0 +#define CONFIG_QDM2_DECODER 0 +#define CONFIG_QDMC_DECODER 0 +#define CONFIG_RA_144_DECODER 0 +#define CONFIG_RA_288_DECODER 0 +#define CONFIG_RALF_DECODER 0 +#define CONFIG_SBC_DECODER 0 +#define CONFIG_SHORTEN_DECODER 0 +#define CONFIG_SIPR_DECODER 0 +#define CONFIG_SIREN_DECODER 0 +#define CONFIG_SMACKAUD_DECODER 0 +#define CONFIG_SONIC_DECODER 0 +#define CONFIG_TAK_DECODER 0 +#define CONFIG_TRUEHD_DECODER 0 +#define CONFIG_TRUESPEECH_DECODER 0 +#define CONFIG_TTA_DECODER 0 +#define CONFIG_TWINVQ_DECODER 0 +#define CONFIG_VMDAUDIO_DECODER 0 +#define CONFIG_VORBIS_DECODER 1 +#define CONFIG_WAVPACK_DECODER 0 +#define CONFIG_WMALOSSLESS_DECODER 0 +#define CONFIG_WMAPRO_DECODER 0 +#define CONFIG_WMAV1_DECODER 0 +#define CONFIG_WMAV2_DECODER 0 +#define CONFIG_WMAVOICE_DECODER 0 +#define CONFIG_WS_SND1_DECODER 0 +#define CONFIG_XMA1_DECODER 0 +#define CONFIG_XMA2_DECODER 0 +#define CONFIG_PCM_ALAW_DECODER 1 +#define CONFIG_PCM_BLURAY_DECODER 0 +#define CONFIG_PCM_DVD_DECODER 0 +#define CONFIG_PCM_F16LE_DECODER 0 +#define CONFIG_PCM_F24LE_DECODER 0 +#define CONFIG_PCM_F32BE_DECODER 0 +#define CONFIG_PCM_F32LE_DECODER 1 +#define CONFIG_PCM_F64BE_DECODER 0 +#define CONFIG_PCM_F64LE_DECODER 0 +#define CONFIG_PCM_LXF_DECODER 0 +#define CONFIG_PCM_MULAW_DECODER 1 +#define CONFIG_PCM_S8_DECODER 0 +#define CONFIG_PCM_S8_PLANAR_DECODER 0 +#define CONFIG_PCM_S16BE_DECODER 1 +#define CONFIG_PCM_S16BE_PLANAR_DECODER 0 +#define CONFIG_PCM_S16LE_DECODER 1 +#define CONFIG_PCM_S16LE_PLANAR_DECODER 0 +#define CONFIG_PCM_S24BE_DECODER 1 +#define CONFIG_PCM_S24DAUD_DECODER 0 +#define CONFIG_PCM_S24LE_DECODER 1 +#define CONFIG_PCM_S24LE_PLANAR_DECODER 0 +#define CONFIG_PCM_S32BE_DECODER 0 +#define CONFIG_PCM_S32LE_DECODER 1 +#define CONFIG_PCM_S32LE_PLANAR_DECODER 0 +#define CONFIG_PCM_S64BE_DECODER 0 +#define CONFIG_PCM_S64LE_DECODER 0 +#define CONFIG_PCM_SGA_DECODER 0 +#define CONFIG_PCM_U8_DECODER 1 +#define CONFIG_PCM_U16BE_DECODER 0 +#define CONFIG_PCM_U16LE_DECODER 0 +#define CONFIG_PCM_U24BE_DECODER 0 +#define CONFIG_PCM_U24LE_DECODER 0 +#define CONFIG_PCM_U32BE_DECODER 0 +#define CONFIG_PCM_U32LE_DECODER 0 +#define CONFIG_PCM_VIDC_DECODER 0 +#define CONFIG_DERF_DPCM_DECODER 0 +#define CONFIG_GREMLIN_DPCM_DECODER 0 +#define CONFIG_INTERPLAY_DPCM_DECODER 0 +#define CONFIG_ROQ_DPCM_DECODER 0 +#define CONFIG_SDX2_DPCM_DECODER 0 +#define CONFIG_SOL_DPCM_DECODER 0 +#define CONFIG_XAN_DPCM_DECODER 0 +#define CONFIG_ADPCM_4XM_DECODER 0 +#define CONFIG_ADPCM_ADX_DECODER 0 +#define CONFIG_ADPCM_AFC_DECODER 0 +#define CONFIG_ADPCM_AGM_DECODER 0 +#define CONFIG_ADPCM_AICA_DECODER 0 +#define CONFIG_ADPCM_ARGO_DECODER 0 +#define CONFIG_ADPCM_CT_DECODER 0 +#define CONFIG_ADPCM_DTK_DECODER 0 +#define CONFIG_ADPCM_EA_DECODER 0 +#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0 +#define CONFIG_ADPCM_EA_R1_DECODER 0 +#define CONFIG_ADPCM_EA_R2_DECODER 0 +#define CONFIG_ADPCM_EA_R3_DECODER 0 +#define CONFIG_ADPCM_EA_XAS_DECODER 0 +#define CONFIG_ADPCM_G722_DECODER 0 +#define CONFIG_ADPCM_G726_DECODER 0 +#define CONFIG_ADPCM_G726LE_DECODER 0 +#define CONFIG_ADPCM_IMA_ACORN_DECODER 0 +#define CONFIG_ADPCM_IMA_AMV_DECODER 0 +#define CONFIG_ADPCM_IMA_ALP_DECODER 0 +#define CONFIG_ADPCM_IMA_APC_DECODER 0 +#define CONFIG_ADPCM_IMA_APM_DECODER 0 +#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0 +#define CONFIG_ADPCM_IMA_DAT4_DECODER 0 +#define CONFIG_ADPCM_IMA_DK3_DECODER 0 +#define CONFIG_ADPCM_IMA_DK4_DECODER 0 +#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0 +#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0 +#define CONFIG_ADPCM_IMA_ISS_DECODER 0 +#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0 +#define CONFIG_ADPCM_IMA_MTF_DECODER 0 +#define CONFIG_ADPCM_IMA_OKI_DECODER 0 +#define CONFIG_ADPCM_IMA_QT_DECODER 0 +#define CONFIG_ADPCM_IMA_RAD_DECODER 0 +#define CONFIG_ADPCM_IMA_SSI_DECODER 0 +#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0 +#define CONFIG_ADPCM_IMA_WAV_DECODER 0 +#define CONFIG_ADPCM_IMA_WS_DECODER 0 +#define CONFIG_ADPCM_MS_DECODER 0 +#define CONFIG_ADPCM_MTAF_DECODER 0 +#define CONFIG_ADPCM_PSX_DECODER 0 +#define CONFIG_ADPCM_SBPRO_2_DECODER 0 +#define CONFIG_ADPCM_SBPRO_3_DECODER 0 +#define CONFIG_ADPCM_SBPRO_4_DECODER 0 +#define CONFIG_ADPCM_SWF_DECODER 0 +#define CONFIG_ADPCM_THP_DECODER 0 +#define CONFIG_ADPCM_THP_LE_DECODER 0 +#define CONFIG_ADPCM_VIMA_DECODER 0 +#define CONFIG_ADPCM_XA_DECODER 0 +#define CONFIG_ADPCM_YAMAHA_DECODER 0 +#define CONFIG_ADPCM_ZORK_DECODER 0 +#define CONFIG_SSA_DECODER 0 +#define CONFIG_ASS_DECODER 0 +#define CONFIG_CCAPTION_DECODER 0 +#define CONFIG_DVBSUB_DECODER 0 +#define CONFIG_DVDSUB_DECODER 0 +#define CONFIG_JACOSUB_DECODER 0 +#define CONFIG_MICRODVD_DECODER 0 +#define CONFIG_MOVTEXT_DECODER 0 +#define CONFIG_MPL2_DECODER 0 +#define CONFIG_PGSSUB_DECODER 0 +#define CONFIG_PJS_DECODER 0 +#define CONFIG_REALTEXT_DECODER 0 +#define CONFIG_SAMI_DECODER 0 +#define CONFIG_SRT_DECODER 0 +#define CONFIG_STL_DECODER 0 +#define CONFIG_SUBRIP_DECODER 0 +#define CONFIG_SUBVIEWER_DECODER 0 +#define CONFIG_SUBVIEWER1_DECODER 0 +#define CONFIG_TEXT_DECODER 0 +#define CONFIG_VPLAYER_DECODER 0 +#define CONFIG_WEBVTT_DECODER 0 +#define CONFIG_XSUB_DECODER 0 +#define CONFIG_AAC_AT_DECODER 0 +#define CONFIG_AC3_AT_DECODER 0 +#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0 +#define CONFIG_ALAC_AT_DECODER 0 +#define CONFIG_AMR_NB_AT_DECODER 0 +#define CONFIG_EAC3_AT_DECODER 0 +#define CONFIG_GSM_MS_AT_DECODER 0 +#define CONFIG_ILBC_AT_DECODER 0 +#define CONFIG_MP1_AT_DECODER 0 +#define CONFIG_MP2_AT_DECODER 0 +#define CONFIG_MP3_AT_DECODER 0 +#define CONFIG_PCM_ALAW_AT_DECODER 0 +#define CONFIG_PCM_MULAW_AT_DECODER 0 +#define CONFIG_QDMC_AT_DECODER 0 +#define CONFIG_QDM2_AT_DECODER 0 +#define CONFIG_LIBARIBB24_DECODER 0 +#define CONFIG_LIBCELT_DECODER 0 +#define CONFIG_LIBCODEC2_DECODER 0 +#define CONFIG_LIBDAV1D_DECODER 0 +#define CONFIG_LIBDAVS2_DECODER 0 +#define CONFIG_LIBFDK_AAC_DECODER 0 +#define CONFIG_LIBGSM_DECODER 0 +#define CONFIG_LIBGSM_MS_DECODER 0 +#define CONFIG_LIBILBC_DECODER 0 +#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0 +#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0 +#define CONFIG_LIBOPENJPEG_DECODER 0 +#define CONFIG_LIBOPUS_DECODER 1 +#define CONFIG_LIBRSVG_DECODER 0 +#define CONFIG_LIBSPEEX_DECODER 0 +#define CONFIG_LIBUAVS3D_DECODER 0 +#define CONFIG_LIBVORBIS_DECODER 0 +#define CONFIG_LIBVPX_VP8_DECODER 0 +#define CONFIG_LIBVPX_VP9_DECODER 0 +#define CONFIG_LIBZVBI_TELETEXT_DECODER 0 +#define CONFIG_BINTEXT_DECODER 0 +#define CONFIG_XBIN_DECODER 0 +#define CONFIG_IDF_DECODER 0 +#define CONFIG_LIBAOM_AV1_DECODER 0 +#define CONFIG_AV1_DECODER 0 +#define CONFIG_AV1_CUVID_DECODER 0 +#define CONFIG_AV1_QSV_DECODER 0 +#define CONFIG_LIBOPENH264_DECODER 0 +#define CONFIG_H264_CUVID_DECODER 0 +#define CONFIG_HEVC_CUVID_DECODER 0 +#define CONFIG_HEVC_MEDIACODEC_DECODER 0 +#define CONFIG_MJPEG_CUVID_DECODER 0 +#define CONFIG_MJPEG_QSV_DECODER 0 +#define CONFIG_MPEG1_CUVID_DECODER 0 +#define CONFIG_MPEG2_CUVID_DECODER 0 +#define CONFIG_MPEG4_CUVID_DECODER 0 +#define CONFIG_MPEG4_MEDIACODEC_DECODER 0 +#define CONFIG_VC1_CUVID_DECODER 0 +#define CONFIG_VP8_CUVID_DECODER 0 +#define CONFIG_VP8_MEDIACODEC_DECODER 0 +#define CONFIG_VP8_QSV_DECODER 0 +#define CONFIG_VP9_CUVID_DECODER 0 +#define CONFIG_VP9_MEDIACODEC_DECODER 0 +#define CONFIG_VP9_QSV_DECODER 0 +#define CONFIG_A64MULTI_ENCODER 0 +#define CONFIG_A64MULTI5_ENCODER 0 +#define CONFIG_ALIAS_PIX_ENCODER 0 +#define CONFIG_AMV_ENCODER 0 +#define CONFIG_APNG_ENCODER 0 +#define CONFIG_ASV1_ENCODER 0 +#define CONFIG_ASV2_ENCODER 0 +#define CONFIG_AVRP_ENCODER 0 +#define CONFIG_AVUI_ENCODER 0 +#define CONFIG_AYUV_ENCODER 0 +#define CONFIG_BMP_ENCODER 0 +#define CONFIG_CFHD_ENCODER 0 +#define CONFIG_CINEPAK_ENCODER 0 +#define CONFIG_CLJR_ENCODER 0 +#define CONFIG_COMFORTNOISE_ENCODER 0 +#define CONFIG_DNXHD_ENCODER 0 +#define CONFIG_DPX_ENCODER 0 +#define CONFIG_DVVIDEO_ENCODER 0 +#define CONFIG_EXR_ENCODER 0 +#define CONFIG_FFV1_ENCODER 0 +#define CONFIG_FFVHUFF_ENCODER 0 +#define CONFIG_FITS_ENCODER 0 +#define CONFIG_FLASHSV_ENCODER 0 +#define CONFIG_FLASHSV2_ENCODER 0 +#define CONFIG_FLV_ENCODER 0 +#define CONFIG_GIF_ENCODER 0 +#define CONFIG_H261_ENCODER 0 +#define CONFIG_H263_ENCODER 0 +#define CONFIG_H263P_ENCODER 0 +#define CONFIG_HAP_ENCODER 0 +#define CONFIG_HUFFYUV_ENCODER 0 +#define CONFIG_JPEG2000_ENCODER 0 +#define CONFIG_JPEGLS_ENCODER 0 +#define CONFIG_LJPEG_ENCODER 0 +#define CONFIG_MAGICYUV_ENCODER 0 +#define CONFIG_MJPEG_ENCODER 0 +#define CONFIG_MPEG1VIDEO_ENCODER 0 +#define CONFIG_MPEG2VIDEO_ENCODER 0 +#define CONFIG_MPEG4_ENCODER 0 +#define CONFIG_MSMPEG4V2_ENCODER 0 +#define CONFIG_MSMPEG4V3_ENCODER 0 +#define CONFIG_MSVIDEO1_ENCODER 0 +#define CONFIG_PAM_ENCODER 0 +#define CONFIG_PBM_ENCODER 0 +#define CONFIG_PCX_ENCODER 0 +#define CONFIG_PFM_ENCODER 0 +#define CONFIG_PGM_ENCODER 0 +#define CONFIG_PGMYUV_ENCODER 0 +#define CONFIG_PNG_ENCODER 0 +#define CONFIG_PPM_ENCODER 0 +#define CONFIG_PRORES_ENCODER 0 +#define CONFIG_PRORES_AW_ENCODER 0 +#define CONFIG_PRORES_KS_ENCODER 0 +#define CONFIG_QTRLE_ENCODER 0 +#define CONFIG_R10K_ENCODER 0 +#define CONFIG_R210_ENCODER 0 +#define CONFIG_RAWVIDEO_ENCODER 0 +#define CONFIG_ROQ_ENCODER 0 +#define CONFIG_RPZA_ENCODER 0 +#define CONFIG_RV10_ENCODER 0 +#define CONFIG_RV20_ENCODER 0 +#define CONFIG_S302M_ENCODER 0 +#define CONFIG_SGI_ENCODER 0 +#define CONFIG_SMC_ENCODER 0 +#define CONFIG_SNOW_ENCODER 0 +#define CONFIG_SPEEDHQ_ENCODER 0 +#define CONFIG_SUNRAST_ENCODER 0 +#define CONFIG_SVQ1_ENCODER 0 +#define CONFIG_TARGA_ENCODER 0 +#define CONFIG_TIFF_ENCODER 0 +#define CONFIG_UTVIDEO_ENCODER 0 +#define CONFIG_V210_ENCODER 0 +#define CONFIG_V308_ENCODER 0 +#define CONFIG_V408_ENCODER 0 +#define CONFIG_V410_ENCODER 0 +#define CONFIG_VC2_ENCODER 0 +#define CONFIG_WRAPPED_AVFRAME_ENCODER 0 +#define CONFIG_WMV1_ENCODER 0 +#define CONFIG_WMV2_ENCODER 0 +#define CONFIG_XBM_ENCODER 0 +#define CONFIG_XFACE_ENCODER 0 +#define CONFIG_XWD_ENCODER 0 +#define CONFIG_Y41P_ENCODER 0 +#define CONFIG_YUV4_ENCODER 0 +#define CONFIG_ZLIB_ENCODER 0 +#define CONFIG_ZMBV_ENCODER 0 +#define CONFIG_AAC_ENCODER 0 +#define CONFIG_AC3_ENCODER 0 +#define CONFIG_AC3_FIXED_ENCODER 0 +#define CONFIG_ALAC_ENCODER 0 +#define CONFIG_APTX_ENCODER 0 +#define CONFIG_APTX_HD_ENCODER 0 +#define CONFIG_DCA_ENCODER 0 +#define CONFIG_EAC3_ENCODER 0 +#define CONFIG_FLAC_ENCODER 0 +#define CONFIG_G723_1_ENCODER 0 +#define CONFIG_MLP_ENCODER 0 +#define CONFIG_MP2_ENCODER 0 +#define CONFIG_MP2FIXED_ENCODER 0 +#define CONFIG_NELLYMOSER_ENCODER 0 +#define CONFIG_OPUS_ENCODER 0 +#define CONFIG_RA_144_ENCODER 0 +#define CONFIG_SBC_ENCODER 0 +#define CONFIG_SONIC_ENCODER 0 +#define CONFIG_SONIC_LS_ENCODER 0 +#define CONFIG_TRUEHD_ENCODER 0 +#define CONFIG_TTA_ENCODER 0 +#define CONFIG_VORBIS_ENCODER 0 +#define CONFIG_WAVPACK_ENCODER 0 +#define CONFIG_WMAV1_ENCODER 0 +#define CONFIG_WMAV2_ENCODER 0 +#define CONFIG_PCM_ALAW_ENCODER 0 +#define CONFIG_PCM_DVD_ENCODER 0 +#define CONFIG_PCM_F32BE_ENCODER 0 +#define CONFIG_PCM_F32LE_ENCODER 0 +#define CONFIG_PCM_F64BE_ENCODER 0 +#define CONFIG_PCM_F64LE_ENCODER 0 +#define CONFIG_PCM_MULAW_ENCODER 0 +#define CONFIG_PCM_S8_ENCODER 0 +#define CONFIG_PCM_S8_PLANAR_ENCODER 0 +#define CONFIG_PCM_S16BE_ENCODER 0 +#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0 +#define CONFIG_PCM_S16LE_ENCODER 0 +#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0 +#define CONFIG_PCM_S24BE_ENCODER 0 +#define CONFIG_PCM_S24DAUD_ENCODER 0 +#define CONFIG_PCM_S24LE_ENCODER 0 +#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0 +#define CONFIG_PCM_S32BE_ENCODER 0 +#define CONFIG_PCM_S32LE_ENCODER 0 +#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0 +#define CONFIG_PCM_S64BE_ENCODER 0 +#define CONFIG_PCM_S64LE_ENCODER 0 +#define CONFIG_PCM_U8_ENCODER 0 +#define CONFIG_PCM_U16BE_ENCODER 0 +#define CONFIG_PCM_U16LE_ENCODER 0 +#define CONFIG_PCM_U24BE_ENCODER 0 +#define CONFIG_PCM_U24LE_ENCODER 0 +#define CONFIG_PCM_U32BE_ENCODER 0 +#define CONFIG_PCM_U32LE_ENCODER 0 +#define CONFIG_PCM_VIDC_ENCODER 0 +#define CONFIG_ROQ_DPCM_ENCODER 0 +#define CONFIG_ADPCM_ADX_ENCODER 0 +#define CONFIG_ADPCM_ARGO_ENCODER 0 +#define CONFIG_ADPCM_G722_ENCODER 0 +#define CONFIG_ADPCM_G726_ENCODER 0 +#define CONFIG_ADPCM_G726LE_ENCODER 0 +#define CONFIG_ADPCM_IMA_AMV_ENCODER 0 +#define CONFIG_ADPCM_IMA_ALP_ENCODER 0 +#define CONFIG_ADPCM_IMA_APM_ENCODER 0 +#define CONFIG_ADPCM_IMA_QT_ENCODER 0 +#define CONFIG_ADPCM_IMA_SSI_ENCODER 0 +#define CONFIG_ADPCM_IMA_WAV_ENCODER 0 +#define CONFIG_ADPCM_IMA_WS_ENCODER 0 +#define CONFIG_ADPCM_MS_ENCODER 0 +#define CONFIG_ADPCM_SWF_ENCODER 0 +#define CONFIG_ADPCM_YAMAHA_ENCODER 0 +#define CONFIG_SSA_ENCODER 0 +#define CONFIG_ASS_ENCODER 0 +#define CONFIG_DVBSUB_ENCODER 0 +#define CONFIG_DVDSUB_ENCODER 0 +#define CONFIG_MOVTEXT_ENCODER 0 +#define CONFIG_SRT_ENCODER 0 +#define CONFIG_SUBRIP_ENCODER 0 +#define CONFIG_TEXT_ENCODER 0 +#define CONFIG_TTML_ENCODER 0 +#define CONFIG_WEBVTT_ENCODER 0 +#define CONFIG_XSUB_ENCODER 0 +#define CONFIG_AAC_AT_ENCODER 0 +#define CONFIG_ALAC_AT_ENCODER 0 +#define CONFIG_ILBC_AT_ENCODER 0 +#define CONFIG_PCM_ALAW_AT_ENCODER 0 +#define CONFIG_PCM_MULAW_AT_ENCODER 0 +#define CONFIG_LIBAOM_AV1_ENCODER 0 +#define CONFIG_LIBCODEC2_ENCODER 0 +#define CONFIG_LIBFDK_AAC_ENCODER 0 +#define CONFIG_LIBGSM_ENCODER 0 +#define CONFIG_LIBGSM_MS_ENCODER 0 +#define CONFIG_LIBILBC_ENCODER 0 +#define CONFIG_LIBMP3LAME_ENCODER 0 +#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0 +#define CONFIG_LIBOPENJPEG_ENCODER 0 +#define CONFIG_LIBOPUS_ENCODER 0 +#define CONFIG_LIBRAV1E_ENCODER 0 +#define CONFIG_LIBSHINE_ENCODER 0 +#define CONFIG_LIBSPEEX_ENCODER 0 +#define CONFIG_LIBSVTAV1_ENCODER 0 +#define CONFIG_LIBTHEORA_ENCODER 0 +#define CONFIG_LIBTWOLAME_ENCODER 0 +#define CONFIG_LIBVO_AMRWBENC_ENCODER 0 +#define CONFIG_LIBVORBIS_ENCODER 0 +#define CONFIG_LIBVPX_VP8_ENCODER 0 +#define CONFIG_LIBVPX_VP9_ENCODER 0 +#define CONFIG_LIBWEBP_ANIM_ENCODER 0 +#define CONFIG_LIBWEBP_ENCODER 0 +#define CONFIG_LIBX262_ENCODER 0 +#define CONFIG_LIBX264_ENCODER 0 +#define CONFIG_LIBX264RGB_ENCODER 0 +#define CONFIG_LIBX265_ENCODER 0 +#define CONFIG_LIBXAVS_ENCODER 0 +#define CONFIG_LIBXAVS2_ENCODER 0 +#define CONFIG_LIBXVID_ENCODER 0 +#define CONFIG_AAC_MF_ENCODER 0 +#define CONFIG_AC3_MF_ENCODER 0 +#define CONFIG_H263_V4L2M2M_ENCODER 0 +#define CONFIG_LIBOPENH264_ENCODER 0 +#define CONFIG_H264_AMF_ENCODER 0 +#define CONFIG_H264_MF_ENCODER 0 +#define CONFIG_H264_NVENC_ENCODER 0 +#define CONFIG_H264_OMX_ENCODER 0 +#define CONFIG_H264_QSV_ENCODER 0 +#define CONFIG_H264_V4L2M2M_ENCODER 0 +#define CONFIG_H264_VAAPI_ENCODER 0 +#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0 +#define CONFIG_HEVC_AMF_ENCODER 0 +#define CONFIG_HEVC_MF_ENCODER 0 +#define CONFIG_HEVC_NVENC_ENCODER 0 +#define CONFIG_HEVC_QSV_ENCODER 0 +#define CONFIG_HEVC_V4L2M2M_ENCODER 0 +#define CONFIG_HEVC_VAAPI_ENCODER 0 +#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0 +#define CONFIG_LIBKVAZAAR_ENCODER 0 +#define CONFIG_MJPEG_QSV_ENCODER 0 +#define CONFIG_MJPEG_VAAPI_ENCODER 0 +#define CONFIG_MP3_MF_ENCODER 0 +#define CONFIG_MPEG2_QSV_ENCODER 0 +#define CONFIG_MPEG2_VAAPI_ENCODER 0 +#define CONFIG_MPEG4_OMX_ENCODER 0 +#define CONFIG_MPEG4_V4L2M2M_ENCODER 0 +#define CONFIG_VP8_V4L2M2M_ENCODER 0 +#define CONFIG_VP8_VAAPI_ENCODER 0 +#define CONFIG_VP9_VAAPI_ENCODER 0 +#define CONFIG_VP9_QSV_ENCODER 0 +#define CONFIG_AV1_D3D11VA_HWACCEL 0 +#define CONFIG_AV1_D3D11VA2_HWACCEL 0 +#define CONFIG_AV1_DXVA2_HWACCEL 0 +#define CONFIG_AV1_NVDEC_HWACCEL 0 +#define CONFIG_AV1_VAAPI_HWACCEL 0 +#define CONFIG_H263_VAAPI_HWACCEL 0 +#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_H264_D3D11VA_HWACCEL 0 +#define CONFIG_H264_D3D11VA2_HWACCEL 0 +#define CONFIG_H264_DXVA2_HWACCEL 0 +#define CONFIG_H264_NVDEC_HWACCEL 0 +#define CONFIG_H264_VAAPI_HWACCEL 0 +#define CONFIG_H264_VDPAU_HWACCEL 0 +#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_HEVC_D3D11VA_HWACCEL 0 +#define CONFIG_HEVC_D3D11VA2_HWACCEL 0 +#define CONFIG_HEVC_DXVA2_HWACCEL 0 +#define CONFIG_HEVC_NVDEC_HWACCEL 0 +#define CONFIG_HEVC_VAAPI_HWACCEL 0 +#define CONFIG_HEVC_VDPAU_HWACCEL 0 +#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_MJPEG_NVDEC_HWACCEL 0 +#define CONFIG_MJPEG_VAAPI_HWACCEL 0 +#define CONFIG_MPEG1_NVDEC_HWACCEL 0 +#define CONFIG_MPEG1_VDPAU_HWACCEL 0 +#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_MPEG1_XVMC_HWACCEL 0 +#define CONFIG_MPEG2_D3D11VA_HWACCEL 0 +#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0 +#define CONFIG_MPEG2_NVDEC_HWACCEL 0 +#define CONFIG_MPEG2_DXVA2_HWACCEL 0 +#define CONFIG_MPEG2_VAAPI_HWACCEL 0 +#define CONFIG_MPEG2_VDPAU_HWACCEL 0 +#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_MPEG2_XVMC_HWACCEL 0 +#define CONFIG_MPEG4_NVDEC_HWACCEL 0 +#define CONFIG_MPEG4_VAAPI_HWACCEL 0 +#define CONFIG_MPEG4_VDPAU_HWACCEL 0 +#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_VC1_D3D11VA_HWACCEL 0 +#define CONFIG_VC1_D3D11VA2_HWACCEL 0 +#define CONFIG_VC1_DXVA2_HWACCEL 0 +#define CONFIG_VC1_NVDEC_HWACCEL 0 +#define CONFIG_VC1_VAAPI_HWACCEL 0 +#define CONFIG_VC1_VDPAU_HWACCEL 0 +#define CONFIG_VP8_NVDEC_HWACCEL 0 +#define CONFIG_VP8_VAAPI_HWACCEL 0 +#define CONFIG_VP9_D3D11VA_HWACCEL 0 +#define CONFIG_VP9_D3D11VA2_HWACCEL 0 +#define CONFIG_VP9_DXVA2_HWACCEL 0 +#define CONFIG_VP9_NVDEC_HWACCEL 0 +#define CONFIG_VP9_VAAPI_HWACCEL 0 +#define CONFIG_VP9_VDPAU_HWACCEL 0 +#define CONFIG_WMV3_D3D11VA_HWACCEL 0 +#define CONFIG_WMV3_D3D11VA2_HWACCEL 0 +#define CONFIG_WMV3_DXVA2_HWACCEL 0 +#define CONFIG_WMV3_NVDEC_HWACCEL 0 +#define CONFIG_WMV3_VAAPI_HWACCEL 0 +#define CONFIG_WMV3_VDPAU_HWACCEL 0 +#define CONFIG_AAC_PARSER 0 +#define CONFIG_AAC_LATM_PARSER 0 +#define CONFIG_AC3_PARSER 0 +#define CONFIG_ADX_PARSER 0 +#define CONFIG_AV1_PARSER 0 +#define CONFIG_AVS2_PARSER 0 +#define CONFIG_AVS3_PARSER 0 +#define CONFIG_BMP_PARSER 0 +#define CONFIG_CAVSVIDEO_PARSER 0 +#define CONFIG_COOK_PARSER 0 +#define CONFIG_CRI_PARSER 0 +#define CONFIG_DCA_PARSER 0 +#define CONFIG_DIRAC_PARSER 0 +#define CONFIG_DNXHD_PARSER 0 +#define CONFIG_DOLBY_E_PARSER 0 +#define CONFIG_DPX_PARSER 0 +#define CONFIG_DVAUDIO_PARSER 0 +#define CONFIG_DVBSUB_PARSER 0 +#define CONFIG_DVDSUB_PARSER 0 +#define CONFIG_DVD_NAV_PARSER 0 +#define CONFIG_FLAC_PARSER 1 +#define CONFIG_G723_1_PARSER 0 +#define CONFIG_G729_PARSER 0 +#define CONFIG_GIF_PARSER 0 +#define CONFIG_GSM_PARSER 0 +#define CONFIG_H261_PARSER 0 +#define CONFIG_H263_PARSER 0 +#define CONFIG_H264_PARSER 0 +#define CONFIG_HEVC_PARSER 0 +#define CONFIG_IPU_PARSER 0 +#define CONFIG_JPEG2000_PARSER 0 +#define CONFIG_MJPEG_PARSER 0 +#define CONFIG_MLP_PARSER 0 +#define CONFIG_MPEG4VIDEO_PARSER 0 +#define CONFIG_MPEGAUDIO_PARSER 1 +#define CONFIG_MPEGVIDEO_PARSER 0 +#define CONFIG_OPUS_PARSER 1 +#define CONFIG_PNG_PARSER 0 +#define CONFIG_PNM_PARSER 0 +#define CONFIG_RV30_PARSER 0 +#define CONFIG_RV40_PARSER 0 +#define CONFIG_SBC_PARSER 0 +#define CONFIG_SIPR_PARSER 0 +#define CONFIG_TAK_PARSER 0 +#define CONFIG_VC1_PARSER 0 +#define CONFIG_VORBIS_PARSER 1 +#define CONFIG_VP3_PARSER 1 +#define CONFIG_VP8_PARSER 1 +#define CONFIG_VP9_PARSER 1 +#define CONFIG_WEBP_PARSER 0 +#define CONFIG_XBM_PARSER 0 +#define CONFIG_XMA_PARSER 0 +#define CONFIG_ALSA_INDEV 0 +#define CONFIG_ANDROID_CAMERA_INDEV 0 +#define CONFIG_AVFOUNDATION_INDEV 0 +#define CONFIG_BKTR_INDEV 0 +#define CONFIG_DECKLINK_INDEV 0 +#define CONFIG_DSHOW_INDEV 0 +#define CONFIG_FBDEV_INDEV 0 +#define CONFIG_GDIGRAB_INDEV 0 +#define CONFIG_IEC61883_INDEV 0 +#define CONFIG_JACK_INDEV 0 +#define CONFIG_KMSGRAB_INDEV 0 +#define CONFIG_LAVFI_INDEV 0 +#define CONFIG_OPENAL_INDEV 0 +#define CONFIG_OSS_INDEV 0 +#define CONFIG_PULSE_INDEV 0 +#define CONFIG_SNDIO_INDEV 0 +#define CONFIG_V4L2_INDEV 0 +#define CONFIG_VFWCAP_INDEV 0 +#define CONFIG_XCBGRAB_INDEV 0 +#define CONFIG_LIBCDIO_INDEV 0 +#define CONFIG_LIBDC1394_INDEV 0 +#define CONFIG_ALSA_OUTDEV 0 +#define CONFIG_AUDIOTOOLBOX_OUTDEV 0 +#define CONFIG_CACA_OUTDEV 0 +#define CONFIG_DECKLINK_OUTDEV 0 +#define CONFIG_FBDEV_OUTDEV 0 +#define CONFIG_OPENGL_OUTDEV 0 +#define CONFIG_OSS_OUTDEV 0 +#define CONFIG_PULSE_OUTDEV 0 +#define CONFIG_SDL2_OUTDEV 0 +#define CONFIG_SNDIO_OUTDEV 0 +#define CONFIG_V4L2_OUTDEV 0 +#define CONFIG_XV_OUTDEV 0 +#define CONFIG_AA_DEMUXER 0 +#define CONFIG_AAC_DEMUXER 0 +#define CONFIG_AAX_DEMUXER 0 +#define CONFIG_AC3_DEMUXER 0 +#define CONFIG_ACE_DEMUXER 0 +#define CONFIG_ACM_DEMUXER 0 +#define CONFIG_ACT_DEMUXER 0 +#define CONFIG_ADF_DEMUXER 0 +#define CONFIG_ADP_DEMUXER 0 +#define CONFIG_ADS_DEMUXER 0 +#define CONFIG_ADX_DEMUXER 0 +#define CONFIG_AEA_DEMUXER 0 +#define CONFIG_AFC_DEMUXER 0 +#define CONFIG_AIFF_DEMUXER 0 +#define CONFIG_AIX_DEMUXER 0 +#define CONFIG_ALP_DEMUXER 0 +#define CONFIG_AMR_DEMUXER 0 +#define CONFIG_AMRNB_DEMUXER 0 +#define CONFIG_AMRWB_DEMUXER 0 +#define CONFIG_ANM_DEMUXER 0 +#define CONFIG_APC_DEMUXER 0 +#define CONFIG_APE_DEMUXER 0 +#define CONFIG_APM_DEMUXER 0 +#define CONFIG_APNG_DEMUXER 0 +#define CONFIG_APTX_DEMUXER 0 +#define CONFIG_APTX_HD_DEMUXER 0 +#define CONFIG_AQTITLE_DEMUXER 0 +#define CONFIG_ARGO_ASF_DEMUXER 0 +#define CONFIG_ARGO_BRP_DEMUXER 0 +#define CONFIG_ARGO_CVG_DEMUXER 0 +#define CONFIG_ASF_DEMUXER 0 +#define CONFIG_ASF_O_DEMUXER 0 +#define CONFIG_ASS_DEMUXER 0 +#define CONFIG_AST_DEMUXER 0 +#define CONFIG_AU_DEMUXER 0 +#define CONFIG_AV1_DEMUXER 0 +#define CONFIG_AVI_DEMUXER 0 +#define CONFIG_AVISYNTH_DEMUXER 0 +#define CONFIG_AVR_DEMUXER 0 +#define CONFIG_AVS_DEMUXER 0 +#define CONFIG_AVS2_DEMUXER 0 +#define CONFIG_AVS3_DEMUXER 0 +#define CONFIG_BETHSOFTVID_DEMUXER 0 +#define CONFIG_BFI_DEMUXER 0 +#define CONFIG_BINTEXT_DEMUXER 0 +#define CONFIG_BINK_DEMUXER 0 +#define CONFIG_BINKA_DEMUXER 0 +#define CONFIG_BIT_DEMUXER 0 +#define CONFIG_BMV_DEMUXER 0 +#define CONFIG_BFSTM_DEMUXER 0 +#define CONFIG_BRSTM_DEMUXER 0 +#define CONFIG_BOA_DEMUXER 0 +#define CONFIG_C93_DEMUXER 0 +#define CONFIG_CAF_DEMUXER 0 +#define CONFIG_CAVSVIDEO_DEMUXER 0 +#define CONFIG_CDG_DEMUXER 0 +#define CONFIG_CDXL_DEMUXER 0 +#define CONFIG_CINE_DEMUXER 0 +#define CONFIG_CODEC2_DEMUXER 0 +#define CONFIG_CODEC2RAW_DEMUXER 0 +#define CONFIG_CONCAT_DEMUXER 0 +#define CONFIG_DASH_DEMUXER 0 +#define CONFIG_DATA_DEMUXER 0 +#define CONFIG_DAUD_DEMUXER 0 +#define CONFIG_DCSTR_DEMUXER 0 +#define CONFIG_DERF_DEMUXER 0 +#define CONFIG_DFA_DEMUXER 0 +#define CONFIG_DHAV_DEMUXER 0 +#define CONFIG_DIRAC_DEMUXER 0 +#define CONFIG_DNXHD_DEMUXER 0 +#define CONFIG_DSF_DEMUXER 0 +#define CONFIG_DSICIN_DEMUXER 0 +#define CONFIG_DSS_DEMUXER 0 +#define CONFIG_DTS_DEMUXER 0 +#define CONFIG_DTSHD_DEMUXER 0 +#define CONFIG_DV_DEMUXER 0 +#define CONFIG_DVBSUB_DEMUXER 0 +#define CONFIG_DVBTXT_DEMUXER 0 +#define CONFIG_DXA_DEMUXER 0 +#define CONFIG_EA_DEMUXER 0 +#define CONFIG_EA_CDATA_DEMUXER 0 +#define CONFIG_EAC3_DEMUXER 0 +#define CONFIG_EPAF_DEMUXER 0 +#define CONFIG_FFMETADATA_DEMUXER 0 +#define CONFIG_FILMSTRIP_DEMUXER 0 +#define CONFIG_FITS_DEMUXER 0 +#define CONFIG_FLAC_DEMUXER 1 +#define CONFIG_FLIC_DEMUXER 0 +#define CONFIG_FLV_DEMUXER 0 +#define CONFIG_LIVE_FLV_DEMUXER 0 +#define CONFIG_FOURXM_DEMUXER 0 +#define CONFIG_FRM_DEMUXER 0 +#define CONFIG_FSB_DEMUXER 0 +#define CONFIG_FWSE_DEMUXER 0 +#define CONFIG_G722_DEMUXER 0 +#define CONFIG_G723_1_DEMUXER 0 +#define CONFIG_G726_DEMUXER 0 +#define CONFIG_G726LE_DEMUXER 0 +#define CONFIG_G729_DEMUXER 0 +#define CONFIG_GDV_DEMUXER 0 +#define CONFIG_GENH_DEMUXER 0 +#define CONFIG_GIF_DEMUXER 0 +#define CONFIG_GSM_DEMUXER 0 +#define CONFIG_GXF_DEMUXER 0 +#define CONFIG_H261_DEMUXER 0 +#define CONFIG_H263_DEMUXER 0 +#define CONFIG_H264_DEMUXER 0 +#define CONFIG_HCA_DEMUXER 0 +#define CONFIG_HCOM_DEMUXER 0 +#define CONFIG_HEVC_DEMUXER 0 +#define CONFIG_HLS_DEMUXER 0 +#define CONFIG_HNM_DEMUXER 0 +#define CONFIG_ICO_DEMUXER 0 +#define CONFIG_IDCIN_DEMUXER 0 +#define CONFIG_IDF_DEMUXER 0 +#define CONFIG_IFF_DEMUXER 0 +#define CONFIG_IFV_DEMUXER 0 +#define CONFIG_ILBC_DEMUXER 0 +#define CONFIG_IMAGE2_DEMUXER 0 +#define CONFIG_IMAGE2PIPE_DEMUXER 0 +#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0 +#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0 +#define CONFIG_INGENIENT_DEMUXER 0 +#define CONFIG_IPMOVIE_DEMUXER 0 +#define CONFIG_IPU_DEMUXER 0 +#define CONFIG_IRCAM_DEMUXER 0 +#define CONFIG_ISS_DEMUXER 0 +#define CONFIG_IV8_DEMUXER 0 +#define CONFIG_IVF_DEMUXER 0 +#define CONFIG_IVR_DEMUXER 0 +#define CONFIG_JACOSUB_DEMUXER 0 +#define CONFIG_JV_DEMUXER 0 +#define CONFIG_KUX_DEMUXER 0 +#define CONFIG_KVAG_DEMUXER 0 +#define CONFIG_LMLM4_DEMUXER 0 +#define CONFIG_LOAS_DEMUXER 0 +#define CONFIG_LUODAT_DEMUXER 0 +#define CONFIG_LRC_DEMUXER 0 +#define CONFIG_LVF_DEMUXER 0 +#define CONFIG_LXF_DEMUXER 0 +#define CONFIG_M4V_DEMUXER 0 +#define CONFIG_MCA_DEMUXER 0 +#define CONFIG_MCC_DEMUXER 0 +#define CONFIG_MATROSKA_DEMUXER 1 +#define CONFIG_MGSTS_DEMUXER 0 +#define CONFIG_MICRODVD_DEMUXER 0 +#define CONFIG_MJPEG_DEMUXER 0 +#define CONFIG_MJPEG_2000_DEMUXER 0 +#define CONFIG_MLP_DEMUXER 0 +#define CONFIG_MLV_DEMUXER 0 +#define CONFIG_MM_DEMUXER 0 +#define CONFIG_MMF_DEMUXER 0 +#define CONFIG_MODS_DEMUXER 0 +#define CONFIG_MOFLEX_DEMUXER 0 +#define CONFIG_MOV_DEMUXER 1 +#define CONFIG_MP3_DEMUXER 1 +#define CONFIG_MPC_DEMUXER 0 +#define CONFIG_MPC8_DEMUXER 0 +#define CONFIG_MPEGPS_DEMUXER 0 +#define CONFIG_MPEGTS_DEMUXER 0 +#define CONFIG_MPEGTSRAW_DEMUXER 0 +#define CONFIG_MPEGVIDEO_DEMUXER 0 +#define CONFIG_MPJPEG_DEMUXER 0 +#define CONFIG_MPL2_DEMUXER 0 +#define CONFIG_MPSUB_DEMUXER 0 +#define CONFIG_MSF_DEMUXER 0 +#define CONFIG_MSNWC_TCP_DEMUXER 0 +#define CONFIG_MSP_DEMUXER 0 +#define CONFIG_MTAF_DEMUXER 0 +#define CONFIG_MTV_DEMUXER 0 +#define CONFIG_MUSX_DEMUXER 0 +#define CONFIG_MV_DEMUXER 0 +#define CONFIG_MVI_DEMUXER 0 +#define CONFIG_MXF_DEMUXER 0 +#define CONFIG_MXG_DEMUXER 0 +#define CONFIG_NC_DEMUXER 0 +#define CONFIG_NISTSPHERE_DEMUXER 0 +#define CONFIG_NSP_DEMUXER 0 +#define CONFIG_NSV_DEMUXER 0 +#define CONFIG_NUT_DEMUXER 0 +#define CONFIG_NUV_DEMUXER 0 +#define CONFIG_OBU_DEMUXER 0 +#define CONFIG_OGG_DEMUXER 1 +#define CONFIG_OMA_DEMUXER 0 +#define CONFIG_PAF_DEMUXER 0 +#define CONFIG_PCM_ALAW_DEMUXER 0 +#define CONFIG_PCM_MULAW_DEMUXER 0 +#define CONFIG_PCM_VIDC_DEMUXER 0 +#define CONFIG_PCM_F64BE_DEMUXER 0 +#define CONFIG_PCM_F64LE_DEMUXER 0 +#define CONFIG_PCM_F32BE_DEMUXER 0 +#define CONFIG_PCM_F32LE_DEMUXER 0 +#define CONFIG_PCM_S32BE_DEMUXER 0 +#define CONFIG_PCM_S32LE_DEMUXER 0 +#define CONFIG_PCM_S24BE_DEMUXER 0 +#define CONFIG_PCM_S24LE_DEMUXER 0 +#define CONFIG_PCM_S16BE_DEMUXER 0 +#define CONFIG_PCM_S16LE_DEMUXER 0 +#define CONFIG_PCM_S8_DEMUXER 0 +#define CONFIG_PCM_U32BE_DEMUXER 0 +#define CONFIG_PCM_U32LE_DEMUXER 0 +#define CONFIG_PCM_U24BE_DEMUXER 0 +#define CONFIG_PCM_U24LE_DEMUXER 0 +#define CONFIG_PCM_U16BE_DEMUXER 0 +#define CONFIG_PCM_U16LE_DEMUXER 0 +#define CONFIG_PCM_U8_DEMUXER 0 +#define CONFIG_PJS_DEMUXER 0 +#define CONFIG_PMP_DEMUXER 0 +#define CONFIG_PP_BNK_DEMUXER 0 +#define CONFIG_PVA_DEMUXER 0 +#define CONFIG_PVF_DEMUXER 0 +#define CONFIG_QCP_DEMUXER 0 +#define CONFIG_R3D_DEMUXER 0 +#define CONFIG_RAWVIDEO_DEMUXER 0 +#define CONFIG_REALTEXT_DEMUXER 0 +#define CONFIG_REDSPARK_DEMUXER 0 +#define CONFIG_RL2_DEMUXER 0 +#define CONFIG_RM_DEMUXER 0 +#define CONFIG_ROQ_DEMUXER 0 +#define CONFIG_RPL_DEMUXER 0 +#define CONFIG_RSD_DEMUXER 0 +#define CONFIG_RSO_DEMUXER 0 +#define CONFIG_RTP_DEMUXER 0 +#define CONFIG_RTSP_DEMUXER 0 +#define CONFIG_S337M_DEMUXER 0 +#define CONFIG_SAMI_DEMUXER 0 +#define CONFIG_SAP_DEMUXER 0 +#define CONFIG_SBC_DEMUXER 0 +#define CONFIG_SBG_DEMUXER 0 +#define CONFIG_SCC_DEMUXER 0 +#define CONFIG_SDP_DEMUXER 0 +#define CONFIG_SDR2_DEMUXER 0 +#define CONFIG_SDS_DEMUXER 0 +#define CONFIG_SDX_DEMUXER 0 +#define CONFIG_SEGAFILM_DEMUXER 0 +#define CONFIG_SER_DEMUXER 0 +#define CONFIG_SGA_DEMUXER 0 +#define CONFIG_SHORTEN_DEMUXER 0 +#define CONFIG_SIFF_DEMUXER 0 +#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0 +#define CONFIG_SLN_DEMUXER 0 +#define CONFIG_SMACKER_DEMUXER 0 +#define CONFIG_SMJPEG_DEMUXER 0 +#define CONFIG_SMUSH_DEMUXER 0 +#define CONFIG_SOL_DEMUXER 0 +#define CONFIG_SOX_DEMUXER 0 +#define CONFIG_SPDIF_DEMUXER 0 +#define CONFIG_SRT_DEMUXER 0 +#define CONFIG_STR_DEMUXER 0 +#define CONFIG_STL_DEMUXER 0 +#define CONFIG_SUBVIEWER1_DEMUXER 0 +#define CONFIG_SUBVIEWER_DEMUXER 0 +#define CONFIG_SUP_DEMUXER 0 +#define CONFIG_SVAG_DEMUXER 0 +#define CONFIG_SVS_DEMUXER 0 +#define CONFIG_SWF_DEMUXER 0 +#define CONFIG_TAK_DEMUXER 0 +#define CONFIG_TEDCAPTIONS_DEMUXER 0 +#define CONFIG_THP_DEMUXER 0 +#define CONFIG_THREEDOSTR_DEMUXER 0 +#define CONFIG_TIERTEXSEQ_DEMUXER 0 +#define CONFIG_TMV_DEMUXER 0 +#define CONFIG_TRUEHD_DEMUXER 0 +#define CONFIG_TTA_DEMUXER 0 +#define CONFIG_TXD_DEMUXER 0 +#define CONFIG_TTY_DEMUXER 0 +#define CONFIG_TY_DEMUXER 0 +#define CONFIG_V210_DEMUXER 0 +#define CONFIG_V210X_DEMUXER 0 +#define CONFIG_VAG_DEMUXER 0 +#define CONFIG_VC1_DEMUXER 0 +#define CONFIG_VC1T_DEMUXER 0 +#define CONFIG_VIVIDAS_DEMUXER 0 +#define CONFIG_VIVO_DEMUXER 0 +#define CONFIG_VMD_DEMUXER 0 +#define CONFIG_VOBSUB_DEMUXER 0 +#define CONFIG_VOC_DEMUXER 0 +#define CONFIG_VPK_DEMUXER 0 +#define CONFIG_VPLAYER_DEMUXER 0 +#define CONFIG_VQF_DEMUXER 0 +#define CONFIG_W64_DEMUXER 0 +#define CONFIG_WAV_DEMUXER 1 +#define CONFIG_WC3_DEMUXER 0 +#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0 +#define CONFIG_WEBVTT_DEMUXER 0 +#define CONFIG_WSAUD_DEMUXER 0 +#define CONFIG_WSD_DEMUXER 0 +#define CONFIG_WSVQA_DEMUXER 0 +#define CONFIG_WTV_DEMUXER 0 +#define CONFIG_WVE_DEMUXER 0 +#define CONFIG_WV_DEMUXER 0 +#define CONFIG_XA_DEMUXER 0 +#define CONFIG_XBIN_DEMUXER 0 +#define CONFIG_XMV_DEMUXER 0 +#define CONFIG_XVAG_DEMUXER 0 +#define CONFIG_XWMA_DEMUXER 0 +#define CONFIG_YOP_DEMUXER 0 +#define CONFIG_YUV4MPEGPIPE_DEMUXER 0 +#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0 +#define CONFIG_LIBGME_DEMUXER 0 +#define CONFIG_LIBMODPLUG_DEMUXER 0 +#define CONFIG_LIBOPENMPT_DEMUXER 0 +#define CONFIG_VAPOURSYNTH_DEMUXER 0 +#define CONFIG_A64_MUXER 0 +#define CONFIG_AC3_MUXER 0 +#define CONFIG_ADTS_MUXER 0 +#define CONFIG_ADX_MUXER 0 +#define CONFIG_AIFF_MUXER 0 +#define CONFIG_ALP_MUXER 0 +#define CONFIG_AMR_MUXER 0 +#define CONFIG_AMV_MUXER 0 +#define CONFIG_APM_MUXER 0 +#define CONFIG_APNG_MUXER 0 +#define CONFIG_APTX_MUXER 0 +#define CONFIG_APTX_HD_MUXER 0 +#define CONFIG_ARGO_ASF_MUXER 0 +#define CONFIG_ARGO_CVG_MUXER 0 +#define CONFIG_ASF_MUXER 0 +#define CONFIG_ASS_MUXER 0 +#define CONFIG_AST_MUXER 0 +#define CONFIG_ASF_STREAM_MUXER 0 +#define CONFIG_AU_MUXER 0 +#define CONFIG_AVI_MUXER 0 +#define CONFIG_AVM2_MUXER 0 +#define CONFIG_AVS2_MUXER 0 +#define CONFIG_BIT_MUXER 0 +#define CONFIG_CAF_MUXER 0 +#define CONFIG_CAVSVIDEO_MUXER 0 +#define CONFIG_CODEC2_MUXER 0 +#define CONFIG_CODEC2RAW_MUXER 0 +#define CONFIG_CRC_MUXER 0 +#define CONFIG_DASH_MUXER 0 +#define CONFIG_DATA_MUXER 0 +#define CONFIG_DAUD_MUXER 0 +#define CONFIG_DIRAC_MUXER 0 +#define CONFIG_DNXHD_MUXER 0 +#define CONFIG_DTS_MUXER 0 +#define CONFIG_DV_MUXER 0 +#define CONFIG_EAC3_MUXER 0 +#define CONFIG_F4V_MUXER 0 +#define CONFIG_FFMETADATA_MUXER 0 +#define CONFIG_FIFO_MUXER 0 +#define CONFIG_FIFO_TEST_MUXER 0 +#define CONFIG_FILMSTRIP_MUXER 0 +#define CONFIG_FITS_MUXER 0 +#define CONFIG_FLAC_MUXER 0 +#define CONFIG_FLV_MUXER 0 +#define CONFIG_FRAMECRC_MUXER 0 +#define CONFIG_FRAMEHASH_MUXER 0 +#define CONFIG_FRAMEMD5_MUXER 0 +#define CONFIG_G722_MUXER 0 +#define CONFIG_G723_1_MUXER 0 +#define CONFIG_G726_MUXER 0 +#define CONFIG_G726LE_MUXER 0 +#define CONFIG_GIF_MUXER 0 +#define CONFIG_GSM_MUXER 0 +#define CONFIG_GXF_MUXER 0 +#define CONFIG_H261_MUXER 0 +#define CONFIG_H263_MUXER 0 +#define CONFIG_H264_MUXER 0 +#define CONFIG_HASH_MUXER 0 +#define CONFIG_HDS_MUXER 0 +#define CONFIG_HEVC_MUXER 0 +#define CONFIG_HLS_MUXER 0 +#define CONFIG_ICO_MUXER 0 +#define CONFIG_ILBC_MUXER 0 +#define CONFIG_IMAGE2_MUXER 0 +#define CONFIG_IMAGE2PIPE_MUXER 0 +#define CONFIG_IPOD_MUXER 0 +#define CONFIG_IRCAM_MUXER 0 +#define CONFIG_ISMV_MUXER 0 +#define CONFIG_IVF_MUXER 0 +#define CONFIG_JACOSUB_MUXER 0 +#define CONFIG_KVAG_MUXER 0 +#define CONFIG_LATM_MUXER 0 +#define CONFIG_LRC_MUXER 0 +#define CONFIG_M4V_MUXER 0 +#define CONFIG_MD5_MUXER 0 +#define CONFIG_MATROSKA_MUXER 0 +#define CONFIG_MATROSKA_AUDIO_MUXER 0 +#define CONFIG_MICRODVD_MUXER 0 +#define CONFIG_MJPEG_MUXER 0 +#define CONFIG_MLP_MUXER 0 +#define CONFIG_MMF_MUXER 0 +#define CONFIG_MOV_MUXER 0 +#define CONFIG_MP2_MUXER 0 +#define CONFIG_MP3_MUXER 0 +#define CONFIG_MP4_MUXER 0 +#define CONFIG_MPEG1SYSTEM_MUXER 0 +#define CONFIG_MPEG1VCD_MUXER 0 +#define CONFIG_MPEG1VIDEO_MUXER 0 +#define CONFIG_MPEG2DVD_MUXER 0 +#define CONFIG_MPEG2SVCD_MUXER 0 +#define CONFIG_MPEG2VIDEO_MUXER 0 +#define CONFIG_MPEG2VOB_MUXER 0 +#define CONFIG_MPEGTS_MUXER 0 +#define CONFIG_MPJPEG_MUXER 0 +#define CONFIG_MXF_MUXER 0 +#define CONFIG_MXF_D10_MUXER 0 +#define CONFIG_MXF_OPATOM_MUXER 0 +#define CONFIG_NULL_MUXER 0 +#define CONFIG_NUT_MUXER 0 +#define CONFIG_OBU_MUXER 0 +#define CONFIG_OGA_MUXER 0 +#define CONFIG_OGG_MUXER 0 +#define CONFIG_OGV_MUXER 0 +#define CONFIG_OMA_MUXER 0 +#define CONFIG_OPUS_MUXER 0 +#define CONFIG_PCM_ALAW_MUXER 0 +#define CONFIG_PCM_MULAW_MUXER 0 +#define CONFIG_PCM_VIDC_MUXER 0 +#define CONFIG_PCM_F64BE_MUXER 0 +#define CONFIG_PCM_F64LE_MUXER 0 +#define CONFIG_PCM_F32BE_MUXER 0 +#define CONFIG_PCM_F32LE_MUXER 0 +#define CONFIG_PCM_S32BE_MUXER 0 +#define CONFIG_PCM_S32LE_MUXER 0 +#define CONFIG_PCM_S24BE_MUXER 0 +#define CONFIG_PCM_S24LE_MUXER 0 +#define CONFIG_PCM_S16BE_MUXER 0 +#define CONFIG_PCM_S16LE_MUXER 0 +#define CONFIG_PCM_S8_MUXER 0 +#define CONFIG_PCM_U32BE_MUXER 0 +#define CONFIG_PCM_U32LE_MUXER 0 +#define CONFIG_PCM_U24BE_MUXER 0 +#define CONFIG_PCM_U24LE_MUXER 0 +#define CONFIG_PCM_U16BE_MUXER 0 +#define CONFIG_PCM_U16LE_MUXER 0 +#define CONFIG_PCM_U8_MUXER 0 +#define CONFIG_PSP_MUXER 0 +#define CONFIG_RAWVIDEO_MUXER 0 +#define CONFIG_RM_MUXER 0 +#define CONFIG_ROQ_MUXER 0 +#define CONFIG_RSO_MUXER 0 +#define CONFIG_RTP_MUXER 0 +#define CONFIG_RTP_MPEGTS_MUXER 0 +#define CONFIG_RTSP_MUXER 0 +#define CONFIG_SAP_MUXER 0 +#define CONFIG_SBC_MUXER 0 +#define CONFIG_SCC_MUXER 0 +#define CONFIG_SEGAFILM_MUXER 0 +#define CONFIG_SEGMENT_MUXER 0 +#define CONFIG_STREAM_SEGMENT_MUXER 0 +#define CONFIG_SMJPEG_MUXER 0 +#define CONFIG_SMOOTHSTREAMING_MUXER 0 +#define CONFIG_SOX_MUXER 0 +#define CONFIG_SPX_MUXER 0 +#define CONFIG_SPDIF_MUXER 0 +#define CONFIG_SRT_MUXER 0 +#define CONFIG_STREAMHASH_MUXER 0 +#define CONFIG_SUP_MUXER 0 +#define CONFIG_SWF_MUXER 0 +#define CONFIG_TEE_MUXER 0 +#define CONFIG_TG2_MUXER 0 +#define CONFIG_TGP_MUXER 0 +#define CONFIG_MKVTIMESTAMP_V2_MUXER 0 +#define CONFIG_TRUEHD_MUXER 0 +#define CONFIG_TTA_MUXER 0 +#define CONFIG_TTML_MUXER 0 +#define CONFIG_UNCODEDFRAMECRC_MUXER 0 +#define CONFIG_VC1_MUXER 0 +#define CONFIG_VC1T_MUXER 0 +#define CONFIG_VOC_MUXER 0 +#define CONFIG_W64_MUXER 0 +#define CONFIG_WAV_MUXER 0 +#define CONFIG_WEBM_MUXER 0 +#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0 +#define CONFIG_WEBM_CHUNK_MUXER 0 +#define CONFIG_WEBP_MUXER 0 +#define CONFIG_WEBVTT_MUXER 0 +#define CONFIG_WSAUD_MUXER 0 +#define CONFIG_WTV_MUXER 0 +#define CONFIG_WV_MUXER 0 +#define CONFIG_YUV4MPEGPIPE_MUXER 0 +#define CONFIG_CHROMAPRINT_MUXER 0 +#define CONFIG_ASYNC_PROTOCOL 0 +#define CONFIG_BLURAY_PROTOCOL 0 +#define CONFIG_CACHE_PROTOCOL 0 +#define CONFIG_CONCAT_PROTOCOL 0 +#define CONFIG_CONCATF_PROTOCOL 0 +#define CONFIG_CRYPTO_PROTOCOL 0 +#define CONFIG_DATA_PROTOCOL 0 +#define CONFIG_FFRTMPCRYPT_PROTOCOL 0 +#define CONFIG_FFRTMPHTTP_PROTOCOL 0 +#define CONFIG_FILE_PROTOCOL 0 +#define CONFIG_FTP_PROTOCOL 0 +#define CONFIG_GOPHER_PROTOCOL 0 +#define CONFIG_GOPHERS_PROTOCOL 0 +#define CONFIG_HLS_PROTOCOL 0 +#define CONFIG_HTTP_PROTOCOL 0 +#define CONFIG_HTTPPROXY_PROTOCOL 0 +#define CONFIG_HTTPS_PROTOCOL 0 +#define CONFIG_ICECAST_PROTOCOL 0 +#define CONFIG_MMSH_PROTOCOL 0 +#define CONFIG_MMST_PROTOCOL 0 +#define CONFIG_MD5_PROTOCOL 0 +#define CONFIG_PIPE_PROTOCOL 0 +#define CONFIG_PROMPEG_PROTOCOL 0 +#define CONFIG_RTMP_PROTOCOL 0 +#define CONFIG_RTMPE_PROTOCOL 0 +#define CONFIG_RTMPS_PROTOCOL 0 +#define CONFIG_RTMPT_PROTOCOL 0 +#define CONFIG_RTMPTE_PROTOCOL 0 +#define CONFIG_RTMPTS_PROTOCOL 0 +#define CONFIG_RTP_PROTOCOL 0 +#define CONFIG_SCTP_PROTOCOL 0 +#define CONFIG_SRTP_PROTOCOL 0 +#define CONFIG_SUBFILE_PROTOCOL 0 +#define CONFIG_TEE_PROTOCOL 0 +#define CONFIG_TCP_PROTOCOL 0 +#define CONFIG_TLS_PROTOCOL 0 +#define CONFIG_UDP_PROTOCOL 0 +#define CONFIG_UDPLITE_PROTOCOL 0 +#define CONFIG_UNIX_PROTOCOL 0 +#define CONFIG_LIBAMQP_PROTOCOL 0 +#define CONFIG_LIBRIST_PROTOCOL 0 +#define CONFIG_LIBRTMP_PROTOCOL 0 +#define CONFIG_LIBRTMPE_PROTOCOL 0 +#define CONFIG_LIBRTMPS_PROTOCOL 0 +#define CONFIG_LIBRTMPT_PROTOCOL 0 +#define CONFIG_LIBRTMPTE_PROTOCOL 0 +#define CONFIG_LIBSRT_PROTOCOL 0 +#define CONFIG_LIBSSH_PROTOCOL 0 +#define CONFIG_LIBSMBCLIENT_PROTOCOL 0 +#define CONFIG_LIBZMQ_PROTOCOL 0 +#endif /* FFMPEG_CONFIG_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/bsf_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/bsf_list.c new file mode 100644 index 00000000000..91fe5088018 --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/bsf_list.c @@ -0,0 +1,2 @@ +static const AVBitStreamFilter * const bitstream_filters[] = { + NULL }; diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/codec_list.c new file mode 100644 index 00000000000..9407bd2775e --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/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/Chrome/linux/ppc64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/parser_list.c new file mode 100644 index 00000000000..f81fbe8bbcf --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavcodec/parser_list.c @@ -0,0 +1,9 @@ +static const AVCodecParser * const parser_list[] = { + &ff_flac_parser, + &ff_mpegaudio_parser, + &ff_opus_parser, + &ff_vorbis_parser, + &ff_vp3_parser, + &ff_vp8_parser, + &ff_vp9_parser, + NULL }; diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavformat/demuxer_list.c new file mode 100644 index 00000000000..1908ba19e77 --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/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/Chrome/linux/ppc64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavformat/muxer_list.c new file mode 100644 index 00000000000..f36d9499c6f --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/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/ppc64/libavformat/protocol_list.c b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavformat/protocol_list.c new file mode 100644 index 00000000000..247e1e4c3a2 --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavformat/protocol_list.c @@ -0,0 +1,2 @@ +static const URLProtocol * const url_protocols[] = { + NULL }; diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavutil/avconfig.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavutil/avconfig.h new file mode 100644 index 00000000000..c289fbb551c --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavutil/avconfig.h @@ -0,0 +1,6 @@ +/* Generated by ffmpeg configure */ +#ifndef AVUTIL_AVCONFIG_H +#define AVUTIL_AVCONFIG_H +#define AV_HAVE_BIGENDIAN 0 +#define AV_HAVE_FAST_UNALIGNED 1 +#endif /* AVUTIL_AVCONFIG_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavutil/ffversion.h new file mode 100644 index 00000000000..f26e152f83f --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ppc64/libavutil/ffversion.h @@ -0,0 +1,5 @@ +/* Automatically generated by version.sh, do not manually edit! */ +#ifndef AVUTIL_FFVERSION_H +#define AVUTIL_FFVERSION_H +#define FFMPEG_VERSION "N-104707-g392d8a2d60" +#endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/config.h new file mode 100644 index 00000000000..ff43fd8921b --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/config.h @@ -0,0 +1,2217 @@ +/* Automatically generated by configure - do not modify! */ +#ifndef FFMPEG_CONFIG_H +#define FFMPEG_CONFIG_H +#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-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,vp9' --extra-cflags=-I/disk2/CHROMIUM_REBUILD/CHROMIUM_90/MODIFIED_TEST_BUILD/chromium-97.0.4692.99/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=ppc64le --extra-cflags='-mcpu=power9' --enable-pic --cc='ccache gcc' --cxx='ccache g++' --ld='ccache gcc' --extra-ldflags='-fuse-ld=lld'" +#define FFMPEG_LICENSE "LGPL version 2.1 or later" +#define CONFIG_THIS_YEAR 2021 +#define FFMPEG_DATADIR "/usr/local/share/ffmpeg" +#define AVCONV_DATADIR "/usr/local/share/ffmpeg" +#define CC_IDENT "gcc 10 (Debian 10.2.1-6)" +#define av_restrict restrict +#define EXTERN_PREFIX "" +#define EXTERN_ASM +#define BUILDSUF "" +#define SLIBSUF ".so" +#define HAVE_MMX2 HAVE_MMXEXT +#define SWS_MAX_FILTER_SIZE 256 +#define ARCH_AARCH64 0 +#define ARCH_ALPHA 0 +#define ARCH_ARM 0 +#define ARCH_AVR32 0 +#define ARCH_AVR32_AP 0 +#define ARCH_AVR32_UC 0 +#define ARCH_BFIN 0 +#define ARCH_IA64 0 +#define ARCH_M68K 0 +#define ARCH_MIPS 0 +#define ARCH_MIPS64 0 +#define ARCH_PARISC 0 +#define ARCH_PPC 1 +#define ARCH_PPC64 1 +#define ARCH_S390 0 +#define ARCH_SH4 0 +#define ARCH_SPARC 0 +#define ARCH_SPARC64 0 +#define ARCH_TILEGX 0 +#define ARCH_TILEPRO 0 +#define ARCH_TOMI 0 +#define ARCH_X86 0 +#define ARCH_X86_32 0 +#define ARCH_X86_64 0 +#define HAVE_ARMV5TE 0 +#define HAVE_ARMV6 0 +#define HAVE_ARMV6T2 0 +#define HAVE_ARMV8 0 +#define HAVE_NEON 0 +#define HAVE_VFP 0 +#define HAVE_VFPV3 0 +#define HAVE_SETEND 0 +#define HAVE_ALTIVEC 1 +#define HAVE_DCBZL 1 +#define HAVE_LDBRX 0 +#define HAVE_POWER8 1 +#define HAVE_PPC4XX 0 +#define HAVE_VSX 1 +#define HAVE_AESNI 0 +#define HAVE_AMD3DNOW 0 +#define HAVE_AMD3DNOWEXT 0 +#define HAVE_AVX 0 +#define HAVE_AVX2 0 +#define HAVE_AVX512 0 +#define HAVE_FMA3 0 +#define HAVE_FMA4 0 +#define HAVE_MMX 0 +#define HAVE_MMXEXT 0 +#define HAVE_SSE 0 +#define HAVE_SSE2 0 +#define HAVE_SSE3 0 +#define HAVE_SSE4 0 +#define HAVE_SSE42 0 +#define HAVE_SSSE3 0 +#define HAVE_XOP 0 +#define HAVE_CPUNOP 0 +#define HAVE_I686 0 +#define HAVE_MIPSFPU 0 +#define HAVE_MIPS32R2 0 +#define HAVE_MIPS32R5 0 +#define HAVE_MIPS64R2 0 +#define HAVE_MIPS32R6 0 +#define HAVE_MIPS64R6 0 +#define HAVE_MIPSDSP 0 +#define HAVE_MIPSDSPR2 0 +#define HAVE_MSA 0 +#define HAVE_MSA2 0 +#define HAVE_LOONGSON2 0 +#define HAVE_LOONGSON3 0 +#define HAVE_MMI 0 +#define HAVE_ARMV5TE_EXTERNAL 0 +#define HAVE_ARMV6_EXTERNAL 0 +#define HAVE_ARMV6T2_EXTERNAL 0 +#define HAVE_ARMV8_EXTERNAL 0 +#define HAVE_NEON_EXTERNAL 0 +#define HAVE_VFP_EXTERNAL 0 +#define HAVE_VFPV3_EXTERNAL 0 +#define HAVE_SETEND_EXTERNAL 0 +#define HAVE_ALTIVEC_EXTERNAL 0 +#define HAVE_DCBZL_EXTERNAL 0 +#define HAVE_LDBRX_EXTERNAL 0 +#define HAVE_POWER8_EXTERNAL 0 +#define HAVE_PPC4XX_EXTERNAL 0 +#define HAVE_VSX_EXTERNAL 0 +#define HAVE_AESNI_EXTERNAL 0 +#define HAVE_AMD3DNOW_EXTERNAL 0 +#define HAVE_AMD3DNOWEXT_EXTERNAL 0 +#define HAVE_AVX_EXTERNAL 0 +#define HAVE_AVX2_EXTERNAL 0 +#define HAVE_AVX512_EXTERNAL 0 +#define HAVE_FMA3_EXTERNAL 0 +#define HAVE_FMA4_EXTERNAL 0 +#define HAVE_MMX_EXTERNAL 0 +#define HAVE_MMXEXT_EXTERNAL 0 +#define HAVE_SSE_EXTERNAL 0 +#define HAVE_SSE2_EXTERNAL 0 +#define HAVE_SSE3_EXTERNAL 0 +#define HAVE_SSE4_EXTERNAL 0 +#define HAVE_SSE42_EXTERNAL 0 +#define HAVE_SSSE3_EXTERNAL 0 +#define HAVE_XOP_EXTERNAL 0 +#define HAVE_CPUNOP_EXTERNAL 0 +#define HAVE_I686_EXTERNAL 0 +#define HAVE_MIPSFPU_EXTERNAL 0 +#define HAVE_MIPS32R2_EXTERNAL 0 +#define HAVE_MIPS32R5_EXTERNAL 0 +#define HAVE_MIPS64R2_EXTERNAL 0 +#define HAVE_MIPS32R6_EXTERNAL 0 +#define HAVE_MIPS64R6_EXTERNAL 0 +#define HAVE_MIPSDSP_EXTERNAL 0 +#define HAVE_MIPSDSPR2_EXTERNAL 0 +#define HAVE_MSA_EXTERNAL 0 +#define HAVE_MSA2_EXTERNAL 0 +#define HAVE_LOONGSON2_EXTERNAL 0 +#define HAVE_LOONGSON3_EXTERNAL 0 +#define HAVE_MMI_EXTERNAL 0 +#define HAVE_ARMV5TE_INLINE 0 +#define HAVE_ARMV6_INLINE 0 +#define HAVE_ARMV6T2_INLINE 0 +#define HAVE_ARMV8_INLINE 0 +#define HAVE_NEON_INLINE 0 +#define HAVE_VFP_INLINE 0 +#define HAVE_VFPV3_INLINE 0 +#define HAVE_SETEND_INLINE 0 +#define HAVE_ALTIVEC_INLINE 0 +#define HAVE_DCBZL_INLINE 0 +#define HAVE_LDBRX_INLINE 0 +#define HAVE_POWER8_INLINE 0 +#define HAVE_PPC4XX_INLINE 0 +#define HAVE_VSX_INLINE 0 +#define HAVE_AESNI_INLINE 0 +#define HAVE_AMD3DNOW_INLINE 0 +#define HAVE_AMD3DNOWEXT_INLINE 0 +#define HAVE_AVX_INLINE 0 +#define HAVE_AVX2_INLINE 0 +#define HAVE_AVX512_INLINE 0 +#define HAVE_FMA3_INLINE 0 +#define HAVE_FMA4_INLINE 0 +#define HAVE_MMX_INLINE 0 +#define HAVE_MMXEXT_INLINE 0 +#define HAVE_SSE_INLINE 0 +#define HAVE_SSE2_INLINE 0 +#define HAVE_SSE3_INLINE 0 +#define HAVE_SSE4_INLINE 0 +#define HAVE_SSE42_INLINE 0 +#define HAVE_SSSE3_INLINE 0 +#define HAVE_XOP_INLINE 0 +#define HAVE_CPUNOP_INLINE 0 +#define HAVE_I686_INLINE 0 +#define HAVE_MIPSFPU_INLINE 0 +#define HAVE_MIPS32R2_INLINE 0 +#define HAVE_MIPS32R5_INLINE 0 +#define HAVE_MIPS64R2_INLINE 0 +#define HAVE_MIPS32R6_INLINE 0 +#define HAVE_MIPS64R6_INLINE 0 +#define HAVE_MIPSDSP_INLINE 0 +#define HAVE_MIPSDSPR2_INLINE 0 +#define HAVE_MSA_INLINE 0 +#define HAVE_MSA2_INLINE 0 +#define HAVE_LOONGSON2_INLINE 0 +#define HAVE_LOONGSON3_INLINE 0 +#define HAVE_MMI_INLINE 0 +#define HAVE_ALIGNED_STACK 1 +#define HAVE_FAST_64BIT 1 +#define HAVE_FAST_CLZ 1 +#define HAVE_FAST_CMOV 0 +#define HAVE_LOCAL_ALIGNED 1 +#define HAVE_SIMD_ALIGN_16 1 +#define HAVE_SIMD_ALIGN_32 0 +#define HAVE_SIMD_ALIGN_64 0 +#define HAVE_ATOMIC_CAS_PTR 0 +#define HAVE_MACHINE_RW_BARRIER 0 +#define HAVE_MEMORYBARRIER 0 +#define HAVE_MM_EMPTY 0 +#define HAVE_RDTSC 0 +#define HAVE_SEM_TIMEDWAIT 1 +#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1 +#define HAVE_CABS 0 +#define HAVE_CEXP 0 +#define HAVE_INLINE_ASM 1 +#define HAVE_SYMVER 0 +#define HAVE_X86ASM 0 +#define HAVE_BIGENDIAN 0 +#define HAVE_FAST_UNALIGNED 1 +#define HAVE_ARPA_INET_H 0 +#define HAVE_ASM_TYPES_H 1 +#define HAVE_CDIO_PARANOIA_H 0 +#define HAVE_CDIO_PARANOIA_PARANOIA_H 0 +#define HAVE_CUDA_H 0 +#define HAVE_DISPATCH_DISPATCH_H 0 +#define HAVE_DEV_BKTR_IOCTL_BT848_H 0 +#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0 +#define HAVE_DEV_IC_BT8XX_H 0 +#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0 +#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0 +#define HAVE_DIRECT_H 0 +#define HAVE_DIRENT_H 1 +#define HAVE_DXGIDEBUG_H 0 +#define HAVE_DXVA_H 0 +#define HAVE_ES2_GL_H 0 +#define HAVE_GSM_H 0 +#define HAVE_IO_H 0 +#define HAVE_LINUX_PERF_EVENT_H 1 +#define HAVE_MACHINE_IOCTL_BT848_H 0 +#define HAVE_MACHINE_IOCTL_METEOR_H 0 +#define HAVE_MALLOC_H 1 +#define HAVE_OPENCV2_CORE_CORE_C_H 0 +#define HAVE_OPENGL_GL3_H 0 +#define HAVE_POLL_H 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_SYS_RESOURCE_H 1 +#define HAVE_SYS_SELECT_H 1 +#define HAVE_SYS_SOUNDCARD_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_UN_H 1 +#define HAVE_SYS_VIDEOIO_H 0 +#define HAVE_TERMIOS_H 1 +#define HAVE_UDPLITE_H 0 +#define HAVE_UNISTD_H 1 +#define HAVE_VALGRIND_VALGRIND_H 0 /* #define HAVE_VALGRIND_VALGRIND_H 1 -- forced to 0. See https://crbug.com/590440 */ +#define HAVE_WINDOWS_H 0 +#define HAVE_WINSOCK2_H 0 +#define HAVE_INTRINSICS_NEON 0 +#define HAVE_ATANF 1 +#define HAVE_ATAN2F 1 +#define HAVE_CBRT 1 +#define HAVE_CBRTF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COSF 1 +#define HAVE_ERF 1 +#define HAVE_EXP2 1 +#define HAVE_EXP2F 1 +#define HAVE_EXPF 1 +#define HAVE_HYPOT 1 +#define HAVE_ISFINITE 1 +#define HAVE_ISINF 1 +#define HAVE_ISNAN 1 +#define HAVE_LDEXPF 1 +#define HAVE_LLRINT 1 +#define HAVE_LLRINTF 1 +#define HAVE_LOG2 1 +#define HAVE_LOG2F 1 +#define HAVE_LOG10F 1 +#define HAVE_LRINT 1 +#define HAVE_LRINTF 1 +#define HAVE_POWF 1 +#define HAVE_RINT 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SINF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_DOS_PATHS 0 +#define HAVE_LIBC_MSVCRT 0 +#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0 +#define HAVE_SECTION_DATA_REL_RO 1 +#define HAVE_THREADS 1 +#define HAVE_UWP 0 +#define HAVE_WINRT 0 +#define HAVE_ACCESS 1 +#define HAVE_ALIGNED_MALLOC 0 +#define HAVE_ARC4RANDOM 0 +#define HAVE_CLOCK_GETTIME 1 +#define HAVE_CLOSESOCKET 0 +#define HAVE_COMMANDLINETOARGVW 0 +#define HAVE_FCNTL 1 +#define HAVE_GETADDRINFO 0 +#define HAVE_GETHRTIME 0 +#define HAVE_GETOPT 1 +#define HAVE_GETMODULEHANDLE 0 +#define HAVE_GETPROCESSAFFINITYMASK 0 +#define HAVE_GETPROCESSMEMORYINFO 0 +#define HAVE_GETPROCESSTIMES 0 +#define HAVE_GETRUSAGE 1 +#define HAVE_GETSTDHANDLE 0 +#define HAVE_GETSYSTEMTIMEASFILETIME 0 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_GLOB 1 +#define HAVE_GLXGETPROCADDRESS 0 +#define HAVE_GMTIME_R 1 +#define HAVE_INET_ATON 0 +#define HAVE_ISATTY 1 +#define HAVE_KBHIT 0 +#define HAVE_LOCALTIME_R 1 +#define HAVE_LSTAT 1 +#define HAVE_LZO1X_999_COMPRESS 0 +#define HAVE_MACH_ABSOLUTE_TIME 0 +#define HAVE_MAPVIEWOFFILE 0 +#define HAVE_MEMALIGN 1 +#define HAVE_MKSTEMP 1 +#define HAVE_MMAP 1 +#define HAVE_MPROTECT 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_PEEKNAMEDPIPE 0 +#define HAVE_POSIX_MEMALIGN 1 +#define HAVE_PTHREAD_CANCEL 1 +#define HAVE_SCHED_GETAFFINITY 1 +#define HAVE_SECITEMIMPORT 0 +#define HAVE_SETCONSOLETEXTATTRIBUTE 0 +#define HAVE_SETCONSOLECTRLHANDLER 0 +#define HAVE_SETDLLDIRECTORY 0 +#define HAVE_SETMODE 0 +#define HAVE_SETRLIMIT 1 +#define HAVE_SLEEP 0 +#define HAVE_STRERROR_R 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTL 0 /* #define HAVE_SYSCTL 1 -- forced to 0 for Fuchsia */ +#define HAVE_USLEEP 1 +#define HAVE_UTGETOSTYPEFROMSTRING 0 +#define HAVE_VIRTUALALLOC 0 +#define HAVE_WGLGETPROCADDRESS 0 +#define HAVE_BCRYPT 0 +#define HAVE_VAAPI_DRM 0 +#define HAVE_VAAPI_X11 0 +#define HAVE_VDPAU_X11 0 +#define HAVE_PTHREADS 1 +#define HAVE_OS2THREADS 0 +#define HAVE_W32THREADS 0 +#define HAVE_AS_ARCH_DIRECTIVE 0 +#define HAVE_AS_DN_DIRECTIVE 0 +#define HAVE_AS_FPU_DIRECTIVE 0 +#define HAVE_AS_FUNC 1 +#define HAVE_AS_OBJECT_ARCH 0 +#define HAVE_ASM_MOD_Q 0 +#define HAVE_BLOCKS_EXTENSION 0 +#define HAVE_EBP_AVAILABLE 0 +#define HAVE_EBX_AVAILABLE 0 +#define HAVE_GNU_AS 0 +#define HAVE_GNU_WINDRES 0 +#define HAVE_IBM_ASM 1 +#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0 +#define HAVE_INLINE_ASM_LABELS 1 +#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1 +#define HAVE_PRAGMA_DEPRECATED 1 +#define HAVE_RSYNC_CONTIMEOUT 1 +#define HAVE_SYMVER_ASM_LABEL 0 +#define HAVE_SYMVER_GNU_ASM 1 +#define HAVE_VFP_ARGS 0 +#define HAVE_XFORM_ASM 1 +#define HAVE_XMM_CLOBBERS 0 +#define HAVE_KCMVIDEOCODECTYPE_HEVC 0 +#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0 +#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0 +#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0 +#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0 +#define HAVE_SOCKLEN_T 0 +#define HAVE_STRUCT_ADDRINFO 0 +#define HAVE_STRUCT_GROUP_SOURCE_REQ 0 +#define HAVE_STRUCT_IP_MREQ_SOURCE 0 +#define HAVE_STRUCT_IPV6_MREQ 0 +#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0 +#define HAVE_STRUCT_POLLFD 0 +#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1 +#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0 +#define HAVE_STRUCT_SOCKADDR_IN6 0 +#define HAVE_STRUCT_SOCKADDR_SA_LEN 0 +#define HAVE_STRUCT_SOCKADDR_STORAGE 0 +#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 +#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0 +#define HAVE_MAKEINFO 0 +#define HAVE_MAKEINFO_HTML 0 +#define HAVE_OPENCL_D3D11 0 +#define HAVE_OPENCL_DRM_ARM 0 +#define HAVE_OPENCL_DRM_BEIGNET 0 +#define HAVE_OPENCL_DXVA2 0 +#define HAVE_OPENCL_VAAPI_BEIGNET 0 +#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0 +#define HAVE_PERL 1 +#define HAVE_POD2MAN 1 +#define HAVE_TEXI2HTML 0 +#define CONFIG_DOC 0 +#define CONFIG_HTMLPAGES 0 +#define CONFIG_MANPAGES 0 +#define CONFIG_PODPAGES 0 +#define CONFIG_TXTPAGES 0 +#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1 +#define CONFIG_AVIO_READING_EXAMPLE 1 +#define CONFIG_DECODE_AUDIO_EXAMPLE 1 +#define CONFIG_DECODE_VIDEO_EXAMPLE 1 +#define CONFIG_DEMUXING_DECODING_EXAMPLE 1 +#define CONFIG_ENCODE_AUDIO_EXAMPLE 1 +#define CONFIG_ENCODE_VIDEO_EXAMPLE 1 +#define CONFIG_EXTRACT_MVS_EXAMPLE 1 +#define CONFIG_FILTER_AUDIO_EXAMPLE 0 +#define CONFIG_FILTERING_AUDIO_EXAMPLE 0 +#define CONFIG_FILTERING_VIDEO_EXAMPLE 0 +#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1 +#define CONFIG_HW_DECODE_EXAMPLE 1 +#define CONFIG_METADATA_EXAMPLE 1 +#define CONFIG_MUXING_EXAMPLE 0 +#define CONFIG_QSVDEC_EXAMPLE 0 +#define CONFIG_REMUXING_EXAMPLE 1 +#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0 +#define CONFIG_SCALING_VIDEO_EXAMPLE 0 +#define CONFIG_TRANSCODE_AAC_EXAMPLE 0 +#define CONFIG_TRANSCODING_EXAMPLE 0 +#define CONFIG_VAAPI_ENCODE_EXAMPLE 0 +#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0 +#define CONFIG_AVISYNTH 0 +#define CONFIG_FREI0R 0 +#define CONFIG_LIBCDIO 0 +#define CONFIG_LIBDAVS2 0 +#define CONFIG_LIBRUBBERBAND 0 +#define CONFIG_LIBVIDSTAB 0 +#define CONFIG_LIBX264 0 +#define CONFIG_LIBX265 0 +#define CONFIG_LIBXAVS 0 +#define CONFIG_LIBXAVS2 0 +#define CONFIG_LIBXVID 0 +#define CONFIG_DECKLINK 0 +#define CONFIG_LIBFDK_AAC 0 +#define CONFIG_OPENSSL 0 +#define CONFIG_LIBTLS 0 +#define CONFIG_GMP 0 +#define CONFIG_LIBARIBB24 0 +#define CONFIG_LIBLENSFUN 0 +#define CONFIG_LIBOPENCORE_AMRNB 0 +#define CONFIG_LIBOPENCORE_AMRWB 0 +#define CONFIG_LIBVMAF 0 +#define CONFIG_LIBVO_AMRWBENC 0 +#define CONFIG_MBEDTLS 0 +#define CONFIG_RKMPP 0 +#define CONFIG_LIBSMBCLIENT 0 +#define CONFIG_CHROMAPRINT 0 +#define CONFIG_GCRYPT 0 +#define CONFIG_GNUTLS 0 +#define CONFIG_JNI 0 +#define CONFIG_LADSPA 0 +#define CONFIG_LIBAOM 0 +#define CONFIG_LIBASS 0 +#define CONFIG_LIBBLURAY 0 +#define CONFIG_LIBBS2B 0 +#define CONFIG_LIBCACA 0 +#define CONFIG_LIBCELT 0 +#define CONFIG_LIBCODEC2 0 +#define CONFIG_LIBDAV1D 0 +#define CONFIG_LIBDC1394 0 +#define CONFIG_LIBDRM 0 +#define CONFIG_LIBFLITE 0 +#define CONFIG_LIBFONTCONFIG 0 +#define CONFIG_LIBFREETYPE 0 +#define CONFIG_LIBFRIBIDI 0 +#define CONFIG_LIBGLSLANG 0 +#define CONFIG_LIBGME 0 +#define CONFIG_LIBGSM 0 +#define CONFIG_LIBIEC61883 0 +#define CONFIG_LIBILBC 0 +#define CONFIG_LIBJACK 0 +#define CONFIG_LIBKLVANC 0 +#define CONFIG_LIBKVAZAAR 0 +#define CONFIG_LIBMODPLUG 0 +#define CONFIG_LIBMP3LAME 0 +#define CONFIG_LIBMYSOFA 0 +#define CONFIG_LIBOPENCV 0 +#define CONFIG_LIBOPENH264 0 +#define CONFIG_LIBOPENJPEG 0 +#define CONFIG_LIBOPENMPT 0 +#define CONFIG_LIBOPUS 1 +#define CONFIG_LIBPULSE 0 +#define CONFIG_LIBRABBITMQ 0 +#define CONFIG_LIBRAV1E 0 +#define CONFIG_LIBRSVG 0 +#define CONFIG_LIBRTMP 0 +#define CONFIG_LIBSHINE 0 +#define CONFIG_LIBSMBCLIENT 0 +#define CONFIG_LIBSNAPPY 0 +#define CONFIG_LIBSOXR 0 +#define CONFIG_LIBSPEEX 0 +#define CONFIG_LIBSRT 0 +#define CONFIG_LIBSSH 0 +#define CONFIG_LIBTENSORFLOW 0 +#define CONFIG_LIBTESSERACT 0 +#define CONFIG_LIBTHEORA 0 +#define CONFIG_LIBTWOLAME 0 +#define CONFIG_LIBV4L2 0 +#define CONFIG_LIBVORBIS 0 +#define CONFIG_LIBVPX 0 +#define CONFIG_LIBWAVPACK 0 +#define CONFIG_LIBWEBP 0 +#define CONFIG_LIBXML2 0 +#define CONFIG_LIBZIMG 0 +#define CONFIG_LIBZMQ 0 +#define CONFIG_LIBZVBI 0 +#define CONFIG_LV2 0 +#define CONFIG_MEDIACODEC 0 +#define CONFIG_OPENAL 0 +#define CONFIG_OPENGL 0 +#define CONFIG_POCKETSPHINX 0 +#define CONFIG_VAPOURSYNTH 0 +#define CONFIG_ALSA 0 +#define CONFIG_APPKIT 0 +#define CONFIG_AVFOUNDATION 0 +#define CONFIG_BZLIB 0 +#define CONFIG_COREIMAGE 0 +#define CONFIG_ICONV 0 +#define CONFIG_LIBXCB 0 +#define CONFIG_LIBXCB_SHM 0 +#define CONFIG_LIBXCB_SHAPE 0 +#define CONFIG_LIBXCB_XFIXES 0 +#define CONFIG_LZMA 0 +#define CONFIG_MEDIAFOUNDATION 0 +#define CONFIG_SCHANNEL 0 +#define CONFIG_SDL2 0 +#define CONFIG_SECURETRANSPORT 0 +#define CONFIG_SNDIO 0 +#define CONFIG_XLIB 0 +#define CONFIG_ZLIB 0 +#define CONFIG_CUDA_NVCC 0 +#define CONFIG_CUDA_SDK 0 +#define CONFIG_LIBNPP 0 +#define CONFIG_LIBMFX 0 +#define CONFIG_MMAL 0 +#define CONFIG_OMX 0 +#define CONFIG_OPENCL 0 +#define CONFIG_VULKAN 0 +#define CONFIG_AMF 0 +#define CONFIG_AUDIOTOOLBOX 0 +#define CONFIG_CRYSTALHD 0 +#define CONFIG_CUDA 0 +#define CONFIG_CUDA_LLVM 0 +#define CONFIG_CUVID 0 +#define CONFIG_D3D11VA 0 +#define CONFIG_DXVA2 0 +#define CONFIG_FFNVCODEC 0 +#define CONFIG_NVDEC 0 +#define CONFIG_NVENC 0 +#define CONFIG_VAAPI 0 +#define CONFIG_VDPAU 0 +#define CONFIG_VIDEOTOOLBOX 0 +#define CONFIG_V4L2_M2M 0 +#define CONFIG_XVMC 0 +#define CONFIG_FTRAPV 0 +#define CONFIG_GRAY 0 +#define CONFIG_HARDCODED_TABLES 0 +#define CONFIG_OMX_RPI 0 +#define CONFIG_RUNTIME_CPUDETECT 1 +#define CONFIG_SAFE_BITSTREAM_READER 1 +#define CONFIG_SHARED 0 +#define CONFIG_SMALL 0 +#define CONFIG_STATIC 1 +#define CONFIG_SWSCALE_ALPHA 1 +#define CONFIG_GPL 0 +#define CONFIG_NONFREE 0 +#define CONFIG_VERSION3 0 +#define CONFIG_AVDEVICE 0 +#define CONFIG_AVFILTER 0 +#define CONFIG_SWSCALE 0 +#define CONFIG_POSTPROC 0 +#define CONFIG_AVFORMAT 1 +#define CONFIG_AVCODEC 1 +#define CONFIG_SWRESAMPLE 0 +#define CONFIG_AVRESAMPLE 0 +#define CONFIG_AVUTIL 1 +#define CONFIG_FFPLAY 0 +#define CONFIG_FFPROBE 0 +#define CONFIG_FFMPEG 0 +#define CONFIG_DCT 1 +#define CONFIG_DWT 0 +#define CONFIG_ERROR_RESILIENCE 0 +#define CONFIG_FAAN 0 +#define CONFIG_FAST_UNALIGNED 1 +#define CONFIG_FFT 1 +#define CONFIG_LSP 0 +#define CONFIG_LZO 0 +#define CONFIG_MDCT 1 +#define CONFIG_PIXELUTILS 0 +#define CONFIG_NETWORK 0 +#define CONFIG_RDFT 1 +#define CONFIG_AUTODETECT 0 +#define CONFIG_FONTCONFIG 0 +#define CONFIG_LARGE_TESTS 1 +#define CONFIG_LINUX_PERF 0 +#define CONFIG_MEMORY_POISONING 0 +#define CONFIG_NEON_CLOBBER_TEST 0 +#define CONFIG_OSSFUZZ 0 +#define CONFIG_PIC 1 +#define CONFIG_THUMB 0 +#define CONFIG_VALGRIND_BACKTRACE 0 +#define CONFIG_XMM_CLOBBER_TEST 0 +#define CONFIG_BSFS 1 +#define CONFIG_DECODERS 1 +#define CONFIG_ENCODERS 0 +#define CONFIG_HWACCELS 0 +#define CONFIG_PARSERS 1 +#define CONFIG_INDEVS 0 +#define CONFIG_OUTDEVS 0 +#define CONFIG_FILTERS 0 +#define CONFIG_DEMUXERS 1 +#define CONFIG_MUXERS 0 +#define CONFIG_PROTOCOLS 0 +#define CONFIG_AANDCTTABLES 0 +#define CONFIG_AC3DSP 0 +#define CONFIG_ADTS_HEADER 0 +#define CONFIG_AUDIO_FRAME_QUEUE 0 +#define CONFIG_AUDIODSP 0 +#define CONFIG_BLOCKDSP 0 +#define CONFIG_BSWAPDSP 0 +#define CONFIG_CABAC 0 +#define CONFIG_CBS 0 +#define CONFIG_CBS_AV1 0 +#define CONFIG_CBS_H264 0 +#define CONFIG_CBS_H265 0 +#define CONFIG_CBS_JPEG 0 +#define CONFIG_CBS_MPEG2 0 +#define CONFIG_CBS_VP9 0 +#define CONFIG_DIRAC_PARSE 1 +#define CONFIG_DNN 0 +#define CONFIG_DVPROFILE 0 +#define CONFIG_EXIF 0 +#define CONFIG_FAANDCT 0 +#define CONFIG_FAANIDCT 0 +#define CONFIG_FDCTDSP 0 +#define CONFIG_FLACDSP 1 +#define CONFIG_FMTCONVERT 0 +#define CONFIG_FRAME_THREAD_ENCODER 0 +#define CONFIG_G722DSP 0 +#define CONFIG_GOLOMB 1 +#define CONFIG_GPLV3 0 +#define CONFIG_H263DSP 0 +#define CONFIG_H264CHROMA 0 +#define CONFIG_H264DSP 0 +#define CONFIG_H264PARSE 0 +#define CONFIG_H264PRED 1 +#define CONFIG_H264QPEL 0 +#define CONFIG_HEVCPARSE 0 +#define CONFIG_HPELDSP 1 +#define CONFIG_HUFFMAN 0 +#define CONFIG_HUFFYUVDSP 0 +#define CONFIG_HUFFYUVENCDSP 0 +#define CONFIG_IDCTDSP 0 +#define CONFIG_IIRFILTER 0 +#define CONFIG_MDCT15 0 +#define CONFIG_INTRAX8 0 +#define CONFIG_ISO_MEDIA 1 +#define CONFIG_IVIDSP 0 +#define CONFIG_JPEGTABLES 0 +#define CONFIG_LGPLV3 0 +#define CONFIG_LIBX262 0 +#define CONFIG_LLAUDDSP 0 +#define CONFIG_LLVIDDSP 0 +#define CONFIG_LLVIDENCDSP 0 +#define CONFIG_LPC 0 +#define CONFIG_LZF 0 +#define CONFIG_ME_CMP 0 +#define CONFIG_MPEG_ER 0 +#define CONFIG_MPEGAUDIO 1 +#define CONFIG_MPEGAUDIODSP 1 +#define CONFIG_MPEGAUDIOHEADER 1 +#define CONFIG_MPEGVIDEO 0 +#define CONFIG_MPEGVIDEOENC 0 +#define CONFIG_MSS34DSP 0 +#define CONFIG_PIXBLOCKDSP 0 +#define CONFIG_QPELDSP 0 +#define CONFIG_QSV 0 +#define CONFIG_QSVDEC 0 +#define CONFIG_QSVENC 0 +#define CONFIG_QSVVPP 0 +#define CONFIG_RANGECODER 0 +#define CONFIG_RIFFDEC 1 +#define CONFIG_RIFFENC 0 +#define CONFIG_RTPDEC 0 +#define CONFIG_RTPENC_CHAIN 0 +#define CONFIG_RV34DSP 0 +#define CONFIG_SCENE_SAD 0 +#define CONFIG_SINEWIN 0 +#define CONFIG_SNAPPY 0 +#define CONFIG_SRTP 0 +#define CONFIG_STARTCODE 0 +#define CONFIG_TEXTUREDSP 0 +#define CONFIG_TEXTUREDSPENC 0 +#define CONFIG_TPELDSP 0 +#define CONFIG_VAAPI_1 0 +#define CONFIG_VAAPI_ENCODE 0 +#define CONFIG_VC1DSP 0 +#define CONFIG_VIDEODSP 1 +#define CONFIG_VP3DSP 1 +#define CONFIG_VP56DSP 0 +#define CONFIG_VP8DSP 1 +#define CONFIG_WMA_FREQS 0 +#define CONFIG_WMV2DSP 0 +#define CONFIG_AAC_ADTSTOASC_BSF 0 +#define CONFIG_AV1_FRAME_MERGE_BSF 0 +#define CONFIG_AV1_FRAME_SPLIT_BSF 0 +#define CONFIG_AV1_METADATA_BSF 0 +#define CONFIG_CHOMP_BSF 0 +#define CONFIG_DUMP_EXTRADATA_BSF 0 +#define CONFIG_DCA_CORE_BSF 0 +#define CONFIG_EAC3_CORE_BSF 0 +#define CONFIG_EXTRACT_EXTRADATA_BSF 0 +#define CONFIG_FILTER_UNITS_BSF 0 +#define CONFIG_H264_METADATA_BSF 0 +#define CONFIG_H264_MP4TOANNEXB_BSF 0 +#define CONFIG_H264_REDUNDANT_PPS_BSF 0 +#define CONFIG_HAPQA_EXTRACT_BSF 0 +#define CONFIG_HEVC_METADATA_BSF 0 +#define CONFIG_HEVC_MP4TOANNEXB_BSF 0 +#define CONFIG_IMX_DUMP_HEADER_BSF 0 +#define CONFIG_MJPEG2JPEG_BSF 0 +#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0 +#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0 +#define CONFIG_MPEG2_METADATA_BSF 0 +#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0 +#define CONFIG_MOV2TEXTSUB_BSF 0 +#define CONFIG_NOISE_BSF 0 +#define CONFIG_NULL_BSF 0 +#define CONFIG_OPUS_METADATA_BSF 0 +#define CONFIG_PCM_RECHUNK_BSF 0 +#define CONFIG_PRORES_METADATA_BSF 0 +#define CONFIG_REMOVE_EXTRADATA_BSF 0 +#define CONFIG_SETTS_BSF 0 +#define CONFIG_TEXT2MOVSUB_BSF 0 +#define CONFIG_TRACE_HEADERS_BSF 0 +#define CONFIG_TRUEHD_CORE_BSF 0 +#define CONFIG_VP9_METADATA_BSF 0 +#define CONFIG_VP9_RAW_REORDER_BSF 0 +#define CONFIG_VP9_SUPERFRAME_BSF 0 +#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0 +#define CONFIG_AASC_DECODER 0 +#define CONFIG_AIC_DECODER 0 +#define CONFIG_ALIAS_PIX_DECODER 0 +#define CONFIG_AGM_DECODER 0 +#define CONFIG_AMV_DECODER 0 +#define CONFIG_ANM_DECODER 0 +#define CONFIG_ANSI_DECODER 0 +#define CONFIG_APNG_DECODER 0 +#define CONFIG_ARBC_DECODER 0 +#define CONFIG_ARGO_DECODER 0 +#define CONFIG_ASV1_DECODER 0 +#define CONFIG_ASV2_DECODER 0 +#define CONFIG_AURA_DECODER 0 +#define CONFIG_AURA2_DECODER 0 +#define CONFIG_AVRP_DECODER 0 +#define CONFIG_AVRN_DECODER 0 +#define CONFIG_AVS_DECODER 0 +#define CONFIG_AVUI_DECODER 0 +#define CONFIG_AYUV_DECODER 0 +#define CONFIG_BETHSOFTVID_DECODER 0 +#define CONFIG_BFI_DECODER 0 +#define CONFIG_BINK_DECODER 0 +#define CONFIG_BITPACKED_DECODER 0 +#define CONFIG_BMP_DECODER 0 +#define CONFIG_BMV_VIDEO_DECODER 0 +#define CONFIG_BRENDER_PIX_DECODER 0 +#define CONFIG_C93_DECODER 0 +#define CONFIG_CAVS_DECODER 0 +#define CONFIG_CDGRAPHICS_DECODER 0 +#define CONFIG_CDTOONS_DECODER 0 +#define CONFIG_CDXL_DECODER 0 +#define CONFIG_CFHD_DECODER 0 +#define CONFIG_CINEPAK_DECODER 0 +#define CONFIG_CLEARVIDEO_DECODER 0 +#define CONFIG_CLJR_DECODER 0 +#define CONFIG_CLLC_DECODER 0 +#define CONFIG_COMFORTNOISE_DECODER 0 +#define CONFIG_CPIA_DECODER 0 +#define CONFIG_CRI_DECODER 0 +#define CONFIG_CSCD_DECODER 0 +#define CONFIG_CYUV_DECODER 0 +#define CONFIG_DDS_DECODER 0 +#define CONFIG_DFA_DECODER 0 +#define CONFIG_DIRAC_DECODER 0 +#define CONFIG_DNXHD_DECODER 0 +#define CONFIG_DPX_DECODER 0 +#define CONFIG_DSICINVIDEO_DECODER 0 +#define CONFIG_DVAUDIO_DECODER 0 +#define CONFIG_DVVIDEO_DECODER 0 +#define CONFIG_DXA_DECODER 0 +#define CONFIG_DXTORY_DECODER 0 +#define CONFIG_DXV_DECODER 0 +#define CONFIG_EACMV_DECODER 0 +#define CONFIG_EAMAD_DECODER 0 +#define CONFIG_EATGQ_DECODER 0 +#define CONFIG_EATGV_DECODER 0 +#define CONFIG_EATQI_DECODER 0 +#define CONFIG_EIGHTBPS_DECODER 0 +#define CONFIG_EIGHTSVX_EXP_DECODER 0 +#define CONFIG_EIGHTSVX_FIB_DECODER 0 +#define CONFIG_ESCAPE124_DECODER 0 +#define CONFIG_ESCAPE130_DECODER 0 +#define CONFIG_EXR_DECODER 0 +#define CONFIG_FFV1_DECODER 0 +#define CONFIG_FFVHUFF_DECODER 0 +#define CONFIG_FIC_DECODER 0 +#define CONFIG_FITS_DECODER 0 +#define CONFIG_FLASHSV_DECODER 0 +#define CONFIG_FLASHSV2_DECODER 0 +#define CONFIG_FLIC_DECODER 0 +#define CONFIG_FLV_DECODER 0 +#define CONFIG_FMVC_DECODER 0 +#define CONFIG_FOURXM_DECODER 0 +#define CONFIG_FRAPS_DECODER 0 +#define CONFIG_FRWU_DECODER 0 +#define CONFIG_G2M_DECODER 0 +#define CONFIG_GDV_DECODER 0 +#define CONFIG_GIF_DECODER 0 +#define CONFIG_H261_DECODER 0 +#define CONFIG_H263_DECODER 0 +#define CONFIG_H263I_DECODER 0 +#define CONFIG_H263P_DECODER 0 +#define CONFIG_H263_V4L2M2M_DECODER 0 +#define CONFIG_H264_DECODER 0 +#define CONFIG_H264_CRYSTALHD_DECODER 0 +#define CONFIG_H264_V4L2M2M_DECODER 0 +#define CONFIG_H264_MEDIACODEC_DECODER 0 +#define CONFIG_H264_MMAL_DECODER 0 +#define CONFIG_H264_QSV_DECODER 0 +#define CONFIG_H264_RKMPP_DECODER 0 +#define CONFIG_HAP_DECODER 0 +#define CONFIG_HEVC_DECODER 0 +#define CONFIG_HEVC_QSV_DECODER 0 +#define CONFIG_HEVC_RKMPP_DECODER 0 +#define CONFIG_HEVC_V4L2M2M_DECODER 0 +#define CONFIG_HNM4_VIDEO_DECODER 0 +#define CONFIG_HQ_HQA_DECODER 0 +#define CONFIG_HQX_DECODER 0 +#define CONFIG_HUFFYUV_DECODER 0 +#define CONFIG_HYMT_DECODER 0 +#define CONFIG_IDCIN_DECODER 0 +#define CONFIG_IFF_ILBM_DECODER 0 +#define CONFIG_IMM4_DECODER 0 +#define CONFIG_IMM5_DECODER 0 +#define CONFIG_INDEO2_DECODER 0 +#define CONFIG_INDEO3_DECODER 0 +#define CONFIG_INDEO4_DECODER 0 +#define CONFIG_INDEO5_DECODER 0 +#define CONFIG_INTERPLAY_VIDEO_DECODER 0 +#define CONFIG_IPU_DECODER 0 +#define CONFIG_JPEG2000_DECODER 0 +#define CONFIG_JPEGLS_DECODER 0 +#define CONFIG_JV_DECODER 0 +#define CONFIG_KGV1_DECODER 0 +#define CONFIG_KMVC_DECODER 0 +#define CONFIG_LAGARITH_DECODER 0 +#define CONFIG_LOCO_DECODER 0 +#define CONFIG_LSCR_DECODER 0 +#define CONFIG_M101_DECODER 0 +#define CONFIG_MAGICYUV_DECODER 0 +#define CONFIG_MDEC_DECODER 0 +#define CONFIG_MIMIC_DECODER 0 +#define CONFIG_MJPEG_DECODER 0 +#define CONFIG_MJPEGB_DECODER 0 +#define CONFIG_MMVIDEO_DECODER 0 +#define CONFIG_MOBICLIP_DECODER 0 +#define CONFIG_MOTIONPIXELS_DECODER 0 +#define CONFIG_MPEG1VIDEO_DECODER 0 +#define CONFIG_MPEG2VIDEO_DECODER 0 +#define CONFIG_MPEG4_DECODER 0 +#define CONFIG_MPEG4_CRYSTALHD_DECODER 0 +#define CONFIG_MPEG4_V4L2M2M_DECODER 0 +#define CONFIG_MPEG4_MMAL_DECODER 0 +#define CONFIG_MPEGVIDEO_DECODER 0 +#define CONFIG_MPEG1_V4L2M2M_DECODER 0 +#define CONFIG_MPEG2_MMAL_DECODER 0 +#define CONFIG_MPEG2_CRYSTALHD_DECODER 0 +#define CONFIG_MPEG2_V4L2M2M_DECODER 0 +#define CONFIG_MPEG2_QSV_DECODER 0 +#define CONFIG_MPEG2_MEDIACODEC_DECODER 0 +#define CONFIG_MSA1_DECODER 0 +#define CONFIG_MSCC_DECODER 0 +#define CONFIG_MSMPEG4V1_DECODER 0 +#define CONFIG_MSMPEG4V2_DECODER 0 +#define CONFIG_MSMPEG4V3_DECODER 0 +#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0 +#define CONFIG_MSP2_DECODER 0 +#define CONFIG_MSRLE_DECODER 0 +#define CONFIG_MSS1_DECODER 0 +#define CONFIG_MSS2_DECODER 0 +#define CONFIG_MSVIDEO1_DECODER 0 +#define CONFIG_MSZH_DECODER 0 +#define CONFIG_MTS2_DECODER 0 +#define CONFIG_MV30_DECODER 0 +#define CONFIG_MVC1_DECODER 0 +#define CONFIG_MVC2_DECODER 0 +#define CONFIG_MVDV_DECODER 0 +#define CONFIG_MVHA_DECODER 0 +#define CONFIG_MWSC_DECODER 0 +#define CONFIG_MXPEG_DECODER 0 +#define CONFIG_NOTCHLC_DECODER 0 +#define CONFIG_NUV_DECODER 0 +#define CONFIG_PAF_VIDEO_DECODER 0 +#define CONFIG_PAM_DECODER 0 +#define CONFIG_PBM_DECODER 0 +#define CONFIG_PCX_DECODER 0 +#define CONFIG_PFM_DECODER 0 +#define CONFIG_PGM_DECODER 0 +#define CONFIG_PGMYUV_DECODER 0 +#define CONFIG_PGX_DECODER 0 +#define CONFIG_PHOTOCD_DECODER 0 +#define CONFIG_PICTOR_DECODER 0 +#define CONFIG_PIXLET_DECODER 0 +#define CONFIG_PNG_DECODER 0 +#define CONFIG_PPM_DECODER 0 +#define CONFIG_PRORES_DECODER 0 +#define CONFIG_PROSUMER_DECODER 0 +#define CONFIG_PSD_DECODER 0 +#define CONFIG_PTX_DECODER 0 +#define CONFIG_QDRAW_DECODER 0 +#define CONFIG_QPEG_DECODER 0 +#define CONFIG_QTRLE_DECODER 0 +#define CONFIG_R10K_DECODER 0 +#define CONFIG_R210_DECODER 0 +#define CONFIG_RASC_DECODER 0 +#define CONFIG_RAWVIDEO_DECODER 0 +#define CONFIG_RL2_DECODER 0 +#define CONFIG_ROQ_DECODER 0 +#define CONFIG_RPZA_DECODER 0 +#define CONFIG_RSCC_DECODER 0 +#define CONFIG_RV10_DECODER 0 +#define CONFIG_RV20_DECODER 0 +#define CONFIG_RV30_DECODER 0 +#define CONFIG_RV40_DECODER 0 +#define CONFIG_S302M_DECODER 0 +#define CONFIG_SANM_DECODER 0 +#define CONFIG_SCPR_DECODER 0 +#define CONFIG_SCREENPRESSO_DECODER 0 +#define CONFIG_SGA_DECODER 0 +#define CONFIG_SGI_DECODER 0 +#define CONFIG_SGIRLE_DECODER 0 +#define CONFIG_SHEERVIDEO_DECODER 0 +#define CONFIG_SIMBIOSIS_IMX_DECODER 0 +#define CONFIG_SMACKER_DECODER 0 +#define CONFIG_SMC_DECODER 0 +#define CONFIG_SMVJPEG_DECODER 0 +#define CONFIG_SNOW_DECODER 0 +#define CONFIG_SP5X_DECODER 0 +#define CONFIG_SPEEDHQ_DECODER 0 +#define CONFIG_SRGC_DECODER 0 +#define CONFIG_SUNRAST_DECODER 0 +#define CONFIG_SVQ1_DECODER 0 +#define CONFIG_SVQ3_DECODER 0 +#define CONFIG_TARGA_DECODER 0 +#define CONFIG_TARGA_Y216_DECODER 0 +#define CONFIG_TDSC_DECODER 0 +#define CONFIG_THEORA_DECODER 1 +#define CONFIG_THP_DECODER 0 +#define CONFIG_TIERTEXSEQVIDEO_DECODER 0 +#define CONFIG_TIFF_DECODER 0 +#define CONFIG_TMV_DECODER 0 +#define CONFIG_TRUEMOTION1_DECODER 0 +#define CONFIG_TRUEMOTION2_DECODER 0 +#define CONFIG_TRUEMOTION2RT_DECODER 0 +#define CONFIG_TSCC_DECODER 0 +#define CONFIG_TSCC2_DECODER 0 +#define CONFIG_TXD_DECODER 0 +#define CONFIG_ULTI_DECODER 0 +#define CONFIG_UTVIDEO_DECODER 0 +#define CONFIG_V210_DECODER 0 +#define CONFIG_V210X_DECODER 0 +#define CONFIG_V308_DECODER 0 +#define CONFIG_V408_DECODER 0 +#define CONFIG_V410_DECODER 0 +#define CONFIG_VB_DECODER 0 +#define CONFIG_VBLE_DECODER 0 +#define CONFIG_VC1_DECODER 0 +#define CONFIG_VC1_CRYSTALHD_DECODER 0 +#define CONFIG_VC1IMAGE_DECODER 0 +#define CONFIG_VC1_MMAL_DECODER 0 +#define CONFIG_VC1_QSV_DECODER 0 +#define CONFIG_VC1_V4L2M2M_DECODER 0 +#define CONFIG_VCR1_DECODER 0 +#define CONFIG_VMDVIDEO_DECODER 0 +#define CONFIG_VMNC_DECODER 0 +#define CONFIG_VP3_DECODER 1 +#define CONFIG_VP4_DECODER 0 +#define CONFIG_VP5_DECODER 0 +#define CONFIG_VP6_DECODER 0 +#define CONFIG_VP6A_DECODER 0 +#define CONFIG_VP6F_DECODER 0 +#define CONFIG_VP7_DECODER 0 +#define CONFIG_VP8_DECODER 1 +#define CONFIG_VP8_RKMPP_DECODER 0 +#define CONFIG_VP8_V4L2M2M_DECODER 0 +#define CONFIG_VP9_DECODER 0 +#define CONFIG_VP9_RKMPP_DECODER 0 +#define CONFIG_VP9_V4L2M2M_DECODER 0 +#define CONFIG_VQA_DECODER 0 +#define CONFIG_WEBP_DECODER 0 +#define CONFIG_WCMV_DECODER 0 +#define CONFIG_WRAPPED_AVFRAME_DECODER 0 +#define CONFIG_WMV1_DECODER 0 +#define CONFIG_WMV2_DECODER 0 +#define CONFIG_WMV3_DECODER 0 +#define CONFIG_WMV3_CRYSTALHD_DECODER 0 +#define CONFIG_WMV3IMAGE_DECODER 0 +#define CONFIG_WNV1_DECODER 0 +#define CONFIG_XAN_WC3_DECODER 0 +#define CONFIG_XAN_WC4_DECODER 0 +#define CONFIG_XBM_DECODER 0 +#define CONFIG_XFACE_DECODER 0 +#define CONFIG_XL_DECODER 0 +#define CONFIG_XPM_DECODER 0 +#define CONFIG_XWD_DECODER 0 +#define CONFIG_Y41P_DECODER 0 +#define CONFIG_YLC_DECODER 0 +#define CONFIG_YOP_DECODER 0 +#define CONFIG_YUV4_DECODER 0 +#define CONFIG_ZERO12V_DECODER 0 +#define CONFIG_ZEROCODEC_DECODER 0 +#define CONFIG_ZLIB_DECODER 0 +#define CONFIG_ZMBV_DECODER 0 +#define CONFIG_AAC_DECODER 0 +#define CONFIG_AAC_FIXED_DECODER 0 +#define CONFIG_AAC_LATM_DECODER 0 +#define CONFIG_AC3_DECODER 0 +#define CONFIG_AC3_FIXED_DECODER 0 +#define CONFIG_ACELP_KELVIN_DECODER 0 +#define CONFIG_ALAC_DECODER 0 +#define CONFIG_ALS_DECODER 0 +#define CONFIG_AMRNB_DECODER 0 +#define CONFIG_AMRWB_DECODER 0 +#define CONFIG_APE_DECODER 0 +#define CONFIG_APTX_DECODER 0 +#define CONFIG_APTX_HD_DECODER 0 +#define CONFIG_ATRAC1_DECODER 0 +#define CONFIG_ATRAC3_DECODER 0 +#define CONFIG_ATRAC3AL_DECODER 0 +#define CONFIG_ATRAC3P_DECODER 0 +#define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 +#define CONFIG_BINKAUDIO_DCT_DECODER 0 +#define CONFIG_BINKAUDIO_RDFT_DECODER 0 +#define CONFIG_BMV_AUDIO_DECODER 0 +#define CONFIG_COOK_DECODER 0 +#define CONFIG_DCA_DECODER 0 +#define CONFIG_DOLBY_E_DECODER 0 +#define CONFIG_DSD_LSBF_DECODER 0 +#define CONFIG_DSD_MSBF_DECODER 0 +#define CONFIG_DSD_LSBF_PLANAR_DECODER 0 +#define CONFIG_DSD_MSBF_PLANAR_DECODER 0 +#define CONFIG_DSICINAUDIO_DECODER 0 +#define CONFIG_DSS_SP_DECODER 0 +#define CONFIG_DST_DECODER 0 +#define CONFIG_EAC3_DECODER 0 +#define CONFIG_EVRC_DECODER 0 +#define CONFIG_FASTAUDIO_DECODER 0 +#define CONFIG_FFWAVESYNTH_DECODER 0 +#define CONFIG_FLAC_DECODER 1 +#define CONFIG_G723_1_DECODER 0 +#define CONFIG_G729_DECODER 0 +#define CONFIG_GSM_DECODER 0 +#define CONFIG_GSM_MS_DECODER 0 +#define CONFIG_HCA_DECODER 0 +#define CONFIG_HCOM_DECODER 0 +#define CONFIG_IAC_DECODER 0 +#define CONFIG_ILBC_DECODER 0 +#define CONFIG_IMC_DECODER 0 +#define CONFIG_INTERPLAY_ACM_DECODER 0 +#define CONFIG_MACE3_DECODER 0 +#define CONFIG_MACE6_DECODER 0 +#define CONFIG_METASOUND_DECODER 0 +#define CONFIG_MLP_DECODER 0 +#define CONFIG_MP1_DECODER 0 +#define CONFIG_MP1FLOAT_DECODER 0 +#define CONFIG_MP2_DECODER 0 +#define CONFIG_MP2FLOAT_DECODER 0 +#define CONFIG_MP3FLOAT_DECODER 0 +#define CONFIG_MP3_DECODER 1 +#define CONFIG_MP3ADUFLOAT_DECODER 0 +#define CONFIG_MP3ADU_DECODER 0 +#define CONFIG_MP3ON4FLOAT_DECODER 0 +#define CONFIG_MP3ON4_DECODER 0 +#define CONFIG_MPC7_DECODER 0 +#define CONFIG_MPC8_DECODER 0 +#define CONFIG_MSNSIREN_DECODER 0 +#define CONFIG_NELLYMOSER_DECODER 0 +#define CONFIG_ON2AVC_DECODER 0 +#define CONFIG_OPUS_DECODER 0 +#define CONFIG_PAF_AUDIO_DECODER 0 +#define CONFIG_QCELP_DECODER 0 +#define CONFIG_QDM2_DECODER 0 +#define CONFIG_QDMC_DECODER 0 +#define CONFIG_RA_144_DECODER 0 +#define CONFIG_RA_288_DECODER 0 +#define CONFIG_RALF_DECODER 0 +#define CONFIG_SBC_DECODER 0 +#define CONFIG_SHORTEN_DECODER 0 +#define CONFIG_SIPR_DECODER 0 +#define CONFIG_SIREN_DECODER 0 +#define CONFIG_SMACKAUD_DECODER 0 +#define CONFIG_SONIC_DECODER 0 +#define CONFIG_TAK_DECODER 0 +#define CONFIG_TRUEHD_DECODER 0 +#define CONFIG_TRUESPEECH_DECODER 0 +#define CONFIG_TTA_DECODER 0 +#define CONFIG_TWINVQ_DECODER 0 +#define CONFIG_VMDAUDIO_DECODER 0 +#define CONFIG_VORBIS_DECODER 1 +#define CONFIG_WAVPACK_DECODER 0 +#define CONFIG_WMALOSSLESS_DECODER 0 +#define CONFIG_WMAPRO_DECODER 0 +#define CONFIG_WMAV1_DECODER 0 +#define CONFIG_WMAV2_DECODER 0 +#define CONFIG_WMAVOICE_DECODER 0 +#define CONFIG_WS_SND1_DECODER 0 +#define CONFIG_XMA1_DECODER 0 +#define CONFIG_XMA2_DECODER 0 +#define CONFIG_PCM_ALAW_DECODER 1 +#define CONFIG_PCM_BLURAY_DECODER 0 +#define CONFIG_PCM_DVD_DECODER 0 +#define CONFIG_PCM_F16LE_DECODER 0 +#define CONFIG_PCM_F24LE_DECODER 0 +#define CONFIG_PCM_F32BE_DECODER 0 +#define CONFIG_PCM_F32LE_DECODER 1 +#define CONFIG_PCM_F64BE_DECODER 0 +#define CONFIG_PCM_F64LE_DECODER 0 +#define CONFIG_PCM_LXF_DECODER 0 +#define CONFIG_PCM_MULAW_DECODER 1 +#define CONFIG_PCM_S8_DECODER 0 +#define CONFIG_PCM_S8_PLANAR_DECODER 0 +#define CONFIG_PCM_S16BE_DECODER 1 +#define CONFIG_PCM_S16BE_PLANAR_DECODER 0 +#define CONFIG_PCM_S16LE_DECODER 1 +#define CONFIG_PCM_S16LE_PLANAR_DECODER 0 +#define CONFIG_PCM_S24BE_DECODER 1 +#define CONFIG_PCM_S24DAUD_DECODER 0 +#define CONFIG_PCM_S24LE_DECODER 1 +#define CONFIG_PCM_S24LE_PLANAR_DECODER 0 +#define CONFIG_PCM_S32BE_DECODER 0 +#define CONFIG_PCM_S32LE_DECODER 1 +#define CONFIG_PCM_S32LE_PLANAR_DECODER 0 +#define CONFIG_PCM_S64BE_DECODER 0 +#define CONFIG_PCM_S64LE_DECODER 0 +#define CONFIG_PCM_SGA_DECODER 0 +#define CONFIG_PCM_U8_DECODER 1 +#define CONFIG_PCM_U16BE_DECODER 0 +#define CONFIG_PCM_U16LE_DECODER 0 +#define CONFIG_PCM_U24BE_DECODER 0 +#define CONFIG_PCM_U24LE_DECODER 0 +#define CONFIG_PCM_U32BE_DECODER 0 +#define CONFIG_PCM_U32LE_DECODER 0 +#define CONFIG_PCM_VIDC_DECODER 0 +#define CONFIG_DERF_DPCM_DECODER 0 +#define CONFIG_GREMLIN_DPCM_DECODER 0 +#define CONFIG_INTERPLAY_DPCM_DECODER 0 +#define CONFIG_ROQ_DPCM_DECODER 0 +#define CONFIG_SDX2_DPCM_DECODER 0 +#define CONFIG_SOL_DPCM_DECODER 0 +#define CONFIG_XAN_DPCM_DECODER 0 +#define CONFIG_ADPCM_4XM_DECODER 0 +#define CONFIG_ADPCM_ADX_DECODER 0 +#define CONFIG_ADPCM_AFC_DECODER 0 +#define CONFIG_ADPCM_AGM_DECODER 0 +#define CONFIG_ADPCM_AICA_DECODER 0 +#define CONFIG_ADPCM_ARGO_DECODER 0 +#define CONFIG_ADPCM_CT_DECODER 0 +#define CONFIG_ADPCM_DTK_DECODER 0 +#define CONFIG_ADPCM_EA_DECODER 0 +#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0 +#define CONFIG_ADPCM_EA_R1_DECODER 0 +#define CONFIG_ADPCM_EA_R2_DECODER 0 +#define CONFIG_ADPCM_EA_R3_DECODER 0 +#define CONFIG_ADPCM_EA_XAS_DECODER 0 +#define CONFIG_ADPCM_G722_DECODER 0 +#define CONFIG_ADPCM_G726_DECODER 0 +#define CONFIG_ADPCM_G726LE_DECODER 0 +#define CONFIG_ADPCM_IMA_ACORN_DECODER 0 +#define CONFIG_ADPCM_IMA_AMV_DECODER 0 +#define CONFIG_ADPCM_IMA_ALP_DECODER 0 +#define CONFIG_ADPCM_IMA_APC_DECODER 0 +#define CONFIG_ADPCM_IMA_APM_DECODER 0 +#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0 +#define CONFIG_ADPCM_IMA_DAT4_DECODER 0 +#define CONFIG_ADPCM_IMA_DK3_DECODER 0 +#define CONFIG_ADPCM_IMA_DK4_DECODER 0 +#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0 +#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0 +#define CONFIG_ADPCM_IMA_ISS_DECODER 0 +#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0 +#define CONFIG_ADPCM_IMA_MTF_DECODER 0 +#define CONFIG_ADPCM_IMA_OKI_DECODER 0 +#define CONFIG_ADPCM_IMA_QT_DECODER 0 +#define CONFIG_ADPCM_IMA_RAD_DECODER 0 +#define CONFIG_ADPCM_IMA_SSI_DECODER 0 +#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0 +#define CONFIG_ADPCM_IMA_WAV_DECODER 0 +#define CONFIG_ADPCM_IMA_WS_DECODER 0 +#define CONFIG_ADPCM_MS_DECODER 0 +#define CONFIG_ADPCM_MTAF_DECODER 0 +#define CONFIG_ADPCM_PSX_DECODER 0 +#define CONFIG_ADPCM_SBPRO_2_DECODER 0 +#define CONFIG_ADPCM_SBPRO_3_DECODER 0 +#define CONFIG_ADPCM_SBPRO_4_DECODER 0 +#define CONFIG_ADPCM_SWF_DECODER 0 +#define CONFIG_ADPCM_THP_DECODER 0 +#define CONFIG_ADPCM_THP_LE_DECODER 0 +#define CONFIG_ADPCM_VIMA_DECODER 0 +#define CONFIG_ADPCM_XA_DECODER 0 +#define CONFIG_ADPCM_YAMAHA_DECODER 0 +#define CONFIG_ADPCM_ZORK_DECODER 0 +#define CONFIG_SSA_DECODER 0 +#define CONFIG_ASS_DECODER 0 +#define CONFIG_CCAPTION_DECODER 0 +#define CONFIG_DVBSUB_DECODER 0 +#define CONFIG_DVDSUB_DECODER 0 +#define CONFIG_JACOSUB_DECODER 0 +#define CONFIG_MICRODVD_DECODER 0 +#define CONFIG_MOVTEXT_DECODER 0 +#define CONFIG_MPL2_DECODER 0 +#define CONFIG_PGSSUB_DECODER 0 +#define CONFIG_PJS_DECODER 0 +#define CONFIG_REALTEXT_DECODER 0 +#define CONFIG_SAMI_DECODER 0 +#define CONFIG_SRT_DECODER 0 +#define CONFIG_STL_DECODER 0 +#define CONFIG_SUBRIP_DECODER 0 +#define CONFIG_SUBVIEWER_DECODER 0 +#define CONFIG_SUBVIEWER1_DECODER 0 +#define CONFIG_TEXT_DECODER 0 +#define CONFIG_VPLAYER_DECODER 0 +#define CONFIG_WEBVTT_DECODER 0 +#define CONFIG_XSUB_DECODER 0 +#define CONFIG_AAC_AT_DECODER 0 +#define CONFIG_AC3_AT_DECODER 0 +#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0 +#define CONFIG_ALAC_AT_DECODER 0 +#define CONFIG_AMR_NB_AT_DECODER 0 +#define CONFIG_EAC3_AT_DECODER 0 +#define CONFIG_GSM_MS_AT_DECODER 0 +#define CONFIG_ILBC_AT_DECODER 0 +#define CONFIG_MP1_AT_DECODER 0 +#define CONFIG_MP2_AT_DECODER 0 +#define CONFIG_MP3_AT_DECODER 0 +#define CONFIG_PCM_ALAW_AT_DECODER 0 +#define CONFIG_PCM_MULAW_AT_DECODER 0 +#define CONFIG_QDMC_AT_DECODER 0 +#define CONFIG_QDM2_AT_DECODER 0 +#define CONFIG_LIBARIBB24_DECODER 0 +#define CONFIG_LIBCELT_DECODER 0 +#define CONFIG_LIBCODEC2_DECODER 0 +#define CONFIG_LIBDAV1D_DECODER 0 +#define CONFIG_LIBDAVS2_DECODER 0 +#define CONFIG_LIBFDK_AAC_DECODER 0 +#define CONFIG_LIBGSM_DECODER 0 +#define CONFIG_LIBGSM_MS_DECODER 0 +#define CONFIG_LIBILBC_DECODER 0 +#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0 +#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0 +#define CONFIG_LIBOPENJPEG_DECODER 0 +#define CONFIG_LIBOPUS_DECODER 1 +#define CONFIG_LIBRSVG_DECODER 0 +#define CONFIG_LIBSPEEX_DECODER 0 +#define CONFIG_LIBUAVS3D_DECODER 0 +#define CONFIG_LIBVORBIS_DECODER 0 +#define CONFIG_LIBVPX_VP8_DECODER 0 +#define CONFIG_LIBVPX_VP9_DECODER 0 +#define CONFIG_LIBZVBI_TELETEXT_DECODER 0 +#define CONFIG_BINTEXT_DECODER 0 +#define CONFIG_XBIN_DECODER 0 +#define CONFIG_IDF_DECODER 0 +#define CONFIG_LIBAOM_AV1_DECODER 0 +#define CONFIG_AV1_DECODER 0 +#define CONFIG_AV1_CUVID_DECODER 0 +#define CONFIG_AV1_QSV_DECODER 0 +#define CONFIG_LIBOPENH264_DECODER 0 +#define CONFIG_H264_CUVID_DECODER 0 +#define CONFIG_HEVC_CUVID_DECODER 0 +#define CONFIG_HEVC_MEDIACODEC_DECODER 0 +#define CONFIG_MJPEG_CUVID_DECODER 0 +#define CONFIG_MJPEG_QSV_DECODER 0 +#define CONFIG_MPEG1_CUVID_DECODER 0 +#define CONFIG_MPEG2_CUVID_DECODER 0 +#define CONFIG_MPEG4_CUVID_DECODER 0 +#define CONFIG_MPEG4_MEDIACODEC_DECODER 0 +#define CONFIG_VC1_CUVID_DECODER 0 +#define CONFIG_VP8_CUVID_DECODER 0 +#define CONFIG_VP8_MEDIACODEC_DECODER 0 +#define CONFIG_VP8_QSV_DECODER 0 +#define CONFIG_VP9_CUVID_DECODER 0 +#define CONFIG_VP9_MEDIACODEC_DECODER 0 +#define CONFIG_VP9_QSV_DECODER 0 +#define CONFIG_A64MULTI_ENCODER 0 +#define CONFIG_A64MULTI5_ENCODER 0 +#define CONFIG_ALIAS_PIX_ENCODER 0 +#define CONFIG_AMV_ENCODER 0 +#define CONFIG_APNG_ENCODER 0 +#define CONFIG_ASV1_ENCODER 0 +#define CONFIG_ASV2_ENCODER 0 +#define CONFIG_AVRP_ENCODER 0 +#define CONFIG_AVUI_ENCODER 0 +#define CONFIG_AYUV_ENCODER 0 +#define CONFIG_BMP_ENCODER 0 +#define CONFIG_CFHD_ENCODER 0 +#define CONFIG_CINEPAK_ENCODER 0 +#define CONFIG_CLJR_ENCODER 0 +#define CONFIG_COMFORTNOISE_ENCODER 0 +#define CONFIG_DNXHD_ENCODER 0 +#define CONFIG_DPX_ENCODER 0 +#define CONFIG_DVVIDEO_ENCODER 0 +#define CONFIG_EXR_ENCODER 0 +#define CONFIG_FFV1_ENCODER 0 +#define CONFIG_FFVHUFF_ENCODER 0 +#define CONFIG_FITS_ENCODER 0 +#define CONFIG_FLASHSV_ENCODER 0 +#define CONFIG_FLASHSV2_ENCODER 0 +#define CONFIG_FLV_ENCODER 0 +#define CONFIG_GIF_ENCODER 0 +#define CONFIG_H261_ENCODER 0 +#define CONFIG_H263_ENCODER 0 +#define CONFIG_H263P_ENCODER 0 +#define CONFIG_HAP_ENCODER 0 +#define CONFIG_HUFFYUV_ENCODER 0 +#define CONFIG_JPEG2000_ENCODER 0 +#define CONFIG_JPEGLS_ENCODER 0 +#define CONFIG_LJPEG_ENCODER 0 +#define CONFIG_MAGICYUV_ENCODER 0 +#define CONFIG_MJPEG_ENCODER 0 +#define CONFIG_MPEG1VIDEO_ENCODER 0 +#define CONFIG_MPEG2VIDEO_ENCODER 0 +#define CONFIG_MPEG4_ENCODER 0 +#define CONFIG_MSMPEG4V2_ENCODER 0 +#define CONFIG_MSMPEG4V3_ENCODER 0 +#define CONFIG_MSVIDEO1_ENCODER 0 +#define CONFIG_PAM_ENCODER 0 +#define CONFIG_PBM_ENCODER 0 +#define CONFIG_PCX_ENCODER 0 +#define CONFIG_PFM_ENCODER 0 +#define CONFIG_PGM_ENCODER 0 +#define CONFIG_PGMYUV_ENCODER 0 +#define CONFIG_PNG_ENCODER 0 +#define CONFIG_PPM_ENCODER 0 +#define CONFIG_PRORES_ENCODER 0 +#define CONFIG_PRORES_AW_ENCODER 0 +#define CONFIG_PRORES_KS_ENCODER 0 +#define CONFIG_QTRLE_ENCODER 0 +#define CONFIG_R10K_ENCODER 0 +#define CONFIG_R210_ENCODER 0 +#define CONFIG_RAWVIDEO_ENCODER 0 +#define CONFIG_ROQ_ENCODER 0 +#define CONFIG_RPZA_ENCODER 0 +#define CONFIG_RV10_ENCODER 0 +#define CONFIG_RV20_ENCODER 0 +#define CONFIG_S302M_ENCODER 0 +#define CONFIG_SGI_ENCODER 0 +#define CONFIG_SMC_ENCODER 0 +#define CONFIG_SNOW_ENCODER 0 +#define CONFIG_SPEEDHQ_ENCODER 0 +#define CONFIG_SUNRAST_ENCODER 0 +#define CONFIG_SVQ1_ENCODER 0 +#define CONFIG_TARGA_ENCODER 0 +#define CONFIG_TIFF_ENCODER 0 +#define CONFIG_UTVIDEO_ENCODER 0 +#define CONFIG_V210_ENCODER 0 +#define CONFIG_V308_ENCODER 0 +#define CONFIG_V408_ENCODER 0 +#define CONFIG_V410_ENCODER 0 +#define CONFIG_VC2_ENCODER 0 +#define CONFIG_WRAPPED_AVFRAME_ENCODER 0 +#define CONFIG_WMV1_ENCODER 0 +#define CONFIG_WMV2_ENCODER 0 +#define CONFIG_XBM_ENCODER 0 +#define CONFIG_XFACE_ENCODER 0 +#define CONFIG_XWD_ENCODER 0 +#define CONFIG_Y41P_ENCODER 0 +#define CONFIG_YUV4_ENCODER 0 +#define CONFIG_ZLIB_ENCODER 0 +#define CONFIG_ZMBV_ENCODER 0 +#define CONFIG_AAC_ENCODER 0 +#define CONFIG_AC3_ENCODER 0 +#define CONFIG_AC3_FIXED_ENCODER 0 +#define CONFIG_ALAC_ENCODER 0 +#define CONFIG_APTX_ENCODER 0 +#define CONFIG_APTX_HD_ENCODER 0 +#define CONFIG_DCA_ENCODER 0 +#define CONFIG_EAC3_ENCODER 0 +#define CONFIG_FLAC_ENCODER 0 +#define CONFIG_G723_1_ENCODER 0 +#define CONFIG_MLP_ENCODER 0 +#define CONFIG_MP2_ENCODER 0 +#define CONFIG_MP2FIXED_ENCODER 0 +#define CONFIG_NELLYMOSER_ENCODER 0 +#define CONFIG_OPUS_ENCODER 0 +#define CONFIG_RA_144_ENCODER 0 +#define CONFIG_SBC_ENCODER 0 +#define CONFIG_SONIC_ENCODER 0 +#define CONFIG_SONIC_LS_ENCODER 0 +#define CONFIG_TRUEHD_ENCODER 0 +#define CONFIG_TTA_ENCODER 0 +#define CONFIG_VORBIS_ENCODER 0 +#define CONFIG_WAVPACK_ENCODER 0 +#define CONFIG_WMAV1_ENCODER 0 +#define CONFIG_WMAV2_ENCODER 0 +#define CONFIG_PCM_ALAW_ENCODER 0 +#define CONFIG_PCM_DVD_ENCODER 0 +#define CONFIG_PCM_F32BE_ENCODER 0 +#define CONFIG_PCM_F32LE_ENCODER 0 +#define CONFIG_PCM_F64BE_ENCODER 0 +#define CONFIG_PCM_F64LE_ENCODER 0 +#define CONFIG_PCM_MULAW_ENCODER 0 +#define CONFIG_PCM_S8_ENCODER 0 +#define CONFIG_PCM_S8_PLANAR_ENCODER 0 +#define CONFIG_PCM_S16BE_ENCODER 0 +#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0 +#define CONFIG_PCM_S16LE_ENCODER 0 +#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0 +#define CONFIG_PCM_S24BE_ENCODER 0 +#define CONFIG_PCM_S24DAUD_ENCODER 0 +#define CONFIG_PCM_S24LE_ENCODER 0 +#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0 +#define CONFIG_PCM_S32BE_ENCODER 0 +#define CONFIG_PCM_S32LE_ENCODER 0 +#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0 +#define CONFIG_PCM_S64BE_ENCODER 0 +#define CONFIG_PCM_S64LE_ENCODER 0 +#define CONFIG_PCM_U8_ENCODER 0 +#define CONFIG_PCM_U16BE_ENCODER 0 +#define CONFIG_PCM_U16LE_ENCODER 0 +#define CONFIG_PCM_U24BE_ENCODER 0 +#define CONFIG_PCM_U24LE_ENCODER 0 +#define CONFIG_PCM_U32BE_ENCODER 0 +#define CONFIG_PCM_U32LE_ENCODER 0 +#define CONFIG_PCM_VIDC_ENCODER 0 +#define CONFIG_ROQ_DPCM_ENCODER 0 +#define CONFIG_ADPCM_ADX_ENCODER 0 +#define CONFIG_ADPCM_ARGO_ENCODER 0 +#define CONFIG_ADPCM_G722_ENCODER 0 +#define CONFIG_ADPCM_G726_ENCODER 0 +#define CONFIG_ADPCM_G726LE_ENCODER 0 +#define CONFIG_ADPCM_IMA_AMV_ENCODER 0 +#define CONFIG_ADPCM_IMA_ALP_ENCODER 0 +#define CONFIG_ADPCM_IMA_APM_ENCODER 0 +#define CONFIG_ADPCM_IMA_QT_ENCODER 0 +#define CONFIG_ADPCM_IMA_SSI_ENCODER 0 +#define CONFIG_ADPCM_IMA_WAV_ENCODER 0 +#define CONFIG_ADPCM_IMA_WS_ENCODER 0 +#define CONFIG_ADPCM_MS_ENCODER 0 +#define CONFIG_ADPCM_SWF_ENCODER 0 +#define CONFIG_ADPCM_YAMAHA_ENCODER 0 +#define CONFIG_SSA_ENCODER 0 +#define CONFIG_ASS_ENCODER 0 +#define CONFIG_DVBSUB_ENCODER 0 +#define CONFIG_DVDSUB_ENCODER 0 +#define CONFIG_MOVTEXT_ENCODER 0 +#define CONFIG_SRT_ENCODER 0 +#define CONFIG_SUBRIP_ENCODER 0 +#define CONFIG_TEXT_ENCODER 0 +#define CONFIG_TTML_ENCODER 0 +#define CONFIG_WEBVTT_ENCODER 0 +#define CONFIG_XSUB_ENCODER 0 +#define CONFIG_AAC_AT_ENCODER 0 +#define CONFIG_ALAC_AT_ENCODER 0 +#define CONFIG_ILBC_AT_ENCODER 0 +#define CONFIG_PCM_ALAW_AT_ENCODER 0 +#define CONFIG_PCM_MULAW_AT_ENCODER 0 +#define CONFIG_LIBAOM_AV1_ENCODER 0 +#define CONFIG_LIBCODEC2_ENCODER 0 +#define CONFIG_LIBFDK_AAC_ENCODER 0 +#define CONFIG_LIBGSM_ENCODER 0 +#define CONFIG_LIBGSM_MS_ENCODER 0 +#define CONFIG_LIBILBC_ENCODER 0 +#define CONFIG_LIBMP3LAME_ENCODER 0 +#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0 +#define CONFIG_LIBOPENJPEG_ENCODER 0 +#define CONFIG_LIBOPUS_ENCODER 0 +#define CONFIG_LIBRAV1E_ENCODER 0 +#define CONFIG_LIBSHINE_ENCODER 0 +#define CONFIG_LIBSPEEX_ENCODER 0 +#define CONFIG_LIBSVTAV1_ENCODER 0 +#define CONFIG_LIBTHEORA_ENCODER 0 +#define CONFIG_LIBTWOLAME_ENCODER 0 +#define CONFIG_LIBVO_AMRWBENC_ENCODER 0 +#define CONFIG_LIBVORBIS_ENCODER 0 +#define CONFIG_LIBVPX_VP8_ENCODER 0 +#define CONFIG_LIBVPX_VP9_ENCODER 0 +#define CONFIG_LIBWEBP_ANIM_ENCODER 0 +#define CONFIG_LIBWEBP_ENCODER 0 +#define CONFIG_LIBX262_ENCODER 0 +#define CONFIG_LIBX264_ENCODER 0 +#define CONFIG_LIBX264RGB_ENCODER 0 +#define CONFIG_LIBX265_ENCODER 0 +#define CONFIG_LIBXAVS_ENCODER 0 +#define CONFIG_LIBXAVS2_ENCODER 0 +#define CONFIG_LIBXVID_ENCODER 0 +#define CONFIG_AAC_MF_ENCODER 0 +#define CONFIG_AC3_MF_ENCODER 0 +#define CONFIG_H263_V4L2M2M_ENCODER 0 +#define CONFIG_LIBOPENH264_ENCODER 0 +#define CONFIG_H264_AMF_ENCODER 0 +#define CONFIG_H264_MF_ENCODER 0 +#define CONFIG_H264_NVENC_ENCODER 0 +#define CONFIG_H264_OMX_ENCODER 0 +#define CONFIG_H264_QSV_ENCODER 0 +#define CONFIG_H264_V4L2M2M_ENCODER 0 +#define CONFIG_H264_VAAPI_ENCODER 0 +#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0 +#define CONFIG_HEVC_AMF_ENCODER 0 +#define CONFIG_HEVC_MF_ENCODER 0 +#define CONFIG_HEVC_NVENC_ENCODER 0 +#define CONFIG_HEVC_QSV_ENCODER 0 +#define CONFIG_HEVC_V4L2M2M_ENCODER 0 +#define CONFIG_HEVC_VAAPI_ENCODER 0 +#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0 +#define CONFIG_LIBKVAZAAR_ENCODER 0 +#define CONFIG_MJPEG_QSV_ENCODER 0 +#define CONFIG_MJPEG_VAAPI_ENCODER 0 +#define CONFIG_MP3_MF_ENCODER 0 +#define CONFIG_MPEG2_QSV_ENCODER 0 +#define CONFIG_MPEG2_VAAPI_ENCODER 0 +#define CONFIG_MPEG4_OMX_ENCODER 0 +#define CONFIG_MPEG4_V4L2M2M_ENCODER 0 +#define CONFIG_VP8_V4L2M2M_ENCODER 0 +#define CONFIG_VP8_VAAPI_ENCODER 0 +#define CONFIG_VP9_VAAPI_ENCODER 0 +#define CONFIG_VP9_QSV_ENCODER 0 +#define CONFIG_AV1_D3D11VA_HWACCEL 0 +#define CONFIG_AV1_D3D11VA2_HWACCEL 0 +#define CONFIG_AV1_DXVA2_HWACCEL 0 +#define CONFIG_AV1_NVDEC_HWACCEL 0 +#define CONFIG_AV1_VAAPI_HWACCEL 0 +#define CONFIG_H263_VAAPI_HWACCEL 0 +#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_H264_D3D11VA_HWACCEL 0 +#define CONFIG_H264_D3D11VA2_HWACCEL 0 +#define CONFIG_H264_DXVA2_HWACCEL 0 +#define CONFIG_H264_NVDEC_HWACCEL 0 +#define CONFIG_H264_VAAPI_HWACCEL 0 +#define CONFIG_H264_VDPAU_HWACCEL 0 +#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_HEVC_D3D11VA_HWACCEL 0 +#define CONFIG_HEVC_D3D11VA2_HWACCEL 0 +#define CONFIG_HEVC_DXVA2_HWACCEL 0 +#define CONFIG_HEVC_NVDEC_HWACCEL 0 +#define CONFIG_HEVC_VAAPI_HWACCEL 0 +#define CONFIG_HEVC_VDPAU_HWACCEL 0 +#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_MJPEG_NVDEC_HWACCEL 0 +#define CONFIG_MJPEG_VAAPI_HWACCEL 0 +#define CONFIG_MPEG1_NVDEC_HWACCEL 0 +#define CONFIG_MPEG1_VDPAU_HWACCEL 0 +#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_MPEG1_XVMC_HWACCEL 0 +#define CONFIG_MPEG2_D3D11VA_HWACCEL 0 +#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0 +#define CONFIG_MPEG2_NVDEC_HWACCEL 0 +#define CONFIG_MPEG2_DXVA2_HWACCEL 0 +#define CONFIG_MPEG2_VAAPI_HWACCEL 0 +#define CONFIG_MPEG2_VDPAU_HWACCEL 0 +#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_MPEG2_XVMC_HWACCEL 0 +#define CONFIG_MPEG4_NVDEC_HWACCEL 0 +#define CONFIG_MPEG4_VAAPI_HWACCEL 0 +#define CONFIG_MPEG4_VDPAU_HWACCEL 0 +#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0 +#define CONFIG_VC1_D3D11VA_HWACCEL 0 +#define CONFIG_VC1_D3D11VA2_HWACCEL 0 +#define CONFIG_VC1_DXVA2_HWACCEL 0 +#define CONFIG_VC1_NVDEC_HWACCEL 0 +#define CONFIG_VC1_VAAPI_HWACCEL 0 +#define CONFIG_VC1_VDPAU_HWACCEL 0 +#define CONFIG_VP8_NVDEC_HWACCEL 0 +#define CONFIG_VP8_VAAPI_HWACCEL 0 +#define CONFIG_VP9_D3D11VA_HWACCEL 0 +#define CONFIG_VP9_D3D11VA2_HWACCEL 0 +#define CONFIG_VP9_DXVA2_HWACCEL 0 +#define CONFIG_VP9_NVDEC_HWACCEL 0 +#define CONFIG_VP9_VAAPI_HWACCEL 0 +#define CONFIG_VP9_VDPAU_HWACCEL 0 +#define CONFIG_WMV3_D3D11VA_HWACCEL 0 +#define CONFIG_WMV3_D3D11VA2_HWACCEL 0 +#define CONFIG_WMV3_DXVA2_HWACCEL 0 +#define CONFIG_WMV3_NVDEC_HWACCEL 0 +#define CONFIG_WMV3_VAAPI_HWACCEL 0 +#define CONFIG_WMV3_VDPAU_HWACCEL 0 +#define CONFIG_AAC_PARSER 0 +#define CONFIG_AAC_LATM_PARSER 0 +#define CONFIG_AC3_PARSER 0 +#define CONFIG_ADX_PARSER 0 +#define CONFIG_AV1_PARSER 0 +#define CONFIG_AVS2_PARSER 0 +#define CONFIG_AVS3_PARSER 0 +#define CONFIG_BMP_PARSER 0 +#define CONFIG_CAVSVIDEO_PARSER 0 +#define CONFIG_COOK_PARSER 0 +#define CONFIG_CRI_PARSER 0 +#define CONFIG_DCA_PARSER 0 +#define CONFIG_DIRAC_PARSER 0 +#define CONFIG_DNXHD_PARSER 0 +#define CONFIG_DOLBY_E_PARSER 0 +#define CONFIG_DPX_PARSER 0 +#define CONFIG_DVAUDIO_PARSER 0 +#define CONFIG_DVBSUB_PARSER 0 +#define CONFIG_DVDSUB_PARSER 0 +#define CONFIG_DVD_NAV_PARSER 0 +#define CONFIG_FLAC_PARSER 1 +#define CONFIG_G723_1_PARSER 0 +#define CONFIG_G729_PARSER 0 +#define CONFIG_GIF_PARSER 0 +#define CONFIG_GSM_PARSER 0 +#define CONFIG_H261_PARSER 0 +#define CONFIG_H263_PARSER 0 +#define CONFIG_H264_PARSER 0 +#define CONFIG_HEVC_PARSER 0 +#define CONFIG_IPU_PARSER 0 +#define CONFIG_JPEG2000_PARSER 0 +#define CONFIG_MJPEG_PARSER 0 +#define CONFIG_MLP_PARSER 0 +#define CONFIG_MPEG4VIDEO_PARSER 0 +#define CONFIG_MPEGAUDIO_PARSER 1 +#define CONFIG_MPEGVIDEO_PARSER 0 +#define CONFIG_OPUS_PARSER 1 +#define CONFIG_PNG_PARSER 0 +#define CONFIG_PNM_PARSER 0 +#define CONFIG_RV30_PARSER 0 +#define CONFIG_RV40_PARSER 0 +#define CONFIG_SBC_PARSER 0 +#define CONFIG_SIPR_PARSER 0 +#define CONFIG_TAK_PARSER 0 +#define CONFIG_VC1_PARSER 0 +#define CONFIG_VORBIS_PARSER 1 +#define CONFIG_VP3_PARSER 1 +#define CONFIG_VP8_PARSER 1 +#define CONFIG_VP9_PARSER 1 +#define CONFIG_WEBP_PARSER 0 +#define CONFIG_XBM_PARSER 0 +#define CONFIG_XMA_PARSER 0 +#define CONFIG_ALSA_INDEV 0 +#define CONFIG_ANDROID_CAMERA_INDEV 0 +#define CONFIG_AVFOUNDATION_INDEV 0 +#define CONFIG_BKTR_INDEV 0 +#define CONFIG_DECKLINK_INDEV 0 +#define CONFIG_DSHOW_INDEV 0 +#define CONFIG_FBDEV_INDEV 0 +#define CONFIG_GDIGRAB_INDEV 0 +#define CONFIG_IEC61883_INDEV 0 +#define CONFIG_JACK_INDEV 0 +#define CONFIG_KMSGRAB_INDEV 0 +#define CONFIG_LAVFI_INDEV 0 +#define CONFIG_OPENAL_INDEV 0 +#define CONFIG_OSS_INDEV 0 +#define CONFIG_PULSE_INDEV 0 +#define CONFIG_SNDIO_INDEV 0 +#define CONFIG_V4L2_INDEV 0 +#define CONFIG_VFWCAP_INDEV 0 +#define CONFIG_XCBGRAB_INDEV 0 +#define CONFIG_LIBCDIO_INDEV 0 +#define CONFIG_LIBDC1394_INDEV 0 +#define CONFIG_ALSA_OUTDEV 0 +#define CONFIG_AUDIOTOOLBOX_OUTDEV 0 +#define CONFIG_CACA_OUTDEV 0 +#define CONFIG_DECKLINK_OUTDEV 0 +#define CONFIG_FBDEV_OUTDEV 0 +#define CONFIG_OPENGL_OUTDEV 0 +#define CONFIG_OSS_OUTDEV 0 +#define CONFIG_PULSE_OUTDEV 0 +#define CONFIG_SDL2_OUTDEV 0 +#define CONFIG_SNDIO_OUTDEV 0 +#define CONFIG_V4L2_OUTDEV 0 +#define CONFIG_XV_OUTDEV 0 +#define CONFIG_AA_DEMUXER 0 +#define CONFIG_AAC_DEMUXER 0 +#define CONFIG_AAX_DEMUXER 0 +#define CONFIG_AC3_DEMUXER 0 +#define CONFIG_ACE_DEMUXER 0 +#define CONFIG_ACM_DEMUXER 0 +#define CONFIG_ACT_DEMUXER 0 +#define CONFIG_ADF_DEMUXER 0 +#define CONFIG_ADP_DEMUXER 0 +#define CONFIG_ADS_DEMUXER 0 +#define CONFIG_ADX_DEMUXER 0 +#define CONFIG_AEA_DEMUXER 0 +#define CONFIG_AFC_DEMUXER 0 +#define CONFIG_AIFF_DEMUXER 0 +#define CONFIG_AIX_DEMUXER 0 +#define CONFIG_ALP_DEMUXER 0 +#define CONFIG_AMR_DEMUXER 0 +#define CONFIG_AMRNB_DEMUXER 0 +#define CONFIG_AMRWB_DEMUXER 0 +#define CONFIG_ANM_DEMUXER 0 +#define CONFIG_APC_DEMUXER 0 +#define CONFIG_APE_DEMUXER 0 +#define CONFIG_APM_DEMUXER 0 +#define CONFIG_APNG_DEMUXER 0 +#define CONFIG_APTX_DEMUXER 0 +#define CONFIG_APTX_HD_DEMUXER 0 +#define CONFIG_AQTITLE_DEMUXER 0 +#define CONFIG_ARGO_ASF_DEMUXER 0 +#define CONFIG_ARGO_BRP_DEMUXER 0 +#define CONFIG_ARGO_CVG_DEMUXER 0 +#define CONFIG_ASF_DEMUXER 0 +#define CONFIG_ASF_O_DEMUXER 0 +#define CONFIG_ASS_DEMUXER 0 +#define CONFIG_AST_DEMUXER 0 +#define CONFIG_AU_DEMUXER 0 +#define CONFIG_AV1_DEMUXER 0 +#define CONFIG_AVI_DEMUXER 0 +#define CONFIG_AVISYNTH_DEMUXER 0 +#define CONFIG_AVR_DEMUXER 0 +#define CONFIG_AVS_DEMUXER 0 +#define CONFIG_AVS2_DEMUXER 0 +#define CONFIG_AVS3_DEMUXER 0 +#define CONFIG_BETHSOFTVID_DEMUXER 0 +#define CONFIG_BFI_DEMUXER 0 +#define CONFIG_BINTEXT_DEMUXER 0 +#define CONFIG_BINK_DEMUXER 0 +#define CONFIG_BINKA_DEMUXER 0 +#define CONFIG_BIT_DEMUXER 0 +#define CONFIG_BMV_DEMUXER 0 +#define CONFIG_BFSTM_DEMUXER 0 +#define CONFIG_BRSTM_DEMUXER 0 +#define CONFIG_BOA_DEMUXER 0 +#define CONFIG_C93_DEMUXER 0 +#define CONFIG_CAF_DEMUXER 0 +#define CONFIG_CAVSVIDEO_DEMUXER 0 +#define CONFIG_CDG_DEMUXER 0 +#define CONFIG_CDXL_DEMUXER 0 +#define CONFIG_CINE_DEMUXER 0 +#define CONFIG_CODEC2_DEMUXER 0 +#define CONFIG_CODEC2RAW_DEMUXER 0 +#define CONFIG_CONCAT_DEMUXER 0 +#define CONFIG_DASH_DEMUXER 0 +#define CONFIG_DATA_DEMUXER 0 +#define CONFIG_DAUD_DEMUXER 0 +#define CONFIG_DCSTR_DEMUXER 0 +#define CONFIG_DERF_DEMUXER 0 +#define CONFIG_DFA_DEMUXER 0 +#define CONFIG_DHAV_DEMUXER 0 +#define CONFIG_DIRAC_DEMUXER 0 +#define CONFIG_DNXHD_DEMUXER 0 +#define CONFIG_DSF_DEMUXER 0 +#define CONFIG_DSICIN_DEMUXER 0 +#define CONFIG_DSS_DEMUXER 0 +#define CONFIG_DTS_DEMUXER 0 +#define CONFIG_DTSHD_DEMUXER 0 +#define CONFIG_DV_DEMUXER 0 +#define CONFIG_DVBSUB_DEMUXER 0 +#define CONFIG_DVBTXT_DEMUXER 0 +#define CONFIG_DXA_DEMUXER 0 +#define CONFIG_EA_DEMUXER 0 +#define CONFIG_EA_CDATA_DEMUXER 0 +#define CONFIG_EAC3_DEMUXER 0 +#define CONFIG_EPAF_DEMUXER 0 +#define CONFIG_FFMETADATA_DEMUXER 0 +#define CONFIG_FILMSTRIP_DEMUXER 0 +#define CONFIG_FITS_DEMUXER 0 +#define CONFIG_FLAC_DEMUXER 1 +#define CONFIG_FLIC_DEMUXER 0 +#define CONFIG_FLV_DEMUXER 0 +#define CONFIG_LIVE_FLV_DEMUXER 0 +#define CONFIG_FOURXM_DEMUXER 0 +#define CONFIG_FRM_DEMUXER 0 +#define CONFIG_FSB_DEMUXER 0 +#define CONFIG_FWSE_DEMUXER 0 +#define CONFIG_G722_DEMUXER 0 +#define CONFIG_G723_1_DEMUXER 0 +#define CONFIG_G726_DEMUXER 0 +#define CONFIG_G726LE_DEMUXER 0 +#define CONFIG_G729_DEMUXER 0 +#define CONFIG_GDV_DEMUXER 0 +#define CONFIG_GENH_DEMUXER 0 +#define CONFIG_GIF_DEMUXER 0 +#define CONFIG_GSM_DEMUXER 0 +#define CONFIG_GXF_DEMUXER 0 +#define CONFIG_H261_DEMUXER 0 +#define CONFIG_H263_DEMUXER 0 +#define CONFIG_H264_DEMUXER 0 +#define CONFIG_HCA_DEMUXER 0 +#define CONFIG_HCOM_DEMUXER 0 +#define CONFIG_HEVC_DEMUXER 0 +#define CONFIG_HLS_DEMUXER 0 +#define CONFIG_HNM_DEMUXER 0 +#define CONFIG_ICO_DEMUXER 0 +#define CONFIG_IDCIN_DEMUXER 0 +#define CONFIG_IDF_DEMUXER 0 +#define CONFIG_IFF_DEMUXER 0 +#define CONFIG_IFV_DEMUXER 0 +#define CONFIG_ILBC_DEMUXER 0 +#define CONFIG_IMAGE2_DEMUXER 0 +#define CONFIG_IMAGE2PIPE_DEMUXER 0 +#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0 +#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0 +#define CONFIG_INGENIENT_DEMUXER 0 +#define CONFIG_IPMOVIE_DEMUXER 0 +#define CONFIG_IPU_DEMUXER 0 +#define CONFIG_IRCAM_DEMUXER 0 +#define CONFIG_ISS_DEMUXER 0 +#define CONFIG_IV8_DEMUXER 0 +#define CONFIG_IVF_DEMUXER 0 +#define CONFIG_IVR_DEMUXER 0 +#define CONFIG_JACOSUB_DEMUXER 0 +#define CONFIG_JV_DEMUXER 0 +#define CONFIG_KUX_DEMUXER 0 +#define CONFIG_KVAG_DEMUXER 0 +#define CONFIG_LMLM4_DEMUXER 0 +#define CONFIG_LOAS_DEMUXER 0 +#define CONFIG_LUODAT_DEMUXER 0 +#define CONFIG_LRC_DEMUXER 0 +#define CONFIG_LVF_DEMUXER 0 +#define CONFIG_LXF_DEMUXER 0 +#define CONFIG_M4V_DEMUXER 0 +#define CONFIG_MCA_DEMUXER 0 +#define CONFIG_MCC_DEMUXER 0 +#define CONFIG_MATROSKA_DEMUXER 1 +#define CONFIG_MGSTS_DEMUXER 0 +#define CONFIG_MICRODVD_DEMUXER 0 +#define CONFIG_MJPEG_DEMUXER 0 +#define CONFIG_MJPEG_2000_DEMUXER 0 +#define CONFIG_MLP_DEMUXER 0 +#define CONFIG_MLV_DEMUXER 0 +#define CONFIG_MM_DEMUXER 0 +#define CONFIG_MMF_DEMUXER 0 +#define CONFIG_MODS_DEMUXER 0 +#define CONFIG_MOFLEX_DEMUXER 0 +#define CONFIG_MOV_DEMUXER 1 +#define CONFIG_MP3_DEMUXER 1 +#define CONFIG_MPC_DEMUXER 0 +#define CONFIG_MPC8_DEMUXER 0 +#define CONFIG_MPEGPS_DEMUXER 0 +#define CONFIG_MPEGTS_DEMUXER 0 +#define CONFIG_MPEGTSRAW_DEMUXER 0 +#define CONFIG_MPEGVIDEO_DEMUXER 0 +#define CONFIG_MPJPEG_DEMUXER 0 +#define CONFIG_MPL2_DEMUXER 0 +#define CONFIG_MPSUB_DEMUXER 0 +#define CONFIG_MSF_DEMUXER 0 +#define CONFIG_MSNWC_TCP_DEMUXER 0 +#define CONFIG_MSP_DEMUXER 0 +#define CONFIG_MTAF_DEMUXER 0 +#define CONFIG_MTV_DEMUXER 0 +#define CONFIG_MUSX_DEMUXER 0 +#define CONFIG_MV_DEMUXER 0 +#define CONFIG_MVI_DEMUXER 0 +#define CONFIG_MXF_DEMUXER 0 +#define CONFIG_MXG_DEMUXER 0 +#define CONFIG_NC_DEMUXER 0 +#define CONFIG_NISTSPHERE_DEMUXER 0 +#define CONFIG_NSP_DEMUXER 0 +#define CONFIG_NSV_DEMUXER 0 +#define CONFIG_NUT_DEMUXER 0 +#define CONFIG_NUV_DEMUXER 0 +#define CONFIG_OBU_DEMUXER 0 +#define CONFIG_OGG_DEMUXER 1 +#define CONFIG_OMA_DEMUXER 0 +#define CONFIG_PAF_DEMUXER 0 +#define CONFIG_PCM_ALAW_DEMUXER 0 +#define CONFIG_PCM_MULAW_DEMUXER 0 +#define CONFIG_PCM_VIDC_DEMUXER 0 +#define CONFIG_PCM_F64BE_DEMUXER 0 +#define CONFIG_PCM_F64LE_DEMUXER 0 +#define CONFIG_PCM_F32BE_DEMUXER 0 +#define CONFIG_PCM_F32LE_DEMUXER 0 +#define CONFIG_PCM_S32BE_DEMUXER 0 +#define CONFIG_PCM_S32LE_DEMUXER 0 +#define CONFIG_PCM_S24BE_DEMUXER 0 +#define CONFIG_PCM_S24LE_DEMUXER 0 +#define CONFIG_PCM_S16BE_DEMUXER 0 +#define CONFIG_PCM_S16LE_DEMUXER 0 +#define CONFIG_PCM_S8_DEMUXER 0 +#define CONFIG_PCM_U32BE_DEMUXER 0 +#define CONFIG_PCM_U32LE_DEMUXER 0 +#define CONFIG_PCM_U24BE_DEMUXER 0 +#define CONFIG_PCM_U24LE_DEMUXER 0 +#define CONFIG_PCM_U16BE_DEMUXER 0 +#define CONFIG_PCM_U16LE_DEMUXER 0 +#define CONFIG_PCM_U8_DEMUXER 0 +#define CONFIG_PJS_DEMUXER 0 +#define CONFIG_PMP_DEMUXER 0 +#define CONFIG_PP_BNK_DEMUXER 0 +#define CONFIG_PVA_DEMUXER 0 +#define CONFIG_PVF_DEMUXER 0 +#define CONFIG_QCP_DEMUXER 0 +#define CONFIG_R3D_DEMUXER 0 +#define CONFIG_RAWVIDEO_DEMUXER 0 +#define CONFIG_REALTEXT_DEMUXER 0 +#define CONFIG_REDSPARK_DEMUXER 0 +#define CONFIG_RL2_DEMUXER 0 +#define CONFIG_RM_DEMUXER 0 +#define CONFIG_ROQ_DEMUXER 0 +#define CONFIG_RPL_DEMUXER 0 +#define CONFIG_RSD_DEMUXER 0 +#define CONFIG_RSO_DEMUXER 0 +#define CONFIG_RTP_DEMUXER 0 +#define CONFIG_RTSP_DEMUXER 0 +#define CONFIG_S337M_DEMUXER 0 +#define CONFIG_SAMI_DEMUXER 0 +#define CONFIG_SAP_DEMUXER 0 +#define CONFIG_SBC_DEMUXER 0 +#define CONFIG_SBG_DEMUXER 0 +#define CONFIG_SCC_DEMUXER 0 +#define CONFIG_SDP_DEMUXER 0 +#define CONFIG_SDR2_DEMUXER 0 +#define CONFIG_SDS_DEMUXER 0 +#define CONFIG_SDX_DEMUXER 0 +#define CONFIG_SEGAFILM_DEMUXER 0 +#define CONFIG_SER_DEMUXER 0 +#define CONFIG_SGA_DEMUXER 0 +#define CONFIG_SHORTEN_DEMUXER 0 +#define CONFIG_SIFF_DEMUXER 0 +#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0 +#define CONFIG_SLN_DEMUXER 0 +#define CONFIG_SMACKER_DEMUXER 0 +#define CONFIG_SMJPEG_DEMUXER 0 +#define CONFIG_SMUSH_DEMUXER 0 +#define CONFIG_SOL_DEMUXER 0 +#define CONFIG_SOX_DEMUXER 0 +#define CONFIG_SPDIF_DEMUXER 0 +#define CONFIG_SRT_DEMUXER 0 +#define CONFIG_STR_DEMUXER 0 +#define CONFIG_STL_DEMUXER 0 +#define CONFIG_SUBVIEWER1_DEMUXER 0 +#define CONFIG_SUBVIEWER_DEMUXER 0 +#define CONFIG_SUP_DEMUXER 0 +#define CONFIG_SVAG_DEMUXER 0 +#define CONFIG_SVS_DEMUXER 0 +#define CONFIG_SWF_DEMUXER 0 +#define CONFIG_TAK_DEMUXER 0 +#define CONFIG_TEDCAPTIONS_DEMUXER 0 +#define CONFIG_THP_DEMUXER 0 +#define CONFIG_THREEDOSTR_DEMUXER 0 +#define CONFIG_TIERTEXSEQ_DEMUXER 0 +#define CONFIG_TMV_DEMUXER 0 +#define CONFIG_TRUEHD_DEMUXER 0 +#define CONFIG_TTA_DEMUXER 0 +#define CONFIG_TXD_DEMUXER 0 +#define CONFIG_TTY_DEMUXER 0 +#define CONFIG_TY_DEMUXER 0 +#define CONFIG_V210_DEMUXER 0 +#define CONFIG_V210X_DEMUXER 0 +#define CONFIG_VAG_DEMUXER 0 +#define CONFIG_VC1_DEMUXER 0 +#define CONFIG_VC1T_DEMUXER 0 +#define CONFIG_VIVIDAS_DEMUXER 0 +#define CONFIG_VIVO_DEMUXER 0 +#define CONFIG_VMD_DEMUXER 0 +#define CONFIG_VOBSUB_DEMUXER 0 +#define CONFIG_VOC_DEMUXER 0 +#define CONFIG_VPK_DEMUXER 0 +#define CONFIG_VPLAYER_DEMUXER 0 +#define CONFIG_VQF_DEMUXER 0 +#define CONFIG_W64_DEMUXER 0 +#define CONFIG_WAV_DEMUXER 1 +#define CONFIG_WC3_DEMUXER 0 +#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0 +#define CONFIG_WEBVTT_DEMUXER 0 +#define CONFIG_WSAUD_DEMUXER 0 +#define CONFIG_WSD_DEMUXER 0 +#define CONFIG_WSVQA_DEMUXER 0 +#define CONFIG_WTV_DEMUXER 0 +#define CONFIG_WVE_DEMUXER 0 +#define CONFIG_WV_DEMUXER 0 +#define CONFIG_XA_DEMUXER 0 +#define CONFIG_XBIN_DEMUXER 0 +#define CONFIG_XMV_DEMUXER 0 +#define CONFIG_XVAG_DEMUXER 0 +#define CONFIG_XWMA_DEMUXER 0 +#define CONFIG_YOP_DEMUXER 0 +#define CONFIG_YUV4MPEGPIPE_DEMUXER 0 +#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0 +#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0 +#define CONFIG_LIBGME_DEMUXER 0 +#define CONFIG_LIBMODPLUG_DEMUXER 0 +#define CONFIG_LIBOPENMPT_DEMUXER 0 +#define CONFIG_VAPOURSYNTH_DEMUXER 0 +#define CONFIG_A64_MUXER 0 +#define CONFIG_AC3_MUXER 0 +#define CONFIG_ADTS_MUXER 0 +#define CONFIG_ADX_MUXER 0 +#define CONFIG_AIFF_MUXER 0 +#define CONFIG_ALP_MUXER 0 +#define CONFIG_AMR_MUXER 0 +#define CONFIG_AMV_MUXER 0 +#define CONFIG_APM_MUXER 0 +#define CONFIG_APNG_MUXER 0 +#define CONFIG_APTX_MUXER 0 +#define CONFIG_APTX_HD_MUXER 0 +#define CONFIG_ARGO_ASF_MUXER 0 +#define CONFIG_ARGO_CVG_MUXER 0 +#define CONFIG_ASF_MUXER 0 +#define CONFIG_ASS_MUXER 0 +#define CONFIG_AST_MUXER 0 +#define CONFIG_ASF_STREAM_MUXER 0 +#define CONFIG_AU_MUXER 0 +#define CONFIG_AVI_MUXER 0 +#define CONFIG_AVM2_MUXER 0 +#define CONFIG_AVS2_MUXER 0 +#define CONFIG_BIT_MUXER 0 +#define CONFIG_CAF_MUXER 0 +#define CONFIG_CAVSVIDEO_MUXER 0 +#define CONFIG_CODEC2_MUXER 0 +#define CONFIG_CODEC2RAW_MUXER 0 +#define CONFIG_CRC_MUXER 0 +#define CONFIG_DASH_MUXER 0 +#define CONFIG_DATA_MUXER 0 +#define CONFIG_DAUD_MUXER 0 +#define CONFIG_DIRAC_MUXER 0 +#define CONFIG_DNXHD_MUXER 0 +#define CONFIG_DTS_MUXER 0 +#define CONFIG_DV_MUXER 0 +#define CONFIG_EAC3_MUXER 0 +#define CONFIG_F4V_MUXER 0 +#define CONFIG_FFMETADATA_MUXER 0 +#define CONFIG_FIFO_MUXER 0 +#define CONFIG_FIFO_TEST_MUXER 0 +#define CONFIG_FILMSTRIP_MUXER 0 +#define CONFIG_FITS_MUXER 0 +#define CONFIG_FLAC_MUXER 0 +#define CONFIG_FLV_MUXER 0 +#define CONFIG_FRAMECRC_MUXER 0 +#define CONFIG_FRAMEHASH_MUXER 0 +#define CONFIG_FRAMEMD5_MUXER 0 +#define CONFIG_G722_MUXER 0 +#define CONFIG_G723_1_MUXER 0 +#define CONFIG_G726_MUXER 0 +#define CONFIG_G726LE_MUXER 0 +#define CONFIG_GIF_MUXER 0 +#define CONFIG_GSM_MUXER 0 +#define CONFIG_GXF_MUXER 0 +#define CONFIG_H261_MUXER 0 +#define CONFIG_H263_MUXER 0 +#define CONFIG_H264_MUXER 0 +#define CONFIG_HASH_MUXER 0 +#define CONFIG_HDS_MUXER 0 +#define CONFIG_HEVC_MUXER 0 +#define CONFIG_HLS_MUXER 0 +#define CONFIG_ICO_MUXER 0 +#define CONFIG_ILBC_MUXER 0 +#define CONFIG_IMAGE2_MUXER 0 +#define CONFIG_IMAGE2PIPE_MUXER 0 +#define CONFIG_IPOD_MUXER 0 +#define CONFIG_IRCAM_MUXER 0 +#define CONFIG_ISMV_MUXER 0 +#define CONFIG_IVF_MUXER 0 +#define CONFIG_JACOSUB_MUXER 0 +#define CONFIG_KVAG_MUXER 0 +#define CONFIG_LATM_MUXER 0 +#define CONFIG_LRC_MUXER 0 +#define CONFIG_M4V_MUXER 0 +#define CONFIG_MD5_MUXER 0 +#define CONFIG_MATROSKA_MUXER 0 +#define CONFIG_MATROSKA_AUDIO_MUXER 0 +#define CONFIG_MICRODVD_MUXER 0 +#define CONFIG_MJPEG_MUXER 0 +#define CONFIG_MLP_MUXER 0 +#define CONFIG_MMF_MUXER 0 +#define CONFIG_MOV_MUXER 0 +#define CONFIG_MP2_MUXER 0 +#define CONFIG_MP3_MUXER 0 +#define CONFIG_MP4_MUXER 0 +#define CONFIG_MPEG1SYSTEM_MUXER 0 +#define CONFIG_MPEG1VCD_MUXER 0 +#define CONFIG_MPEG1VIDEO_MUXER 0 +#define CONFIG_MPEG2DVD_MUXER 0 +#define CONFIG_MPEG2SVCD_MUXER 0 +#define CONFIG_MPEG2VIDEO_MUXER 0 +#define CONFIG_MPEG2VOB_MUXER 0 +#define CONFIG_MPEGTS_MUXER 0 +#define CONFIG_MPJPEG_MUXER 0 +#define CONFIG_MXF_MUXER 0 +#define CONFIG_MXF_D10_MUXER 0 +#define CONFIG_MXF_OPATOM_MUXER 0 +#define CONFIG_NULL_MUXER 0 +#define CONFIG_NUT_MUXER 0 +#define CONFIG_OBU_MUXER 0 +#define CONFIG_OGA_MUXER 0 +#define CONFIG_OGG_MUXER 0 +#define CONFIG_OGV_MUXER 0 +#define CONFIG_OMA_MUXER 0 +#define CONFIG_OPUS_MUXER 0 +#define CONFIG_PCM_ALAW_MUXER 0 +#define CONFIG_PCM_MULAW_MUXER 0 +#define CONFIG_PCM_VIDC_MUXER 0 +#define CONFIG_PCM_F64BE_MUXER 0 +#define CONFIG_PCM_F64LE_MUXER 0 +#define CONFIG_PCM_F32BE_MUXER 0 +#define CONFIG_PCM_F32LE_MUXER 0 +#define CONFIG_PCM_S32BE_MUXER 0 +#define CONFIG_PCM_S32LE_MUXER 0 +#define CONFIG_PCM_S24BE_MUXER 0 +#define CONFIG_PCM_S24LE_MUXER 0 +#define CONFIG_PCM_S16BE_MUXER 0 +#define CONFIG_PCM_S16LE_MUXER 0 +#define CONFIG_PCM_S8_MUXER 0 +#define CONFIG_PCM_U32BE_MUXER 0 +#define CONFIG_PCM_U32LE_MUXER 0 +#define CONFIG_PCM_U24BE_MUXER 0 +#define CONFIG_PCM_U24LE_MUXER 0 +#define CONFIG_PCM_U16BE_MUXER 0 +#define CONFIG_PCM_U16LE_MUXER 0 +#define CONFIG_PCM_U8_MUXER 0 +#define CONFIG_PSP_MUXER 0 +#define CONFIG_RAWVIDEO_MUXER 0 +#define CONFIG_RM_MUXER 0 +#define CONFIG_ROQ_MUXER 0 +#define CONFIG_RSO_MUXER 0 +#define CONFIG_RTP_MUXER 0 +#define CONFIG_RTP_MPEGTS_MUXER 0 +#define CONFIG_RTSP_MUXER 0 +#define CONFIG_SAP_MUXER 0 +#define CONFIG_SBC_MUXER 0 +#define CONFIG_SCC_MUXER 0 +#define CONFIG_SEGAFILM_MUXER 0 +#define CONFIG_SEGMENT_MUXER 0 +#define CONFIG_STREAM_SEGMENT_MUXER 0 +#define CONFIG_SMJPEG_MUXER 0 +#define CONFIG_SMOOTHSTREAMING_MUXER 0 +#define CONFIG_SOX_MUXER 0 +#define CONFIG_SPX_MUXER 0 +#define CONFIG_SPDIF_MUXER 0 +#define CONFIG_SRT_MUXER 0 +#define CONFIG_STREAMHASH_MUXER 0 +#define CONFIG_SUP_MUXER 0 +#define CONFIG_SWF_MUXER 0 +#define CONFIG_TEE_MUXER 0 +#define CONFIG_TG2_MUXER 0 +#define CONFIG_TGP_MUXER 0 +#define CONFIG_MKVTIMESTAMP_V2_MUXER 0 +#define CONFIG_TRUEHD_MUXER 0 +#define CONFIG_TTA_MUXER 0 +#define CONFIG_TTML_MUXER 0 +#define CONFIG_UNCODEDFRAMECRC_MUXER 0 +#define CONFIG_VC1_MUXER 0 +#define CONFIG_VC1T_MUXER 0 +#define CONFIG_VOC_MUXER 0 +#define CONFIG_W64_MUXER 0 +#define CONFIG_WAV_MUXER 0 +#define CONFIG_WEBM_MUXER 0 +#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0 +#define CONFIG_WEBM_CHUNK_MUXER 0 +#define CONFIG_WEBP_MUXER 0 +#define CONFIG_WEBVTT_MUXER 0 +#define CONFIG_WSAUD_MUXER 0 +#define CONFIG_WTV_MUXER 0 +#define CONFIG_WV_MUXER 0 +#define CONFIG_YUV4MPEGPIPE_MUXER 0 +#define CONFIG_CHROMAPRINT_MUXER 0 +#define CONFIG_ASYNC_PROTOCOL 0 +#define CONFIG_BLURAY_PROTOCOL 0 +#define CONFIG_CACHE_PROTOCOL 0 +#define CONFIG_CONCAT_PROTOCOL 0 +#define CONFIG_CONCATF_PROTOCOL 0 +#define CONFIG_CRYPTO_PROTOCOL 0 +#define CONFIG_DATA_PROTOCOL 0 +#define CONFIG_FFRTMPCRYPT_PROTOCOL 0 +#define CONFIG_FFRTMPHTTP_PROTOCOL 0 +#define CONFIG_FILE_PROTOCOL 0 +#define CONFIG_FTP_PROTOCOL 0 +#define CONFIG_GOPHER_PROTOCOL 0 +#define CONFIG_GOPHERS_PROTOCOL 0 +#define CONFIG_HLS_PROTOCOL 0 +#define CONFIG_HTTP_PROTOCOL 0 +#define CONFIG_HTTPPROXY_PROTOCOL 0 +#define CONFIG_HTTPS_PROTOCOL 0 +#define CONFIG_ICECAST_PROTOCOL 0 +#define CONFIG_MMSH_PROTOCOL 0 +#define CONFIG_MMST_PROTOCOL 0 +#define CONFIG_MD5_PROTOCOL 0 +#define CONFIG_PIPE_PROTOCOL 0 +#define CONFIG_PROMPEG_PROTOCOL 0 +#define CONFIG_RTMP_PROTOCOL 0 +#define CONFIG_RTMPE_PROTOCOL 0 +#define CONFIG_RTMPS_PROTOCOL 0 +#define CONFIG_RTMPT_PROTOCOL 0 +#define CONFIG_RTMPTE_PROTOCOL 0 +#define CONFIG_RTMPTS_PROTOCOL 0 +#define CONFIG_RTP_PROTOCOL 0 +#define CONFIG_SCTP_PROTOCOL 0 +#define CONFIG_SRTP_PROTOCOL 0 +#define CONFIG_SUBFILE_PROTOCOL 0 +#define CONFIG_TEE_PROTOCOL 0 +#define CONFIG_TCP_PROTOCOL 0 +#define CONFIG_TLS_PROTOCOL 0 +#define CONFIG_UDP_PROTOCOL 0 +#define CONFIG_UDPLITE_PROTOCOL 0 +#define CONFIG_UNIX_PROTOCOL 0 +#define CONFIG_LIBAMQP_PROTOCOL 0 +#define CONFIG_LIBRIST_PROTOCOL 0 +#define CONFIG_LIBRTMP_PROTOCOL 0 +#define CONFIG_LIBRTMPE_PROTOCOL 0 +#define CONFIG_LIBRTMPS_PROTOCOL 0 +#define CONFIG_LIBRTMPT_PROTOCOL 0 +#define CONFIG_LIBRTMPTE_PROTOCOL 0 +#define CONFIG_LIBSRT_PROTOCOL 0 +#define CONFIG_LIBSSH_PROTOCOL 0 +#define CONFIG_LIBSMBCLIENT_PROTOCOL 0 +#define CONFIG_LIBZMQ_PROTOCOL 0 +#endif /* FFMPEG_CONFIG_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/bsf_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/bsf_list.c new file mode 100644 index 00000000000..91fe5088018 --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/bsf_list.c @@ -0,0 +1,2 @@ +static const AVBitStreamFilter * const bitstream_filters[] = { + NULL }; diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/codec_list.c new file mode 100644 index 00000000000..9407bd2775e --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/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/ppc64/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/parser_list.c new file mode 100644 index 00000000000..f81fbe8bbcf --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavcodec/parser_list.c @@ -0,0 +1,9 @@ +static const AVCodecParser * const parser_list[] = { + &ff_flac_parser, + &ff_mpegaudio_parser, + &ff_opus_parser, + &ff_vorbis_parser, + &ff_vp3_parser, + &ff_vp8_parser, + &ff_vp9_parser, + NULL }; diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavformat/demuxer_list.c new file mode 100644 index 00000000000..1908ba19e77 --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/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/ppc64/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavformat/muxer_list.c new file mode 100644 index 00000000000..f36d9499c6f --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/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/ppc64/libavformat/protocol_list.c b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavformat/protocol_list.c new file mode 100644 index 00000000000..247e1e4c3a2 --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavformat/protocol_list.c @@ -0,0 +1,2 @@ +static const URLProtocol * const url_protocols[] = { + NULL }; diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavutil/avconfig.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavutil/avconfig.h new file mode 100644 index 00000000000..c289fbb551c --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavutil/avconfig.h @@ -0,0 +1,6 @@ +/* Generated by ffmpeg configure */ +#ifndef AVUTIL_AVCONFIG_H +#define AVUTIL_AVCONFIG_H +#define AV_HAVE_BIGENDIAN 0 +#define AV_HAVE_FAST_UNALIGNED 1 +#endif /* AVUTIL_AVCONFIG_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavutil/ffversion.h new file mode 100644 index 00000000000..f26e152f83f --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ppc64/libavutil/ffversion.h @@ -0,0 +1,5 @@ +/* Automatically generated by version.sh, do not manually edit! */ +#ifndef AVUTIL_FFVERSION_H +#define AVUTIL_FFVERSION_H +#define FFMPEG_VERSION "N-104707-g392d8a2d60" +#endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/ffmpeg_generated.gni b/chromium/third_party/ffmpeg/ffmpeg_generated.gni index 41bccf91423..f9a0c3a6314 100644 --- a/chromium/third_party/ffmpeg/ffmpeg_generated.gni +++ b/chromium/third_party/ffmpeg/ffmpeg_generated.gni @@ -548,6 +548,42 @@ if ((use_linux_config && current_cpu == "arm" && arm_use_neon && ffmpeg_branding ] } +if (use_linux_config && current_cpu == "ppc64") { + ffmpeg_c_sources += [ + "libavutil/ppc/float_dsp_init.c", + "libavutil/ppc/cpu.c", + "libavutil/ppc/float_dsp_altivec.c", + "libavutil/ppc/float_dsp_vsx.c", + "libavcodec/ppc/fft_init.c", + "libavcodec/ppc/fft_vsx.c", + "libavcodec/ppc/audiodsp.c", + "libavcodec/ppc/blockdsp.c", + "libavcodec/ppc/fdctdsp.c", + "libavcodec/ppc/fmtconvert_altivec.c", + "libavcodec/ppc/h264chroma_init.c", + "libavcodec/ppc/hpeldsp_altivec.c", + "libavcodec/ppc/idctdsp.c", + "libavcodec/ppc/lossless_audiodsp_altivec.c", + "libavcodec/ppc/lossless_videodsp_altivec.c", + "libavcodec/ppc/me_cmp.c", + "libavcodec/ppc/mpegaudiodsp_altivec.c", + "libavcodec/ppc/mpegvideo_altivec.c", + "libavcodec/ppc/mpegvideodsp.c", + "libavcodec/ppc/mpegvideoencdsp.c", + "libavcodec/ppc/pixblockdsp.c", + "libavcodec/ppc/svq1enc_altivec.c", + "libavcodec/ppc/vc1dsp_altivec.c", + "libavcodec/ppc/videodsp.c", + "libavcodec/ppc/vorbisdsp_altivec.c", + "libavcodec/ppc/vp3dsp_altivec.c", + "libavcodec/ppc/vp8dsp_altivec.c", + ] + ffmpeg_gas_sources += [ + "libavcodec/ppc/asm.S", + "libavcodec/ppc/fft_altivec.S", + ] +} + if ((is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (use_linux_config && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (use_linux_config && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (use_linux_config && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (use_linux_config && current_cpu == "x86" && ffmpeg_branding == "ChromeOS")) { ffmpeg_c_sources += [ "libavcodec/x86/h264_qpel.c", diff --git a/chromium/third_party/ffmpeg/libavcodec/bsf_list.c b/chromium/third_party/ffmpeg/libavcodec/bsf_list.c new file mode 100644 index 00000000000..a3d43a2a9e6 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/bsf_list.c @@ -0,0 +1,38 @@ +static const AVBitStreamFilter * const bitstream_filters[] = { + &ff_aac_adtstoasc_bsf, + &ff_av1_frame_merge_bsf, + &ff_av1_frame_split_bsf, + &ff_av1_metadata_bsf, + &ff_chomp_bsf, + &ff_dump_extradata_bsf, + &ff_dca_core_bsf, + &ff_eac3_core_bsf, + &ff_extract_extradata_bsf, + &ff_filter_units_bsf, + &ff_h264_metadata_bsf, + &ff_h264_mp4toannexb_bsf, + &ff_h264_redundant_pps_bsf, + &ff_hapqa_extract_bsf, + &ff_hevc_metadata_bsf, + &ff_hevc_mp4toannexb_bsf, + &ff_imx_dump_header_bsf, + &ff_mjpeg2jpeg_bsf, + &ff_mjpega_dump_header_bsf, + &ff_mp3_header_decompress_bsf, + &ff_mpeg2_metadata_bsf, + &ff_mpeg4_unpack_bframes_bsf, + &ff_mov2textsub_bsf, + &ff_noise_bsf, + &ff_null_bsf, + &ff_opus_metadata_bsf, + &ff_pcm_rechunk_bsf, + &ff_prores_metadata_bsf, + &ff_remove_extradata_bsf, + &ff_text2movsub_bsf, + &ff_trace_headers_bsf, + &ff_truehd_core_bsf, + &ff_vp9_metadata_bsf, + &ff_vp9_raw_reorder_bsf, + &ff_vp9_superframe_bsf, + &ff_vp9_superframe_split_bsf, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavcodec/codec_list.c b/chromium/third_party/ffmpeg/libavcodec/codec_list.c new file mode 100644 index 00000000000..63119c25702 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/codec_list.c @@ -0,0 +1,636 @@ +static const AVCodec * const codec_list[] = { + &ff_a64multi_encoder, + &ff_a64multi5_encoder, + &ff_alias_pix_encoder, + &ff_amv_encoder, + &ff_apng_encoder, + &ff_asv1_encoder, + &ff_asv2_encoder, + &ff_avrp_encoder, + &ff_avui_encoder, + &ff_ayuv_encoder, + &ff_bmp_encoder, + &ff_cfhd_encoder, + &ff_cinepak_encoder, + &ff_cljr_encoder, + &ff_comfortnoise_encoder, + &ff_dnxhd_encoder, + &ff_dpx_encoder, + &ff_dvvideo_encoder, + &ff_ffv1_encoder, + &ff_ffvhuff_encoder, + &ff_fits_encoder, + &ff_flashsv_encoder, + &ff_flashsv2_encoder, + &ff_flv_encoder, + &ff_gif_encoder, + &ff_h261_encoder, + &ff_h263_encoder, + &ff_h263p_encoder, + &ff_huffyuv_encoder, + &ff_jpeg2000_encoder, + &ff_jpegls_encoder, + &ff_ljpeg_encoder, + &ff_magicyuv_encoder, + &ff_mjpeg_encoder, + &ff_mpeg1video_encoder, + &ff_mpeg2video_encoder, + &ff_mpeg4_encoder, + &ff_msmpeg4v2_encoder, + &ff_msmpeg4v3_encoder, + &ff_msvideo1_encoder, + &ff_pam_encoder, + &ff_pbm_encoder, + &ff_pcx_encoder, + &ff_pgm_encoder, + &ff_pgmyuv_encoder, + &ff_png_encoder, + &ff_ppm_encoder, + &ff_prores_encoder, + &ff_prores_aw_encoder, + &ff_prores_ks_encoder, + &ff_qtrle_encoder, + &ff_r10k_encoder, + &ff_r210_encoder, + &ff_rawvideo_encoder, + &ff_roq_encoder, + &ff_rpza_encoder, + &ff_rv10_encoder, + &ff_rv20_encoder, + &ff_s302m_encoder, + &ff_sgi_encoder, + &ff_snow_encoder, + &ff_sunrast_encoder, + &ff_svq1_encoder, + &ff_targa_encoder, + &ff_tiff_encoder, + &ff_utvideo_encoder, + &ff_v210_encoder, + &ff_v308_encoder, + &ff_v408_encoder, + &ff_v410_encoder, + &ff_vc2_encoder, + &ff_wrapped_avframe_encoder, + &ff_wmv1_encoder, + &ff_wmv2_encoder, + &ff_xbm_encoder, + &ff_xface_encoder, + &ff_xwd_encoder, + &ff_y41p_encoder, + &ff_yuv4_encoder, + &ff_zlib_encoder, + &ff_zmbv_encoder, + &ff_aac_encoder, + &ff_ac3_encoder, + &ff_ac3_fixed_encoder, + &ff_alac_encoder, + &ff_aptx_encoder, + &ff_aptx_hd_encoder, + &ff_dca_encoder, + &ff_eac3_encoder, + &ff_flac_encoder, + &ff_g723_1_encoder, + &ff_mlp_encoder, + &ff_mp2_encoder, + &ff_mp2fixed_encoder, + &ff_nellymoser_encoder, + &ff_opus_encoder, + &ff_ra_144_encoder, + &ff_sbc_encoder, + &ff_sonic_encoder, + &ff_sonic_ls_encoder, + &ff_truehd_encoder, + &ff_tta_encoder, + &ff_vorbis_encoder, + &ff_wavpack_encoder, + &ff_wmav1_encoder, + &ff_wmav2_encoder, + &ff_pcm_alaw_encoder, + &ff_pcm_dvd_encoder, + &ff_pcm_f32be_encoder, + &ff_pcm_f32le_encoder, + &ff_pcm_f64be_encoder, + &ff_pcm_f64le_encoder, + &ff_pcm_mulaw_encoder, + &ff_pcm_s8_encoder, + &ff_pcm_s8_planar_encoder, + &ff_pcm_s16be_encoder, + &ff_pcm_s16be_planar_encoder, + &ff_pcm_s16le_encoder, + &ff_pcm_s16le_planar_encoder, + &ff_pcm_s24be_encoder, + &ff_pcm_s24daud_encoder, + &ff_pcm_s24le_encoder, + &ff_pcm_s24le_planar_encoder, + &ff_pcm_s32be_encoder, + &ff_pcm_s32le_encoder, + &ff_pcm_s32le_planar_encoder, + &ff_pcm_s64be_encoder, + &ff_pcm_s64le_encoder, + &ff_pcm_u8_encoder, + &ff_pcm_u16be_encoder, + &ff_pcm_u16le_encoder, + &ff_pcm_u24be_encoder, + &ff_pcm_u24le_encoder, + &ff_pcm_u32be_encoder, + &ff_pcm_u32le_encoder, + &ff_pcm_vidc_encoder, + &ff_roq_dpcm_encoder, + &ff_adpcm_adx_encoder, + &ff_adpcm_argo_encoder, + &ff_adpcm_g722_encoder, + &ff_adpcm_g726_encoder, + &ff_adpcm_g726le_encoder, + &ff_adpcm_ima_apm_encoder, + &ff_adpcm_ima_qt_encoder, + &ff_adpcm_ima_ssi_encoder, + &ff_adpcm_ima_wav_encoder, + &ff_adpcm_ms_encoder, + &ff_adpcm_swf_encoder, + &ff_adpcm_yamaha_encoder, + &ff_ssa_encoder, + &ff_ass_encoder, + &ff_dvbsub_encoder, + &ff_dvdsub_encoder, + &ff_movtext_encoder, + &ff_srt_encoder, + &ff_subrip_encoder, + &ff_text_encoder, + &ff_webvtt_encoder, + &ff_xsub_encoder, + &ff_h263_v4l2m2m_encoder, + &ff_h264_v4l2m2m_encoder, + &ff_h264_vaapi_encoder, + &ff_hevc_v4l2m2m_encoder, + &ff_hevc_vaapi_encoder, + &ff_mjpeg_vaapi_encoder, + &ff_mpeg2_vaapi_encoder, + &ff_mpeg4_v4l2m2m_encoder, + &ff_vp8_v4l2m2m_encoder, + &ff_vp8_vaapi_encoder, + &ff_vp9_vaapi_encoder, + &ff_aasc_decoder, + &ff_aic_decoder, + &ff_alias_pix_decoder, + &ff_agm_decoder, + &ff_amv_decoder, + &ff_anm_decoder, + &ff_ansi_decoder, + &ff_apng_decoder, + &ff_arbc_decoder, + &ff_asv1_decoder, + &ff_asv2_decoder, + &ff_aura_decoder, + &ff_aura2_decoder, + &ff_avrp_decoder, + &ff_avrn_decoder, + &ff_avs_decoder, + &ff_avui_decoder, + &ff_ayuv_decoder, + &ff_bethsoftvid_decoder, + &ff_bfi_decoder, + &ff_bink_decoder, + &ff_bitpacked_decoder, + &ff_bmp_decoder, + &ff_bmv_video_decoder, + &ff_brender_pix_decoder, + &ff_c93_decoder, + &ff_cavs_decoder, + &ff_cdgraphics_decoder, + &ff_cdtoons_decoder, + &ff_cdxl_decoder, + &ff_cfhd_decoder, + &ff_cinepak_decoder, + &ff_clearvideo_decoder, + &ff_cljr_decoder, + &ff_cllc_decoder, + &ff_comfortnoise_decoder, + &ff_cpia_decoder, + &ff_cscd_decoder, + &ff_cyuv_decoder, + &ff_dds_decoder, + &ff_dfa_decoder, + &ff_dirac_decoder, + &ff_dnxhd_decoder, + &ff_dpx_decoder, + &ff_dsicinvideo_decoder, + &ff_dvaudio_decoder, + &ff_dvvideo_decoder, + &ff_dxa_decoder, + &ff_dxtory_decoder, + &ff_dxv_decoder, + &ff_eacmv_decoder, + &ff_eamad_decoder, + &ff_eatgq_decoder, + &ff_eatgv_decoder, + &ff_eatqi_decoder, + &ff_eightbps_decoder, + &ff_eightsvx_exp_decoder, + &ff_eightsvx_fib_decoder, + &ff_escape124_decoder, + &ff_escape130_decoder, + &ff_exr_decoder, + &ff_ffv1_decoder, + &ff_ffvhuff_decoder, + &ff_fic_decoder, + &ff_fits_decoder, + &ff_flashsv_decoder, + &ff_flashsv2_decoder, + &ff_flic_decoder, + &ff_flv_decoder, + &ff_fmvc_decoder, + &ff_fourxm_decoder, + &ff_fraps_decoder, + &ff_frwu_decoder, + &ff_g2m_decoder, + &ff_gdv_decoder, + &ff_gif_decoder, + &ff_h261_decoder, + &ff_h263_decoder, + &ff_h263i_decoder, + &ff_h263p_decoder, + &ff_h263_v4l2m2m_decoder, + &ff_h264_decoder, + &ff_h264_v4l2m2m_decoder, + &ff_hap_decoder, + &ff_hevc_decoder, + &ff_hevc_v4l2m2m_decoder, + &ff_hnm4_video_decoder, + &ff_hq_hqa_decoder, + &ff_hqx_decoder, + &ff_huffyuv_decoder, + &ff_hymt_decoder, + &ff_idcin_decoder, + &ff_iff_ilbm_decoder, + &ff_imm4_decoder, + &ff_imm5_decoder, + &ff_indeo2_decoder, + &ff_indeo3_decoder, + &ff_indeo4_decoder, + &ff_indeo5_decoder, + &ff_interplay_video_decoder, + &ff_jpeg2000_decoder, + &ff_jpegls_decoder, + &ff_jv_decoder, + &ff_kgv1_decoder, + &ff_kmvc_decoder, + &ff_lagarith_decoder, + &ff_loco_decoder, + &ff_lscr_decoder, + &ff_m101_decoder, + &ff_magicyuv_decoder, + &ff_mdec_decoder, + &ff_mimic_decoder, + &ff_mjpeg_decoder, + &ff_mjpegb_decoder, + &ff_mmvideo_decoder, + &ff_motionpixels_decoder, + &ff_mpeg1video_decoder, + &ff_mpeg2video_decoder, + &ff_mpeg4_decoder, + &ff_mpeg4_v4l2m2m_decoder, + &ff_mpegvideo_decoder, + &ff_mpeg1_v4l2m2m_decoder, + &ff_mpeg2_v4l2m2m_decoder, + &ff_msa1_decoder, + &ff_mscc_decoder, + &ff_msmpeg4v1_decoder, + &ff_msmpeg4v2_decoder, + &ff_msmpeg4v3_decoder, + &ff_msrle_decoder, + &ff_mss1_decoder, + &ff_mss2_decoder, + &ff_msvideo1_decoder, + &ff_mszh_decoder, + &ff_mts2_decoder, + &ff_mv30_decoder, + &ff_mvc1_decoder, + &ff_mvc2_decoder, + &ff_mvdv_decoder, + &ff_mvha_decoder, + &ff_mwsc_decoder, + &ff_mxpeg_decoder, + &ff_notchlc_decoder, + &ff_nuv_decoder, + &ff_paf_video_decoder, + &ff_pam_decoder, + &ff_pbm_decoder, + &ff_pcx_decoder, + &ff_pfm_decoder, + &ff_pgm_decoder, + &ff_pgmyuv_decoder, + &ff_pgx_decoder, + &ff_pictor_decoder, + &ff_pixlet_decoder, + &ff_png_decoder, + &ff_ppm_decoder, + &ff_prores_decoder, + &ff_prosumer_decoder, + &ff_psd_decoder, + &ff_ptx_decoder, + &ff_qdraw_decoder, + &ff_qpeg_decoder, + &ff_qtrle_decoder, + &ff_r10k_decoder, + &ff_r210_decoder, + &ff_rasc_decoder, + &ff_rawvideo_decoder, + &ff_rl2_decoder, + &ff_roq_decoder, + &ff_rpza_decoder, + &ff_rscc_decoder, + &ff_rv10_decoder, + &ff_rv20_decoder, + &ff_rv30_decoder, + &ff_rv40_decoder, + &ff_s302m_decoder, + &ff_sanm_decoder, + &ff_scpr_decoder, + &ff_screenpresso_decoder, + &ff_sgi_decoder, + &ff_sgirle_decoder, + &ff_sheervideo_decoder, + &ff_smacker_decoder, + &ff_smc_decoder, + &ff_smvjpeg_decoder, + &ff_snow_decoder, + &ff_sp5x_decoder, + &ff_speedhq_decoder, + &ff_srgc_decoder, + &ff_sunrast_decoder, + &ff_svq1_decoder, + &ff_svq3_decoder, + &ff_targa_decoder, + &ff_targa_y216_decoder, + &ff_tdsc_decoder, + &ff_theora_decoder, + &ff_thp_decoder, + &ff_tiertexseqvideo_decoder, + &ff_tiff_decoder, + &ff_tmv_decoder, + &ff_truemotion1_decoder, + &ff_truemotion2_decoder, + &ff_truemotion2rt_decoder, + &ff_tscc_decoder, + &ff_tscc2_decoder, + &ff_txd_decoder, + &ff_ulti_decoder, + &ff_utvideo_decoder, + &ff_v210_decoder, + &ff_v210x_decoder, + &ff_v308_decoder, + &ff_v408_decoder, + &ff_v410_decoder, + &ff_vb_decoder, + &ff_vble_decoder, + &ff_vc1_decoder, + &ff_vc1image_decoder, + &ff_vc1_v4l2m2m_decoder, + &ff_vcr1_decoder, + &ff_vmdvideo_decoder, + &ff_vmnc_decoder, + &ff_vp3_decoder, + &ff_vp4_decoder, + &ff_vp5_decoder, + &ff_vp6_decoder, + &ff_vp6a_decoder, + &ff_vp6f_decoder, + &ff_vp7_decoder, + &ff_vp8_decoder, + &ff_vp8_v4l2m2m_decoder, + &ff_vp9_decoder, + &ff_vp9_v4l2m2m_decoder, + &ff_vqa_decoder, + &ff_webp_decoder, + &ff_wcmv_decoder, + &ff_wrapped_avframe_decoder, + &ff_wmv1_decoder, + &ff_wmv2_decoder, + &ff_wmv3_decoder, + &ff_wmv3image_decoder, + &ff_wnv1_decoder, + &ff_xan_wc3_decoder, + &ff_xan_wc4_decoder, + &ff_xbm_decoder, + &ff_xface_decoder, + &ff_xl_decoder, + &ff_xpm_decoder, + &ff_xwd_decoder, + &ff_y41p_decoder, + &ff_ylc_decoder, + &ff_yop_decoder, + &ff_yuv4_decoder, + &ff_zero12v_decoder, + &ff_zerocodec_decoder, + &ff_zlib_decoder, + &ff_zmbv_decoder, + &ff_aac_decoder, + &ff_aac_fixed_decoder, + &ff_aac_latm_decoder, + &ff_ac3_decoder, + &ff_ac3_fixed_decoder, + &ff_acelp_kelvin_decoder, + &ff_alac_decoder, + &ff_als_decoder, + &ff_amrnb_decoder, + &ff_amrwb_decoder, + &ff_ape_decoder, + &ff_aptx_decoder, + &ff_aptx_hd_decoder, + &ff_atrac1_decoder, + &ff_atrac3_decoder, + &ff_atrac3al_decoder, + &ff_atrac3p_decoder, + &ff_atrac3pal_decoder, + &ff_atrac9_decoder, + &ff_binkaudio_dct_decoder, + &ff_binkaudio_rdft_decoder, + &ff_bmv_audio_decoder, + &ff_cook_decoder, + &ff_dca_decoder, + &ff_dolby_e_decoder, + &ff_dsd_lsbf_decoder, + &ff_dsd_msbf_decoder, + &ff_dsd_lsbf_planar_decoder, + &ff_dsd_msbf_planar_decoder, + &ff_dsicinaudio_decoder, + &ff_dss_sp_decoder, + &ff_dst_decoder, + &ff_eac3_decoder, + &ff_evrc_decoder, + &ff_ffwavesynth_decoder, + &ff_flac_decoder, + &ff_g723_1_decoder, + &ff_g729_decoder, + &ff_gsm_decoder, + &ff_gsm_ms_decoder, + &ff_hca_decoder, + &ff_hcom_decoder, + &ff_iac_decoder, + &ff_ilbc_decoder, + &ff_imc_decoder, + &ff_interplay_acm_decoder, + &ff_mace3_decoder, + &ff_mace6_decoder, + &ff_metasound_decoder, + &ff_mlp_decoder, + &ff_mp1_decoder, + &ff_mp1float_decoder, + &ff_mp2_decoder, + &ff_mp2float_decoder, + &ff_mp3float_decoder, + &ff_mp3_decoder, + &ff_mp3adufloat_decoder, + &ff_mp3adu_decoder, + &ff_mp3on4float_decoder, + &ff_mp3on4_decoder, + &ff_mpc7_decoder, + &ff_mpc8_decoder, + &ff_nellymoser_decoder, + &ff_on2avc_decoder, + &ff_opus_decoder, + &ff_paf_audio_decoder, + &ff_qcelp_decoder, + &ff_qdm2_decoder, + &ff_qdmc_decoder, + &ff_ra_144_decoder, + &ff_ra_288_decoder, + &ff_ralf_decoder, + &ff_sbc_decoder, + &ff_shorten_decoder, + &ff_sipr_decoder, + &ff_siren_decoder, + &ff_smackaud_decoder, + &ff_sonic_decoder, + &ff_tak_decoder, + &ff_truehd_decoder, + &ff_truespeech_decoder, + &ff_tta_decoder, + &ff_twinvq_decoder, + &ff_vmdaudio_decoder, + &ff_vorbis_decoder, + &ff_wavpack_decoder, + &ff_wmalossless_decoder, + &ff_wmapro_decoder, + &ff_wmav1_decoder, + &ff_wmav2_decoder, + &ff_wmavoice_decoder, + &ff_ws_snd1_decoder, + &ff_xma1_decoder, + &ff_xma2_decoder, + &ff_pcm_alaw_decoder, + &ff_pcm_bluray_decoder, + &ff_pcm_dvd_decoder, + &ff_pcm_f16le_decoder, + &ff_pcm_f24le_decoder, + &ff_pcm_f32be_decoder, + &ff_pcm_f32le_decoder, + &ff_pcm_f64be_decoder, + &ff_pcm_f64le_decoder, + &ff_pcm_lxf_decoder, + &ff_pcm_mulaw_decoder, + &ff_pcm_s8_decoder, + &ff_pcm_s8_planar_decoder, + &ff_pcm_s16be_decoder, + &ff_pcm_s16be_planar_decoder, + &ff_pcm_s16le_decoder, + &ff_pcm_s16le_planar_decoder, + &ff_pcm_s24be_decoder, + &ff_pcm_s24daud_decoder, + &ff_pcm_s24le_decoder, + &ff_pcm_s24le_planar_decoder, + &ff_pcm_s32be_decoder, + &ff_pcm_s32le_decoder, + &ff_pcm_s32le_planar_decoder, + &ff_pcm_s64be_decoder, + &ff_pcm_s64le_decoder, + &ff_pcm_u8_decoder, + &ff_pcm_u16be_decoder, + &ff_pcm_u16le_decoder, + &ff_pcm_u24be_decoder, + &ff_pcm_u24le_decoder, + &ff_pcm_u32be_decoder, + &ff_pcm_u32le_decoder, + &ff_pcm_vidc_decoder, + &ff_derf_dpcm_decoder, + &ff_gremlin_dpcm_decoder, + &ff_interplay_dpcm_decoder, + &ff_roq_dpcm_decoder, + &ff_sdx2_dpcm_decoder, + &ff_sol_dpcm_decoder, + &ff_xan_dpcm_decoder, + &ff_adpcm_4xm_decoder, + &ff_adpcm_adx_decoder, + &ff_adpcm_afc_decoder, + &ff_adpcm_agm_decoder, + &ff_adpcm_aica_decoder, + &ff_adpcm_argo_decoder, + &ff_adpcm_ct_decoder, + &ff_adpcm_dtk_decoder, + &ff_adpcm_ea_decoder, + &ff_adpcm_ea_maxis_xa_decoder, + &ff_adpcm_ea_r1_decoder, + &ff_adpcm_ea_r2_decoder, + &ff_adpcm_ea_r3_decoder, + &ff_adpcm_ea_xas_decoder, + &ff_adpcm_g722_decoder, + &ff_adpcm_g726_decoder, + &ff_adpcm_g726le_decoder, + &ff_adpcm_ima_amv_decoder, + &ff_adpcm_ima_alp_decoder, + &ff_adpcm_ima_apc_decoder, + &ff_adpcm_ima_apm_decoder, + &ff_adpcm_ima_cunning_decoder, + &ff_adpcm_ima_dat4_decoder, + &ff_adpcm_ima_dk3_decoder, + &ff_adpcm_ima_dk4_decoder, + &ff_adpcm_ima_ea_eacs_decoder, + &ff_adpcm_ima_ea_sead_decoder, + &ff_adpcm_ima_iss_decoder, + &ff_adpcm_ima_mtf_decoder, + &ff_adpcm_ima_oki_decoder, + &ff_adpcm_ima_qt_decoder, + &ff_adpcm_ima_rad_decoder, + &ff_adpcm_ima_ssi_decoder, + &ff_adpcm_ima_smjpeg_decoder, + &ff_adpcm_ima_wav_decoder, + &ff_adpcm_ima_ws_decoder, + &ff_adpcm_ms_decoder, + &ff_adpcm_mtaf_decoder, + &ff_adpcm_psx_decoder, + &ff_adpcm_sbpro_2_decoder, + &ff_adpcm_sbpro_3_decoder, + &ff_adpcm_sbpro_4_decoder, + &ff_adpcm_swf_decoder, + &ff_adpcm_thp_decoder, + &ff_adpcm_thp_le_decoder, + &ff_adpcm_vima_decoder, + &ff_adpcm_xa_decoder, + &ff_adpcm_yamaha_decoder, + &ff_adpcm_zork_decoder, + &ff_ssa_decoder, + &ff_ass_decoder, + &ff_ccaption_decoder, + &ff_dvbsub_decoder, + &ff_dvdsub_decoder, + &ff_jacosub_decoder, + &ff_microdvd_decoder, + &ff_movtext_decoder, + &ff_mpl2_decoder, + &ff_pgssub_decoder, + &ff_pjs_decoder, + &ff_realtext_decoder, + &ff_sami_decoder, + &ff_srt_decoder, + &ff_stl_decoder, + &ff_subrip_decoder, + &ff_subviewer_decoder, + &ff_subviewer1_decoder, + &ff_text_decoder, + &ff_vplayer_decoder, + &ff_webvtt_decoder, + &ff_xsub_decoder, + &ff_bintext_decoder, + &ff_xbin_decoder, + &ff_idf_decoder, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavcodec/parser_list.c b/chromium/third_party/ffmpeg/libavcodec/parser_list.c new file mode 100644 index 00000000000..d45a3cc904d --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/parser_list.c @@ -0,0 +1,49 @@ +static const AVCodecParser * const parser_list[] = { + &ff_aac_parser, + &ff_aac_latm_parser, + &ff_ac3_parser, + &ff_adx_parser, + &ff_av1_parser, + &ff_avs2_parser, + &ff_bmp_parser, + &ff_cavsvideo_parser, + &ff_cook_parser, + &ff_dca_parser, + &ff_dirac_parser, + &ff_dnxhd_parser, + &ff_dpx_parser, + &ff_dvaudio_parser, + &ff_dvbsub_parser, + &ff_dvdsub_parser, + &ff_dvd_nav_parser, + &ff_flac_parser, + &ff_g723_1_parser, + &ff_g729_parser, + &ff_gif_parser, + &ff_gsm_parser, + &ff_h261_parser, + &ff_h263_parser, + &ff_h264_parser, + &ff_hevc_parser, + &ff_jpeg2000_parser, + &ff_mjpeg_parser, + &ff_mlp_parser, + &ff_mpeg4video_parser, + &ff_mpegaudio_parser, + &ff_mpegvideo_parser, + &ff_opus_parser, + &ff_png_parser, + &ff_pnm_parser, + &ff_rv30_parser, + &ff_rv40_parser, + &ff_sbc_parser, + &ff_sipr_parser, + &ff_tak_parser, + &ff_vc1_parser, + &ff_vorbis_parser, + &ff_vp3_parser, + &ff_vp8_parser, + &ff_vp9_parser, + &ff_webp_parser, + &ff_xma_parser, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavdevice/indev_list.c b/chromium/third_party/ffmpeg/libavdevice/indev_list.c new file mode 100644 index 00000000000..f6f012bdc8c --- /dev/null +++ b/chromium/third_party/ffmpeg/libavdevice/indev_list.c @@ -0,0 +1,8 @@ +static const AVInputFormat * const indev_list[] = { + &ff_alsa_demuxer, + &ff_fbdev_demuxer, + &ff_lavfi_demuxer, + &ff_oss_demuxer, + &ff_v4l2_demuxer, + &ff_xcbgrab_demuxer, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavdevice/outdev_list.c b/chromium/third_party/ffmpeg/libavdevice/outdev_list.c new file mode 100644 index 00000000000..130c42892ba --- /dev/null +++ b/chromium/third_party/ffmpeg/libavdevice/outdev_list.c @@ -0,0 +1,6 @@ +static const AVOutputFormat * const outdev_list[] = { + &ff_alsa_muxer, + &ff_fbdev_muxer, + &ff_oss_muxer, + &ff_v4l2_muxer, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavfilter/filter_list.c b/chromium/third_party/ffmpeg/libavfilter/filter_list.c new file mode 100644 index 00000000000..3e25232e033 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/filter_list.c @@ -0,0 +1,377 @@ +static const AVFilter * const filter_list[] = { + &ff_af_abench, + &ff_af_acompressor, + &ff_af_acontrast, + &ff_af_acopy, + &ff_af_acue, + &ff_af_acrossfade, + &ff_af_acrossover, + &ff_af_acrusher, + &ff_af_adeclick, + &ff_af_adeclip, + &ff_af_adelay, + &ff_af_aderivative, + &ff_af_aecho, + &ff_af_aemphasis, + &ff_af_aeval, + &ff_af_afade, + &ff_af_afftdn, + &ff_af_afftfilt, + &ff_af_afir, + &ff_af_aformat, + &ff_af_agate, + &ff_af_aiir, + &ff_af_aintegral, + &ff_af_ainterleave, + &ff_af_alimiter, + &ff_af_allpass, + &ff_af_aloop, + &ff_af_amerge, + &ff_af_ametadata, + &ff_af_amix, + &ff_af_amultiply, + &ff_af_anequalizer, + &ff_af_anlmdn, + &ff_af_anlms, + &ff_af_anull, + &ff_af_apad, + &ff_af_aperms, + &ff_af_aphaser, + &ff_af_apulsator, + &ff_af_arealtime, + &ff_af_aresample, + &ff_af_areverse, + &ff_af_arnndn, + &ff_af_aselect, + &ff_af_asendcmd, + &ff_af_asetnsamples, + &ff_af_asetpts, + &ff_af_asetrate, + &ff_af_asettb, + &ff_af_ashowinfo, + &ff_af_asidedata, + &ff_af_asoftclip, + &ff_af_asplit, + &ff_af_astats, + &ff_af_astreamselect, + &ff_af_asubboost, + &ff_af_atempo, + &ff_af_atrim, + &ff_af_axcorrelate, + &ff_af_bandpass, + &ff_af_bandreject, + &ff_af_bass, + &ff_af_biquad, + &ff_af_channelmap, + &ff_af_channelsplit, + &ff_af_chorus, + &ff_af_compand, + &ff_af_compensationdelay, + &ff_af_crossfeed, + &ff_af_crystalizer, + &ff_af_dcshift, + &ff_af_deesser, + &ff_af_drmeter, + &ff_af_dynaudnorm, + &ff_af_earwax, + &ff_af_ebur128, + &ff_af_equalizer, + &ff_af_extrastereo, + &ff_af_firequalizer, + &ff_af_flanger, + &ff_af_haas, + &ff_af_hdcd, + &ff_af_headphone, + &ff_af_highpass, + &ff_af_highshelf, + &ff_af_join, + &ff_af_loudnorm, + &ff_af_lowpass, + &ff_af_lowshelf, + &ff_af_mcompand, + &ff_af_pan, + &ff_af_replaygain, + &ff_af_sidechaincompress, + &ff_af_sidechaingate, + &ff_af_silencedetect, + &ff_af_silenceremove, + &ff_af_stereotools, + &ff_af_stereowiden, + &ff_af_superequalizer, + &ff_af_surround, + &ff_af_treble, + &ff_af_tremolo, + &ff_af_vibrato, + &ff_af_volume, + &ff_af_volumedetect, + &ff_asrc_aevalsrc, + &ff_asrc_afirsrc, + &ff_asrc_anoisesrc, + &ff_asrc_anullsrc, + &ff_asrc_hilbert, + &ff_asrc_sinc, + &ff_asrc_sine, + &ff_asink_anullsink, + &ff_vf_addroi, + &ff_vf_alphaextract, + &ff_vf_alphamerge, + &ff_vf_amplify, + &ff_vf_atadenoise, + &ff_vf_avgblur, + &ff_vf_bbox, + &ff_vf_bench, + &ff_vf_bilateral, + &ff_vf_bitplanenoise, + &ff_vf_blackdetect, + &ff_vf_blend, + &ff_vf_bm3d, + &ff_vf_bwdif, + &ff_vf_cas, + &ff_vf_chromahold, + &ff_vf_chromakey, + &ff_vf_chromanr, + &ff_vf_chromashift, + &ff_vf_ciescope, + &ff_vf_codecview, + &ff_vf_colorbalance, + &ff_vf_colorchannelmixer, + &ff_vf_colorkey, + &ff_vf_colorhold, + &ff_vf_colorlevels, + &ff_vf_colorspace, + &ff_vf_convolution, + &ff_vf_convolve, + &ff_vf_copy, + &ff_vf_crop, + &ff_vf_cue, + &ff_vf_curves, + &ff_vf_datascope, + &ff_vf_dblur, + &ff_vf_dctdnoiz, + &ff_vf_deband, + &ff_vf_deblock, + &ff_vf_decimate, + &ff_vf_deconvolve, + &ff_vf_dedot, + &ff_vf_deflate, + &ff_vf_deflicker, + &ff_vf_deinterlace_vaapi, + &ff_vf_dejudder, + &ff_vf_denoise_vaapi, + &ff_vf_derain, + &ff_vf_deshake, + &ff_vf_despill, + &ff_vf_detelecine, + &ff_vf_dilation, + &ff_vf_displace, + &ff_vf_dnn_processing, + &ff_vf_doubleweave, + &ff_vf_drawbox, + &ff_vf_drawgraph, + &ff_vf_drawgrid, + &ff_vf_edgedetect, + &ff_vf_elbg, + &ff_vf_entropy, + &ff_vf_erosion, + &ff_vf_extractplanes, + &ff_vf_fade, + &ff_vf_fftdnoiz, + &ff_vf_fftfilt, + &ff_vf_field, + &ff_vf_fieldhint, + &ff_vf_fieldmatch, + &ff_vf_fieldorder, + &ff_vf_fillborders, + &ff_vf_floodfill, + &ff_vf_format, + &ff_vf_fps, + &ff_vf_framepack, + &ff_vf_framerate, + &ff_vf_framestep, + &ff_vf_freezedetect, + &ff_vf_freezeframes, + &ff_vf_gblur, + &ff_vf_geq, + &ff_vf_gradfun, + &ff_vf_graphmonitor, + &ff_vf_greyedge, + &ff_vf_haldclut, + &ff_vf_hflip, + &ff_vf_histogram, + &ff_vf_hqx, + &ff_vf_hstack, + &ff_vf_hue, + &ff_vf_hwdownload, + &ff_vf_hwmap, + &ff_vf_hwupload, + &ff_vf_hysteresis, + &ff_vf_idet, + &ff_vf_il, + &ff_vf_inflate, + &ff_vf_interleave, + &ff_vf_lagfun, + &ff_vf_lenscorrection, + &ff_vf_limiter, + &ff_vf_loop, + &ff_vf_lumakey, + &ff_vf_lut, + &ff_vf_lut1d, + &ff_vf_lut2, + &ff_vf_lut3d, + &ff_vf_lutrgb, + &ff_vf_lutyuv, + &ff_vf_maskedclamp, + &ff_vf_maskedmax, + &ff_vf_maskedmerge, + &ff_vf_maskedmin, + &ff_vf_maskedthreshold, + &ff_vf_maskfun, + &ff_vf_median, + &ff_vf_mergeplanes, + &ff_vf_mestimate, + &ff_vf_metadata, + &ff_vf_midequalizer, + &ff_vf_minterpolate, + &ff_vf_mix, + &ff_vf_negate, + &ff_vf_nlmeans, + &ff_vf_noformat, + &ff_vf_noise, + &ff_vf_normalize, + &ff_vf_null, + &ff_vf_oscilloscope, + &ff_vf_overlay, + &ff_vf_pad, + &ff_vf_palettegen, + &ff_vf_paletteuse, + &ff_vf_perms, + &ff_vf_photosensitivity, + &ff_vf_pixdesctest, + &ff_vf_pixscope, + &ff_vf_premultiply, + &ff_vf_prewitt, + &ff_vf_procamp_vaapi, + &ff_vf_pseudocolor, + &ff_vf_psnr, + &ff_vf_qp, + &ff_vf_random, + &ff_vf_readeia608, + &ff_vf_readvitc, + &ff_vf_realtime, + &ff_vf_remap, + &ff_vf_removegrain, + &ff_vf_removelogo, + &ff_vf_reverse, + &ff_vf_rgbashift, + &ff_vf_roberts, + &ff_vf_rotate, + &ff_vf_scale, + &ff_vf_scale_vaapi, + &ff_vf_scale2ref, + &ff_vf_scdet, + &ff_vf_scroll, + &ff_vf_select, + &ff_vf_selectivecolor, + &ff_vf_sendcmd, + &ff_vf_separatefields, + &ff_vf_setdar, + &ff_vf_setfield, + &ff_vf_setparams, + &ff_vf_setpts, + &ff_vf_setrange, + &ff_vf_setsar, + &ff_vf_settb, + &ff_vf_sharpness_vaapi, + &ff_vf_showinfo, + &ff_vf_showpalette, + &ff_vf_shuffleframes, + &ff_vf_shuffleplanes, + &ff_vf_sidedata, + &ff_vf_signalstats, + &ff_vf_sobel, + &ff_vf_split, + &ff_vf_sr, + &ff_vf_ssim, + &ff_vf_streamselect, + &ff_vf_swaprect, + &ff_vf_swapuv, + &ff_vf_tblend, + &ff_vf_telecine, + &ff_vf_thistogram, + &ff_vf_threshold, + &ff_vf_thumbnail, + &ff_vf_tile, + &ff_vf_tlut2, + &ff_vf_tmedian, + &ff_vf_tmix, + &ff_vf_tonemap, + &ff_vf_tonemap_vaapi, + &ff_vf_tpad, + &ff_vf_transpose, + &ff_vf_transpose_vaapi, + &ff_vf_trim, + &ff_vf_unpremultiply, + &ff_vf_unsharp, + &ff_vf_untile, + &ff_vf_v360, + &ff_vf_vectorscope, + &ff_vf_vflip, + &ff_vf_vfrdet, + &ff_vf_vibrance, + &ff_vf_vignette, + &ff_vf_vmafmotion, + &ff_vf_vstack, + &ff_vf_w3fdif, + &ff_vf_waveform, + &ff_vf_weave, + &ff_vf_xbr, + &ff_vf_xfade, + &ff_vf_xmedian, + &ff_vf_xstack, + &ff_vf_yadif, + &ff_vf_yaepblur, + &ff_vf_zoompan, + &ff_vsrc_allrgb, + &ff_vsrc_allyuv, + &ff_vsrc_cellauto, + &ff_vsrc_color, + &ff_vsrc_gradients, + &ff_vsrc_haldclutsrc, + &ff_vsrc_life, + &ff_vsrc_mandelbrot, + &ff_vsrc_nullsrc, + &ff_vsrc_pal75bars, + &ff_vsrc_pal100bars, + &ff_vsrc_rgbtestsrc, + &ff_vsrc_sierpinski, + &ff_vsrc_smptebars, + &ff_vsrc_smptehdbars, + &ff_vsrc_testsrc, + &ff_vsrc_testsrc2, + &ff_vsrc_yuvtestsrc, + &ff_vsink_nullsink, + &ff_avf_abitscope, + &ff_avf_adrawgraph, + &ff_avf_agraphmonitor, + &ff_avf_ahistogram, + &ff_avf_aphasemeter, + &ff_avf_avectorscope, + &ff_avf_concat, + &ff_avf_showcqt, + &ff_avf_showfreqs, + &ff_avf_showspatial, + &ff_avf_showspectrum, + &ff_avf_showspectrumpic, + &ff_avf_showvolume, + &ff_avf_showwaves, + &ff_avf_showwavespic, + &ff_vaf_spectrumsynth, + &ff_avsrc_amovie, + &ff_avsrc_movie, + &ff_af_afifo, + &ff_vf_fifo, + &ff_asrc_abuffer, + &ff_vsrc_buffer, + &ff_asink_abuffer, + &ff_vsink_buffer, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavformat/demuxer_list.c b/chromium/third_party/ffmpeg/libavformat/demuxer_list.c new file mode 100644 index 00000000000..7b5211fdc7d --- /dev/null +++ b/chromium/third_party/ffmpeg/libavformat/demuxer_list.c @@ -0,0 +1,309 @@ +static const AVInputFormat * const demuxer_list[] = { + &ff_aa_demuxer, + &ff_aac_demuxer, + &ff_ac3_demuxer, + &ff_acm_demuxer, + &ff_act_demuxer, + &ff_adf_demuxer, + &ff_adp_demuxer, + &ff_ads_demuxer, + &ff_adx_demuxer, + &ff_aea_demuxer, + &ff_afc_demuxer, + &ff_aiff_demuxer, + &ff_aix_demuxer, + &ff_alp_demuxer, + &ff_amr_demuxer, + &ff_amrnb_demuxer, + &ff_amrwb_demuxer, + &ff_anm_demuxer, + &ff_apc_demuxer, + &ff_ape_demuxer, + &ff_apm_demuxer, + &ff_apng_demuxer, + &ff_aptx_demuxer, + &ff_aptx_hd_demuxer, + &ff_aqtitle_demuxer, + &ff_argo_asf_demuxer, + &ff_asf_demuxer, + &ff_asf_o_demuxer, + &ff_ass_demuxer, + &ff_ast_demuxer, + &ff_au_demuxer, + &ff_av1_demuxer, + &ff_avi_demuxer, + &ff_avr_demuxer, + &ff_avs_demuxer, + &ff_avs2_demuxer, + &ff_bethsoftvid_demuxer, + &ff_bfi_demuxer, + &ff_bintext_demuxer, + &ff_bink_demuxer, + &ff_bit_demuxer, + &ff_bmv_demuxer, + &ff_bfstm_demuxer, + &ff_brstm_demuxer, + &ff_boa_demuxer, + &ff_c93_demuxer, + &ff_caf_demuxer, + &ff_cavsvideo_demuxer, + &ff_cdg_demuxer, + &ff_cdxl_demuxer, + &ff_cine_demuxer, + &ff_codec2_demuxer, + &ff_codec2raw_demuxer, + &ff_concat_demuxer, + &ff_data_demuxer, + &ff_daud_demuxer, + &ff_dcstr_demuxer, + &ff_derf_demuxer, + &ff_dfa_demuxer, + &ff_dhav_demuxer, + &ff_dirac_demuxer, + &ff_dnxhd_demuxer, + &ff_dsf_demuxer, + &ff_dsicin_demuxer, + &ff_dss_demuxer, + &ff_dts_demuxer, + &ff_dtshd_demuxer, + &ff_dv_demuxer, + &ff_dvbsub_demuxer, + &ff_dvbtxt_demuxer, + &ff_dxa_demuxer, + &ff_ea_demuxer, + &ff_ea_cdata_demuxer, + &ff_eac3_demuxer, + &ff_epaf_demuxer, + &ff_ffmetadata_demuxer, + &ff_filmstrip_demuxer, + &ff_fits_demuxer, + &ff_flac_demuxer, + &ff_flic_demuxer, + &ff_flv_demuxer, + &ff_live_flv_demuxer, + &ff_fourxm_demuxer, + &ff_frm_demuxer, + &ff_fsb_demuxer, + &ff_fwse_demuxer, + &ff_g722_demuxer, + &ff_g723_1_demuxer, + &ff_g726_demuxer, + &ff_g726le_demuxer, + &ff_g729_demuxer, + &ff_gdv_demuxer, + &ff_genh_demuxer, + &ff_gif_demuxer, + &ff_gsm_demuxer, + &ff_gxf_demuxer, + &ff_h261_demuxer, + &ff_h263_demuxer, + &ff_h264_demuxer, + &ff_hca_demuxer, + &ff_hcom_demuxer, + &ff_hevc_demuxer, + &ff_hls_demuxer, + &ff_hnm_demuxer, + &ff_ico_demuxer, + &ff_idcin_demuxer, + &ff_idf_demuxer, + &ff_iff_demuxer, + &ff_ifv_demuxer, + &ff_ilbc_demuxer, + &ff_image2_demuxer, + &ff_image2pipe_demuxer, + &ff_image2_alias_pix_demuxer, + &ff_image2_brender_pix_demuxer, + &ff_ingenient_demuxer, + &ff_ipmovie_demuxer, + &ff_ircam_demuxer, + &ff_iss_demuxer, + &ff_iv8_demuxer, + &ff_ivf_demuxer, + &ff_ivr_demuxer, + &ff_jacosub_demuxer, + &ff_jv_demuxer, + &ff_kux_demuxer, + &ff_kvag_demuxer, + &ff_lmlm4_demuxer, + &ff_loas_demuxer, + &ff_lrc_demuxer, + &ff_lvf_demuxer, + &ff_lxf_demuxer, + &ff_m4v_demuxer, + &ff_mcc_demuxer, + &ff_matroska_demuxer, + &ff_mgsts_demuxer, + &ff_microdvd_demuxer, + &ff_mjpeg_demuxer, + &ff_mjpeg_2000_demuxer, + &ff_mlp_demuxer, + &ff_mlv_demuxer, + &ff_mm_demuxer, + &ff_mmf_demuxer, + &ff_mov_demuxer, + &ff_mp3_demuxer, + &ff_mpc_demuxer, + &ff_mpc8_demuxer, + &ff_mpegps_demuxer, + &ff_mpegts_demuxer, + &ff_mpegtsraw_demuxer, + &ff_mpegvideo_demuxer, + &ff_mpjpeg_demuxer, + &ff_mpl2_demuxer, + &ff_mpsub_demuxer, + &ff_msf_demuxer, + &ff_msnwc_tcp_demuxer, + &ff_mtaf_demuxer, + &ff_mtv_demuxer, + &ff_musx_demuxer, + &ff_mv_demuxer, + &ff_mvi_demuxer, + &ff_mxf_demuxer, + &ff_mxg_demuxer, + &ff_nc_demuxer, + &ff_nistsphere_demuxer, + &ff_nsp_demuxer, + &ff_nsv_demuxer, + &ff_nut_demuxer, + &ff_nuv_demuxer, + &ff_obu_demuxer, + &ff_ogg_demuxer, + &ff_oma_demuxer, + &ff_paf_demuxer, + &ff_pcm_alaw_demuxer, + &ff_pcm_mulaw_demuxer, + &ff_pcm_vidc_demuxer, + &ff_pcm_f64be_demuxer, + &ff_pcm_f64le_demuxer, + &ff_pcm_f32be_demuxer, + &ff_pcm_f32le_demuxer, + &ff_pcm_s32be_demuxer, + &ff_pcm_s32le_demuxer, + &ff_pcm_s24be_demuxer, + &ff_pcm_s24le_demuxer, + &ff_pcm_s16be_demuxer, + &ff_pcm_s16le_demuxer, + &ff_pcm_s8_demuxer, + &ff_pcm_u32be_demuxer, + &ff_pcm_u32le_demuxer, + &ff_pcm_u24be_demuxer, + &ff_pcm_u24le_demuxer, + &ff_pcm_u16be_demuxer, + &ff_pcm_u16le_demuxer, + &ff_pcm_u8_demuxer, + &ff_pjs_demuxer, + &ff_pmp_demuxer, + &ff_pp_bnk_demuxer, + &ff_pva_demuxer, + &ff_pvf_demuxer, + &ff_qcp_demuxer, + &ff_r3d_demuxer, + &ff_rawvideo_demuxer, + &ff_realtext_demuxer, + &ff_redspark_demuxer, + &ff_rl2_demuxer, + &ff_rm_demuxer, + &ff_roq_demuxer, + &ff_rpl_demuxer, + &ff_rsd_demuxer, + &ff_rso_demuxer, + &ff_rtp_demuxer, + &ff_rtsp_demuxer, + &ff_s337m_demuxer, + &ff_sami_demuxer, + &ff_sap_demuxer, + &ff_sbc_demuxer, + &ff_sbg_demuxer, + &ff_scc_demuxer, + &ff_sdp_demuxer, + &ff_sdr2_demuxer, + &ff_sds_demuxer, + &ff_sdx_demuxer, + &ff_segafilm_demuxer, + &ff_ser_demuxer, + &ff_shorten_demuxer, + &ff_siff_demuxer, + &ff_sln_demuxer, + &ff_smacker_demuxer, + &ff_smjpeg_demuxer, + &ff_smush_demuxer, + &ff_sol_demuxer, + &ff_sox_demuxer, + &ff_spdif_demuxer, + &ff_srt_demuxer, + &ff_str_demuxer, + &ff_stl_demuxer, + &ff_subviewer1_demuxer, + &ff_subviewer_demuxer, + &ff_sup_demuxer, + &ff_svag_demuxer, + &ff_swf_demuxer, + &ff_tak_demuxer, + &ff_tedcaptions_demuxer, + &ff_thp_demuxer, + &ff_threedostr_demuxer, + &ff_tiertexseq_demuxer, + &ff_tmv_demuxer, + &ff_truehd_demuxer, + &ff_tta_demuxer, + &ff_txd_demuxer, + &ff_tty_demuxer, + &ff_ty_demuxer, + &ff_v210_demuxer, + &ff_v210x_demuxer, + &ff_vag_demuxer, + &ff_vc1_demuxer, + &ff_vc1t_demuxer, + &ff_vividas_demuxer, + &ff_vivo_demuxer, + &ff_vmd_demuxer, + &ff_vobsub_demuxer, + &ff_voc_demuxer, + &ff_vpk_demuxer, + &ff_vplayer_demuxer, + &ff_vqf_demuxer, + &ff_w64_demuxer, + &ff_wav_demuxer, + &ff_wc3_demuxer, + &ff_webm_dash_manifest_demuxer, + &ff_webvtt_demuxer, + &ff_wsaud_demuxer, + &ff_wsd_demuxer, + &ff_wsvqa_demuxer, + &ff_wtv_demuxer, + &ff_wve_demuxer, + &ff_wv_demuxer, + &ff_xa_demuxer, + &ff_xbin_demuxer, + &ff_xmv_demuxer, + &ff_xvag_demuxer, + &ff_xwma_demuxer, + &ff_yop_demuxer, + &ff_yuv4mpegpipe_demuxer, + &ff_image_bmp_pipe_demuxer, + &ff_image_dds_pipe_demuxer, + &ff_image_dpx_pipe_demuxer, + &ff_image_exr_pipe_demuxer, + &ff_image_gif_pipe_demuxer, + &ff_image_j2k_pipe_demuxer, + &ff_image_jpeg_pipe_demuxer, + &ff_image_jpegls_pipe_demuxer, + &ff_image_pam_pipe_demuxer, + &ff_image_pbm_pipe_demuxer, + &ff_image_pcx_pipe_demuxer, + &ff_image_pgmyuv_pipe_demuxer, + &ff_image_pgm_pipe_demuxer, + &ff_image_pgx_pipe_demuxer, + &ff_image_pictor_pipe_demuxer, + &ff_image_png_pipe_demuxer, + &ff_image_ppm_pipe_demuxer, + &ff_image_psd_pipe_demuxer, + &ff_image_qdraw_pipe_demuxer, + &ff_image_sgi_pipe_demuxer, + &ff_image_svg_pipe_demuxer, + &ff_image_sunrast_pipe_demuxer, + &ff_image_tiff_pipe_demuxer, + &ff_image_webp_pipe_demuxer, + &ff_image_xpm_pipe_demuxer, + &ff_image_xwd_pipe_demuxer, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavformat/muxer_list.c b/chromium/third_party/ffmpeg/libavformat/muxer_list.c new file mode 100644 index 00000000000..5e55821f5c3 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavformat/muxer_list.c @@ -0,0 +1,168 @@ +static const AVOutputFormat * const muxer_list[] = { + &ff_a64_muxer, + &ff_ac3_muxer, + &ff_adts_muxer, + &ff_adx_muxer, + &ff_aiff_muxer, + &ff_amr_muxer, + &ff_apm_muxer, + &ff_apng_muxer, + &ff_aptx_muxer, + &ff_aptx_hd_muxer, + &ff_argo_asf_muxer, + &ff_asf_muxer, + &ff_ass_muxer, + &ff_ast_muxer, + &ff_asf_stream_muxer, + &ff_au_muxer, + &ff_avi_muxer, + &ff_avm2_muxer, + &ff_avs2_muxer, + &ff_bit_muxer, + &ff_caf_muxer, + &ff_cavsvideo_muxer, + &ff_codec2_muxer, + &ff_codec2raw_muxer, + &ff_crc_muxer, + &ff_dash_muxer, + &ff_data_muxer, + &ff_daud_muxer, + &ff_dirac_muxer, + &ff_dnxhd_muxer, + &ff_dts_muxer, + &ff_dv_muxer, + &ff_eac3_muxer, + &ff_f4v_muxer, + &ff_ffmetadata_muxer, + &ff_fifo_muxer, + &ff_fifo_test_muxer, + &ff_filmstrip_muxer, + &ff_fits_muxer, + &ff_flac_muxer, + &ff_flv_muxer, + &ff_framecrc_muxer, + &ff_framehash_muxer, + &ff_framemd5_muxer, + &ff_g722_muxer, + &ff_g723_1_muxer, + &ff_g726_muxer, + &ff_g726le_muxer, + &ff_gif_muxer, + &ff_gsm_muxer, + &ff_gxf_muxer, + &ff_h261_muxer, + &ff_h263_muxer, + &ff_h264_muxer, + &ff_hash_muxer, + &ff_hds_muxer, + &ff_hevc_muxer, + &ff_hls_muxer, + &ff_ico_muxer, + &ff_ilbc_muxer, + &ff_image2_muxer, + &ff_image2pipe_muxer, + &ff_ipod_muxer, + &ff_ircam_muxer, + &ff_ismv_muxer, + &ff_ivf_muxer, + &ff_jacosub_muxer, + &ff_kvag_muxer, + &ff_latm_muxer, + &ff_lrc_muxer, + &ff_m4v_muxer, + &ff_md5_muxer, + &ff_matroska_muxer, + &ff_matroska_audio_muxer, + &ff_microdvd_muxer, + &ff_mjpeg_muxer, + &ff_mlp_muxer, + &ff_mmf_muxer, + &ff_mov_muxer, + &ff_mp2_muxer, + &ff_mp3_muxer, + &ff_mp4_muxer, + &ff_mpeg1system_muxer, + &ff_mpeg1vcd_muxer, + &ff_mpeg1video_muxer, + &ff_mpeg2dvd_muxer, + &ff_mpeg2svcd_muxer, + &ff_mpeg2video_muxer, + &ff_mpeg2vob_muxer, + &ff_mpegts_muxer, + &ff_mpjpeg_muxer, + &ff_mxf_muxer, + &ff_mxf_d10_muxer, + &ff_mxf_opatom_muxer, + &ff_null_muxer, + &ff_nut_muxer, + &ff_oga_muxer, + &ff_ogg_muxer, + &ff_ogv_muxer, + &ff_oma_muxer, + &ff_opus_muxer, + &ff_pcm_alaw_muxer, + &ff_pcm_mulaw_muxer, + &ff_pcm_vidc_muxer, + &ff_pcm_f64be_muxer, + &ff_pcm_f64le_muxer, + &ff_pcm_f32be_muxer, + &ff_pcm_f32le_muxer, + &ff_pcm_s32be_muxer, + &ff_pcm_s32le_muxer, + &ff_pcm_s24be_muxer, + &ff_pcm_s24le_muxer, + &ff_pcm_s16be_muxer, + &ff_pcm_s16le_muxer, + &ff_pcm_s8_muxer, + &ff_pcm_u32be_muxer, + &ff_pcm_u32le_muxer, + &ff_pcm_u24be_muxer, + &ff_pcm_u24le_muxer, + &ff_pcm_u16be_muxer, + &ff_pcm_u16le_muxer, + &ff_pcm_u8_muxer, + &ff_psp_muxer, + &ff_rawvideo_muxer, + &ff_rm_muxer, + &ff_roq_muxer, + &ff_rso_muxer, + &ff_rtp_muxer, + &ff_rtp_mpegts_muxer, + &ff_rtsp_muxer, + &ff_sap_muxer, + &ff_sbc_muxer, + &ff_scc_muxer, + &ff_segafilm_muxer, + &ff_segment_muxer, + &ff_stream_segment_muxer, + &ff_singlejpeg_muxer, + &ff_smjpeg_muxer, + &ff_smoothstreaming_muxer, + &ff_sox_muxer, + &ff_spx_muxer, + &ff_spdif_muxer, + &ff_srt_muxer, + &ff_streamhash_muxer, + &ff_sup_muxer, + &ff_swf_muxer, + &ff_tee_muxer, + &ff_tg2_muxer, + &ff_tgp_muxer, + &ff_mkvtimestamp_v2_muxer, + &ff_truehd_muxer, + &ff_tta_muxer, + &ff_uncodedframecrc_muxer, + &ff_vc1_muxer, + &ff_vc1t_muxer, + &ff_voc_muxer, + &ff_w64_muxer, + &ff_wav_muxer, + &ff_webm_muxer, + &ff_webm_dash_manifest_muxer, + &ff_webm_chunk_muxer, + &ff_webp_muxer, + &ff_webvtt_muxer, + &ff_wtv_muxer, + &ff_wv_muxer, + &ff_yuv4mpegpipe_muxer, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavformat/protocol_list.c b/chromium/third_party/ffmpeg/libavformat/protocol_list.c new file mode 100644 index 00000000000..0e4690d444c --- /dev/null +++ b/chromium/third_party/ffmpeg/libavformat/protocol_list.c @@ -0,0 +1,30 @@ +static const URLProtocol * const url_protocols[] = { + &ff_async_protocol, + &ff_cache_protocol, + &ff_concat_protocol, + &ff_crypto_protocol, + &ff_data_protocol, + &ff_ffrtmphttp_protocol, + &ff_file_protocol, + &ff_ftp_protocol, + &ff_gopher_protocol, + &ff_hls_protocol, + &ff_http_protocol, + &ff_httpproxy_protocol, + &ff_icecast_protocol, + &ff_mmsh_protocol, + &ff_mmst_protocol, + &ff_md5_protocol, + &ff_pipe_protocol, + &ff_prompeg_protocol, + &ff_rtmp_protocol, + &ff_rtmpt_protocol, + &ff_rtp_protocol, + &ff_srtp_protocol, + &ff_subfile_protocol, + &ff_tee_protocol, + &ff_tcp_protocol, + &ff_udp_protocol, + &ff_udplite_protocol, + &ff_unix_protocol, + NULL }; diff --git a/chromium/third_party/ffmpeg/libavutil/avconfig.h b/chromium/third_party/ffmpeg/libavutil/avconfig.h new file mode 100644 index 00000000000..c289fbb551c --- /dev/null +++ b/chromium/third_party/ffmpeg/libavutil/avconfig.h @@ -0,0 +1,6 @@ +/* Generated by ffmpeg configure */ +#ifndef AVUTIL_AVCONFIG_H +#define AVUTIL_AVCONFIG_H +#define AV_HAVE_BIGENDIAN 0 +#define AV_HAVE_FAST_UNALIGNED 1 +#endif /* AVUTIL_AVCONFIG_H */ diff --git a/chromium/third_party/libaom/BUILD.gn b/chromium/third_party/libaom/BUILD.gn index 0f80365e15b..e057773f013 100644 --- a/chromium/third_party/libaom/BUILD.gn +++ b/chromium/third_party/libaom/BUILD.gn @@ -198,6 +198,18 @@ if (enable_libaom) { } } + if (current_cpu == "ppc64") { + source_set("libaom_intrinsics_vsx") { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + sources = [ + "//third_party/libaom/source/libaom/aom_ports/ppc_cpudetect.c", + ] + sources += aom_av1_common_intrin_vsx + } + } + static_library("libaom") { if (!is_debug && is_win) { configs -= [ "//build/config/compiler:default_optimization" ] @@ -234,6 +246,9 @@ if (enable_libaom) { cpu_arch_full == "arm-neon-cpu-detect") { deps += [ ":libaom_intrinsics_neon" ] } + if (current_cpu == "ppc64") { + deps += [ ":libaom_intrinsics_vsx" ] + } if (is_android) { deps += [ "//third_party/android_ndk:cpu_features" ] } diff --git a/chromium/third_party/libaom/cmake_update.sh b/chromium/third_party/libaom/cmake_update.sh index 7a459ef4c74..3128bd3ced9 100755 --- a/chromium/third_party/libaom/cmake_update.sh +++ b/chromium/third_party/libaom/cmake_update.sh @@ -185,6 +185,9 @@ gen_config_files ios/arm-neon "${toolchain}/armv7-ios.cmake ${all_platforms}" reset_dirs ios/arm64 gen_config_files ios/arm64 "${toolchain}/arm64-ios.cmake ${all_platforms}" +reset_dirs linux/ppc64 +gen_config_files linux/ppc64 "${toolchain}/ppc-linux-gcc.cmake ${all_platforms}" + # Copy linux configurations and modify for Windows. reset_dirs win/arm64 cp "${CFG}/linux/arm64/config"/* "${CFG}/win/arm64/config/" diff --git a/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm new file mode 100644 index 00000000000..ec43beb4d0c --- /dev/null +++ b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm @@ -0,0 +1,78 @@ +; +; Copyright (c) 2019, Alliance for Open Media. All rights reserved +; +; This source code is subject to the terms of the BSD 2 Clause License and +; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License +; was not distributed with this source code in the LICENSE file, you can +; obtain it at www.aomedia.org/license/software. If the Alliance for Open +; Media Patent License 1.0 was not distributed with this source code in the +; PATENTS file, you can obtain it at www.aomedia.org/license/patent. +; +ARCH_ARM equ 0 +ARCH_MIPS equ 0 +ARCH_PPC equ 1 +ARCH_X86 equ 0 +ARCH_X86_64 equ 0 +CONFIG_2PASS_PARTITION_SEARCH_LVL equ 1 +CONFIG_ACCOUNTING equ 0 +CONFIG_ANALYZER equ 0 +CONFIG_AV1_DECODER equ 1 +CONFIG_AV1_ENCODER equ 0 +CONFIG_BIG_ENDIAN equ 0 +CONFIG_BITSTREAM_DEBUG equ 0 +CONFIG_COEFFICIENT_RANGE_CHECKING equ 0 +CONFIG_COLLECT_INTER_MODE_RD_STATS equ 1 +CONFIG_COLLECT_PARTITION_STATS equ 0 +CONFIG_COLLECT_RD_STATS equ 0 +CONFIG_DEBUG equ 0 +CONFIG_DENOISE equ 1 +CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1 +CONFIG_DIST_8X8 equ 0 +CONFIG_ENTROPY_STATS equ 0 +CONFIG_FILEOPTIONS equ 1 +CONFIG_FP_MB_STATS equ 0 +CONFIG_GCC equ 1 +CONFIG_GCOV equ 0 +CONFIG_GPROF equ 0 +CONFIG_INSPECTION equ 0 +CONFIG_INTERNAL_STATS equ 0 +CONFIG_INTER_STATS_ONLY equ 0 +CONFIG_LIBYUV equ 1 +CONFIG_LOWBITDEPTH equ 1 +CONFIG_MAX_DECODE_PROFILE equ 0 +CONFIG_MISMATCH_DEBUG equ 0 +CONFIG_MULTITHREAD equ 1 +CONFIG_NORMAL_TILE_MODE equ 1 +CONFIG_ONE_PASS_SVM equ 0 +CONFIG_OS_SUPPORT equ 1 +CONFIG_PIC equ 0 +CONFIG_RD_DEBUG equ 0 +CONFIG_RUNTIME_CPU_DETECT equ 0 +CONFIG_SHARED equ 0 +CONFIG_SHARP_SETTINGS equ 0 +CONFIG_SIZE_LIMIT equ 1 +CONFIG_SPATIAL_RESAMPLING equ 1 +CONFIG_SPEED_STATS equ 0 +CONFIG_STATIC equ 1 +CONFIG_WEBM_IO equ 1 +DECODE_HEIGHT_LIMIT equ 16384 +DECODE_WIDTH_LIMIT equ 16384 +HAVE_AVX equ 0 +HAVE_AVX2 equ 0 +HAVE_DSPR2 equ 0 +HAVE_FEXCEPT equ 1 +HAVE_MIPS32 equ 0 +HAVE_MIPS64 equ 0 +HAVE_MMX equ 0 +HAVE_MSA equ 0 +HAVE_NEON equ 0 +HAVE_PTHREAD_H equ 1 +HAVE_SSE equ 0 +HAVE_SSE2 equ 0 +HAVE_SSE3 equ 0 +HAVE_SSE4_1 equ 0 +HAVE_SSE4_2 equ 0 +HAVE_SSSE3 equ 0 +HAVE_UNISTD_H equ 1 +HAVE_VSX equ 1 +HAVE_WXWIDGETS equ 0 diff --git a/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.c b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.c new file mode 100644 index 00000000000..6db656662ef --- /dev/null +++ b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.c @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#include "aom/aom_codec.h" +static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/ppc-linux-gcc.cmake\" -DCONFIG_AV1_ENCODER=0 -DCONFIG_LOWBITDEPTH=1 -DCONFIG_MAX_DECODE_PROFILE=0 -DCONFIG_NORMAL_TILE_MODE=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; +const char *aom_codec_build_config(void) {return cfg;} diff --git a/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.h b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.h new file mode 100644 index 00000000000..ba5b7e55be8 --- /dev/null +++ b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_config.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2019, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#ifndef AOM_CONFIG_H_ +#define AOM_CONFIG_H_ +#define ARCH_ARM 0 +#define ARCH_MIPS 0 +#define ARCH_PPC 1 +#define ARCH_X86 0 +#define ARCH_X86_64 0 +#define CONFIG_2PASS_PARTITION_SEARCH_LVL 1 +#define CONFIG_ACCOUNTING 0 +#define CONFIG_ANALYZER 0 +#define CONFIG_AV1_DECODER 1 +#define CONFIG_AV1_ENCODER 0 +#define CONFIG_BIG_ENDIAN 0 +#define CONFIG_BITSTREAM_DEBUG 0 +#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 +#define CONFIG_COLLECT_INTER_MODE_RD_STATS 1 +#define CONFIG_COLLECT_PARTITION_STATS 0 +#define CONFIG_COLLECT_RD_STATS 0 +#define CONFIG_DEBUG 0 +#define CONFIG_DENOISE 1 +#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1 +#define CONFIG_DIST_8X8 0 +#define CONFIG_ENTROPY_STATS 0 +#define CONFIG_FILEOPTIONS 1 +#define CONFIG_FP_MB_STATS 0 +#define CONFIG_GCC 1 +#define CONFIG_GCOV 0 +#define CONFIG_GPROF 0 +#define CONFIG_INSPECTION 0 +#define CONFIG_INTERNAL_STATS 0 +#define CONFIG_INTER_STATS_ONLY 0 +#define CONFIG_LIBYUV 1 +#define CONFIG_LOWBITDEPTH 1 +#define CONFIG_MAX_DECODE_PROFILE 0 +#define CONFIG_MISMATCH_DEBUG 0 +#define CONFIG_MULTITHREAD 1 +#define CONFIG_NORMAL_TILE_MODE 1 +#define CONFIG_ONE_PASS_SVM 0 +#define CONFIG_OS_SUPPORT 1 +#define CONFIG_PIC 0 +#define CONFIG_RD_DEBUG 0 +#define CONFIG_RUNTIME_CPU_DETECT 0 +#define CONFIG_SHARED 0 +#define CONFIG_SHARP_SETTINGS 0 +#define CONFIG_SIZE_LIMIT 1 +#define CONFIG_SPATIAL_RESAMPLING 1 +#define CONFIG_SPEED_STATS 0 +#define CONFIG_STATIC 1 +#define CONFIG_WEBM_IO 1 +#define DECODE_HEIGHT_LIMIT 16384 +#define DECODE_WIDTH_LIMIT 16384 +#define HAVE_AVX 0 +#define HAVE_AVX2 0 +#define HAVE_DSPR2 0 +#define HAVE_FEXCEPT 1 +#define HAVE_MIPS32 0 +#define HAVE_MIPS64 0 +#define HAVE_MMX 0 +#define HAVE_MSA 0 +#define HAVE_NEON 0 +#define HAVE_PTHREAD_H 1 +#define HAVE_SSE 0 +#define HAVE_SSE2 0 +#define HAVE_SSE3 0 +#define HAVE_SSE4_1 0 +#define HAVE_SSE4_2 0 +#define HAVE_SSSE3 0 +#define HAVE_UNISTD_H 1 +#define HAVE_VSX 1 +#define HAVE_WXWIDGETS 0 +#define INLINE inline +#endif // AOM_CONFIG_H_ diff --git a/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h new file mode 100644 index 00000000000..1969860e30c --- /dev/null +++ b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h @@ -0,0 +1,3128 @@ +// This file is generated. Do not edit. +#ifndef AOM_DSP_RTCD_H_ +#define AOM_DSP_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +/* + * DSP + */ + +#include "aom/aom_integer.h" +#include "aom_dsp/aom_dsp_common.h" +#include "av1/common/blockd.h" +#include "av1/common/enums.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void aom_blend_a64_hmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +#define aom_blend_a64_hmask aom_blend_a64_hmask_c + +void aom_blend_a64_mask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subx, + int suby); +#define aom_blend_a64_mask aom_blend_a64_mask_c + +void aom_blend_a64_vmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +#define aom_blend_a64_vmask aom_blend_a64_vmask_c + +void aom_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h); +#define aom_convolve8_horiz aom_convolve8_horiz_c + +void aom_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h); +#define aom_convolve8_vert aom_convolve8_vert_c + +void aom_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h); +#define aom_convolve_copy aom_convolve_copy_c + +void aom_dc_128_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x16 aom_dc_128_predictor_16x16_c + +void aom_dc_128_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x32 aom_dc_128_predictor_16x32_c + +void aom_dc_128_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x4 aom_dc_128_predictor_16x4_c + +void aom_dc_128_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x64 aom_dc_128_predictor_16x64_c + +void aom_dc_128_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x8 aom_dc_128_predictor_16x8_c + +void aom_dc_128_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_2x2 aom_dc_128_predictor_2x2_c + +void aom_dc_128_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x16 aom_dc_128_predictor_32x16_c + +void aom_dc_128_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x32 aom_dc_128_predictor_32x32_c + +void aom_dc_128_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x64 aom_dc_128_predictor_32x64_c + +void aom_dc_128_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x8 aom_dc_128_predictor_32x8_c + +void aom_dc_128_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x16 aom_dc_128_predictor_4x16_c + +void aom_dc_128_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x4 aom_dc_128_predictor_4x4_c + +void aom_dc_128_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x8 aom_dc_128_predictor_4x8_c + +void aom_dc_128_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x16 aom_dc_128_predictor_64x16_c + +void aom_dc_128_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x32 aom_dc_128_predictor_64x32_c + +void aom_dc_128_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x64 aom_dc_128_predictor_64x64_c + +void aom_dc_128_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x16 aom_dc_128_predictor_8x16_c + +void aom_dc_128_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x32 aom_dc_128_predictor_8x32_c + +void aom_dc_128_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x4 aom_dc_128_predictor_8x4_c + +void aom_dc_128_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x8 aom_dc_128_predictor_8x8_c + +void aom_dc_left_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x16 aom_dc_left_predictor_16x16_c + +void aom_dc_left_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x32 aom_dc_left_predictor_16x32_c + +void aom_dc_left_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x4 aom_dc_left_predictor_16x4_c + +void aom_dc_left_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x64 aom_dc_left_predictor_16x64_c + +void aom_dc_left_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x8 aom_dc_left_predictor_16x8_c + +void aom_dc_left_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_2x2 aom_dc_left_predictor_2x2_c + +void aom_dc_left_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x16 aom_dc_left_predictor_32x16_c + +void aom_dc_left_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x32 aom_dc_left_predictor_32x32_c + +void aom_dc_left_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x64 aom_dc_left_predictor_32x64_c + +void aom_dc_left_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x8 aom_dc_left_predictor_32x8_c + +void aom_dc_left_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x16 aom_dc_left_predictor_4x16_c + +void aom_dc_left_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x4 aom_dc_left_predictor_4x4_c + +void aom_dc_left_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x8 aom_dc_left_predictor_4x8_c + +void aom_dc_left_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x16 aom_dc_left_predictor_64x16_c + +void aom_dc_left_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x32 aom_dc_left_predictor_64x32_c + +void aom_dc_left_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x64 aom_dc_left_predictor_64x64_c + +void aom_dc_left_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x16 aom_dc_left_predictor_8x16_c + +void aom_dc_left_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x32 aom_dc_left_predictor_8x32_c + +void aom_dc_left_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x4 aom_dc_left_predictor_8x4_c + +void aom_dc_left_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x8 aom_dc_left_predictor_8x8_c + +void aom_dc_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x16 aom_dc_predictor_16x16_c + +void aom_dc_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x32 aom_dc_predictor_16x32_c + +void aom_dc_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x4 aom_dc_predictor_16x4_c + +void aom_dc_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x64 aom_dc_predictor_16x64_c + +void aom_dc_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x8 aom_dc_predictor_16x8_c + +void aom_dc_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_2x2 aom_dc_predictor_2x2_c + +void aom_dc_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x16 aom_dc_predictor_32x16_c + +void aom_dc_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x32 aom_dc_predictor_32x32_c + +void aom_dc_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x64 aom_dc_predictor_32x64_c + +void aom_dc_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x8 aom_dc_predictor_32x8_c + +void aom_dc_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x16 aom_dc_predictor_4x16_c + +void aom_dc_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x4 aom_dc_predictor_4x4_c + +void aom_dc_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x8 aom_dc_predictor_4x8_c + +void aom_dc_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x16 aom_dc_predictor_64x16_c + +void aom_dc_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x32 aom_dc_predictor_64x32_c + +void aom_dc_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x64 aom_dc_predictor_64x64_c + +void aom_dc_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x16 aom_dc_predictor_8x16_c + +void aom_dc_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x32 aom_dc_predictor_8x32_c + +void aom_dc_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x4 aom_dc_predictor_8x4_c + +void aom_dc_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x8 aom_dc_predictor_8x8_c + +void aom_dc_top_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x16 aom_dc_top_predictor_16x16_c + +void aom_dc_top_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x32 aom_dc_top_predictor_16x32_c + +void aom_dc_top_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x4 aom_dc_top_predictor_16x4_c + +void aom_dc_top_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x64 aom_dc_top_predictor_16x64_c + +void aom_dc_top_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x8 aom_dc_top_predictor_16x8_c + +void aom_dc_top_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_2x2 aom_dc_top_predictor_2x2_c + +void aom_dc_top_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x16 aom_dc_top_predictor_32x16_c + +void aom_dc_top_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x32 aom_dc_top_predictor_32x32_c + +void aom_dc_top_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x64 aom_dc_top_predictor_32x64_c + +void aom_dc_top_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x8 aom_dc_top_predictor_32x8_c + +void aom_dc_top_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x16 aom_dc_top_predictor_4x16_c + +void aom_dc_top_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x4 aom_dc_top_predictor_4x4_c + +void aom_dc_top_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x8 aom_dc_top_predictor_4x8_c + +void aom_dc_top_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x16 aom_dc_top_predictor_64x16_c + +void aom_dc_top_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x32 aom_dc_top_predictor_64x32_c + +void aom_dc_top_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x64 aom_dc_top_predictor_64x64_c + +void aom_dc_top_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x16 aom_dc_top_predictor_8x16_c + +void aom_dc_top_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x32 aom_dc_top_predictor_8x32_c + +void aom_dc_top_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x4 aom_dc_top_predictor_8x4_c + +void aom_dc_top_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x8 aom_dc_top_predictor_8x8_c + +void aom_h_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x16 aom_h_predictor_16x16_c + +void aom_h_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x32 aom_h_predictor_16x32_c + +void aom_h_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x4 aom_h_predictor_16x4_c + +void aom_h_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x64 aom_h_predictor_16x64_c + +void aom_h_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x8 aom_h_predictor_16x8_c + +void aom_h_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_2x2 aom_h_predictor_2x2_c + +void aom_h_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x16 aom_h_predictor_32x16_c + +void aom_h_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x32 aom_h_predictor_32x32_c + +void aom_h_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x64 aom_h_predictor_32x64_c + +void aom_h_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x8 aom_h_predictor_32x8_c + +void aom_h_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x16 aom_h_predictor_4x16_c + +void aom_h_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x4 aom_h_predictor_4x4_c + +void aom_h_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x8 aom_h_predictor_4x8_c + +void aom_h_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x16 aom_h_predictor_64x16_c + +void aom_h_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x32 aom_h_predictor_64x32_c + +void aom_h_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x64 aom_h_predictor_64x64_c + +void aom_h_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x16 aom_h_predictor_8x16_c + +void aom_h_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x32 aom_h_predictor_8x32_c + +void aom_h_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x4 aom_h_predictor_8x4_c + +void aom_h_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x8 aom_h_predictor_8x8_c + +void aom_highbd_blend_a64_d16_mask_c(uint8_t* dst, + uint32_t dst_stride, + const CONV_BUF_TYPE* src0, + uint32_t src0_stride, + const CONV_BUF_TYPE* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subx, + int suby, + ConvolveParams* conv_params, + const int bd); +#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c + +void aom_highbd_blend_a64_hmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h, + int bd); +#define aom_highbd_blend_a64_hmask aom_highbd_blend_a64_hmask_c + +void aom_highbd_blend_a64_mask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subx, + int suby, + int bd); +#define aom_highbd_blend_a64_mask aom_highbd_blend_a64_mask_c + +void aom_highbd_blend_a64_vmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h, + int bd); +#define aom_highbd_blend_a64_vmask aom_highbd_blend_a64_vmask_c + +void aom_highbd_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define aom_highbd_convolve8_horiz aom_highbd_convolve8_horiz_c + +void aom_highbd_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define aom_highbd_convolve8_vert aom_highbd_convolve8_vert_c + +void aom_highbd_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define aom_highbd_convolve_copy aom_highbd_convolve_copy_c + +void aom_highbd_dc_128_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x16 aom_highbd_dc_128_predictor_16x16_c + +void aom_highbd_dc_128_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x32 aom_highbd_dc_128_predictor_16x32_c + +void aom_highbd_dc_128_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x4 aom_highbd_dc_128_predictor_16x4_c + +void aom_highbd_dc_128_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x64 aom_highbd_dc_128_predictor_16x64_c + +void aom_highbd_dc_128_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x8 aom_highbd_dc_128_predictor_16x8_c + +void aom_highbd_dc_128_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_2x2 aom_highbd_dc_128_predictor_2x2_c + +void aom_highbd_dc_128_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x16 aom_highbd_dc_128_predictor_32x16_c + +void aom_highbd_dc_128_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x32 aom_highbd_dc_128_predictor_32x32_c + +void aom_highbd_dc_128_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x64 aom_highbd_dc_128_predictor_32x64_c + +void aom_highbd_dc_128_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x8 aom_highbd_dc_128_predictor_32x8_c + +void aom_highbd_dc_128_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x16 aom_highbd_dc_128_predictor_4x16_c + +void aom_highbd_dc_128_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x4 aom_highbd_dc_128_predictor_4x4_c + +void aom_highbd_dc_128_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x8 aom_highbd_dc_128_predictor_4x8_c + +void aom_highbd_dc_128_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x16 aom_highbd_dc_128_predictor_64x16_c + +void aom_highbd_dc_128_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x32 aom_highbd_dc_128_predictor_64x32_c + +void aom_highbd_dc_128_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x64 aom_highbd_dc_128_predictor_64x64_c + +void aom_highbd_dc_128_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x16 aom_highbd_dc_128_predictor_8x16_c + +void aom_highbd_dc_128_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x32 aom_highbd_dc_128_predictor_8x32_c + +void aom_highbd_dc_128_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x4 aom_highbd_dc_128_predictor_8x4_c + +void aom_highbd_dc_128_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x8 aom_highbd_dc_128_predictor_8x8_c + +void aom_highbd_dc_left_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x16 aom_highbd_dc_left_predictor_16x16_c + +void aom_highbd_dc_left_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x32 aom_highbd_dc_left_predictor_16x32_c + +void aom_highbd_dc_left_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x4 aom_highbd_dc_left_predictor_16x4_c + +void aom_highbd_dc_left_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x64 aom_highbd_dc_left_predictor_16x64_c + +void aom_highbd_dc_left_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x8 aom_highbd_dc_left_predictor_16x8_c + +void aom_highbd_dc_left_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_2x2 aom_highbd_dc_left_predictor_2x2_c + +void aom_highbd_dc_left_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x16 aom_highbd_dc_left_predictor_32x16_c + +void aom_highbd_dc_left_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x32 aom_highbd_dc_left_predictor_32x32_c + +void aom_highbd_dc_left_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x64 aom_highbd_dc_left_predictor_32x64_c + +void aom_highbd_dc_left_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x8 aom_highbd_dc_left_predictor_32x8_c + +void aom_highbd_dc_left_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x16 aom_highbd_dc_left_predictor_4x16_c + +void aom_highbd_dc_left_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x4 aom_highbd_dc_left_predictor_4x4_c + +void aom_highbd_dc_left_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x8 aom_highbd_dc_left_predictor_4x8_c + +void aom_highbd_dc_left_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x16 aom_highbd_dc_left_predictor_64x16_c + +void aom_highbd_dc_left_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x32 aom_highbd_dc_left_predictor_64x32_c + +void aom_highbd_dc_left_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x64 aom_highbd_dc_left_predictor_64x64_c + +void aom_highbd_dc_left_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x16 aom_highbd_dc_left_predictor_8x16_c + +void aom_highbd_dc_left_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x32 aom_highbd_dc_left_predictor_8x32_c + +void aom_highbd_dc_left_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x4 aom_highbd_dc_left_predictor_8x4_c + +void aom_highbd_dc_left_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x8 aom_highbd_dc_left_predictor_8x8_c + +void aom_highbd_dc_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x16 aom_highbd_dc_predictor_16x16_c + +void aom_highbd_dc_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x32 aom_highbd_dc_predictor_16x32_c + +void aom_highbd_dc_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x4 aom_highbd_dc_predictor_16x4_c + +void aom_highbd_dc_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x64 aom_highbd_dc_predictor_16x64_c + +void aom_highbd_dc_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x8 aom_highbd_dc_predictor_16x8_c + +void aom_highbd_dc_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_2x2 aom_highbd_dc_predictor_2x2_c + +void aom_highbd_dc_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x16 aom_highbd_dc_predictor_32x16_c + +void aom_highbd_dc_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x32 aom_highbd_dc_predictor_32x32_c + +void aom_highbd_dc_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x64 aom_highbd_dc_predictor_32x64_c + +void aom_highbd_dc_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x8 aom_highbd_dc_predictor_32x8_c + +void aom_highbd_dc_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x16 aom_highbd_dc_predictor_4x16_c + +void aom_highbd_dc_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x4 aom_highbd_dc_predictor_4x4_c + +void aom_highbd_dc_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x8 aom_highbd_dc_predictor_4x8_c + +void aom_highbd_dc_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x16 aom_highbd_dc_predictor_64x16_c + +void aom_highbd_dc_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x32 aom_highbd_dc_predictor_64x32_c + +void aom_highbd_dc_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x64 aom_highbd_dc_predictor_64x64_c + +void aom_highbd_dc_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x16 aom_highbd_dc_predictor_8x16_c + +void aom_highbd_dc_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x32 aom_highbd_dc_predictor_8x32_c + +void aom_highbd_dc_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x4 aom_highbd_dc_predictor_8x4_c + +void aom_highbd_dc_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x8 aom_highbd_dc_predictor_8x8_c + +void aom_highbd_dc_top_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x16 aom_highbd_dc_top_predictor_16x16_c + +void aom_highbd_dc_top_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x32 aom_highbd_dc_top_predictor_16x32_c + +void aom_highbd_dc_top_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x4 aom_highbd_dc_top_predictor_16x4_c + +void aom_highbd_dc_top_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x64 aom_highbd_dc_top_predictor_16x64_c + +void aom_highbd_dc_top_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x8 aom_highbd_dc_top_predictor_16x8_c + +void aom_highbd_dc_top_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_2x2 aom_highbd_dc_top_predictor_2x2_c + +void aom_highbd_dc_top_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x16 aom_highbd_dc_top_predictor_32x16_c + +void aom_highbd_dc_top_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x32 aom_highbd_dc_top_predictor_32x32_c + +void aom_highbd_dc_top_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x64 aom_highbd_dc_top_predictor_32x64_c + +void aom_highbd_dc_top_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x8 aom_highbd_dc_top_predictor_32x8_c + +void aom_highbd_dc_top_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x16 aom_highbd_dc_top_predictor_4x16_c + +void aom_highbd_dc_top_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x4 aom_highbd_dc_top_predictor_4x4_c + +void aom_highbd_dc_top_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x8 aom_highbd_dc_top_predictor_4x8_c + +void aom_highbd_dc_top_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x16 aom_highbd_dc_top_predictor_64x16_c + +void aom_highbd_dc_top_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x32 aom_highbd_dc_top_predictor_64x32_c + +void aom_highbd_dc_top_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x64 aom_highbd_dc_top_predictor_64x64_c + +void aom_highbd_dc_top_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x16 aom_highbd_dc_top_predictor_8x16_c + +void aom_highbd_dc_top_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x32 aom_highbd_dc_top_predictor_8x32_c + +void aom_highbd_dc_top_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x4 aom_highbd_dc_top_predictor_8x4_c + +void aom_highbd_dc_top_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x8 aom_highbd_dc_top_predictor_8x8_c + +void aom_highbd_h_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x16 aom_highbd_h_predictor_16x16_c + +void aom_highbd_h_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x32 aom_highbd_h_predictor_16x32_c + +void aom_highbd_h_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x4 aom_highbd_h_predictor_16x4_c + +void aom_highbd_h_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x64 aom_highbd_h_predictor_16x64_c + +void aom_highbd_h_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x8 aom_highbd_h_predictor_16x8_c + +void aom_highbd_h_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_2x2 aom_highbd_h_predictor_2x2_c + +void aom_highbd_h_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x16 aom_highbd_h_predictor_32x16_c + +void aom_highbd_h_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x32 aom_highbd_h_predictor_32x32_c + +void aom_highbd_h_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x64 aom_highbd_h_predictor_32x64_c + +void aom_highbd_h_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x8 aom_highbd_h_predictor_32x8_c + +void aom_highbd_h_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x16 aom_highbd_h_predictor_4x16_c + +void aom_highbd_h_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x4 aom_highbd_h_predictor_4x4_c + +void aom_highbd_h_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x8 aom_highbd_h_predictor_4x8_c + +void aom_highbd_h_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x16 aom_highbd_h_predictor_64x16_c + +void aom_highbd_h_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x32 aom_highbd_h_predictor_64x32_c + +void aom_highbd_h_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x64 aom_highbd_h_predictor_64x64_c + +void aom_highbd_h_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x16 aom_highbd_h_predictor_8x16_c + +void aom_highbd_h_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x32 aom_highbd_h_predictor_8x32_c + +void aom_highbd_h_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x4 aom_highbd_h_predictor_8x4_c + +void aom_highbd_h_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x8 aom_highbd_h_predictor_8x8_c + +void aom_highbd_lpf_horizontal_14_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_14 aom_highbd_lpf_horizontal_14_c + +void aom_highbd_lpf_horizontal_14_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limt1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_14_dual aom_highbd_lpf_horizontal_14_dual_c + +void aom_highbd_lpf_horizontal_4_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_4 aom_highbd_lpf_horizontal_4_c + +void aom_highbd_lpf_horizontal_4_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_4_dual aom_highbd_lpf_horizontal_4_dual_c + +void aom_highbd_lpf_horizontal_6_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_6 aom_highbd_lpf_horizontal_6_c + +void aom_highbd_lpf_horizontal_6_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_6_dual aom_highbd_lpf_horizontal_6_dual_c + +void aom_highbd_lpf_horizontal_8_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_8 aom_highbd_lpf_horizontal_8_c + +void aom_highbd_lpf_horizontal_8_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_8_dual aom_highbd_lpf_horizontal_8_dual_c + +void aom_highbd_lpf_vertical_14_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_14 aom_highbd_lpf_vertical_14_c + +void aom_highbd_lpf_vertical_14_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_14_dual aom_highbd_lpf_vertical_14_dual_c + +void aom_highbd_lpf_vertical_4_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_4 aom_highbd_lpf_vertical_4_c + +void aom_highbd_lpf_vertical_4_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_4_dual aom_highbd_lpf_vertical_4_dual_c + +void aom_highbd_lpf_vertical_6_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_6 aom_highbd_lpf_vertical_6_c + +void aom_highbd_lpf_vertical_6_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_6_dual aom_highbd_lpf_vertical_6_dual_c + +void aom_highbd_lpf_vertical_8_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_8 aom_highbd_lpf_vertical_8_c + +void aom_highbd_lpf_vertical_8_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_8_dual aom_highbd_lpf_vertical_8_dual_c + +void aom_highbd_paeth_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x16 aom_highbd_paeth_predictor_16x16_c + +void aom_highbd_paeth_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x32 aom_highbd_paeth_predictor_16x32_c + +void aom_highbd_paeth_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x4 aom_highbd_paeth_predictor_16x4_c + +void aom_highbd_paeth_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x64 aom_highbd_paeth_predictor_16x64_c + +void aom_highbd_paeth_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x8 aom_highbd_paeth_predictor_16x8_c + +void aom_highbd_paeth_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_2x2 aom_highbd_paeth_predictor_2x2_c + +void aom_highbd_paeth_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x16 aom_highbd_paeth_predictor_32x16_c + +void aom_highbd_paeth_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x32 aom_highbd_paeth_predictor_32x32_c + +void aom_highbd_paeth_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x64 aom_highbd_paeth_predictor_32x64_c + +void aom_highbd_paeth_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x8 aom_highbd_paeth_predictor_32x8_c + +void aom_highbd_paeth_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x16 aom_highbd_paeth_predictor_4x16_c + +void aom_highbd_paeth_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x4 aom_highbd_paeth_predictor_4x4_c + +void aom_highbd_paeth_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x8 aom_highbd_paeth_predictor_4x8_c + +void aom_highbd_paeth_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x16 aom_highbd_paeth_predictor_64x16_c + +void aom_highbd_paeth_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x32 aom_highbd_paeth_predictor_64x32_c + +void aom_highbd_paeth_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x64 aom_highbd_paeth_predictor_64x64_c + +void aom_highbd_paeth_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x16 aom_highbd_paeth_predictor_8x16_c + +void aom_highbd_paeth_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x32 aom_highbd_paeth_predictor_8x32_c + +void aom_highbd_paeth_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x4 aom_highbd_paeth_predictor_8x4_c + +void aom_highbd_paeth_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x8 aom_highbd_paeth_predictor_8x8_c + +void aom_highbd_smooth_h_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x16 \ + aom_highbd_smooth_h_predictor_16x16_c + +void aom_highbd_smooth_h_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x32 \ + aom_highbd_smooth_h_predictor_16x32_c + +void aom_highbd_smooth_h_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x4 aom_highbd_smooth_h_predictor_16x4_c + +void aom_highbd_smooth_h_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x64 \ + aom_highbd_smooth_h_predictor_16x64_c + +void aom_highbd_smooth_h_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x8 aom_highbd_smooth_h_predictor_16x8_c + +void aom_highbd_smooth_h_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_2x2 aom_highbd_smooth_h_predictor_2x2_c + +void aom_highbd_smooth_h_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x16 \ + aom_highbd_smooth_h_predictor_32x16_c + +void aom_highbd_smooth_h_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x32 \ + aom_highbd_smooth_h_predictor_32x32_c + +void aom_highbd_smooth_h_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x64 \ + aom_highbd_smooth_h_predictor_32x64_c + +void aom_highbd_smooth_h_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x8 aom_highbd_smooth_h_predictor_32x8_c + +void aom_highbd_smooth_h_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x16 aom_highbd_smooth_h_predictor_4x16_c + +void aom_highbd_smooth_h_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x4 aom_highbd_smooth_h_predictor_4x4_c + +void aom_highbd_smooth_h_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x8 aom_highbd_smooth_h_predictor_4x8_c + +void aom_highbd_smooth_h_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x16 \ + aom_highbd_smooth_h_predictor_64x16_c + +void aom_highbd_smooth_h_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x32 \ + aom_highbd_smooth_h_predictor_64x32_c + +void aom_highbd_smooth_h_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x64 \ + aom_highbd_smooth_h_predictor_64x64_c + +void aom_highbd_smooth_h_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x16 aom_highbd_smooth_h_predictor_8x16_c + +void aom_highbd_smooth_h_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x32 aom_highbd_smooth_h_predictor_8x32_c + +void aom_highbd_smooth_h_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x4 aom_highbd_smooth_h_predictor_8x4_c + +void aom_highbd_smooth_h_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x8 aom_highbd_smooth_h_predictor_8x8_c + +void aom_highbd_smooth_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x16 aom_highbd_smooth_predictor_16x16_c + +void aom_highbd_smooth_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x32 aom_highbd_smooth_predictor_16x32_c + +void aom_highbd_smooth_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x4 aom_highbd_smooth_predictor_16x4_c + +void aom_highbd_smooth_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x64 aom_highbd_smooth_predictor_16x64_c + +void aom_highbd_smooth_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x8 aom_highbd_smooth_predictor_16x8_c + +void aom_highbd_smooth_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_2x2 aom_highbd_smooth_predictor_2x2_c + +void aom_highbd_smooth_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x16 aom_highbd_smooth_predictor_32x16_c + +void aom_highbd_smooth_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x32 aom_highbd_smooth_predictor_32x32_c + +void aom_highbd_smooth_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x64 aom_highbd_smooth_predictor_32x64_c + +void aom_highbd_smooth_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x8 aom_highbd_smooth_predictor_32x8_c + +void aom_highbd_smooth_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x16 aom_highbd_smooth_predictor_4x16_c + +void aom_highbd_smooth_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x4 aom_highbd_smooth_predictor_4x4_c + +void aom_highbd_smooth_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x8 aom_highbd_smooth_predictor_4x8_c + +void aom_highbd_smooth_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x16 aom_highbd_smooth_predictor_64x16_c + +void aom_highbd_smooth_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x32 aom_highbd_smooth_predictor_64x32_c + +void aom_highbd_smooth_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x64 aom_highbd_smooth_predictor_64x64_c + +void aom_highbd_smooth_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x16 aom_highbd_smooth_predictor_8x16_c + +void aom_highbd_smooth_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x32 aom_highbd_smooth_predictor_8x32_c + +void aom_highbd_smooth_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x4 aom_highbd_smooth_predictor_8x4_c + +void aom_highbd_smooth_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x8 aom_highbd_smooth_predictor_8x8_c + +void aom_highbd_smooth_v_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x16 \ + aom_highbd_smooth_v_predictor_16x16_c + +void aom_highbd_smooth_v_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x32 \ + aom_highbd_smooth_v_predictor_16x32_c + +void aom_highbd_smooth_v_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x4 aom_highbd_smooth_v_predictor_16x4_c + +void aom_highbd_smooth_v_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x64 \ + aom_highbd_smooth_v_predictor_16x64_c + +void aom_highbd_smooth_v_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x8 aom_highbd_smooth_v_predictor_16x8_c + +void aom_highbd_smooth_v_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_2x2 aom_highbd_smooth_v_predictor_2x2_c + +void aom_highbd_smooth_v_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x16 \ + aom_highbd_smooth_v_predictor_32x16_c + +void aom_highbd_smooth_v_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x32 \ + aom_highbd_smooth_v_predictor_32x32_c + +void aom_highbd_smooth_v_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x64 \ + aom_highbd_smooth_v_predictor_32x64_c + +void aom_highbd_smooth_v_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x8 aom_highbd_smooth_v_predictor_32x8_c + +void aom_highbd_smooth_v_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x16 aom_highbd_smooth_v_predictor_4x16_c + +void aom_highbd_smooth_v_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x4 aom_highbd_smooth_v_predictor_4x4_c + +void aom_highbd_smooth_v_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x8 aom_highbd_smooth_v_predictor_4x8_c + +void aom_highbd_smooth_v_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x16 \ + aom_highbd_smooth_v_predictor_64x16_c + +void aom_highbd_smooth_v_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x32 \ + aom_highbd_smooth_v_predictor_64x32_c + +void aom_highbd_smooth_v_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x64 \ + aom_highbd_smooth_v_predictor_64x64_c + +void aom_highbd_smooth_v_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x16 aom_highbd_smooth_v_predictor_8x16_c + +void aom_highbd_smooth_v_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x32 aom_highbd_smooth_v_predictor_8x32_c + +void aom_highbd_smooth_v_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x4 aom_highbd_smooth_v_predictor_8x4_c + +void aom_highbd_smooth_v_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x8 aom_highbd_smooth_v_predictor_8x8_c + +void aom_highbd_v_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x16 aom_highbd_v_predictor_16x16_c + +void aom_highbd_v_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x32 aom_highbd_v_predictor_16x32_c + +void aom_highbd_v_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x4 aom_highbd_v_predictor_16x4_c + +void aom_highbd_v_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x64 aom_highbd_v_predictor_16x64_c + +void aom_highbd_v_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x8 aom_highbd_v_predictor_16x8_c + +void aom_highbd_v_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_2x2 aom_highbd_v_predictor_2x2_c + +void aom_highbd_v_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x16 aom_highbd_v_predictor_32x16_c + +void aom_highbd_v_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x32 aom_highbd_v_predictor_32x32_c + +void aom_highbd_v_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x64 aom_highbd_v_predictor_32x64_c + +void aom_highbd_v_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x8 aom_highbd_v_predictor_32x8_c + +void aom_highbd_v_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x16 aom_highbd_v_predictor_4x16_c + +void aom_highbd_v_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x4 aom_highbd_v_predictor_4x4_c + +void aom_highbd_v_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x8 aom_highbd_v_predictor_4x8_c + +void aom_highbd_v_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x16 aom_highbd_v_predictor_64x16_c + +void aom_highbd_v_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x32 aom_highbd_v_predictor_64x32_c + +void aom_highbd_v_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x64 aom_highbd_v_predictor_64x64_c + +void aom_highbd_v_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x16 aom_highbd_v_predictor_8x16_c + +void aom_highbd_v_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x32 aom_highbd_v_predictor_8x32_c + +void aom_highbd_v_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x4 aom_highbd_v_predictor_8x4_c + +void aom_highbd_v_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x8 aom_highbd_v_predictor_8x8_c + +void aom_lowbd_blend_a64_d16_mask_c(uint8_t* dst, + uint32_t dst_stride, + const CONV_BUF_TYPE* src0, + uint32_t src0_stride, + const CONV_BUF_TYPE* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subx, + int suby, + ConvolveParams* conv_params); +#define aom_lowbd_blend_a64_d16_mask aom_lowbd_blend_a64_d16_mask_c + +void aom_lpf_horizontal_14_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_14 aom_lpf_horizontal_14_c + +void aom_lpf_horizontal_14_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_14_dual aom_lpf_horizontal_14_dual_c + +void aom_lpf_horizontal_4_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_4 aom_lpf_horizontal_4_c + +void aom_lpf_horizontal_4_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_4_dual aom_lpf_horizontal_4_dual_c + +void aom_lpf_horizontal_6_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_6 aom_lpf_horizontal_6_c + +void aom_lpf_horizontal_6_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_6_dual aom_lpf_horizontal_6_dual_c + +void aom_lpf_horizontal_8_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_8 aom_lpf_horizontal_8_c + +void aom_lpf_horizontal_8_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_8_dual aom_lpf_horizontal_8_dual_c + +void aom_lpf_vertical_14_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_14 aom_lpf_vertical_14_c + +void aom_lpf_vertical_14_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_14_dual aom_lpf_vertical_14_dual_c + +void aom_lpf_vertical_4_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_4 aom_lpf_vertical_4_c + +void aom_lpf_vertical_4_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_4_dual aom_lpf_vertical_4_dual_c + +void aom_lpf_vertical_6_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_6 aom_lpf_vertical_6_c + +void aom_lpf_vertical_6_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_6_dual aom_lpf_vertical_6_dual_c + +void aom_lpf_vertical_8_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_8 aom_lpf_vertical_8_c + +void aom_lpf_vertical_8_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_8_dual aom_lpf_vertical_8_dual_c + +void aom_paeth_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x16 aom_paeth_predictor_16x16_c + +void aom_paeth_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x32 aom_paeth_predictor_16x32_c + +void aom_paeth_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x4 aom_paeth_predictor_16x4_c + +void aom_paeth_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x64 aom_paeth_predictor_16x64_c + +void aom_paeth_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x8 aom_paeth_predictor_16x8_c + +void aom_paeth_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_2x2 aom_paeth_predictor_2x2_c + +void aom_paeth_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x16 aom_paeth_predictor_32x16_c + +void aom_paeth_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x32 aom_paeth_predictor_32x32_c + +void aom_paeth_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x64 aom_paeth_predictor_32x64_c + +void aom_paeth_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x8 aom_paeth_predictor_32x8_c + +void aom_paeth_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x16 aom_paeth_predictor_4x16_c + +void aom_paeth_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x4 aom_paeth_predictor_4x4_c + +void aom_paeth_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x8 aom_paeth_predictor_4x8_c + +void aom_paeth_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x16 aom_paeth_predictor_64x16_c + +void aom_paeth_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x32 aom_paeth_predictor_64x32_c + +void aom_paeth_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x64 aom_paeth_predictor_64x64_c + +void aom_paeth_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x16 aom_paeth_predictor_8x16_c + +void aom_paeth_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x32 aom_paeth_predictor_8x32_c + +void aom_paeth_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x4 aom_paeth_predictor_8x4_c + +void aom_paeth_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x8 aom_paeth_predictor_8x8_c + +void aom_smooth_h_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x16 aom_smooth_h_predictor_16x16_c + +void aom_smooth_h_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x32 aom_smooth_h_predictor_16x32_c + +void aom_smooth_h_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x4 aom_smooth_h_predictor_16x4_c + +void aom_smooth_h_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x64 aom_smooth_h_predictor_16x64_c + +void aom_smooth_h_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x8 aom_smooth_h_predictor_16x8_c + +void aom_smooth_h_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_2x2 aom_smooth_h_predictor_2x2_c + +void aom_smooth_h_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x16 aom_smooth_h_predictor_32x16_c + +void aom_smooth_h_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x32 aom_smooth_h_predictor_32x32_c + +void aom_smooth_h_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x64 aom_smooth_h_predictor_32x64_c + +void aom_smooth_h_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x8 aom_smooth_h_predictor_32x8_c + +void aom_smooth_h_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x16 aom_smooth_h_predictor_4x16_c + +void aom_smooth_h_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x4 aom_smooth_h_predictor_4x4_c + +void aom_smooth_h_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x8 aom_smooth_h_predictor_4x8_c + +void aom_smooth_h_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x16 aom_smooth_h_predictor_64x16_c + +void aom_smooth_h_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x32 aom_smooth_h_predictor_64x32_c + +void aom_smooth_h_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x64 aom_smooth_h_predictor_64x64_c + +void aom_smooth_h_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x16 aom_smooth_h_predictor_8x16_c + +void aom_smooth_h_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x32 aom_smooth_h_predictor_8x32_c + +void aom_smooth_h_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x4 aom_smooth_h_predictor_8x4_c + +void aom_smooth_h_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x8 aom_smooth_h_predictor_8x8_c + +void aom_smooth_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x16 aom_smooth_predictor_16x16_c + +void aom_smooth_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x32 aom_smooth_predictor_16x32_c + +void aom_smooth_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x4 aom_smooth_predictor_16x4_c + +void aom_smooth_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x64 aom_smooth_predictor_16x64_c + +void aom_smooth_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x8 aom_smooth_predictor_16x8_c + +void aom_smooth_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_2x2 aom_smooth_predictor_2x2_c + +void aom_smooth_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x16 aom_smooth_predictor_32x16_c + +void aom_smooth_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x32 aom_smooth_predictor_32x32_c + +void aom_smooth_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x64 aom_smooth_predictor_32x64_c + +void aom_smooth_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x8 aom_smooth_predictor_32x8_c + +void aom_smooth_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x16 aom_smooth_predictor_4x16_c + +void aom_smooth_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x4 aom_smooth_predictor_4x4_c + +void aom_smooth_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x8 aom_smooth_predictor_4x8_c + +void aom_smooth_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x16 aom_smooth_predictor_64x16_c + +void aom_smooth_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x32 aom_smooth_predictor_64x32_c + +void aom_smooth_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x64 aom_smooth_predictor_64x64_c + +void aom_smooth_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x16 aom_smooth_predictor_8x16_c + +void aom_smooth_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x32 aom_smooth_predictor_8x32_c + +void aom_smooth_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x4 aom_smooth_predictor_8x4_c + +void aom_smooth_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x8 aom_smooth_predictor_8x8_c + +void aom_smooth_v_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x16 aom_smooth_v_predictor_16x16_c + +void aom_smooth_v_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x32 aom_smooth_v_predictor_16x32_c + +void aom_smooth_v_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x4 aom_smooth_v_predictor_16x4_c + +void aom_smooth_v_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x64 aom_smooth_v_predictor_16x64_c + +void aom_smooth_v_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x8 aom_smooth_v_predictor_16x8_c + +void aom_smooth_v_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_2x2 aom_smooth_v_predictor_2x2_c + +void aom_smooth_v_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x16 aom_smooth_v_predictor_32x16_c + +void aom_smooth_v_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x32 aom_smooth_v_predictor_32x32_c + +void aom_smooth_v_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x64 aom_smooth_v_predictor_32x64_c + +void aom_smooth_v_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x8 aom_smooth_v_predictor_32x8_c + +void aom_smooth_v_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x16 aom_smooth_v_predictor_4x16_c + +void aom_smooth_v_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x4 aom_smooth_v_predictor_4x4_c + +void aom_smooth_v_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x8 aom_smooth_v_predictor_4x8_c + +void aom_smooth_v_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x16 aom_smooth_v_predictor_64x16_c + +void aom_smooth_v_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x32 aom_smooth_v_predictor_64x32_c + +void aom_smooth_v_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x64 aom_smooth_v_predictor_64x64_c + +void aom_smooth_v_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x16 aom_smooth_v_predictor_8x16_c + +void aom_smooth_v_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x32 aom_smooth_v_predictor_8x32_c + +void aom_smooth_v_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x4 aom_smooth_v_predictor_8x4_c + +void aom_smooth_v_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x8 aom_smooth_v_predictor_8x8_c + +void aom_v_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x16 aom_v_predictor_16x16_c + +void aom_v_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x32 aom_v_predictor_16x32_c + +void aom_v_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x4 aom_v_predictor_16x4_c + +void aom_v_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x64 aom_v_predictor_16x64_c + +void aom_v_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x8 aom_v_predictor_16x8_c + +void aom_v_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_2x2 aom_v_predictor_2x2_c + +void aom_v_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x16 aom_v_predictor_32x16_c + +void aom_v_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x32 aom_v_predictor_32x32_c + +void aom_v_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x64 aom_v_predictor_32x64_c + +void aom_v_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x8 aom_v_predictor_32x8_c + +void aom_v_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x16 aom_v_predictor_4x16_c + +void aom_v_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x4 aom_v_predictor_4x4_c + +void aom_v_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x8 aom_v_predictor_4x8_c + +void aom_v_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x16 aom_v_predictor_64x16_c + +void aom_v_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x32 aom_v_predictor_64x32_c + +void aom_v_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x64 aom_v_predictor_64x64_c + +void aom_v_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x16 aom_v_predictor_8x16_c + +void aom_v_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x32 aom_v_predictor_8x32_c + +void aom_v_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x4 aom_v_predictor_8x4_c + +void aom_v_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x8 aom_v_predictor_8x8_c + +void aom_dsp_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/ppc.h" +static void setup_rtcd_internal(void) { + int flags = ppc_simd_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h new file mode 100644 index 00000000000..084b2e062f4 --- /dev/null +++ b/chromium/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h @@ -0,0 +1,166 @@ +// This file is generated. Do not edit. +#ifndef AOM_SCALE_RTCD_H_ +#define AOM_SCALE_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +struct yv12_buffer_config; + +#ifdef __cplusplus +extern "C" { +#endif + +void aom_extend_frame_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_extend_frame_borders aom_extend_frame_borders_c + +void aom_extend_frame_borders_y_c(struct yv12_buffer_config* ybf); +#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c + +void aom_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c + +void aom_horizontal_line_2_1_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c + +void aom_horizontal_line_5_3_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c + +void aom_horizontal_line_5_4_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c + +void aom_vertical_band_2_1_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c + +void aom_vertical_band_2_1_scale_i_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c + +void aom_vertical_band_5_3_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c + +void aom_vertical_band_5_4_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c + +void aom_yv12_copy_frame_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + const int num_planes); +#define aom_yv12_copy_frame aom_yv12_copy_frame_c + +void aom_yv12_copy_u_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc); +#define aom_yv12_copy_u aom_yv12_copy_u_c + +void aom_yv12_copy_v_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc); +#define aom_yv12_copy_v aom_yv12_copy_v_c + +void aom_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc, + struct yv12_buffer_config* dst_ybc); +#define aom_yv12_copy_y aom_yv12_copy_y_c + +void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c + +void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c + +void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c + +void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config* src_ybc, + struct yv12_buffer_config* dst_ybc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c + +void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config* src_bc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_bc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c + +void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config* src_bc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_bc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c + +void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config* src_ybc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_ybc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c + +void aom_scale_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/ppc.h" +static void setup_rtcd_internal(void) { + int flags = ppc_simd_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/chromium/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h b/chromium/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h new file mode 100644 index 00000000000..350fb916c1f --- /dev/null +++ b/chromium/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h @@ -0,0 +1,896 @@ +// This file is generated. Do not edit. +#ifndef AV1_RTCD_H_ +#define AV1_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +/* + * AV1 + */ + +#include "aom/aom_integer.h" +#include "aom_dsp/txfm_common.h" +#include "av1/common/av1_txfm.h" +#include "av1/common/common.h" +#include "av1/common/convolve.h" +#include "av1/common/enums.h" +#include "av1/common/filter.h" +#include "av1/common/odintrin.h" +#include "av1/common/quant_common.h" +#include "av1/common/restoration.h" + +struct macroblockd; + +/* Encoder forward decls */ +struct macroblock; +struct txfm_param; +struct aom_variance_vtable; +struct search_site_config; +struct yv12_buffer_config; +struct NN_CONFIG; +typedef struct NN_CONFIG NN_CONFIG; + +/* Function pointers return by CfL functions */ +typedef void (*cfl_subsample_lbd_fn)(const uint8_t* input, + int input_stride, + uint16_t* output_q3); + +typedef void (*cfl_subsample_hbd_fn)(const uint16_t* input, + int input_stride, + uint16_t* output_q3); + +typedef void (*cfl_subtract_average_fn)(const uint16_t* src, int16_t* dst); + +typedef void (*cfl_predict_lbd_fn)(const int16_t* src, + uint8_t* dst, + int dst_stride, + int alpha_q3); + +typedef void (*cfl_predict_hbd_fn)(const int16_t* src, + uint16_t* dst, + int dst_stride, + int alpha_q3, + int bd); + +#ifdef __cplusplus +extern "C" { +#endif + +void apply_selfguided_restoration_c(const uint8_t* dat, + int width, + int height, + int stride, + int eps, + const int* xqd, + uint8_t* dst, + int dst_stride, + int32_t* tmpbuf, + int bit_depth, + int highbd); +#define apply_selfguided_restoration apply_selfguided_restoration_c + +void av1_build_compound_diffwtd_mask_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const uint8_t* src0, + int src0_stride, + const uint8_t* src1, + int src1_stride, + int h, + int w); +#define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c + +void av1_build_compound_diffwtd_mask_d16_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const CONV_BUF_TYPE* src0, + int src0_stride, + const CONV_BUF_TYPE* src1, + int src1_stride, + int h, + int w, + ConvolveParams* conv_params, + int bd); +#define av1_build_compound_diffwtd_mask_d16 \ + av1_build_compound_diffwtd_mask_d16_c + +void av1_build_compound_diffwtd_mask_highbd_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const uint8_t* src0, + int src0_stride, + const uint8_t* src1, + int src1_stride, + int h, + int w, + int bd); +#define av1_build_compound_diffwtd_mask_highbd \ + av1_build_compound_diffwtd_mask_highbd_c + +void av1_convolve_2d_copy_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params); +#define av1_convolve_2d_copy_sr av1_convolve_2d_copy_sr_c + +void av1_convolve_2d_scale_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int x_step_qn, + const int subpel_y_q4, + const int y_step_qn, + ConvolveParams* conv_params); +#define av1_convolve_2d_scale av1_convolve_2d_scale_c + +void av1_convolve_2d_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params); +#define av1_convolve_2d_sr av1_convolve_2d_sr_c + +void av1_convolve_horiz_rs_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const int16_t* x_filters, + int x0_qn, + int x_step_qn); +#define av1_convolve_horiz_rs av1_convolve_horiz_rs_c + +void av1_convolve_x_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params); +#define av1_convolve_x_sr av1_convolve_x_sr_c + +void av1_convolve_y_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params); +#define av1_convolve_y_sr av1_convolve_y_sr_c + +void av1_dist_wtd_convolve_2d_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_c + +void av1_dist_wtd_convolve_2d_copy_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_c + +void av1_dist_wtd_convolve_x_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_c + +void av1_dist_wtd_convolve_y_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_c + +void av1_dr_prediction_z1_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_above, + int dx, + int dy); +#define av1_dr_prediction_z1 av1_dr_prediction_z1_c + +void av1_dr_prediction_z2_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_above, + int upsample_left, + int dx, + int dy); +#define av1_dr_prediction_z2 av1_dr_prediction_z2_c + +void av1_dr_prediction_z3_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_left, + int dx, + int dy); +#define av1_dr_prediction_z3 av1_dr_prediction_z3_c + +void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength); +#define av1_filter_intra_edge av1_filter_intra_edge_c + +void av1_filter_intra_edge_high_c(uint16_t* p, int sz, int strength); +#define av1_filter_intra_edge_high av1_filter_intra_edge_high_c + +void av1_filter_intra_predictor_c(uint8_t* dst, + ptrdiff_t stride, + TX_SIZE tx_size, + const uint8_t* above, + const uint8_t* left, + int mode); +#define av1_filter_intra_predictor av1_filter_intra_predictor_c + +void av1_highbd_convolve8_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8 av1_highbd_convolve8_c + +void av1_highbd_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c + +void av1_highbd_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c + +void av1_highbd_convolve_2d_copy_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_copy_sr av1_highbd_convolve_2d_copy_sr_c + +void av1_highbd_convolve_2d_scale_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int x_step_qn, + const int subpel_y_q4, + const int y_step_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_scale av1_highbd_convolve_2d_scale_c + +void av1_highbd_convolve_2d_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_sr av1_highbd_convolve_2d_sr_c + +void av1_highbd_convolve_avg_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c + +void av1_highbd_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c + +void av1_highbd_convolve_horiz_rs_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const int16_t* x_filters, + int x0_qn, + int x_step_qn, + int bd); +#define av1_highbd_convolve_horiz_rs av1_highbd_convolve_horiz_rs_c + +void av1_highbd_convolve_x_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_x_sr av1_highbd_convolve_x_sr_c + +void av1_highbd_convolve_y_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c + +void av1_highbd_dist_wtd_convolve_2d_c( + const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c + +void av1_highbd_dist_wtd_convolve_2d_copy_c( + const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_2d_copy \ + av1_highbd_dist_wtd_convolve_2d_copy_c + +void av1_highbd_dist_wtd_convolve_x_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c + +void av1_highbd_dist_wtd_convolve_y_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_q4, + const int subpel_y_q4, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c + +void av1_highbd_dr_prediction_z1_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_above, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c + +void av1_highbd_dr_prediction_z2_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_above, + int upsample_left, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c + +void av1_highbd_dr_prediction_z3_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_left, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c + +void av1_highbd_inv_txfm_add_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c + +void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c + +void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c + +void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c + +void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c + +void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c + +void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c + +void av1_highbd_iwht4x4_16_add_c(const tran_low_t* input, + uint8_t* dest, + int dest_stride, + int bd); +#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c + +void av1_highbd_iwht4x4_1_add_c(const tran_low_t* input, + uint8_t* dest, + int dest_stride, + int bd); +#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c + +void av1_highbd_warp_affine_c(const int32_t* mat, + const uint16_t* ref, + int width, + int height, + int stride, + uint16_t* pred, + int p_col, + int p_row, + int p_width, + int p_height, + int p_stride, + int subsampling_x, + int subsampling_y, + int bd, + ConvolveParams* conv_params, + int16_t alpha, + int16_t beta, + int16_t gamma, + int16_t delta); +#define av1_highbd_warp_affine av1_highbd_warp_affine_c + +void av1_highbd_wiener_convolve_add_src_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + const ConvolveParams* conv_params, + int bps); +#define av1_highbd_wiener_convolve_add_src av1_highbd_wiener_convolve_add_src_c + +void av1_inv_txfm2d_add_16x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c + +void av1_inv_txfm2d_add_16x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c + +void av1_inv_txfm2d_add_16x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c + +void av1_inv_txfm2d_add_16x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c + +void av1_inv_txfm2d_add_16x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c + +void av1_inv_txfm2d_add_32x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c + +void av1_inv_txfm2d_add_32x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c + +void av1_inv_txfm2d_add_32x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c + +void av1_inv_txfm2d_add_32x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c + +void av1_inv_txfm2d_add_4x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c + +void av1_inv_txfm2d_add_4x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c + +void av1_inv_txfm2d_add_4x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c + +void av1_inv_txfm2d_add_64x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c + +void av1_inv_txfm2d_add_64x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c + +void av1_inv_txfm2d_add_64x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c + +void av1_inv_txfm2d_add_8x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c + +void av1_inv_txfm2d_add_8x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c + +void av1_inv_txfm2d_add_8x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c + +void av1_inv_txfm2d_add_8x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c + +void av1_inv_txfm_add_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_inv_txfm_add av1_inv_txfm_add_c + +void av1_round_shift_array_c(int32_t* arr, int size, int bit); +#define av1_round_shift_array av1_round_shift_array_c + +int av1_selfguided_restoration_c(const uint8_t* dgd8, + int width, + int height, + int dgd_stride, + int32_t* flt0, + int32_t* flt1, + int flt_stride, + int sgr_params_idx, + int bit_depth, + int highbd); +#define av1_selfguided_restoration av1_selfguided_restoration_c + +void av1_upsample_intra_edge_c(uint8_t* p, int sz); +#define av1_upsample_intra_edge av1_upsample_intra_edge_c + +void av1_upsample_intra_edge_high_c(uint16_t* p, int sz, int bd); +#define av1_upsample_intra_edge_high av1_upsample_intra_edge_high_c + +void av1_warp_affine_c(const int32_t* mat, + const uint8_t* ref, + int width, + int height, + int stride, + uint8_t* pred, + int p_col, + int p_row, + int p_width, + int p_height, + int p_stride, + int subsampling_x, + int subsampling_y, + ConvolveParams* conv_params, + int16_t alpha, + int16_t beta, + int16_t gamma, + int16_t delta); +#define av1_warp_affine av1_warp_affine_c + +void av1_wiener_convolve_add_src_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + const ConvolveParams* conv_params); +#define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_c + +void cdef_filter_block_c(uint8_t* dst8, + uint16_t* dst16, + int dstride, + const uint16_t* in, + int pri_strength, + int sec_strength, + int dir, + int pri_damping, + int sec_damping, + int bsize, + int coeff_shift); +#define cdef_filter_block cdef_filter_block_c + +int cdef_find_dir_c(const uint16_t* img, + int stride, + int32_t* var, + int coeff_shift); +#define cdef_find_dir cdef_find_dir_c + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_420_hbd cfl_get_luma_subsampling_420_hbd_c + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_420_lbd cfl_get_luma_subsampling_420_lbd_c + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_422_hbd cfl_get_luma_subsampling_422_hbd_c + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_422_lbd cfl_get_luma_subsampling_422_lbd_c + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_444_hbd cfl_get_luma_subsampling_444_hbd_c + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_444_lbd cfl_get_luma_subsampling_444_lbd_c + +void copy_rect8_16bit_to_16bit_c(uint16_t* dst, + int dstride, + const uint16_t* src, + int sstride, + int v, + int h); +#define copy_rect8_16bit_to_16bit copy_rect8_16bit_to_16bit_c + +void copy_rect8_8bit_to_16bit_c(uint16_t* dst, + int dstride, + const uint8_t* src, + int sstride, + int v, + int h); +#define copy_rect8_8bit_to_16bit copy_rect8_8bit_to_16bit_c + +cfl_predict_hbd_fn get_predict_hbd_fn_c(TX_SIZE tx_size); +#define get_predict_hbd_fn get_predict_hbd_fn_c + +cfl_predict_lbd_fn get_predict_lbd_fn_c(TX_SIZE tx_size); +#define get_predict_lbd_fn get_predict_lbd_fn_c + +cfl_subtract_average_fn get_subtract_average_fn_c(TX_SIZE tx_size); +cfl_subtract_average_fn get_subtract_average_fn_vsx(TX_SIZE tx_size); +#define get_subtract_average_fn get_subtract_average_fn_vsx + +void av1_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/ppc.h" +static void setup_rtcd_internal(void) { + int flags = ppc_simd_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/chromium/third_party/lss/linux_syscall_support.h b/chromium/third_party/lss/linux_syscall_support.h index e4ac22644c0..1c57015dbb7 100644 --- a/chromium/third_party/lss/linux_syscall_support.h +++ b/chromium/third_party/lss/linux_syscall_support.h @@ -3947,7 +3947,7 @@ struct kernel_statfs { LSS_REG(2, buf); LSS_BODY(void*, mmap2, "0"(__r2)); } -#else +#elif !defined(__powerpc64__) /* ppc64 doesn't have mmap2 */ #define __NR__mmap2 __NR_mmap2 LSS_INLINE _syscall6(void*, _mmap2, void*, s, size_t, l, int, p, @@ -4058,7 +4058,7 @@ struct kernel_statfs { #if defined(__i386__) || \ defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ - defined(__PPC__) || \ + (defined(__PPC__) && !defined(__powerpc64__)) || \ (defined(__s390__) && !defined(__s390x__)) /* On these architectures, implement mmap() with mmap2(). */ LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, diff --git a/chromium/third_party/nearby/src/cpp/core_v2/internal/base_pcp_handler_test.cc.orig b/chromium/third_party/nearby/src/cpp/core_v2/internal/base_pcp_handler_test.cc.orig deleted file mode 100644 index c9009413496..00000000000 --- a/chromium/third_party/nearby/src/cpp/core_v2/internal/base_pcp_handler_test.cc.orig +++ /dev/null @@ -1,538 +0,0 @@ -#include "core_v2/internal/base_pcp_handler.h" - -#include -#include - -#include "core_v2/internal/base_endpoint_channel.h" -#include "core_v2/internal/client_proxy.h" -#include "core_v2/internal/encryption_runner.h" -#include "core_v2/internal/offline_frames.h" -#include "core_v2/listeners.h" -#include "core_v2/options.h" -#include "core_v2/params.h" -#include "proto/connections/offline_wire_formats.pb.h" -#include "platform_v2/base/byte_array.h" -#include "platform_v2/public/count_down_latch.h" -#include "platform_v2/public/pipe.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" -#include "absl/time/time.h" - -namespace location { -namespace nearby { -namespace connections { -namespace { - -using ::location::nearby::proto::connections::Medium; -using ::testing::_; -using ::testing::AtLeast; -using ::testing::Invoke; -using ::testing::MockFunction; -using ::testing::Return; -using ::testing::StrictMock; - -constexpr BooleanMediumSelector kTestCases[] = { - BooleanMediumSelector{}, - BooleanMediumSelector{ - .bluetooth = true, - }, - BooleanMediumSelector{ - .wifi_lan = true, - }, - BooleanMediumSelector{ - .bluetooth = true, - .wifi_lan = true, - }, -}; - -class MockEndpointChannel : public BaseEndpointChannel { - public: - explicit MockEndpointChannel(Pipe* reader, Pipe* writer) - : BaseEndpointChannel("channel", &reader->GetInputStream(), - &writer->GetOutputStream()) {} - - ExceptionOr DoRead() { return BaseEndpointChannel::Read(); } - Exception DoWrite(const ByteArray& data) { - return BaseEndpointChannel::Write(data); - } - absl::Time DoGetLastReadTimestamp() { - return BaseEndpointChannel::GetLastReadTimestamp(); - } - - MOCK_METHOD(ExceptionOr, Read, (), (override)); - MOCK_METHOD(Exception, Write, (const ByteArray& data), (override)); - MOCK_METHOD(void, CloseImpl, (), (override)); - MOCK_METHOD(proto::connections::Medium, GetMedium, (), (const override)); - MOCK_METHOD(std::string, GetType, (), (const override)); - MOCK_METHOD(std::string, GetName, (), (const override)); - MOCK_METHOD(bool, IsPaused, (), (const override)); - MOCK_METHOD(void, Pause, (), (override)); - MOCK_METHOD(void, Resume, (), (override)); - MOCK_METHOD(absl::Time, GetLastReadTimestamp, (), (const override)); -}; - -class MockPcpHandler : public BasePcpHandler { - public: - using DiscoveredEndpoint = BasePcpHandler::DiscoveredEndpoint; - - MockPcpHandler(EndpointManager* em, EndpointChannelManager* ecm) - : BasePcpHandler(em, ecm, Pcp::kP2pCluster) {} - - // Expose protected inner types of a base type for mocking. - using BasePcpHandler::ConnectImplResult; - using BasePcpHandler::DiscoveredEndpoint; - using BasePcpHandler::StartOperationResult; - - MOCK_METHOD(Strategy, GetStrategy, (), (const override)); - MOCK_METHOD(Pcp, GetPcp, (), (const override)); - - MOCK_METHOD(bool, HasOutgoingConnections, (ClientProxy * client), - (const, override)); - MOCK_METHOD(bool, HasIncomingConnections, (ClientProxy * client), - (const, override)); - - MOCK_METHOD(bool, CanSendOutgoingConnection, (ClientProxy * client), - (const, override)); - MOCK_METHOD(bool, CanReceiveIncomingConnection, (ClientProxy * client), - (const, override)); - - MOCK_METHOD(StartOperationResult, StartAdvertisingImpl, - (ClientProxy * client, const string& service_id, - const string& local_endpoint_id, - const string& local_endpoint_name, - const ConnectionOptions& options), - (override)); - MOCK_METHOD(Status, StopAdvertisingImpl, (ClientProxy * client), (override)); - MOCK_METHOD(StartOperationResult, StartDiscoveryImpl, - (ClientProxy * client, const string& service_id, - const ConnectionOptions& options), - (override)); - MOCK_METHOD(Status, StopDiscoveryImpl, (ClientProxy * client), (override)); - MOCK_METHOD(ConnectImplResult, ConnectImpl, - (ClientProxy * client, DiscoveredEndpoint* endpoint), (override)); - MOCK_METHOD(proto::connections::Medium, GetDefaultUpgradeMedium, (), - (override)); - - std::vector GetConnectionMediumsByPriority() - override { - return GetDiscoveryMediums(); - } - - // Mock adapters for protected non-virtual methods of a base class. - void OnEndpointFound(ClientProxy* client, - std::shared_ptr endpoint) { - BasePcpHandler::OnEndpointFound(client, std::move(endpoint)); - } - void OnEndpointLost(ClientProxy* client, const DiscoveredEndpoint& endpoint) { - BasePcpHandler::OnEndpointLost(client, endpoint); - } - - std::vector GetDiscoveryMediums() { - std::vector mediums; - auto allowed = - BasePcpHandler::GetDiscoveryOptions().CompatibleOptions().allowed; - // Mediums are sorted in order of decreasing preference. - if (allowed.wifi_lan) - mediums.push_back(proto::connections::Medium::WIFI_LAN); - if (allowed.web_rtc) mediums.push_back(proto::connections::Medium::WEB_RTC); - if (allowed.bluetooth) - mediums.push_back(proto::connections::Medium::BLUETOOTH); - return mediums; - } - - std::vector GetDiscoveredEndpoints( - const std::string& endpoint_id) { - return BasePcpHandler::GetDiscoveredEndpoints(endpoint_id); - } -}; - -class MockContext { - public: - explicit MockContext(std::atomic_int* destroyed = nullptr) { - destroyed_ = destroyed; - } - MockContext(MockContext&&) = default; - MockContext& operator=(MockContext&&) = default; - - ~MockContext() { - if (destroyed_) (*destroyed_)++; - } - - private: - Swapper destroyed_{nullptr}; -}; - -struct MockDiscoveredEndpoint : public MockPcpHandler::DiscoveredEndpoint { - MockDiscoveredEndpoint(DiscoveredEndpoint endpoint, MockContext context) - : DiscoveredEndpoint(std::move(endpoint)), context(std::move(context)) {} - - MockContext context; -}; - -class BasePcpHandlerTest - : public ::testing::TestWithParam { - protected: - struct MockConnectionListener { - StrictMock> - initiated_cb; - StrictMock> accepted_cb; - StrictMock> - rejected_cb; - StrictMock> - disconnected_cb; - StrictMock> - bandwidth_changed_cb; - }; - struct MockDiscoveryListener { - StrictMock> - endpoint_found_cb; - StrictMock> - endpoint_lost_cb; - StrictMock< - MockFunction> - endpoint_distance_changed_cb; - }; - - void StartAdvertising(ClientProxy* client, MockPcpHandler* pcp_handler, - BooleanMediumSelector allowed = GetParam()) { - std::string service_id{"service"}; - ConnectionOptions options{ - .strategy = Strategy::kP2pCluster, - .allowed = allowed, - .auto_upgrade_bandwidth = true, - .enforce_topology_constraints = true, - }; - ConnectionRequestInfo info{ - .name = "remote_endpoint_name", - .listener = connection_listener_, - }; - EXPECT_CALL(*pcp_handler, - StartAdvertisingImpl(client, service_id, _, info.name, _)) - .WillOnce(Return(MockPcpHandler::StartOperationResult{ - .status = {Status::kSuccess}, - .mediums = {Medium::BLE}, - })); - EXPECT_EQ(pcp_handler->StartAdvertising(client, service_id, options, info), - Status{Status::kSuccess}); - EXPECT_TRUE(client->IsAdvertising()); - } - - void StartDiscovery(ClientProxy* client, MockPcpHandler* pcp_handler, - BooleanMediumSelector allowed = GetParam()) { - std::string service_id{"service"}; - ConnectionOptions options{ - .strategy = Strategy::kP2pCluster, - .allowed = allowed, - .auto_upgrade_bandwidth = true, - .enforce_topology_constraints = true, - }; - EXPECT_CALL(*pcp_handler, StartDiscoveryImpl(client, service_id, _)) - .WillOnce(Return(MockPcpHandler::StartOperationResult{ - .status = {Status::kSuccess}, - .mediums = {Medium::BLE}, - })); - EXPECT_EQ(pcp_handler->StartDiscovery(client, service_id, options, - discovery_listener_), - Status{Status::kSuccess}); - EXPECT_TRUE(client->IsDiscovering()); - } - - std::pair, - std::unique_ptr> - SetupConnection(Pipe& pipe_a, Pipe& pipe_b) { // NOLINT - auto channel_a = std::make_unique(&pipe_b, &pipe_a); - auto channel_b = std::make_unique(&pipe_a, &pipe_b); - // On initiator (A) side, we drop the first write, since this is a - // connection establishment packet, and we don't have the peer entity, just - // the peer channel. The rest of the exchange must happen for the benefit of - // DH key exchange. - EXPECT_CALL(*channel_a, Read()) - .WillRepeatedly(Invoke( - [channel = channel_a.get()]() { return channel->DoRead(); })); - EXPECT_CALL(*channel_a, Write(_)) - .WillOnce(Return(Exception{Exception::kSuccess})) - .WillRepeatedly( - Invoke([channel = channel_a.get()](const ByteArray& data) { - return channel->DoWrite(data); - })); - EXPECT_CALL(*channel_a, GetMedium).WillRepeatedly(Return(Medium::BLE)); - EXPECT_CALL(*channel_a, GetLastReadTimestamp) - .WillRepeatedly(Return(absl::Now())); - EXPECT_CALL(*channel_a, IsPaused).WillRepeatedly(Return(false)); - EXPECT_CALL(*channel_b, Read()) - .WillRepeatedly(Invoke( - [channel = channel_b.get()]() { return channel->DoRead(); })); - EXPECT_CALL(*channel_b, Write(_)) - .WillRepeatedly( - Invoke([channel = channel_b.get()](const ByteArray& data) { - return channel->DoWrite(data); - })); - EXPECT_CALL(*channel_b, GetMedium).WillRepeatedly(Return(Medium::BLE)); - EXPECT_CALL(*channel_b, GetLastReadTimestamp) - .WillRepeatedly(Return(absl::Now())); - EXPECT_CALL(*channel_b, IsPaused).WillRepeatedly(Return(false)); - return std::make_pair(std::move(channel_a), std::move(channel_b)); - } - - void RequestConnection(const std::string& endpoint_id, - std::unique_ptr channel_a, - MockEndpointChannel* channel_b, ClientProxy* client, - MockPcpHandler* pcp_handler, - std::atomic_int* flag = nullptr) { - ConnectionRequestInfo info{ - .name = "ABCD", - .listener = connection_listener_, - }; - EXPECT_CALL(mock_discovery_listener_.endpoint_found_cb, Call); - EXPECT_CALL(*pcp_handler, CanSendOutgoingConnection) - .WillRepeatedly(Return(true)); - EXPECT_CALL(*pcp_handler, GetStrategy) - .WillRepeatedly(Return(Strategy::kP2pCluster)); - EXPECT_CALL(mock_connection_listener_.initiated_cb, Call).Times(1); - // Simulate successful discovery. - auto encryption_runner = std::make_unique(); - auto allowed_mediums = pcp_handler->GetDiscoveryMediums(); - - EXPECT_CALL(*pcp_handler, ConnectImpl) - .WillOnce(Invoke([&channel_a, medium = allowed_mediums[0]]( - ClientProxy* client, - MockPcpHandler::DiscoveredEndpoint* endpoint) { - return MockPcpHandler::ConnectImplResult{ - .medium = medium, - .status = {Status::kSuccess}, - .endpoint_channel = std::move(channel_a), - }; - })); - - for (const auto& medium : allowed_mediums) { - pcp_handler->OnEndpointFound( - client, - std::make_shared(MockDiscoveredEndpoint{ - { - endpoint_id, - info.name, - "service", - medium, - }, - MockContext{flag}, - })); - } - auto other_client = std::make_unique(); - - // Run peer crypto in advance, if channel_b is provided. - // Otherwise stay in not-encrypted state. - if (channel_b != nullptr) { - encryption_runner->StartServer(other_client.get(), endpoint_id, channel_b, - {}); - } - EXPECT_EQ(pcp_handler->RequestConnection(client, endpoint_id, info), - Status{Status::kSuccess}); - NEARBY_LOG(INFO, "Stopping Encryption Runner"); - } - - Pipe pipe_a_; - Pipe pipe_b_; - MockConnectionListener mock_connection_listener_; - MockDiscoveryListener mock_discovery_listener_; - ConnectionListener connection_listener_{ - .initiated_cb = mock_connection_listener_.initiated_cb.AsStdFunction(), - .accepted_cb = mock_connection_listener_.accepted_cb.AsStdFunction(), - .rejected_cb = mock_connection_listener_.rejected_cb.AsStdFunction(), - .disconnected_cb = - mock_connection_listener_.disconnected_cb.AsStdFunction(), - .bandwidth_changed_cb = - mock_connection_listener_.bandwidth_changed_cb.AsStdFunction(), - }; - DiscoveryListener discovery_listener_{ - .endpoint_found_cb = - mock_discovery_listener_.endpoint_found_cb.AsStdFunction(), - .endpoint_lost_cb = - mock_discovery_listener_.endpoint_lost_cb.AsStdFunction(), - .endpoint_distance_changed_cb = - mock_discovery_listener_.endpoint_distance_changed_cb.AsStdFunction(), - }; -}; - -TEST_P(BasePcpHandlerTest, ConstructorDestructorWorks) { - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - SUCCEED(); -} - -TEST_P(BasePcpHandlerTest, StartAdvertisingChangesState) { - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartAdvertising(&client, &pcp_handler); -} - -TEST_P(BasePcpHandlerTest, StopAdvertisingChangesState) { - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartAdvertising(&client, &pcp_handler); - EXPECT_CALL(pcp_handler, StopAdvertisingImpl(&client)).Times(1); - EXPECT_TRUE(client.IsAdvertising()); - pcp_handler.StopAdvertising(&client); - EXPECT_FALSE(client.IsAdvertising()); -} - -TEST_P(BasePcpHandlerTest, StartDiscoveryChangesState) { - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartDiscovery(&client, &pcp_handler); -} - -TEST_P(BasePcpHandlerTest, StopDiscoveryChangesState) { - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartDiscovery(&client, &pcp_handler); - EXPECT_CALL(pcp_handler, StopDiscoveryImpl(&client)).Times(1); - EXPECT_TRUE(client.IsDiscovering()); - pcp_handler.StopDiscovery(&client); - EXPECT_FALSE(client.IsDiscovering()); -} - -TEST_P(BasePcpHandlerTest, RequestConnectionChangesState) { - std::string endpoint_id{"1234"}; - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartDiscovery(&client, &pcp_handler); - auto channel_pair = SetupConnection(pipe_a_, pipe_b_); - auto& channel_a = channel_pair.first; - auto& channel_b = channel_pair.second; - EXPECT_CALL(*channel_a, CloseImpl).Times(1); - EXPECT_CALL(*channel_b, CloseImpl).Times(1); - EXPECT_CALL(mock_connection_listener_.rejected_cb, Call).Times(AtLeast(0)); - RequestConnection(endpoint_id, std::move(channel_a), channel_b.get(), &client, - &pcp_handler); - NEARBY_LOG(INFO, "RequestConnection complete"); - channel_b->Close(); - pcp_handler.DisconnectFromEndpointManager(); -} - -TEST_P(BasePcpHandlerTest, AcceptConnectionChangesState) { - std::string endpoint_id{"1234"}; - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartDiscovery(&client, &pcp_handler); - auto channel_pair = SetupConnection(pipe_a_, pipe_b_); - auto& channel_a = channel_pair.first; - auto& channel_b = channel_pair.second; - EXPECT_CALL(*channel_a, CloseImpl).Times(1); - EXPECT_CALL(*channel_b, CloseImpl).Times(1); - RequestConnection(endpoint_id, std::move(channel_a), channel_b.get(), &client, - &pcp_handler); - NEARBY_LOG(INFO, "Attempting to accept connection: id=%s", - endpoint_id.c_str()); - EXPECT_EQ(pcp_handler.AcceptConnection(&client, endpoint_id, {}), - Status{Status::kSuccess}); - EXPECT_CALL(mock_connection_listener_.rejected_cb, Call).Times(AtLeast(0)); - NEARBY_LOGS(INFO) << "Closing connection: id=" << endpoint_id; - channel_b->Close(); - pcp_handler.DisconnectFromEndpointManager(); -} - -TEST_P(BasePcpHandlerTest, RejectConnectionChangesState) { - std::string endpoint_id{"1234"}; - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartDiscovery(&client, &pcp_handler); - auto channel_pair = SetupConnection(pipe_a_, pipe_b_); - auto& channel_b = channel_pair.second; - EXPECT_CALL(mock_connection_listener_.rejected_cb, Call).Times(1); - RequestConnection(endpoint_id, std::move(channel_pair.first), channel_b.get(), - &client, &pcp_handler); - NEARBY_LOGS(INFO) << "Attempting to reject connection: id=" << endpoint_id; - EXPECT_EQ(pcp_handler.RejectConnection(&client, endpoint_id), - Status{Status::kSuccess}); - NEARBY_LOGS(INFO) << "Closing connection: id=" << endpoint_id; - channel_b->Close(); - pcp_handler.DisconnectFromEndpointManager(); -} - -TEST_P(BasePcpHandlerTest, OnIncomingFrameChangesState) { - std::string endpoint_id{"1234"}; - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartDiscovery(&client, &pcp_handler); - auto channel_pair = SetupConnection(pipe_a_, pipe_b_); - auto& channel_a = channel_pair.first; - auto& channel_b = channel_pair.second; - EXPECT_CALL(*channel_a, CloseImpl).Times(1); - EXPECT_CALL(*channel_b, CloseImpl).Times(1); - RequestConnection(endpoint_id, std::move(channel_a), channel_b.get(), &client, - &pcp_handler); - NEARBY_LOGS(INFO) << "Attempting to accept connection: id=" << endpoint_id; - EXPECT_CALL(mock_connection_listener_.accepted_cb, Call).Times(1); - EXPECT_CALL(mock_connection_listener_.disconnected_cb, Call) - .Times(AtLeast(0)); - EXPECT_EQ(pcp_handler.AcceptConnection(&client, endpoint_id, {}), - Status{Status::kSuccess}); - NEARBY_LOG(INFO, "Simulating remote accept: id=%s", endpoint_id.c_str()); - auto frame = - parser::FromBytes(parser::ForConnectionResponse(Status::kSuccess)); - pcp_handler.OnIncomingFrame(frame.result(), endpoint_id, &client, - Medium::BLE); - NEARBY_LOGS(INFO) << "Closing connection: id=" << endpoint_id; - channel_b->Close(); - pcp_handler.DisconnectFromEndpointManager(); -} - -TEST_P(BasePcpHandlerTest, DestructorIsCalledOnProtocolEndpoint) { - std::atomic_int destroyed_flag = 0; - int mediums_count = 0; - { - std::string endpoint_id{"1234"}; - ClientProxy client; - EndpointChannelManager ecm; - EndpointManager em(&ecm); - MockPcpHandler pcp_handler(&em, &ecm); - StartDiscovery(&client, &pcp_handler); - auto channel_pair = SetupConnection(pipe_a_, pipe_b_); - auto& channel_a = channel_pair.first; - auto& channel_b = channel_pair.second; - EXPECT_CALL(*channel_a, CloseImpl).Times(1); - EXPECT_CALL(*channel_b, CloseImpl).Times(1); - RequestConnection(endpoint_id, std::move(channel_a), channel_b.get(), - &client, &pcp_handler, &destroyed_flag); - mediums_count = pcp_handler.GetDiscoveryMediums().size(); - NEARBY_LOG(INFO, "Attempting to accept connection: id=%s", - endpoint_id.c_str()); - EXPECT_EQ(pcp_handler.AcceptConnection(&client, endpoint_id, {}), - Status{Status::kSuccess}); - EXPECT_CALL(mock_connection_listener_.rejected_cb, Call).Times(AtLeast(0)); - NEARBY_LOG(INFO, "Closing connection: id=%s", endpoint_id.c_str()); - channel_b->Close(); - pcp_handler.DisconnectFromEndpointManager(); - } - EXPECT_EQ(destroyed_flag.load(), mediums_count); -} - -INSTANTIATE_TEST_SUITE_P(ParameterizedBasePcpHandlerTest, BasePcpHandlerTest, - ::testing::ValuesIn(kTestCases)); - -} // namespace -} // namespace connections -} // namespace nearby -} // namespace location diff --git a/chromium/third_party/nearby/src/cpp/core_v2/internal/offline_service_controller.h.orig b/chromium/third_party/nearby/src/cpp/core_v2/internal/offline_service_controller.h.orig deleted file mode 100644 index 97517fa717b..00000000000 --- a/chromium/third_party/nearby/src/cpp/core_v2/internal/offline_service_controller.h.orig +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef CORE_V2_INTERNAL_OFFLINE_SERVICE_CONTROLLER_H_ -#define CORE_V2_INTERNAL_OFFLINE_SERVICE_CONTROLLER_H_ - -#include -#include -#include - -#include "core_v2/internal/client_proxy.h" -#include "core_v2/internal/endpoint_channel_manager.h" -#include "core_v2/internal/endpoint_manager.h" -#include "core_v2/internal/mediums/mediums.h" -#include "core_v2/internal/payload_manager.h" -#include "core_v2/internal/pcp_manager.h" -#include "core_v2/internal/service_controller.h" -#include "core_v2/listeners.h" -#include "core_v2/options.h" -#include "core_v2/payload.h" -#include "core_v2/status.h" - -namespace location { -namespace nearby { -namespace connections { - -class OfflineServiceController : public ServiceController { - public: - OfflineServiceController() = default; - ~OfflineServiceController() override; - - Status StartAdvertising(ClientProxy* client, - const std::string& service_id, - const ConnectionOptions& options, - const ConnectionRequestInfo& info) override; - void StopAdvertising(ClientProxy* client) override; - - Status StartDiscovery(ClientProxy* client, - const std::string& service_id, - const ConnectionOptions& options, - const DiscoveryListener& listener) override; - void StopDiscovery(ClientProxy* client) override; - - Status RequestConnection(ClientProxy* client, - const std::string& endpoint_id, - const ConnectionRequestInfo& info, - const ConnectionOptions& options) override; - Status AcceptConnection(ClientProxy* client, - const std::string& endpoint_id, - const PayloadListener& listener) override; - Status RejectConnection(ClientProxy* client, - const std::string& endpoint_id) override; - - void InitiateBandwidthUpgrade(ClientProxy* client, - const std::string& endpoint_id) override; - - void SendPayload(ClientProxy* client, - const std::vector& endpoint_ids, - Payload payload) override; - Status CancelPayload(ClientProxy* client, - Payload::Id payload_id) override; - - void DisconnectFromEndpoint(ClientProxy* client, - const std::string& endpoint_id) override; - - void Stop(); - - private: - // Note that the order of declaration of these is crucial, because we depend - // on the destructors running (strictly) in the reverse order; a deviation - // from that will lead to crashes at runtime. - AtomicBoolean stop_{false}; - Mediums mediums_; - EndpointChannelManager channel_manager_; - EndpointManager endpoint_manager_{&channel_manager_}; - PayloadManager payload_manager_{endpoint_manager_}; - PcpManager pcp_manager_{mediums_, channel_manager_, endpoint_manager_}; -}; - -} // namespace connections -} // namespace nearby -} // namespace location - -#endif // CORE_V2_INTERNAL_OFFLINE_SERVICE_CONTROLLER_H_ diff --git a/chromium/third_party/pffft/src/pffft.c b/chromium/third_party/pffft/src/pffft.c index bdac4d78499..51e0f2cacc4 100644 --- a/chromium/third_party/pffft/src/pffft.c +++ b/chromium/third_party/pffft/src/pffft.c @@ -100,6 +100,7 @@ Altivec support macros */ #if !defined(PFFFT_SIMD_DISABLE) && (defined(__ppc__) || defined(__ppc64__)) +#include typedef vector float v4sf; # define SIMD_SZ 4 # define VZERO() ((vector float) vec_splat_u8(0)) diff --git a/chromium/third_party/sqlite/src/amalgamation/sqlite3.c b/chromium/third_party/sqlite/src/amalgamation/sqlite3.c index 7f20d385d7f..3c2bfd10e8b 100644 --- a/chromium/third_party/sqlite/src/amalgamation/sqlite3.c +++ b/chromium/third_party/sqlite/src/amalgamation/sqlite3.c @@ -14519,7 +14519,8 @@ typedef INT16_TYPE LogEst; # if defined(i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ - defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) + defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) || \ + defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) # define SQLITE_BYTEORDER 1234 # elif defined(sparc) || defined(__ppc__) || \ defined(__ARMEB__) || defined(__AARCH64EB__) diff --git a/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c b/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c index 8226e44e3f6..ef705fcd811 100644 --- a/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c +++ b/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c @@ -14532,7 +14532,8 @@ typedef INT16_TYPE LogEst; # if defined(i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ - defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) + defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) || \ + defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) # define SQLITE_BYTEORDER 1234 # elif defined(sparc) || defined(__ppc__) || \ defined(__ARMEB__) || defined(__AARCH64EB__) diff --git a/chromium/third_party/sqlite/src/ext/rtree/rtree.c b/chromium/third_party/sqlite/src/ext/rtree/rtree.c index f5b57a5e231..67671cd7caa 100644 --- a/chromium/third_party/sqlite/src/ext/rtree/rtree.c +++ b/chromium/third_party/sqlite/src/ext/rtree/rtree.c @@ -450,7 +450,7 @@ struct RtreeMatchArg { #if defined(i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ - defined(__arm__) + defined(__arm__) || defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) # define SQLITE_BYTEORDER 1234 #elif defined(sparc) || defined(__ppc__) # define SQLITE_BYTEORDER 4321 diff --git a/chromium/third_party/sqlite/src/src/sqliteInt.h b/chromium/third_party/sqlite/src/src/sqliteInt.h index 799ed6ab0b4..aca2dea310e 100644 --- a/chromium/third_party/sqlite/src/src/sqliteInt.h +++ b/chromium/third_party/sqlite/src/src/sqliteInt.h @@ -890,7 +890,8 @@ typedef INT16_TYPE LogEst; # if defined(i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ - defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) + defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) || \ + defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) # define SQLITE_BYTEORDER 1234 # elif defined(sparc) || defined(__ppc__) || \ defined(__ARMEB__) || defined(__AARCH64EB__) diff --git a/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc b/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc index 4f0c5430c9a..b720be4e6d5 100644 --- a/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc +++ b/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc @@ -44,6 +44,10 @@ bool VectorDifference(const uint8_t* image1, const uint8_t* image2) { } else { diff_proc = &VectorDifference_C; } +#else + // For other processors, always use C version. + // TODO(hclam): Implement a NEON version. + diff_proc = &VectorDifference_C; #endif } diff --git a/chromium/third_party/webrtc/rtc_base/system/arch.h b/chromium/third_party/webrtc/rtc_base/system/arch.h index ed216e660fd..25d36c071ad 100644 --- a/chromium/third_party/webrtc/rtc_base/system/arch.h +++ b/chromium/third_party/webrtc/rtc_base/system/arch.h @@ -50,6 +50,18 @@ #elif defined(__EMSCRIPTEN__) #define WEBRTC_ARCH_32_BITS #define WEBRTC_ARCH_LITTLE_ENDIAN +#elif defined(__PPC__) +#define WEBRTC_ARCH_PPC_FAMILY +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define WEBRTC_ARCH_LITTLE_ENDIAN +#else +#define WEBRTC_ARCH_BIG_ENDIAN +#endif +#if defined(__LP64__) +#define WEBRTC_ARCH_64_BITS +#else +#define WEBRTC_ARCH_32_BITS +#endif #else #error Please add support for your architecture in rtc_base/system/arch.h #endif diff --git a/chromium/v8/BUILD.gn b/chromium/v8/BUILD.gn index ba99c75140b..96a81204fa2 100644 --- a/chromium/v8/BUILD.gn +++ b/chromium/v8/BUILD.gn @@ -802,6 +802,12 @@ config("toolchain") { } if (host_byteorder == "little") { defines += [ "V8_TARGET_ARCH_PPC_LE" ] + cflags += [ + # Enable usage of AltiVec, VSX, and other POWER8 and higher features + "-mcpu=power8", + "-maltivec", + "-mvsx", + ] } else if (host_byteorder == "big") { defines += [ "V8_TARGET_ARCH_PPC_BE" ] if (current_os == "aix") { -- 2.37.3 From 66ecbcdd453a8d9ad01a1bf2361fb72dda1ba771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Thu, 29 Sep 2022 13:19:53 +0200 Subject: [PATCH 2/3] ppc64le port - skia VSX --- chromium/third_party/skia/BUILD.gn | 10 +++++- .../third_party/skia/gn/shared_sources.gni | 1 + .../third_party/skia/include/core/SkTypes.h | 36 +++++++++++++++++++ .../third_party/skia/include/private/SkVx.h | 11 +++++- .../third_party/skia/src/core/SkSpinlock.cpp | 3 +- .../skia/src/opts/SkBitmapProcState_opts.h | 4 ++- .../skia/src/opts/SkBlitRow_opts.h | 2 +- .../skia/src/opts/SkRasterPipeline_opts.h | 31 ++++++++++++++-- .../skia/src/opts/SkSwizzler_opts.h | 4 ++- .../skia/third_party/skcms/skcms.cc | 2 ++ .../third_party/skcms/src/Transform_inl.h | 31 ++++++++++++++++ .../modules/desktop_capture/differ_block.cc | 6 +--- 12 files changed, 127 insertions(+), 14 deletions(-) diff --git a/chromium/third_party/skia/BUILD.gn b/chromium/third_party/skia/BUILD.gn index e7a79b9e7cc..f5393282602 100644 --- a/chromium/third_party/skia/BUILD.gn +++ b/chromium/third_party/skia/BUILD.gn @@ -132,7 +132,8 @@ template("opts") { is_x86 = current_cpu == "x64" || current_cpu == "x86" opts("none") { - enabled = !is_x86 && current_cpu != "arm" && current_cpu != "arm64" + enabled = !is_x86 && current_cpu != "arm" && current_cpu != "arm64" && + current_cpu != "ppc64" sources = skia_opts.none_sources cflags = [] } @@ -234,6 +235,11 @@ opts("skx") { } } +opts("vsx") { + enabled = current_cpu == "ppc64" + sources = skia_opts.vsx_sources +} + # Any feature of Skia that requires third-party code should be optional and use this template. template("optional") { visibility = [ ":*" ] @@ -1170,6 +1176,7 @@ component("skia") { ":sse41", ":sse42", ":ssse3", + ":vsx", ":webp_decode", ":webp_encode", ":wuffs", @@ -1341,6 +1348,7 @@ static_library("pathkit") { ":sse41", ":sse42", ":ssse3", + ":vsx", ] # This file (and all GN files in Skia) are designed to work with an diff --git a/chromium/third_party/skia/gn/shared_sources.gni b/chromium/third_party/skia/gn/shared_sources.gni index e710a0e0b6f..3e672871ef4 100644 --- a/chromium/third_party/skia/gn/shared_sources.gni +++ b/chromium/third_party/skia/gn/shared_sources.gni @@ -27,4 +27,5 @@ skia_opts = { avx_sources = avx hsw_sources = hsw skx_sources = skx + vsx_sources = ssse3 } diff --git a/chromium/third_party/skia/include/core/SkTypes.h b/chromium/third_party/skia/include/core/SkTypes.h index 9f7c1d7b9cd..f4f05e69b6f 100644 --- a/chromium/third_party/skia/include/core/SkTypes.h +++ b/chromium/third_party/skia/include/core/SkTypes.h @@ -169,6 +169,42 @@ #define SK_ARM_HAS_CRC32 #endif +////////////////////////////////////////////////////////////////////// +// PPC defines + +#if defined(__powerpc64__) || defined(__PPC64__) + #define SK_CPU_PPC64 +#endif + +// Newer versions of clang and gcc for ppc64 ship with wrappers that translate +// Intel vector intrinsics into PPC VSX instrinsics, so we can pretend to have +// to be Intel. Currently, full API support for SSSE3 on POWER8 and later +// processors. +#if defined(__POWER8_VECTOR__) && defined(__has_include) && \ + !defined(SK_CPU_SSE_LEVEL) + + // Clang ships both Intel and PPC headers in its PPC version, storing the + // PPC compatibility in a subdirectory that the compiler will include before + // its standard library include directory. + #if (__has_include() && !defined(__clang__)) || \ + __has_include() + #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3 + #elif (__has_include() && !defined(__clang__)) || \ + __has_include() + #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 + #endif + + #ifdef SK_CPU_SSE_LEVEL + #define SK_PPC64_HAS_SSE_COMPAT + #ifndef NO_WARN_X86_INTRINSICS + #define NO_WARN_X86_INTRINSICS + #endif + #if defined(__clang__) + #define SK_PPC64_CLANG_MFPPR_BUG + #endif + #endif +#endif + // DLL/.so exports. #if !defined(SKIA_IMPLEMENTATION) diff --git a/chromium/third_party/skia/include/private/SkVx.h b/chromium/third_party/skia/include/private/SkVx.h index b5673dedb52..a25c8ddea43 100644 --- a/chromium/third_party/skia/include/private/SkVx.h +++ b/chromium/third_party/skia/include/private/SkVx.h @@ -30,6 +30,15 @@ #include #elif defined(__ARM_NEON) #include +#elif defined(__POWER8_VECTOR__) && defined(__has_include) + #if (__has_include() && !defined(__clang__)) || \ + __has_include() + #define HAS_PPC64_SSE_COMPAT + #ifndef NO_WARN_X86_INTRINSICS + #define NO_WARN_X86_INTRINSICS + #endif + #include + #endif #elif defined(__wasm_simd128__) #include #endif @@ -552,7 +561,7 @@ SIN Vec lrint(const Vec& x) { return unchecked_bit_pun>(_mm256_cvtps_epi32(unchecked_bit_pun<__m256>(x))); } #endif -#if defined(__SSE__) +#if defined(__SSE__) || defined(HAS_PPC64_SSE_COMPAT) if /*constexpr*/ (N == 4) { return unchecked_bit_pun>(_mm_cvtps_epi32(unchecked_bit_pun<__m128>(x))); } diff --git a/chromium/third_party/skia/src/core/SkSpinlock.cpp b/chromium/third_party/skia/src/core/SkSpinlock.cpp index c5a469b51f6..f059e060004 100644 --- a/chromium/third_party/skia/src/core/SkSpinlock.cpp +++ b/chromium/third_party/skia/src/core/SkSpinlock.cpp @@ -31,7 +31,8 @@ #endif // Renamed from "pause" to avoid conflict with function defined in unistd.h -#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 +#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 && \ + !defined(SK_PPC64_CLANG_MFPPR_BUG) #include static void do_pause() { _mm_pause(); } #else diff --git a/chromium/third_party/skia/src/opts/SkBitmapProcState_opts.h b/chromium/third_party/skia/src/opts/SkBitmapProcState_opts.h index 746a11fb6b8..0f7d5512ca5 100644 --- a/chromium/third_party/skia/src/opts/SkBitmapProcState_opts.h +++ b/chromium/third_party/skia/src/opts/SkBitmapProcState_opts.h @@ -21,7 +21,9 @@ // The rest are scattershot at the moment but I want to get them // all migrated to be normal code inside SkBitmapProcState.cpp. -#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 +#if defined(SK_PPC64_HAS_SSE_COMPAT) + #include +#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 #include #elif defined(SK_ARM_HAS_NEON) #include diff --git a/chromium/third_party/skia/src/opts/SkBlitRow_opts.h b/chromium/third_party/skia/src/opts/SkBlitRow_opts.h index fd5cbbacbe8..b9b063f2344 100644 --- a/chromium/third_party/skia/src/opts/SkBlitRow_opts.h +++ b/chromium/third_party/skia/src/opts/SkBlitRow_opts.h @@ -100,7 +100,7 @@ #endif #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 - #include + #include static inline __m128i SkPMSrcOver_SSE2(const __m128i& src, const __m128i& dst) { __m128i scale = _mm_sub_epi32(_mm_set1_epi32(256), diff --git a/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h b/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h index 4abad712d11..2f6654a8bc8 100644 --- a/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h +++ b/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h @@ -68,6 +68,8 @@ struct Ctx { #define JUMPER_IS_SCALAR #elif defined(SK_ARM_HAS_NEON) #define JUMPER_IS_NEON +#elif defined(SK_PPC64_HAS_SSE_COMPAT) + #define JUMPER_IS_VSX #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SKX #define JUMPER_IS_SKX #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX2 @@ -100,6 +102,8 @@ struct Ctx { #include #elif defined(JUMPER_IS_NEON) #include +#elif defined(JUMPER_IS_VSX) + #include #else #include #endif @@ -671,7 +675,7 @@ namespace SK_OPTS_NS { } } -#elif defined(JUMPER_IS_SSE2) || defined(JUMPER_IS_SSE41) +#elif defined(JUMPER_IS_SSE2) || defined(JUMPER_IS_SSE41) || defined(JUMPER_IS_VSX) template using V = T __attribute__((ext_vector_type(4))); using F = V; using I32 = V< int32_t>; @@ -712,6 +716,8 @@ namespace SK_OPTS_NS { SI F floor_(F v) { #if defined(JUMPER_IS_SSE41) return _mm_floor_ps(v); + #elif defined(JUMPER_IS_VSX) + return vec_floor(v); #else F roundtrip = _mm_cvtepi32_ps(_mm_cvttps_epi32(v)); return roundtrip - if_then_else(roundtrip > v, 1, 0); @@ -990,6 +996,13 @@ SI F from_half(U16 h) { #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_SKX) return _mm256_cvtph_ps(h); +#elif defined(JUMPER_IS_VSX) && __has_builtin(__builtin_vsx_xvcvhpsp) + #if defined(SK_CPU_LENDIAN) + return __builtin_vsx_xvcvhpsp({h[0], 0, h[1], 0, h[2], 0, h[3], 0}); + #else + return __builtin_vsx_xvcvhpsp({0, h[0], 0, h[1], 0, h[2], 0, h[3]}); + #endif + #else // Remember, a half is 1-5-10 (sign-exponent-mantissa) with 15 exponent bias. U32 sem = expand(h), @@ -1017,6 +1030,13 @@ SI U16 to_half(F f) { #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_SKX) return _mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION); +#elif defined(JUMPER_IS_VSX) && __has_builtin(__builtin_vsx_xvcvsphp) + __vector unsigned short v = __builtin_vsx_xvcvsphp(f); + #if defined(SK_CPU_LENDIAN) + return U16{v[0], v[2], v[4], v[6]}; + #else + return U16{v[1], v[3], v[5], v[7]}; + #endif #else // Remember, a float is 1-8-23 (sign-exponent-mantissa) with 127 exponent bias. U32 sem = sk_bit_cast(f), @@ -1055,7 +1075,7 @@ static const size_t N = sizeof(F) / sizeof(float); // instead of {b,a} on the stack. Narrow stages work best for __vectorcall. #define ABI __vectorcall #define JUMPER_NARROW_STAGES 1 -#elif defined(__x86_64__) || defined(SK_CPU_ARM64) +#elif defined(__x86_64__) || defined(SK_CPU_ARM64) || defined(SK_CPU_PPC64) // These platforms are ideal for wider stages, and their default ABI is ideal. #define ABI #define JUMPER_NARROW_STAGES 0 @@ -3135,7 +3155,8 @@ SI F sqrt_(F x) { __m256 lo,hi; split(x, &lo,&hi); return join(_mm256_sqrt_ps(lo), _mm256_sqrt_ps(hi)); -#elif defined(JUMPER_IS_SSE2) || defined(JUMPER_IS_SSE41) || defined(JUMPER_IS_AVX) +#elif defined(JUMPER_IS_SSE2) || defined(JUMPER_IS_SSE41) \ + || defined(JUMPER_IS_AVX) || defined(JUMPER_IS_VSX) __m128 lo,hi; split(x, &lo,&hi); return join(_mm_sqrt_ps(lo), _mm_sqrt_ps(hi)); @@ -3174,6 +3195,10 @@ SI F floor_(F x) { __m128 lo,hi; split(x, &lo,&hi); return join(_mm_floor_ps(lo), _mm_floor_ps(hi)); +#elif defined(JUMPER_IS_VSX) + __m128 lo,hi; + split(x, &lo,&hi); + return join(vec_floor(lo), vec_floor(hi)); #else F roundtrip = cast(cast(x)); return roundtrip - if_then_else(roundtrip > x, F(1), F(0)); diff --git a/chromium/third_party/skia/src/opts/SkSwizzler_opts.h b/chromium/third_party/skia/src/opts/SkSwizzler_opts.h index 072087147fa..3efd7c32d63 100644 --- a/chromium/third_party/skia/src/opts/SkSwizzler_opts.h +++ b/chromium/third_party/skia/src/opts/SkSwizzler_opts.h @@ -12,7 +12,9 @@ #include "include/private/SkVx.h" #include -#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 +#if defined(SK_PPC64_HAS_SSE_COMPAT) + #include +#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 #include #elif defined(SK_ARM_HAS_NEON) #include diff --git a/chromium/third_party/skia/third_party/skcms/skcms.cc b/chromium/third_party/skia/third_party/skcms/skcms.cc index 75c8c4836bd..383efac3e89 100644 --- a/chromium/third_party/skia/third_party/skcms/skcms.cc +++ b/chromium/third_party/skia/third_party/skcms/skcms.cc @@ -30,6 +30,8 @@ #include #include #endif +#elif defined(__POWER8_VECTOR__) + #include #endif static bool runtime_cpu_detection = true; diff --git a/chromium/third_party/skia/third_party/skcms/src/Transform_inl.h b/chromium/third_party/skia/third_party/skcms/src/Transform_inl.h index 2dcf717f3b7..303be48d5d0 100644 --- a/chromium/third_party/skia/third_party/skcms/src/Transform_inl.h +++ b/chromium/third_party/skia/third_party/skcms/src/Transform_inl.h @@ -44,6 +44,9 @@ using U8 = V; #if !defined(USING_AVX512F) && N == 16 && defined(__AVX512F__) #define USING_AVX512F #endif +#if !defined(USING_VSX) && defined(__POWER8_VECTOR__) + #define USING_VSX +#endif // Similar to the AVX+ features, we define USING_NEON and USING_NEON_F16C. // This is more for organizational clarity... skcms.cc doesn't force these. @@ -161,6 +164,22 @@ SI F F_from_Half(U16 half) { #elif defined(USING_AVX_F16C) typedef int16_t __attribute__((vector_size(16))) I16; return __builtin_ia32_vcvtph2ps256((I16)half); +#elif defined(USING_VSX) && __has_builtin(__builtin_vsx_xvcvhpsp) + #if defined(__LITTLE_ENDIAN__) + return __builtin_vsx_xvcvhpsp({ + half[0], 0, + half[1], 0, + half[2], 0, + half[3], 0 + }); + #else + return __builtin_vsx_xvcvhpsp({ + 0, half[0], + 0, half[1], + 0, half[2], + 0, half[3] + }); + #endif #else U32 wide = cast(half); // A half is 1-5-10 sign-exponent-mantissa, with 15 exponent bias. @@ -189,6 +208,13 @@ SI U16 Half_from_F(F f) { return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION ); #elif defined(USING_AVX_F16C) return (U16)__builtin_ia32_vcvtps2ph256(f, 0x04/*_MM_FROUND_CUR_DIRECTION*/); +#elif defined(JUMPER_IS_VSX) && __has_builtin(__builtin_vsx_xvcvsphp) + __vector unsigned short v = __builtin_vsx_xvcvsphp(f); + #if defined(__LITTLE_ENDIAN__) + return U16{v[0], v[2], v[4], v[6]}; + #else + return U16{v[1], v[3], v[5], v[7]}; + #endif #else // A float is 1-8-23 sign-exponent-mantissa, with 127 exponent bias. U32 sem = bit_pun(f), @@ -245,6 +271,8 @@ SI F floor_(F x) { return __builtin_ia32_roundps256(x, 0x01/*_MM_FROUND_FLOOR*/); #elif defined(__SSE4_1__) return _mm_floor_ps(x); +#elif defined(USING_VSX) + return vec_floor(x); #else // Round trip through integers with a truncating cast. F roundtrip = cast(cast(x)); @@ -1543,5 +1571,8 @@ static void run_program(const Op* program, const void** arguments, #if defined(USING_NEON_FP16) #undef USING_NEON_FP16 #endif +#if defined(USING_VSX) + #undef USING_VSX +#endif #undef FALLTHROUGH diff --git a/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc b/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc index b720be4e6d5..54ee0829eaa 100644 --- a/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc +++ b/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc @@ -30,11 +30,7 @@ bool VectorDifference(const uint8_t* image1, const uint8_t* image2) { static bool (*diff_proc)(const uint8_t*, const uint8_t*) = nullptr; if (!diff_proc) { -#if defined(WEBRTC_ARCH_ARM_FAMILY) || defined(WEBRTC_ARCH_MIPS_FAMILY) - // For ARM and MIPS processors, always use C version. - // TODO(hclam): Implement a NEON version. - diff_proc = &VectorDifference_C; -#else +#if defined(WEBRTC_ARCH_X86_FAMILY) bool have_sse2 = GetCPUInfo(kSSE2) != 0; // For x86 processors, check if SSE2 is supported. if (have_sse2 && kBlockSize == 32) { -- 2.37.3 From 46cc5f53fedb47667a8dc098c8de5cb5dd24b330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Thu, 29 Sep 2022 21:08:14 +0200 Subject: [PATCH] updates for glibc 2.34 --- chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h | 4 ++-- .../linux/seccomp-bpf-helpers/sigsys_handlers.cc | 11 ++++++++++- chromium/sandbox/linux/services/credentials.cc | 7 ++++++- .../sandbox/policy/linux/bpf_renderer_policy_linux.cc | 2 +- .../sandbox/policy/linux/bpf_utility_policy_linux.cc | 2 +- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h b/chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h index 0ca3a326f77..64cd4557a70 100644 --- a/chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +++ b/chromium/sandbox/linux/bpf_dsl/linux_syscall_ranges.h @@ -58,9 +58,9 @@ #elif defined(__powerpc64__) -#include +#include #define MIN_SYSCALL 0u -#define MAX_PUBLIC_SYSCALL 386u +#define MAX_PUBLIC_SYSCALL __NR_syscalls #define MAX_SYSCALL MAX_PUBLIC_SYSCALL #else diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc index 13e71801f62..422b2973e34 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc @@ -362,7 +362,16 @@ intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args, if (args.nr == __NR_fstatat_default) { if (*reinterpret_cast(args.args[1]) == '\0' && args.args[3] == static_cast(AT_EMPTY_PATH)) { - return syscall(__NR_fstat_default, static_cast(args.args[0]), + int fd = static_cast(args.args[0]); +#if defined(__powerpc64__) + // On ppc64+glibc, some syscalls seem to accidentally negate the first + // parameter which causes checks against it to fail. For now, manually + // negate them back. + // TODO: Investigate the root cause and fix in glibc + if (fd < 0) + fd = -fd; +#endif + return syscall(__NR_fstat_default, fd, reinterpret_cast(args.args[2])); } return -reinterpret_cast(fs_denied_errno); diff --git a/chromium/sandbox/linux/services/credentials.cc b/chromium/sandbox/linux/services/credentials.cc index 2be97817202..1452256a6a3 100644 --- a/chromium/sandbox/linux/services/credentials.cc +++ b/chromium/sandbox/linux/services/credentials.cc @@ -90,12 +90,17 @@ bool ChrootToSafeEmptyDir() { int clone_flags = CLONE_FS | LINUX_SIGCHLD; void* tls = nullptr; -#if defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY) +#if defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY) // Use CLONE_VM | CLONE_VFORK as an optimization to avoid copying page tables. // Since clone writes to the new child's TLS before returning, we must set a // new TLS to avoid corrupting the current process's TLS. On ARCH_CPU_X86, // glibc performs syscalls by calling a function pointer in TLS, so we do not // attempt this optimization. + // + // NOTE: Without CLONE_VM, fontconfig will attempt to reload configuration + // in every thread. Since the rendered threads are sandboxed without + // filesystem access (e.g. to /etc/fonts/fonts.conf) this will cause font + // configuration loading failures and no fonts will be displayed! clone_flags |= CLONE_VM | CLONE_VFORK | CLONE_SETTLS; // PTHREAD_STACK_MIN can be dynamic in glibc2.34+, so it is not possible to diff --git a/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc b/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc index 1dc78a20921..bf1ad554deb 100644 --- a/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc +++ b/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc @@ -73,7 +73,7 @@ ResultExpr RendererProcessPolicy::EvaluateSyscall(int sysno) const { case __NR_ftruncate64: #endif #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_getrlimit: case __NR_setrlimit: // We allow setrlimit to dynamically adjust the address space limit as diff --git a/chromium/sandbox/policy/linux/bpf_utility_policy_linux.cc b/chromium/sandbox/policy/linux/bpf_utility_policy_linux.cc index dfe9e9c55a7..804a2d96060 100644 --- a/chromium/sandbox/policy/linux/bpf_utility_policy_linux.cc +++ b/chromium/sandbox/policy/linux/bpf_utility_policy_linux.cc @@ -34,7 +34,7 @@ ResultExpr UtilityProcessPolicy::EvaluateSyscall(int sysno) const { case __NR_fdatasync: case __NR_fsync: #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ - defined(__aarch64__) + defined(__aarch64__) || defined(__powerpc64__) case __NR_getrlimit: #endif #if defined(__i386__) || defined(__arm__) -- 2.37.3