Repo created

This commit is contained in:
Fr4nz D13trich 2025-11-22 14:04:28 +01:00
parent 81b91f4139
commit f8c34fa5ee
22732 changed files with 4815320 additions and 2 deletions

View file

@ -0,0 +1,5 @@
tomfinegan@chromium.org
johannkoenig@google.com
jzern@chromium.org
jzern@google.com
# COMPONENT: Internals>Media>Video

View file

@ -0,0 +1,49 @@
Name: libvpx
URL: http://www.webmproject.org
Version: v1.8.2
CPEPrefix: cpe:/a:john_koleszar:libvpx:1.8.2
License: BSD
License File: source/libvpx/LICENSE
Security Critical: yes
Date: Tuesday March 31 2020
Branch: master
Commit: 667138e1f0581772de2b990e144bcd6c49a6adb8
Description:
Contains the sources used to compile libvpx binaries used by Google Chrome and
Chromium.
The libvpx source is from webmproject.org:
http://www.webmproject.org/code/
https://chromium.googlesource.com/webm/libvpx
Please follow these steps to update libvpx source code:
1. Update the code:
roll_dep.py \
-r <libvpx OWNER> \
--log-limit 20 \
--roll-to <libvpx hash> \
src/third_party/libvpx/source/libvpx
Use the generated commit message for the roll.
2. Generate .gni and config files.
cd third_party/libvpx
./generate_gni.sh
3. Update 'Branch' in README.chromium if necessary.
Tools needed to build libvpx:
- generate_gni.sh
Generate config and .gni files that contain the source list for each platform.
Configuration for the build is taken from vpx_config.h for each platform.
- lint_config.sh
A tool to verify vpx_config.h and vpx_config.asm are matched. This also
prints the final configuration after checking.

View file

@ -0,0 +1,445 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
/*
This file was copied from /bionic/libc/kernel/uapi/linux/elf.h of android
source tree and has below changes.
- Removed included header file linux/types.h, linux/elf-em.h
- Added stdint.h
- Replaced __u32 with uint32_t
- Replaced __u16 with uint16_t
- Replaced __u64 with uint64_t
- Replaced __s32 with int32_t
- Replaced __s16 with int16_t
- Replaced __s64 with int64_t
*/
#ifndef _UAPI_LINUX_ELF_H
#define _UAPI_LINUX_ELF_H
#include <stdint.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
typedef uint32_t Elf32_Addr;
typedef uint16_t Elf32_Half;
typedef uint32_t Elf32_Off;
typedef int32_t Elf32_Sword;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
typedef uint32_t Elf32_Word;
typedef uint64_t Elf64_Addr;
typedef uint16_t Elf64_Half;
typedef int16_t Elf64_SHalf;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
typedef uint64_t Elf64_Off;
typedef int32_t Elf64_Sword;
typedef uint32_t Elf64_Word;
typedef uint64_t Elf64_Xword;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
typedef int64_t Elf64_Sxword;
#define PT_NULL 0
#define PT_LOAD 1
#define PT_DYNAMIC 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PT_INTERP 3
#define PT_NOTE 4
#define PT_SHLIB 5
#define PT_PHDR 6
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PT_TLS 7
#define PT_LOOS 0x60000000
#define PT_HIOS 0x6fffffff
#define PT_LOPROC 0x70000000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PT_HIPROC 0x7fffffff
#define PT_GNU_EH_FRAME 0x6474e550
#define PT_GNU_STACK (PT_LOOS + 0x474e551)
#define PN_XNUM 0xffff
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ET_NONE 0
#define ET_REL 1
#define ET_EXEC 2
#define ET_DYN 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ET_CORE 4
#define ET_LOPROC 0xff00
#define ET_HIPROC 0xffff
#define DT_NULL 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_NEEDED 1
#define DT_PLTRELSZ 2
#define DT_PLTGOT 3
#define DT_HASH 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_STRTAB 5
#define DT_SYMTAB 6
#define DT_RELA 7
#define DT_RELASZ 8
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_RELAENT 9
#define DT_STRSZ 10
#define DT_SYMENT 11
#define DT_INIT 12
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_FINI 13
#define DT_SONAME 14
#define DT_RPATH 15
#define DT_SYMBOLIC 16
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_REL 17
#define DT_RELSZ 18
#define DT_RELENT 19
#define DT_PLTREL 20
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_DEBUG 21
#define DT_TEXTREL 22
#define DT_JMPREL 23
#define DT_ENCODING 32
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define OLD_DT_LOOS 0x60000000
#define DT_LOOS 0x6000000d
#define DT_HIOS 0x6ffff000
#define DT_VALRNGLO 0x6ffffd00
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_VALRNGHI 0x6ffffdff
#define DT_ADDRRNGLO 0x6ffffe00
#define DT_ADDRRNGHI 0x6ffffeff
#define DT_VERSYM 0x6ffffff0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_RELACOUNT 0x6ffffff9
#define DT_RELCOUNT 0x6ffffffa
#define DT_FLAGS_1 0x6ffffffb
#define DT_VERDEF 0x6ffffffc
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_VERDEFNUM 0x6ffffffd
#define DT_VERNEED 0x6ffffffe
#define DT_VERNEEDNUM 0x6fffffff
#define OLD_DT_HIOS 0x6fffffff
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DT_LOPROC 0x70000000
#define DT_HIPROC 0x7fffffff
#define STB_LOCAL 0
#define STB_GLOBAL 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define STB_WEAK 2
#define STT_NOTYPE 0
#define STT_OBJECT 1
#define STT_FUNC 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define STT_SECTION 3
#define STT_FILE 4
#define STT_COMMON 5
#define STT_TLS 6
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ELF_ST_BIND(x) ((x) >> 4)
#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
#define ELF32_ST_BIND(x) ELF_ST_BIND(x)
#define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ELF64_ST_BIND(x) ELF_ST_BIND(x)
#define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
typedef struct dynamic{
Elf32_Sword d_tag;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
union{
Elf32_Sword d_val;
Elf32_Addr d_ptr;
} d_un;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
} Elf32_Dyn;
typedef struct {
Elf64_Sxword d_tag;
union {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Xword d_val;
Elf64_Addr d_ptr;
} d_un;
} Elf64_Dyn;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ELF32_R_SYM(x) ((x) >> 8)
#define ELF32_R_TYPE(x) ((x) & 0xff)
#define ELF64_R_SYM(i) ((i) >> 32)
#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
typedef struct elf32_rel {
Elf32_Addr r_offset;
Elf32_Word r_info;
} Elf32_Rel;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
typedef struct elf64_rel {
Elf64_Addr r_offset;
Elf64_Xword r_info;
} Elf64_Rel;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
typedef struct elf32_rela{
Elf32_Addr r_offset;
Elf32_Word r_info;
Elf32_Sword r_addend;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
} Elf32_Rela;
typedef struct elf64_rela {
Elf64_Addr r_offset;
Elf64_Xword r_info;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Sxword r_addend;
} Elf64_Rela;
typedef struct elf32_sym{
Elf32_Word st_name;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Addr st_value;
Elf32_Word st_size;
unsigned char st_info;
unsigned char st_other;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Half st_shndx;
} Elf32_Sym;
typedef struct elf64_sym {
Elf64_Word st_name;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned char st_info;
unsigned char st_other;
Elf64_Half st_shndx;
Elf64_Addr st_value;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Xword st_size;
} Elf64_Sym;
#define EI_NIDENT 16
typedef struct elf32_hdr{
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
typedef struct elf64_hdr {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned char e_ident[EI_NIDENT];
Elf64_Half e_type;
Elf64_Half e_machine;
Elf64_Word e_version;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Addr e_entry;
Elf64_Off e_phoff;
Elf64_Off e_shoff;
Elf64_Word e_flags;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Half e_ehsize;
Elf64_Half e_phentsize;
Elf64_Half e_phnum;
Elf64_Half e_shentsize;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Half e_shnum;
Elf64_Half e_shstrndx;
} Elf64_Ehdr;
#define PF_R 0x4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PF_W 0x2
#define PF_X 0x1
typedef struct elf32_phdr{
Elf32_Word p_type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Off p_offset;
Elf32_Addr p_vaddr;
Elf32_Addr p_paddr;
Elf32_Word p_filesz;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Word p_memsz;
Elf32_Word p_flags;
Elf32_Word p_align;
} Elf32_Phdr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
typedef struct elf64_phdr {
Elf64_Word p_type;
Elf64_Word p_flags;
Elf64_Off p_offset;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Addr p_vaddr;
Elf64_Addr p_paddr;
Elf64_Xword p_filesz;
Elf64_Xword p_memsz;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Xword p_align;
} Elf64_Phdr;
#define SHT_NULL 0
#define SHT_PROGBITS 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SHT_SYMTAB 2
#define SHT_STRTAB 3
#define SHT_RELA 4
#define SHT_HASH 5
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SHT_DYNAMIC 6
#define SHT_NOTE 7
#define SHT_NOBITS 8
#define SHT_REL 9
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SHT_SHLIB 10
#define SHT_DYNSYM 11
#define SHT_NUM 12
#define SHT_LOPROC 0x70000000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SHT_HIPROC 0x7fffffff
#define SHT_LOUSER 0x80000000
#define SHT_HIUSER 0xffffffff
#define SHF_WRITE 0x1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SHF_ALLOC 0x2
#define SHF_EXECINSTR 0x4
#define SHF_MASKPROC 0xf0000000
#define SHN_UNDEF 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SHN_LORESERVE 0xff00
#define SHN_LOPROC 0xff00
#define SHN_HIPROC 0xff1f
#define SHN_ABS 0xfff1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SHN_COMMON 0xfff2
#define SHN_HIRESERVE 0xffff
typedef struct elf32_shdr {
Elf32_Word sh_name;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Word sh_type;
Elf32_Word sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Word sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Word sh_addralign;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Word sh_entsize;
} Elf32_Shdr;
typedef struct elf64_shdr {
Elf64_Word sh_name;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Word sh_type;
Elf64_Xword sh_flags;
Elf64_Addr sh_addr;
Elf64_Off sh_offset;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Xword sh_size;
Elf64_Word sh_link;
Elf64_Word sh_info;
Elf64_Xword sh_addralign;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Xword sh_entsize;
} Elf64_Shdr;
#define EI_MAG0 0
#define EI_MAG1 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define EI_MAG2 2
#define EI_MAG3 3
#define EI_CLASS 4
#define EI_DATA 5
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define EI_VERSION 6
#define EI_OSABI 7
#define EI_PAD 8
#define ELFMAG0 0x7f
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ELFMAG1 'E'
#define ELFMAG2 'L'
#define ELFMAG3 'F'
#define ELFMAG "\177ELF"
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SELFMAG 4
#define ELFCLASSNONE 0
#define ELFCLASS32 1
#define ELFCLASS64 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ELFCLASSNUM 3
#define ELFDATANONE 0
#define ELFDATA2LSB 1
#define ELFDATA2MSB 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define EV_NONE 0
#define EV_CURRENT 1
#define EV_NUM 2
#define ELFOSABI_NONE 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ELFOSABI_LINUX 3
#ifndef ELF_OSABI
#define ELF_OSABI ELFOSABI_NONE
#endif
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NT_PRSTATUS 1
#define NT_PRFPREG 2
#define NT_PRPSINFO 3
#define NT_TASKSTRUCT 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NT_AUXV 6
#define NT_SIGINFO 0x53494749
#define NT_FILE 0x46494c45
#define NT_PRXFPREG 0x46e62b7f
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NT_PPC_VMX 0x100
#define NT_PPC_SPE 0x101
#define NT_PPC_VSX 0x102
#define NT_386_TLS 0x200
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NT_386_IOPERM 0x201
#define NT_X86_XSTATE 0x202
#define NT_S390_HIGH_GPRS 0x300
#define NT_S390_TIMER 0x301
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NT_S390_TODCMP 0x302
#define NT_S390_TODPREG 0x303
#define NT_S390_CTRS 0x304
#define NT_S390_PREFIX 0x305
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NT_S390_LAST_BREAK 0x306
#define NT_S390_SYSTEM_CALL 0x307
#define NT_S390_TDB 0x308
#define NT_ARM_VFP 0x400
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NT_ARM_TLS 0x401
#define NT_ARM_HW_BREAK 0x402
#define NT_ARM_HW_WATCH 0x403
#define NT_METAG_CBUF 0x500
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NT_METAG_RPIPE 0x501
#define NT_METAG_TLS 0x502
typedef struct elf32_note {
Elf32_Word n_namesz;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf32_Word n_descsz;
Elf32_Word n_type;
} Elf32_Nhdr;
typedef struct elf64_note {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Elf64_Word n_namesz;
Elf64_Word n_descsz;
Elf64_Word n_type;
} Elf64_Nhdr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif

View file

@ -0,0 +1,713 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_bilinear_predict4x4)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_bilinear_predict8x4)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_bilinear_predict8x8)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_c
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
#define vp8_copy32xn vp8_copy32xn_c
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem16x16_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
RTCD_EXTERN void (*vp8_copy_mem16x16)(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x4_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
RTCD_EXTERN void (*vp8_copy_mem8x4)(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x8_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
RTCD_EXTERN void (*vp8_copy_mem8x8)(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_dc_only_idct_add_neon(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
RTCD_EXTERN void (*vp8_dc_only_idct_add)(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_neon(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
RTCD_EXTERN int (*vp8_denoiser_filter)(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_uv_neon(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
RTCD_EXTERN int (*vp8_denoiser_filter_uv)(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
void vp8_dequant_idct_add_neon(short* input,
short* dq,
unsigned char* dest,
int stride);
RTCD_EXTERN void (*vp8_dequant_idct_add)(short* input,
short* dq,
unsigned char* dest,
int stride);
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
void vp8_dequant_idct_add_uv_block_neon(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
RTCD_EXTERN void (*vp8_dequant_idct_add_uv_block)(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
void vp8_dequant_idct_add_y_block_neon(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
RTCD_EXTERN void (*vp8_dequant_idct_add_y_block)(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
void vp8_dequantize_b_c(struct blockd*, short* DQC);
void vp8_dequantize_b_neon(struct blockd*, short* DQC);
RTCD_EXTERN void (*vp8_dequantize_b)(struct blockd*, short* DQC);
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sad_c
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
void vp8_fast_quantize_b_neon(struct block*, struct blockd*);
RTCD_EXTERN void (*vp8_fast_quantize_b)(struct block*, struct blockd*);
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_full_search_sad vp8_full_search_sad_c
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
RTCD_EXTERN void (*vp8_loop_filter_bh)(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
RTCD_EXTERN void (*vp8_loop_filter_bv)(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
RTCD_EXTERN void (*vp8_loop_filter_mbh)(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
RTCD_EXTERN void (*vp8_loop_filter_mbv)(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
RTCD_EXTERN void (*vp8_loop_filter_simple_bh)(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
RTCD_EXTERN void (*vp8_loop_filter_simple_bv)(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
RTCD_EXTERN void (*vp8_loop_filter_simple_mbh)(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
RTCD_EXTERN void (*vp8_loop_filter_simple_mbv)(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_c
int vp8_mbuverror_c(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_c
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sad_c
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
#define vp8_regular_quantize_b vp8_regular_quantize_b_c
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
void vp8_short_fdct4x4_neon(short* input, short* output, int pitch);
RTCD_EXTERN void (*vp8_short_fdct4x4)(short* input, short* output, int pitch);
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
void vp8_short_fdct8x4_neon(short* input, short* output, int pitch);
RTCD_EXTERN void (*vp8_short_fdct8x4)(short* input, short* output, int pitch);
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_short_idct4x4llm_neon(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
RTCD_EXTERN void (*vp8_short_idct4x4llm)(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
void vp8_short_inv_walsh4x4_neon(short* input, short* mb_dqcoeff);
RTCD_EXTERN void (*vp8_short_inv_walsh4x4)(short* input, short* mb_dqcoeff);
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
void vp8_short_walsh4x4_neon(short* input, short* output, int pitch);
RTCD_EXTERN void (*vp8_short_walsh4x4)(short* input, short* output, int pitch);
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict16x16)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict4x4)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict8x4)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_c;
if (flags & HAS_NEON)
vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_neon;
vp8_bilinear_predict4x4 = vp8_bilinear_predict4x4_c;
if (flags & HAS_NEON)
vp8_bilinear_predict4x4 = vp8_bilinear_predict4x4_neon;
vp8_bilinear_predict8x4 = vp8_bilinear_predict8x4_c;
if (flags & HAS_NEON)
vp8_bilinear_predict8x4 = vp8_bilinear_predict8x4_neon;
vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_c;
if (flags & HAS_NEON)
vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_neon;
vp8_copy_mem16x16 = vp8_copy_mem16x16_c;
if (flags & HAS_NEON)
vp8_copy_mem16x16 = vp8_copy_mem16x16_neon;
vp8_copy_mem8x4 = vp8_copy_mem8x4_c;
if (flags & HAS_NEON)
vp8_copy_mem8x4 = vp8_copy_mem8x4_neon;
vp8_copy_mem8x8 = vp8_copy_mem8x8_c;
if (flags & HAS_NEON)
vp8_copy_mem8x8 = vp8_copy_mem8x8_neon;
vp8_dc_only_idct_add = vp8_dc_only_idct_add_c;
if (flags & HAS_NEON)
vp8_dc_only_idct_add = vp8_dc_only_idct_add_neon;
vp8_denoiser_filter = vp8_denoiser_filter_c;
if (flags & HAS_NEON)
vp8_denoiser_filter = vp8_denoiser_filter_neon;
vp8_denoiser_filter_uv = vp8_denoiser_filter_uv_c;
if (flags & HAS_NEON)
vp8_denoiser_filter_uv = vp8_denoiser_filter_uv_neon;
vp8_dequant_idct_add = vp8_dequant_idct_add_c;
if (flags & HAS_NEON)
vp8_dequant_idct_add = vp8_dequant_idct_add_neon;
vp8_dequant_idct_add_uv_block = vp8_dequant_idct_add_uv_block_c;
if (flags & HAS_NEON)
vp8_dequant_idct_add_uv_block = vp8_dequant_idct_add_uv_block_neon;
vp8_dequant_idct_add_y_block = vp8_dequant_idct_add_y_block_c;
if (flags & HAS_NEON)
vp8_dequant_idct_add_y_block = vp8_dequant_idct_add_y_block_neon;
vp8_dequantize_b = vp8_dequantize_b_c;
if (flags & HAS_NEON)
vp8_dequantize_b = vp8_dequantize_b_neon;
vp8_fast_quantize_b = vp8_fast_quantize_b_c;
if (flags & HAS_NEON)
vp8_fast_quantize_b = vp8_fast_quantize_b_neon;
vp8_loop_filter_bh = vp8_loop_filter_bh_c;
if (flags & HAS_NEON)
vp8_loop_filter_bh = vp8_loop_filter_bh_neon;
vp8_loop_filter_bv = vp8_loop_filter_bv_c;
if (flags & HAS_NEON)
vp8_loop_filter_bv = vp8_loop_filter_bv_neon;
vp8_loop_filter_mbh = vp8_loop_filter_mbh_c;
if (flags & HAS_NEON)
vp8_loop_filter_mbh = vp8_loop_filter_mbh_neon;
vp8_loop_filter_mbv = vp8_loop_filter_mbv_c;
if (flags & HAS_NEON)
vp8_loop_filter_mbv = vp8_loop_filter_mbv_neon;
vp8_loop_filter_simple_bh = vp8_loop_filter_bhs_c;
if (flags & HAS_NEON)
vp8_loop_filter_simple_bh = vp8_loop_filter_bhs_neon;
vp8_loop_filter_simple_bv = vp8_loop_filter_bvs_c;
if (flags & HAS_NEON)
vp8_loop_filter_simple_bv = vp8_loop_filter_bvs_neon;
vp8_loop_filter_simple_mbh = vp8_loop_filter_simple_horizontal_edge_c;
if (flags & HAS_NEON)
vp8_loop_filter_simple_mbh = vp8_loop_filter_mbhs_neon;
vp8_loop_filter_simple_mbv = vp8_loop_filter_simple_vertical_edge_c;
if (flags & HAS_NEON)
vp8_loop_filter_simple_mbv = vp8_loop_filter_mbvs_neon;
vp8_short_fdct4x4 = vp8_short_fdct4x4_c;
if (flags & HAS_NEON)
vp8_short_fdct4x4 = vp8_short_fdct4x4_neon;
vp8_short_fdct8x4 = vp8_short_fdct8x4_c;
if (flags & HAS_NEON)
vp8_short_fdct8x4 = vp8_short_fdct8x4_neon;
vp8_short_idct4x4llm = vp8_short_idct4x4llm_c;
if (flags & HAS_NEON)
vp8_short_idct4x4llm = vp8_short_idct4x4llm_neon;
vp8_short_inv_walsh4x4 = vp8_short_inv_walsh4x4_c;
if (flags & HAS_NEON)
vp8_short_inv_walsh4x4 = vp8_short_inv_walsh4x4_neon;
vp8_short_walsh4x4 = vp8_short_walsh4x4_c;
if (flags & HAS_NEON)
vp8_short_walsh4x4 = vp8_short_walsh4x4_neon;
vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_c;
if (flags & HAS_NEON)
vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_neon;
vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_c;
if (flags & HAS_NEON)
vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_neon;
vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_c;
if (flags & HAS_NEON)
vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_neon;
vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_c;
if (flags & HAS_NEON)
vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_neon;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,287 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
#define vp9_block_error vp9_block_error_c
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int64_t vp9_block_error_fp_neon(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
RTCD_EXTERN int64_t (*vp9_block_error_fp)(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
int vp9_denoiser_filter_neon(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
RTCD_EXTERN int (*vp9_denoiser_filter)(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
#define vp9_diamond_search_sad vp9_diamond_search_sad_c
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_c
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_c
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_c
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht16x16_256_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
RTCD_EXTERN void (*vp9_iht16x16_256_add)(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht4x4_16_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
RTCD_EXTERN void (*vp9_iht4x4_16_add)(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht8x8_64_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
RTCD_EXTERN void (*vp9_iht8x8_64_add)(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
RTCD_EXTERN void (*vp9_quantize_fp)(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
RTCD_EXTERN void (*vp9_quantize_fp_32x32)(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_scale_and_extend_frame_neon(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
RTCD_EXTERN void (*vp9_scale_and_extend_frame)(
const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
vp9_block_error_fp = vp9_block_error_fp_c;
if (flags & HAS_NEON)
vp9_block_error_fp = vp9_block_error_fp_neon;
vp9_denoiser_filter = vp9_denoiser_filter_c;
if (flags & HAS_NEON)
vp9_denoiser_filter = vp9_denoiser_filter_neon;
vp9_iht16x16_256_add = vp9_iht16x16_256_add_c;
if (flags & HAS_NEON)
vp9_iht16x16_256_add = vp9_iht16x16_256_add_neon;
vp9_iht4x4_16_add = vp9_iht4x4_16_add_c;
if (flags & HAS_NEON)
vp9_iht4x4_16_add = vp9_iht4x4_16_add_neon;
vp9_iht8x8_64_add = vp9_iht8x8_64_add_c;
if (flags & HAS_NEON)
vp9_iht8x8_64_add = vp9_iht8x8_64_add_neon;
vp9_quantize_fp = vp9_quantize_fp_c;
if (flags & HAS_NEON)
vp9_quantize_fp = vp9_quantize_fp_neon;
vp9_quantize_fp_32x32 = vp9_quantize_fp_32x32_c;
if (flags & HAS_NEON)
vp9_quantize_fp_32x32 = vp9_quantize_fp_32x32_neon;
vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_c;
if (flags & HAS_NEON)
vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_neon;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,98 @@
@ This file was created from a .asm file
@ using the ads2gas.pl script.
.syntax unified
.equ VPX_ARCH_ARM , 1
.equ ARCH_ARM , 1
.equ VPX_ARCH_MIPS , 0
.equ ARCH_MIPS , 0
.equ VPX_ARCH_X86 , 0
.equ ARCH_X86 , 0
.equ VPX_ARCH_X86_64 , 0
.equ ARCH_X86_64 , 0
.equ VPX_ARCH_PPC , 0
.equ ARCH_PPC , 0
.equ HAVE_NEON , 1
.equ HAVE_NEON_ASM , 1
.equ HAVE_MIPS32 , 0
.equ HAVE_DSPR2 , 0
.equ HAVE_MSA , 0
.equ HAVE_MIPS64 , 0
.equ HAVE_MMX , 0
.equ HAVE_SSE , 0
.equ HAVE_SSE2 , 0
.equ HAVE_SSE3 , 0
.equ HAVE_SSSE3 , 0
.equ HAVE_SSE4_1 , 0
.equ HAVE_AVX , 0
.equ HAVE_AVX2 , 0
.equ HAVE_AVX512 , 0
.equ HAVE_VSX , 0
.equ HAVE_MMI , 0
.equ HAVE_VPX_PORTS , 1
.equ HAVE_PTHREAD_H , 1
.equ HAVE_UNISTD_H , 0
.equ CONFIG_DEPENDENCY_TRACKING , 1
.equ CONFIG_EXTERNAL_BUILD , 1
.equ CONFIG_INSTALL_DOCS , 0
.equ CONFIG_INSTALL_BINS , 1
.equ CONFIG_INSTALL_LIBS , 1
.equ CONFIG_INSTALL_SRCS , 0
.equ CONFIG_DEBUG , 0
.equ CONFIG_GPROF , 0
.equ CONFIG_GCOV , 0
.equ CONFIG_RVCT , 0
.equ CONFIG_GCC , 1
.equ CONFIG_MSVS , 0
.equ CONFIG_PIC , 0
.equ CONFIG_BIG_ENDIAN , 0
.equ CONFIG_CODEC_SRCS , 0
.equ CONFIG_DEBUG_LIBS , 0
.equ CONFIG_DEQUANT_TOKENS , 0
.equ CONFIG_DC_RECON , 0
.equ CONFIG_RUNTIME_CPU_DETECT , 1
.equ CONFIG_POSTPROC , 1
.equ CONFIG_VP9_POSTPROC , 1
.equ CONFIG_MULTITHREAD , 1
.equ CONFIG_INTERNAL_STATS , 0
.equ CONFIG_VP8_ENCODER , 1
.equ CONFIG_VP8_DECODER , 1
.equ CONFIG_VP9_ENCODER , 1
.equ CONFIG_VP9_DECODER , 1
.equ CONFIG_VP8 , 1
.equ CONFIG_VP9 , 1
.equ CONFIG_ENCODERS , 1
.equ CONFIG_DECODERS , 1
.equ CONFIG_STATIC_MSVCRT , 0
.equ CONFIG_SPATIAL_RESAMPLING , 1
.equ CONFIG_REALTIME_ONLY , 1
.equ CONFIG_ONTHEFLY_BITPACKING , 0
.equ CONFIG_ERROR_CONCEALMENT , 0
.equ CONFIG_SHARED , 0
.equ CONFIG_STATIC , 1
.equ CONFIG_SMALL , 0
.equ CONFIG_POSTPROC_VISUALIZER , 0
.equ CONFIG_OS_SUPPORT , 1
.equ CONFIG_UNIT_TESTS , 1
.equ CONFIG_WEBM_IO , 1
.equ CONFIG_LIBYUV , 0
.equ CONFIG_DECODE_PERF_TESTS , 0
.equ CONFIG_ENCODE_PERF_TESTS , 0
.equ CONFIG_MULTI_RES_ENCODING , 1
.equ CONFIG_TEMPORAL_DENOISING , 1
.equ CONFIG_VP9_TEMPORAL_DENOISING , 1
.equ CONFIG_CONSISTENT_RECODE , 0
.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0
.equ CONFIG_VP9_HIGHBITDEPTH , 0
.equ CONFIG_BETTER_HW_COMPATIBILITY , 0
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_ALWAYS_ADJUST_BPM , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_MISMATCH_DEBUG , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_EMULATE_HARDWARE , 0
.equ CONFIG_NON_GREEDY_MV , 0
.equ CONFIG_RATE_CTRL , 0
.equ DECODE_WIDTH_LIMIT , 16384
.equ DECODE_HEIGHT_LIMIT , 16384
.section .note.GNU-stack,"",%progbits

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=armv7-linux-gcc --enable-runtime-cpu-detect --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 1
#define ARCH_ARM 1
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 0
#define ARCH_X86 0
#define VPX_ARCH_X86_64 0
#define ARCH_X86_64 0
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 1
#define HAVE_NEON_ASM 1
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 0
#define HAVE_SSE 0
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSSE3 0
#define HAVE_SSE4_1 0
#define HAVE_AVX 0
#define HAVE_AVX2 0
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 0
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 1
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,101 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,505 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_neon
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_neon
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_neon
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_neon
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_c
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
#define vp8_copy32xn vp8_copy32xn_c
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem16x16_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem16x16 vp8_copy_mem16x16_neon
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x4_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x4 vp8_copy_mem8x4_neon
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x8_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x8 vp8_copy_mem8x8_neon
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_dc_only_idct_add_neon(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_neon
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_neon(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter vp8_denoiser_filter_neon
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_uv_neon(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_neon
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
void vp8_dequant_idct_add_neon(short* input,
short* dq,
unsigned char* dest,
int stride);
#define vp8_dequant_idct_add vp8_dequant_idct_add_neon
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
void vp8_dequant_idct_add_uv_block_neon(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_neon
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
void vp8_dequant_idct_add_y_block_neon(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_neon
void vp8_dequantize_b_c(struct blockd*, short* DQC);
void vp8_dequantize_b_neon(struct blockd*, short* DQC);
#define vp8_dequantize_b vp8_dequantize_b_neon
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sad_c
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
void vp8_fast_quantize_b_neon(struct block*, struct blockd*);
#define vp8_fast_quantize_b vp8_fast_quantize_b_neon
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_full_search_sad vp8_full_search_sad_c
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bh vp8_loop_filter_bh_neon
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bv vp8_loop_filter_bv_neon
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_neon
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_neon
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_neon
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_neon
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbh vp8_loop_filter_mbhs_neon
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbv vp8_loop_filter_mbvs_neon
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_c
int vp8_mbuverror_c(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_c
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sad_c
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
#define vp8_regular_quantize_b vp8_regular_quantize_b_c
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
void vp8_short_fdct4x4_neon(short* input, short* output, int pitch);
#define vp8_short_fdct4x4 vp8_short_fdct4x4_neon
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
void vp8_short_fdct8x4_neon(short* input, short* output, int pitch);
#define vp8_short_fdct8x4 vp8_short_fdct8x4_neon
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_short_idct4x4llm_neon(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_neon
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
void vp8_short_inv_walsh4x4_neon(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_neon
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
void vp8_short_walsh4x4_neon(short* input, short* output, int pitch);
#define vp8_short_walsh4x4 vp8_short_walsh4x4_neon
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_neon
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_neon
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_neon
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_neon
void vp8_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,342 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
#define vp9_block_error vp9_block_error_c
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
#define vp9_block_error_fp vp9_block_error_fp_c
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
int vp9_denoiser_filter_neon(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
#define vp9_denoiser_filter vp9_denoiser_filter_neon
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
#define vp9_diamond_search_sad vp9_diamond_search_sad_c
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_c
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_c
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_c
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_c
int64_t vp9_highbd_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz,
int bd);
#define vp9_highbd_block_error vp9_highbd_block_error_c
void vp9_highbd_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht16x16 vp9_highbd_fht16x16_c
void vp9_highbd_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht4x4 vp9_highbd_fht4x4_c
void vp9_highbd_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht8x8 vp9_highbd_fht8x8_c
void vp9_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_highbd_fwht4x4 vp9_highbd_fwht4x4_c
void vp9_highbd_iht16x16_256_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht16x16_256_add_neon(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht16x16_256_add vp9_highbd_iht16x16_256_add_neon
void vp9_highbd_iht4x4_16_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht4x4_16_add_neon(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht4x4_16_add vp9_highbd_iht4x4_16_add_neon
void vp9_highbd_iht8x8_64_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht8x8_64_add_neon(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht8x8_64_add vp9_highbd_iht8x8_64_add_neon
void vp9_highbd_mbpost_proc_across_ip_c(uint16_t* src,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_across_ip vp9_highbd_mbpost_proc_across_ip_c
void vp9_highbd_mbpost_proc_down_c(uint16_t* dst,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_down vp9_highbd_mbpost_proc_down_c
void vp9_highbd_post_proc_down_and_across_c(const uint16_t* src_ptr,
uint16_t* dst_ptr,
int src_pixels_per_line,
int dst_pixels_per_line,
int rows,
int cols,
int flimit);
#define vp9_highbd_post_proc_down_and_across \
vp9_highbd_post_proc_down_and_across_c
void vp9_highbd_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp vp9_highbd_quantize_fp_c
void vp9_highbd_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp_32x32 vp9_highbd_quantize_fp_32x32_c
void vp9_highbd_temporal_filter_apply_c(const uint8_t* frame1,
unsigned int stride,
const uint8_t* frame2,
unsigned int block_width,
unsigned int block_height,
int strength,
int* blk_fw,
int use_32x32,
uint32_t* accumulator,
uint16_t* count);
#define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht16x16_256_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_neon
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht4x4_16_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_neon
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht8x8_64_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_neon
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp vp9_quantize_fp_neon
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_neon
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_scale_and_extend_frame_neon(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_neon
void vp9_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,98 @@
@ This file was created from a .asm file
@ using the ads2gas.pl script.
.syntax unified
.equ VPX_ARCH_ARM , 1
.equ ARCH_ARM , 1
.equ VPX_ARCH_MIPS , 0
.equ ARCH_MIPS , 0
.equ VPX_ARCH_X86 , 0
.equ ARCH_X86 , 0
.equ VPX_ARCH_X86_64 , 0
.equ ARCH_X86_64 , 0
.equ VPX_ARCH_PPC , 0
.equ ARCH_PPC , 0
.equ HAVE_NEON , 1
.equ HAVE_NEON_ASM , 1
.equ HAVE_MIPS32 , 0
.equ HAVE_DSPR2 , 0
.equ HAVE_MSA , 0
.equ HAVE_MIPS64 , 0
.equ HAVE_MMX , 0
.equ HAVE_SSE , 0
.equ HAVE_SSE2 , 0
.equ HAVE_SSE3 , 0
.equ HAVE_SSSE3 , 0
.equ HAVE_SSE4_1 , 0
.equ HAVE_AVX , 0
.equ HAVE_AVX2 , 0
.equ HAVE_AVX512 , 0
.equ HAVE_VSX , 0
.equ HAVE_MMI , 0
.equ HAVE_VPX_PORTS , 1
.equ HAVE_PTHREAD_H , 1
.equ HAVE_UNISTD_H , 0
.equ CONFIG_DEPENDENCY_TRACKING , 1
.equ CONFIG_EXTERNAL_BUILD , 1
.equ CONFIG_INSTALL_DOCS , 0
.equ CONFIG_INSTALL_BINS , 1
.equ CONFIG_INSTALL_LIBS , 1
.equ CONFIG_INSTALL_SRCS , 0
.equ CONFIG_DEBUG , 0
.equ CONFIG_GPROF , 0
.equ CONFIG_GCOV , 0
.equ CONFIG_RVCT , 0
.equ CONFIG_GCC , 1
.equ CONFIG_MSVS , 0
.equ CONFIG_PIC , 0
.equ CONFIG_BIG_ENDIAN , 0
.equ CONFIG_CODEC_SRCS , 0
.equ CONFIG_DEBUG_LIBS , 0
.equ CONFIG_DEQUANT_TOKENS , 0
.equ CONFIG_DC_RECON , 0
.equ CONFIG_RUNTIME_CPU_DETECT , 0
.equ CONFIG_POSTPROC , 1
.equ CONFIG_VP9_POSTPROC , 1
.equ CONFIG_MULTITHREAD , 1
.equ CONFIG_INTERNAL_STATS , 0
.equ CONFIG_VP8_ENCODER , 1
.equ CONFIG_VP8_DECODER , 1
.equ CONFIG_VP9_ENCODER , 1
.equ CONFIG_VP9_DECODER , 1
.equ CONFIG_VP8 , 1
.equ CONFIG_VP9 , 1
.equ CONFIG_ENCODERS , 1
.equ CONFIG_DECODERS , 1
.equ CONFIG_STATIC_MSVCRT , 0
.equ CONFIG_SPATIAL_RESAMPLING , 1
.equ CONFIG_REALTIME_ONLY , 1
.equ CONFIG_ONTHEFLY_BITPACKING , 0
.equ CONFIG_ERROR_CONCEALMENT , 0
.equ CONFIG_SHARED , 0
.equ CONFIG_STATIC , 1
.equ CONFIG_SMALL , 0
.equ CONFIG_POSTPROC_VISUALIZER , 0
.equ CONFIG_OS_SUPPORT , 1
.equ CONFIG_UNIT_TESTS , 1
.equ CONFIG_WEBM_IO , 1
.equ CONFIG_LIBYUV , 0
.equ CONFIG_DECODE_PERF_TESTS , 0
.equ CONFIG_ENCODE_PERF_TESTS , 0
.equ CONFIG_MULTI_RES_ENCODING , 1
.equ CONFIG_TEMPORAL_DENOISING , 1
.equ CONFIG_VP9_TEMPORAL_DENOISING , 1
.equ CONFIG_CONSISTENT_RECODE , 0
.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0
.equ CONFIG_VP9_HIGHBITDEPTH , 1
.equ CONFIG_BETTER_HW_COMPATIBILITY , 0
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_ALWAYS_ADJUST_BPM , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_MISMATCH_DEBUG , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_EMULATE_HARDWARE , 0
.equ CONFIG_NON_GREEDY_MV , 0
.equ CONFIG_RATE_CTRL , 0
.equ DECODE_WIDTH_LIMIT , 16384
.equ DECODE_HEIGHT_LIMIT , 16384
.section .note.GNU-stack,"",%progbits

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=armv7-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 1
#define ARCH_ARM 1
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 0
#define ARCH_X86 0
#define VPX_ARCH_X86_64 0
#define ARCH_X86_64 0
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 1
#define HAVE_NEON_ASM 1
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 0
#define HAVE_SSE 0
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSSE3 0
#define HAVE_SSE4_1 0
#define HAVE_AVX 0
#define HAVE_AVX2 0
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 0
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,101 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,505 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_neon
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_neon
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_neon
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_neon
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_c
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
#define vp8_copy32xn vp8_copy32xn_c
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem16x16_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem16x16 vp8_copy_mem16x16_neon
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x4_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x4 vp8_copy_mem8x4_neon
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x8_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x8 vp8_copy_mem8x8_neon
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_dc_only_idct_add_neon(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_neon
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_neon(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter vp8_denoiser_filter_neon
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_uv_neon(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_neon
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
void vp8_dequant_idct_add_neon(short* input,
short* dq,
unsigned char* dest,
int stride);
#define vp8_dequant_idct_add vp8_dequant_idct_add_neon
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
void vp8_dequant_idct_add_uv_block_neon(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_neon
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
void vp8_dequant_idct_add_y_block_neon(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_neon
void vp8_dequantize_b_c(struct blockd*, short* DQC);
void vp8_dequantize_b_neon(struct blockd*, short* DQC);
#define vp8_dequantize_b vp8_dequantize_b_neon
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sad_c
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
void vp8_fast_quantize_b_neon(struct block*, struct blockd*);
#define vp8_fast_quantize_b vp8_fast_quantize_b_neon
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_full_search_sad vp8_full_search_sad_c
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bh vp8_loop_filter_bh_neon
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bv vp8_loop_filter_bv_neon
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_neon
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_neon
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_neon
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_neon
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbh vp8_loop_filter_mbhs_neon
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbv vp8_loop_filter_mbvs_neon
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_c
int vp8_mbuverror_c(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_c
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sad_c
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
#define vp8_regular_quantize_b vp8_regular_quantize_b_c
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
void vp8_short_fdct4x4_neon(short* input, short* output, int pitch);
#define vp8_short_fdct4x4 vp8_short_fdct4x4_neon
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
void vp8_short_fdct8x4_neon(short* input, short* output, int pitch);
#define vp8_short_fdct8x4 vp8_short_fdct8x4_neon
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_short_idct4x4llm_neon(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_neon
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
void vp8_short_inv_walsh4x4_neon(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_neon
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
void vp8_short_walsh4x4_neon(short* input, short* output, int pitch);
#define vp8_short_walsh4x4 vp8_short_walsh4x4_neon
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_neon
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_neon
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_neon
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_neon
void vp8_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,219 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
#define vp9_block_error vp9_block_error_c
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int64_t vp9_block_error_fp_neon(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
#define vp9_block_error_fp vp9_block_error_fp_neon
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
int vp9_denoiser_filter_neon(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
#define vp9_denoiser_filter vp9_denoiser_filter_neon
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
#define vp9_diamond_search_sad vp9_diamond_search_sad_c
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_c
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_c
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_c
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht16x16_256_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_neon
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht4x4_16_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_neon
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht8x8_64_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_neon
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp vp9_quantize_fp_neon
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_neon
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_scale_and_extend_frame_neon(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_neon
void vp9_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,98 @@
@ This file was created from a .asm file
@ using the ads2gas.pl script.
.syntax unified
.equ VPX_ARCH_ARM , 1
.equ ARCH_ARM , 1
.equ VPX_ARCH_MIPS , 0
.equ ARCH_MIPS , 0
.equ VPX_ARCH_X86 , 0
.equ ARCH_X86 , 0
.equ VPX_ARCH_X86_64 , 0
.equ ARCH_X86_64 , 0
.equ VPX_ARCH_PPC , 0
.equ ARCH_PPC , 0
.equ HAVE_NEON , 1
.equ HAVE_NEON_ASM , 1
.equ HAVE_MIPS32 , 0
.equ HAVE_DSPR2 , 0
.equ HAVE_MSA , 0
.equ HAVE_MIPS64 , 0
.equ HAVE_MMX , 0
.equ HAVE_SSE , 0
.equ HAVE_SSE2 , 0
.equ HAVE_SSE3 , 0
.equ HAVE_SSSE3 , 0
.equ HAVE_SSE4_1 , 0
.equ HAVE_AVX , 0
.equ HAVE_AVX2 , 0
.equ HAVE_AVX512 , 0
.equ HAVE_VSX , 0
.equ HAVE_MMI , 0
.equ HAVE_VPX_PORTS , 1
.equ HAVE_PTHREAD_H , 1
.equ HAVE_UNISTD_H , 0
.equ CONFIG_DEPENDENCY_TRACKING , 1
.equ CONFIG_EXTERNAL_BUILD , 1
.equ CONFIG_INSTALL_DOCS , 0
.equ CONFIG_INSTALL_BINS , 1
.equ CONFIG_INSTALL_LIBS , 1
.equ CONFIG_INSTALL_SRCS , 0
.equ CONFIG_DEBUG , 0
.equ CONFIG_GPROF , 0
.equ CONFIG_GCOV , 0
.equ CONFIG_RVCT , 0
.equ CONFIG_GCC , 1
.equ CONFIG_MSVS , 0
.equ CONFIG_PIC , 0
.equ CONFIG_BIG_ENDIAN , 0
.equ CONFIG_CODEC_SRCS , 0
.equ CONFIG_DEBUG_LIBS , 0
.equ CONFIG_DEQUANT_TOKENS , 0
.equ CONFIG_DC_RECON , 0
.equ CONFIG_RUNTIME_CPU_DETECT , 0
.equ CONFIG_POSTPROC , 1
.equ CONFIG_VP9_POSTPROC , 1
.equ CONFIG_MULTITHREAD , 1
.equ CONFIG_INTERNAL_STATS , 0
.equ CONFIG_VP8_ENCODER , 1
.equ CONFIG_VP8_DECODER , 1
.equ CONFIG_VP9_ENCODER , 1
.equ CONFIG_VP9_DECODER , 1
.equ CONFIG_VP8 , 1
.equ CONFIG_VP9 , 1
.equ CONFIG_ENCODERS , 1
.equ CONFIG_DECODERS , 1
.equ CONFIG_STATIC_MSVCRT , 0
.equ CONFIG_SPATIAL_RESAMPLING , 1
.equ CONFIG_REALTIME_ONLY , 1
.equ CONFIG_ONTHEFLY_BITPACKING , 0
.equ CONFIG_ERROR_CONCEALMENT , 0
.equ CONFIG_SHARED , 0
.equ CONFIG_STATIC , 1
.equ CONFIG_SMALL , 0
.equ CONFIG_POSTPROC_VISUALIZER , 0
.equ CONFIG_OS_SUPPORT , 1
.equ CONFIG_UNIT_TESTS , 1
.equ CONFIG_WEBM_IO , 1
.equ CONFIG_LIBYUV , 0
.equ CONFIG_DECODE_PERF_TESTS , 0
.equ CONFIG_ENCODE_PERF_TESTS , 0
.equ CONFIG_MULTI_RES_ENCODING , 1
.equ CONFIG_TEMPORAL_DENOISING , 1
.equ CONFIG_VP9_TEMPORAL_DENOISING , 1
.equ CONFIG_CONSISTENT_RECODE , 0
.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0
.equ CONFIG_VP9_HIGHBITDEPTH , 0
.equ CONFIG_BETTER_HW_COMPATIBILITY , 0
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_ALWAYS_ADJUST_BPM , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_MISMATCH_DEBUG , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_EMULATE_HARDWARE , 0
.equ CONFIG_NON_GREEDY_MV , 0
.equ CONFIG_RATE_CTRL , 0
.equ DECODE_WIDTH_LIMIT , 16384
.equ DECODE_HEIGHT_LIMIT , 16384
.section .note.GNU-stack,"",%progbits

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=armv7-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 1
#define ARCH_ARM 1
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 0
#define ARCH_X86 0
#define VPX_ARCH_X86_64 0
#define ARCH_X86_64 0
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 1
#define HAVE_NEON_ASM 1
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 0
#define HAVE_SSE 0
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSSE3 0
#define HAVE_SSE4_1 0
#define HAVE_AVX 0
#define HAVE_AVX2 0
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 0
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,101 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,362 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_c
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_c
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_c
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_c
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
#define vp8_copy32xn vp8_copy32xn_c
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem16x16 vp8_copy_mem16x16_c
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x4 vp8_copy_mem8x4_c
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x8 vp8_copy_mem8x8_c
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_c
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter vp8_denoiser_filter_c
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_c
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
#define vp8_dequant_idct_add vp8_dequant_idct_add_c
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c
void vp8_dequantize_b_c(struct blockd*, short* DQC);
#define vp8_dequantize_b vp8_dequantize_b_c
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sad_c
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
#define vp8_fast_quantize_b vp8_fast_quantize_b_c
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_full_search_sad vp8_full_search_sad_c
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bh vp8_loop_filter_bh_c
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bv vp8_loop_filter_bv_c
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_c
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_c
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_c
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_c
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_c
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_c
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_c
int vp8_mbuverror_c(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_c
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sad_c
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
#define vp8_regular_quantize_b vp8_regular_quantize_b_c
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
#define vp8_short_fdct4x4 vp8_short_fdct4x4_c
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
#define vp8_short_fdct8x4 vp8_short_fdct8x4_c
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_c
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_c
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
#define vp8_short_walsh4x4 vp8_short_walsh4x4_c
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_c
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_c
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c
void vp8_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,169 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
#define vp9_block_error vp9_block_error_c
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
#define vp9_block_error_fp vp9_block_error_fp_c
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
#define vp9_denoiser_filter vp9_denoiser_filter_c
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
#define vp9_diamond_search_sad vp9_diamond_search_sad_c
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_c
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_c
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_c
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_c
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_c
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_c
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp vp9_quantize_fp_c
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_c
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_c
void vp9_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,98 @@
@ This file was created from a .asm file
@ using the ads2gas.pl script.
.syntax unified
.equ VPX_ARCH_ARM , 1
.equ ARCH_ARM , 1
.equ VPX_ARCH_MIPS , 0
.equ ARCH_MIPS , 0
.equ VPX_ARCH_X86 , 0
.equ ARCH_X86 , 0
.equ VPX_ARCH_X86_64 , 0
.equ ARCH_X86_64 , 0
.equ VPX_ARCH_PPC , 0
.equ ARCH_PPC , 0
.equ HAVE_NEON , 0
.equ HAVE_NEON_ASM , 0
.equ HAVE_MIPS32 , 0
.equ HAVE_DSPR2 , 0
.equ HAVE_MSA , 0
.equ HAVE_MIPS64 , 0
.equ HAVE_MMX , 0
.equ HAVE_SSE , 0
.equ HAVE_SSE2 , 0
.equ HAVE_SSE3 , 0
.equ HAVE_SSSE3 , 0
.equ HAVE_SSE4_1 , 0
.equ HAVE_AVX , 0
.equ HAVE_AVX2 , 0
.equ HAVE_AVX512 , 0
.equ HAVE_VSX , 0
.equ HAVE_MMI , 0
.equ HAVE_VPX_PORTS , 1
.equ HAVE_PTHREAD_H , 1
.equ HAVE_UNISTD_H , 0
.equ CONFIG_DEPENDENCY_TRACKING , 1
.equ CONFIG_EXTERNAL_BUILD , 1
.equ CONFIG_INSTALL_DOCS , 0
.equ CONFIG_INSTALL_BINS , 1
.equ CONFIG_INSTALL_LIBS , 1
.equ CONFIG_INSTALL_SRCS , 0
.equ CONFIG_DEBUG , 0
.equ CONFIG_GPROF , 0
.equ CONFIG_GCOV , 0
.equ CONFIG_RVCT , 0
.equ CONFIG_GCC , 1
.equ CONFIG_MSVS , 0
.equ CONFIG_PIC , 0
.equ CONFIG_BIG_ENDIAN , 0
.equ CONFIG_CODEC_SRCS , 0
.equ CONFIG_DEBUG_LIBS , 0
.equ CONFIG_DEQUANT_TOKENS , 0
.equ CONFIG_DC_RECON , 0
.equ CONFIG_RUNTIME_CPU_DETECT , 0
.equ CONFIG_POSTPROC , 1
.equ CONFIG_VP9_POSTPROC , 1
.equ CONFIG_MULTITHREAD , 1
.equ CONFIG_INTERNAL_STATS , 0
.equ CONFIG_VP8_ENCODER , 1
.equ CONFIG_VP8_DECODER , 1
.equ CONFIG_VP9_ENCODER , 1
.equ CONFIG_VP9_DECODER , 1
.equ CONFIG_VP8 , 1
.equ CONFIG_VP9 , 1
.equ CONFIG_ENCODERS , 1
.equ CONFIG_DECODERS , 1
.equ CONFIG_STATIC_MSVCRT , 0
.equ CONFIG_SPATIAL_RESAMPLING , 1
.equ CONFIG_REALTIME_ONLY , 1
.equ CONFIG_ONTHEFLY_BITPACKING , 0
.equ CONFIG_ERROR_CONCEALMENT , 0
.equ CONFIG_SHARED , 0
.equ CONFIG_STATIC , 1
.equ CONFIG_SMALL , 0
.equ CONFIG_POSTPROC_VISUALIZER , 0
.equ CONFIG_OS_SUPPORT , 1
.equ CONFIG_UNIT_TESTS , 1
.equ CONFIG_WEBM_IO , 1
.equ CONFIG_LIBYUV , 0
.equ CONFIG_DECODE_PERF_TESTS , 0
.equ CONFIG_ENCODE_PERF_TESTS , 0
.equ CONFIG_MULTI_RES_ENCODING , 1
.equ CONFIG_TEMPORAL_DENOISING , 1
.equ CONFIG_VP9_TEMPORAL_DENOISING , 1
.equ CONFIG_CONSISTENT_RECODE , 0
.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0
.equ CONFIG_VP9_HIGHBITDEPTH , 0
.equ CONFIG_BETTER_HW_COMPATIBILITY , 0
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_ALWAYS_ADJUST_BPM , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_MISMATCH_DEBUG , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_EMULATE_HARDWARE , 0
.equ CONFIG_NON_GREEDY_MV , 0
.equ CONFIG_RATE_CTRL , 0
.equ DECODE_WIDTH_LIMIT , 16384
.equ DECODE_HEIGHT_LIMIT , 16384
.section .note.GNU-stack,"",%progbits

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=armv7-linux-gcc --disable-neon --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 1
#define ARCH_ARM 1
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 0
#define ARCH_X86 0
#define VPX_ARCH_X86_64 0
#define ARCH_X86_64 0
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 0
#define HAVE_NEON_ASM 0
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 0
#define HAVE_SSE 0
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSSE3 0
#define HAVE_SSE4_1 0
#define HAVE_AVX 0
#define HAVE_AVX2 0
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 0
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,101 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,505 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_neon
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_neon
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_neon
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_neon
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_c
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
#define vp8_copy32xn vp8_copy32xn_c
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem16x16_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem16x16 vp8_copy_mem16x16_neon
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x4_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x4 vp8_copy_mem8x4_neon
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x8_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x8 vp8_copy_mem8x8_neon
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_dc_only_idct_add_neon(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_neon
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_neon(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter vp8_denoiser_filter_neon
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_uv_neon(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_neon
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
void vp8_dequant_idct_add_neon(short* input,
short* dq,
unsigned char* dest,
int stride);
#define vp8_dequant_idct_add vp8_dequant_idct_add_neon
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
void vp8_dequant_idct_add_uv_block_neon(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_neon
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
void vp8_dequant_idct_add_y_block_neon(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_neon
void vp8_dequantize_b_c(struct blockd*, short* DQC);
void vp8_dequantize_b_neon(struct blockd*, short* DQC);
#define vp8_dequantize_b vp8_dequantize_b_neon
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sad_c
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
void vp8_fast_quantize_b_neon(struct block*, struct blockd*);
#define vp8_fast_quantize_b vp8_fast_quantize_b_neon
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_full_search_sad vp8_full_search_sad_c
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bh vp8_loop_filter_bh_neon
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bv vp8_loop_filter_bv_neon
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_neon
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_neon
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_neon
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_neon
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbh vp8_loop_filter_mbhs_neon
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbv vp8_loop_filter_mbvs_neon
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_c
int vp8_mbuverror_c(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_c
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sad_c
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
#define vp8_regular_quantize_b vp8_regular_quantize_b_c
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
void vp8_short_fdct4x4_neon(short* input, short* output, int pitch);
#define vp8_short_fdct4x4 vp8_short_fdct4x4_neon
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
void vp8_short_fdct8x4_neon(short* input, short* output, int pitch);
#define vp8_short_fdct8x4 vp8_short_fdct8x4_neon
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_short_idct4x4llm_neon(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_neon
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
void vp8_short_inv_walsh4x4_neon(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_neon
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
void vp8_short_walsh4x4_neon(short* input, short* output, int pitch);
#define vp8_short_walsh4x4 vp8_short_walsh4x4_neon
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_neon
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_neon
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_neon
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_neon
void vp8_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,342 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
#define vp9_block_error vp9_block_error_c
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
#define vp9_block_error_fp vp9_block_error_fp_c
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
int vp9_denoiser_filter_neon(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
#define vp9_denoiser_filter vp9_denoiser_filter_neon
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
#define vp9_diamond_search_sad vp9_diamond_search_sad_c
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_c
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_c
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_c
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_c
int64_t vp9_highbd_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz,
int bd);
#define vp9_highbd_block_error vp9_highbd_block_error_c
void vp9_highbd_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht16x16 vp9_highbd_fht16x16_c
void vp9_highbd_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht4x4 vp9_highbd_fht4x4_c
void vp9_highbd_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht8x8 vp9_highbd_fht8x8_c
void vp9_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_highbd_fwht4x4 vp9_highbd_fwht4x4_c
void vp9_highbd_iht16x16_256_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht16x16_256_add_neon(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht16x16_256_add vp9_highbd_iht16x16_256_add_neon
void vp9_highbd_iht4x4_16_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht4x4_16_add_neon(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht4x4_16_add vp9_highbd_iht4x4_16_add_neon
void vp9_highbd_iht8x8_64_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht8x8_64_add_neon(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht8x8_64_add vp9_highbd_iht8x8_64_add_neon
void vp9_highbd_mbpost_proc_across_ip_c(uint16_t* src,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_across_ip vp9_highbd_mbpost_proc_across_ip_c
void vp9_highbd_mbpost_proc_down_c(uint16_t* dst,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_down vp9_highbd_mbpost_proc_down_c
void vp9_highbd_post_proc_down_and_across_c(const uint16_t* src_ptr,
uint16_t* dst_ptr,
int src_pixels_per_line,
int dst_pixels_per_line,
int rows,
int cols,
int flimit);
#define vp9_highbd_post_proc_down_and_across \
vp9_highbd_post_proc_down_and_across_c
void vp9_highbd_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp vp9_highbd_quantize_fp_c
void vp9_highbd_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp_32x32 vp9_highbd_quantize_fp_32x32_c
void vp9_highbd_temporal_filter_apply_c(const uint8_t* frame1,
unsigned int stride,
const uint8_t* frame2,
unsigned int block_width,
unsigned int block_height,
int strength,
int* blk_fw,
int use_32x32,
uint32_t* accumulator,
uint16_t* count);
#define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht16x16_256_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_neon
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht4x4_16_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_neon
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht8x8_64_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_neon
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp vp9_quantize_fp_neon
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_neon
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_scale_and_extend_frame_neon(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_neon
void vp9_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,98 @@
@ This file was created from a .asm file
@ using the ads2gas.pl script.
.syntax unified
.equ VPX_ARCH_ARM , 1
.equ ARCH_ARM , 1
.equ VPX_ARCH_MIPS , 0
.equ ARCH_MIPS , 0
.equ VPX_ARCH_X86 , 0
.equ ARCH_X86 , 0
.equ VPX_ARCH_X86_64 , 0
.equ ARCH_X86_64 , 0
.equ VPX_ARCH_PPC , 0
.equ ARCH_PPC , 0
.equ HAVE_NEON , 1
.equ HAVE_NEON_ASM , 0
.equ HAVE_MIPS32 , 0
.equ HAVE_DSPR2 , 0
.equ HAVE_MSA , 0
.equ HAVE_MIPS64 , 0
.equ HAVE_MMX , 0
.equ HAVE_SSE , 0
.equ HAVE_SSE2 , 0
.equ HAVE_SSE3 , 0
.equ HAVE_SSSE3 , 0
.equ HAVE_SSE4_1 , 0
.equ HAVE_AVX , 0
.equ HAVE_AVX2 , 0
.equ HAVE_AVX512 , 0
.equ HAVE_VSX , 0
.equ HAVE_MMI , 0
.equ HAVE_VPX_PORTS , 1
.equ HAVE_PTHREAD_H , 1
.equ HAVE_UNISTD_H , 0
.equ CONFIG_DEPENDENCY_TRACKING , 1
.equ CONFIG_EXTERNAL_BUILD , 1
.equ CONFIG_INSTALL_DOCS , 0
.equ CONFIG_INSTALL_BINS , 1
.equ CONFIG_INSTALL_LIBS , 1
.equ CONFIG_INSTALL_SRCS , 0
.equ CONFIG_DEBUG , 0
.equ CONFIG_GPROF , 0
.equ CONFIG_GCOV , 0
.equ CONFIG_RVCT , 0
.equ CONFIG_GCC , 1
.equ CONFIG_MSVS , 0
.equ CONFIG_PIC , 0
.equ CONFIG_BIG_ENDIAN , 0
.equ CONFIG_CODEC_SRCS , 0
.equ CONFIG_DEBUG_LIBS , 0
.equ CONFIG_DEQUANT_TOKENS , 0
.equ CONFIG_DC_RECON , 0
.equ CONFIG_RUNTIME_CPU_DETECT , 0
.equ CONFIG_POSTPROC , 1
.equ CONFIG_VP9_POSTPROC , 1
.equ CONFIG_MULTITHREAD , 1
.equ CONFIG_INTERNAL_STATS , 0
.equ CONFIG_VP8_ENCODER , 1
.equ CONFIG_VP8_DECODER , 1
.equ CONFIG_VP9_ENCODER , 1
.equ CONFIG_VP9_DECODER , 1
.equ CONFIG_VP8 , 1
.equ CONFIG_VP9 , 1
.equ CONFIG_ENCODERS , 1
.equ CONFIG_DECODERS , 1
.equ CONFIG_STATIC_MSVCRT , 0
.equ CONFIG_SPATIAL_RESAMPLING , 1
.equ CONFIG_REALTIME_ONLY , 1
.equ CONFIG_ONTHEFLY_BITPACKING , 0
.equ CONFIG_ERROR_CONCEALMENT , 0
.equ CONFIG_SHARED , 0
.equ CONFIG_STATIC , 1
.equ CONFIG_SMALL , 0
.equ CONFIG_POSTPROC_VISUALIZER , 0
.equ CONFIG_OS_SUPPORT , 1
.equ CONFIG_UNIT_TESTS , 1
.equ CONFIG_WEBM_IO , 1
.equ CONFIG_LIBYUV , 0
.equ CONFIG_DECODE_PERF_TESTS , 0
.equ CONFIG_ENCODE_PERF_TESTS , 0
.equ CONFIG_MULTI_RES_ENCODING , 1
.equ CONFIG_TEMPORAL_DENOISING , 1
.equ CONFIG_VP9_TEMPORAL_DENOISING , 1
.equ CONFIG_CONSISTENT_RECODE , 0
.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0
.equ CONFIG_VP9_HIGHBITDEPTH , 1
.equ CONFIG_BETTER_HW_COMPATIBILITY , 0
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_ALWAYS_ADJUST_BPM , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_MISMATCH_DEBUG , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_EMULATE_HARDWARE , 0
.equ CONFIG_NON_GREEDY_MV , 0
.equ CONFIG_RATE_CTRL , 0
.equ DECODE_WIDTH_LIMIT , 16384
.equ DECODE_HEIGHT_LIMIT , 16384
.section .note.GNU-stack,"",%progbits

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=armv8-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 1
#define ARCH_ARM 1
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 0
#define ARCH_X86 0
#define VPX_ARCH_X86_64 0
#define ARCH_X86_64 0
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 1
#define HAVE_NEON_ASM 0
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 0
#define HAVE_SSE 0
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSSE3 0
#define HAVE_SSE4_1 0
#define HAVE_AVX 0
#define HAVE_AVX2 0
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 0
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,101 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,505 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_neon
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_neon
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_neon
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_neon
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_c
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
#define vp8_copy32xn vp8_copy32xn_c
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem16x16_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem16x16 vp8_copy_mem16x16_neon
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x4_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x4 vp8_copy_mem8x4_neon
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x8_neon(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x8 vp8_copy_mem8x8_neon
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_dc_only_idct_add_neon(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_neon
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_neon(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter vp8_denoiser_filter_neon
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_uv_neon(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_neon
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
void vp8_dequant_idct_add_neon(short* input,
short* dq,
unsigned char* dest,
int stride);
#define vp8_dequant_idct_add vp8_dequant_idct_add_neon
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
void vp8_dequant_idct_add_uv_block_neon(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_neon
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
void vp8_dequant_idct_add_y_block_neon(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_neon
void vp8_dequantize_b_c(struct blockd*, short* DQC);
void vp8_dequantize_b_neon(struct blockd*, short* DQC);
#define vp8_dequantize_b vp8_dequantize_b_neon
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sad_c
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
void vp8_fast_quantize_b_neon(struct block*, struct blockd*);
#define vp8_fast_quantize_b vp8_fast_quantize_b_neon
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_full_search_sad vp8_full_search_sad_c
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bh vp8_loop_filter_bh_neon
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bv vp8_loop_filter_bv_neon
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbh_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_neon
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbv_neon(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_neon
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_neon
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_neon
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbhs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbh vp8_loop_filter_mbhs_neon
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_mbvs_neon(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbv vp8_loop_filter_mbvs_neon
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_c
int vp8_mbuverror_c(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_c
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sad_c
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
#define vp8_regular_quantize_b vp8_regular_quantize_b_c
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
void vp8_short_fdct4x4_neon(short* input, short* output, int pitch);
#define vp8_short_fdct4x4 vp8_short_fdct4x4_neon
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
void vp8_short_fdct8x4_neon(short* input, short* output, int pitch);
#define vp8_short_fdct8x4 vp8_short_fdct8x4_neon
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_short_idct4x4llm_neon(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_neon
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
void vp8_short_inv_walsh4x4_neon(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_neon
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
void vp8_short_walsh4x4_neon(short* input, short* output, int pitch);
#define vp8_short_walsh4x4 vp8_short_walsh4x4_neon
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_neon
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_neon
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_neon
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_neon(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_neon
void vp8_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,219 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
#define vp9_block_error vp9_block_error_c
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int64_t vp9_block_error_fp_neon(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
#define vp9_block_error_fp vp9_block_error_fp_neon
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
int vp9_denoiser_filter_neon(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
#define vp9_denoiser_filter vp9_denoiser_filter_neon
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
#define vp9_diamond_search_sad vp9_diamond_search_sad_c
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_c
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_c
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_c
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht16x16_256_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_neon
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht4x4_16_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_neon
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht8x8_64_add_neon(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_neon
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp vp9_quantize_fp_neon
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_neon(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_neon
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_scale_and_extend_frame_neon(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_neon
void vp9_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,98 @@
@ This file was created from a .asm file
@ using the ads2gas.pl script.
.syntax unified
.equ VPX_ARCH_ARM , 1
.equ ARCH_ARM , 1
.equ VPX_ARCH_MIPS , 0
.equ ARCH_MIPS , 0
.equ VPX_ARCH_X86 , 0
.equ ARCH_X86 , 0
.equ VPX_ARCH_X86_64 , 0
.equ ARCH_X86_64 , 0
.equ VPX_ARCH_PPC , 0
.equ ARCH_PPC , 0
.equ HAVE_NEON , 1
.equ HAVE_NEON_ASM , 0
.equ HAVE_MIPS32 , 0
.equ HAVE_DSPR2 , 0
.equ HAVE_MSA , 0
.equ HAVE_MIPS64 , 0
.equ HAVE_MMX , 0
.equ HAVE_SSE , 0
.equ HAVE_SSE2 , 0
.equ HAVE_SSE3 , 0
.equ HAVE_SSSE3 , 0
.equ HAVE_SSE4_1 , 0
.equ HAVE_AVX , 0
.equ HAVE_AVX2 , 0
.equ HAVE_AVX512 , 0
.equ HAVE_VSX , 0
.equ HAVE_MMI , 0
.equ HAVE_VPX_PORTS , 1
.equ HAVE_PTHREAD_H , 1
.equ HAVE_UNISTD_H , 0
.equ CONFIG_DEPENDENCY_TRACKING , 1
.equ CONFIG_EXTERNAL_BUILD , 1
.equ CONFIG_INSTALL_DOCS , 0
.equ CONFIG_INSTALL_BINS , 1
.equ CONFIG_INSTALL_LIBS , 1
.equ CONFIG_INSTALL_SRCS , 0
.equ CONFIG_DEBUG , 0
.equ CONFIG_GPROF , 0
.equ CONFIG_GCOV , 0
.equ CONFIG_RVCT , 0
.equ CONFIG_GCC , 1
.equ CONFIG_MSVS , 0
.equ CONFIG_PIC , 0
.equ CONFIG_BIG_ENDIAN , 0
.equ CONFIG_CODEC_SRCS , 0
.equ CONFIG_DEBUG_LIBS , 0
.equ CONFIG_DEQUANT_TOKENS , 0
.equ CONFIG_DC_RECON , 0
.equ CONFIG_RUNTIME_CPU_DETECT , 0
.equ CONFIG_POSTPROC , 1
.equ CONFIG_VP9_POSTPROC , 1
.equ CONFIG_MULTITHREAD , 1
.equ CONFIG_INTERNAL_STATS , 0
.equ CONFIG_VP8_ENCODER , 1
.equ CONFIG_VP8_DECODER , 1
.equ CONFIG_VP9_ENCODER , 1
.equ CONFIG_VP9_DECODER , 1
.equ CONFIG_VP8 , 1
.equ CONFIG_VP9 , 1
.equ CONFIG_ENCODERS , 1
.equ CONFIG_DECODERS , 1
.equ CONFIG_STATIC_MSVCRT , 0
.equ CONFIG_SPATIAL_RESAMPLING , 1
.equ CONFIG_REALTIME_ONLY , 1
.equ CONFIG_ONTHEFLY_BITPACKING , 0
.equ CONFIG_ERROR_CONCEALMENT , 0
.equ CONFIG_SHARED , 0
.equ CONFIG_STATIC , 1
.equ CONFIG_SMALL , 0
.equ CONFIG_POSTPROC_VISUALIZER , 0
.equ CONFIG_OS_SUPPORT , 1
.equ CONFIG_UNIT_TESTS , 1
.equ CONFIG_WEBM_IO , 1
.equ CONFIG_LIBYUV , 0
.equ CONFIG_DECODE_PERF_TESTS , 0
.equ CONFIG_ENCODE_PERF_TESTS , 0
.equ CONFIG_MULTI_RES_ENCODING , 1
.equ CONFIG_TEMPORAL_DENOISING , 1
.equ CONFIG_VP9_TEMPORAL_DENOISING , 1
.equ CONFIG_CONSISTENT_RECODE , 0
.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0
.equ CONFIG_VP9_HIGHBITDEPTH , 0
.equ CONFIG_BETTER_HW_COMPATIBILITY , 0
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_ALWAYS_ADJUST_BPM , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_MISMATCH_DEBUG , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_EMULATE_HARDWARE , 0
.equ CONFIG_NON_GREEDY_MV , 0
.equ CONFIG_RATE_CTRL , 0
.equ DECODE_WIDTH_LIMIT , 16384
.equ DECODE_HEIGHT_LIMIT , 16384
.section .note.GNU-stack,"",%progbits

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=armv8-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 1
#define ARCH_ARM 1
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 0
#define ARCH_X86 0
#define VPX_ARCH_X86_64 0
#define ARCH_X86_64 0
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 1
#define HAVE_NEON_ASM 0
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 0
#define HAVE_SSE 0
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSSE3 0
#define HAVE_SSE4_1 0
#define HAVE_AVX 0
#define HAVE_AVX2 0
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 0
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,101 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
#include "vpx_ports/arm.h"
static void setup_rtcd_internal(void) {
int flags = arm_cpu_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,357 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_c
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_c
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_c
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_c
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
#define vp8_copy32xn vp8_copy32xn_c
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem16x16 vp8_copy_mem16x16_c
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x4 vp8_copy_mem8x4_c
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x8 vp8_copy_mem8x8_c
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_c
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter vp8_denoiser_filter_c
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_c
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
#define vp8_dequant_idct_add vp8_dequant_idct_add_c
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c
void vp8_dequantize_b_c(struct blockd*, short* DQC);
#define vp8_dequantize_b vp8_dequantize_b_c
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sad_c
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
#define vp8_fast_quantize_b vp8_fast_quantize_b_c
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_full_search_sad vp8_full_search_sad_c
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bh vp8_loop_filter_bh_c
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bv vp8_loop_filter_bv_c
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_c
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_c
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_c
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_c
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_c
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_c
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_c
int vp8_mbuverror_c(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_c
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sad_c
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
#define vp8_regular_quantize_b vp8_regular_quantize_b_c
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
#define vp8_short_fdct4x4 vp8_short_fdct4x4_c
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
#define vp8_short_fdct8x4 vp8_short_fdct8x4_c
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_c
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_c
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
#define vp8_short_walsh4x4 vp8_short_walsh4x4_c
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_c
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_c
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c
void vp8_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
static void setup_rtcd_internal(void) {}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,275 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
#define vp9_block_error vp9_block_error_c
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
#define vp9_block_error_fp vp9_block_error_fp_c
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
#define vp9_denoiser_filter vp9_denoiser_filter_c
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
#define vp9_diamond_search_sad vp9_diamond_search_sad_c
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_c
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_c
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_c
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_c
int64_t vp9_highbd_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz,
int bd);
#define vp9_highbd_block_error vp9_highbd_block_error_c
void vp9_highbd_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht16x16 vp9_highbd_fht16x16_c
void vp9_highbd_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht4x4 vp9_highbd_fht4x4_c
void vp9_highbd_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht8x8 vp9_highbd_fht8x8_c
void vp9_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_highbd_fwht4x4 vp9_highbd_fwht4x4_c
void vp9_highbd_iht16x16_256_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht16x16_256_add vp9_highbd_iht16x16_256_add_c
void vp9_highbd_iht4x4_16_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht4x4_16_add vp9_highbd_iht4x4_16_add_c
void vp9_highbd_iht8x8_64_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
#define vp9_highbd_iht8x8_64_add vp9_highbd_iht8x8_64_add_c
void vp9_highbd_mbpost_proc_across_ip_c(uint16_t* src,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_across_ip vp9_highbd_mbpost_proc_across_ip_c
void vp9_highbd_mbpost_proc_down_c(uint16_t* dst,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_down vp9_highbd_mbpost_proc_down_c
void vp9_highbd_post_proc_down_and_across_c(const uint16_t* src_ptr,
uint16_t* dst_ptr,
int src_pixels_per_line,
int dst_pixels_per_line,
int rows,
int cols,
int flimit);
#define vp9_highbd_post_proc_down_and_across \
vp9_highbd_post_proc_down_and_across_c
void vp9_highbd_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp vp9_highbd_quantize_fp_c
void vp9_highbd_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp_32x32 vp9_highbd_quantize_fp_32x32_c
void vp9_highbd_temporal_filter_apply_c(const uint8_t* frame1,
unsigned int stride,
const uint8_t* frame2,
unsigned int block_width,
unsigned int block_height,
int strength,
int* blk_fw,
int use_32x32,
uint32_t* accumulator,
uint16_t* count);
#define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_c
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_c
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_c
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp vp9_quantize_fp_c
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_c
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_c
void vp9_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
static void setup_rtcd_internal(void) {}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,98 @@
@ This file was created from a .asm file
@ using the ads2gas.pl script.
.syntax unified
.equ VPX_ARCH_ARM , 0
.equ ARCH_ARM , 0
.equ VPX_ARCH_MIPS , 0
.equ ARCH_MIPS , 0
.equ VPX_ARCH_X86 , 0
.equ ARCH_X86 , 0
.equ VPX_ARCH_X86_64 , 0
.equ ARCH_X86_64 , 0
.equ VPX_ARCH_PPC , 0
.equ ARCH_PPC , 0
.equ HAVE_NEON , 0
.equ HAVE_NEON_ASM , 0
.equ HAVE_MIPS32 , 0
.equ HAVE_DSPR2 , 0
.equ HAVE_MSA , 0
.equ HAVE_MIPS64 , 0
.equ HAVE_MMX , 0
.equ HAVE_SSE , 0
.equ HAVE_SSE2 , 0
.equ HAVE_SSE3 , 0
.equ HAVE_SSSE3 , 0
.equ HAVE_SSE4_1 , 0
.equ HAVE_AVX , 0
.equ HAVE_AVX2 , 0
.equ HAVE_AVX512 , 0
.equ HAVE_VSX , 0
.equ HAVE_MMI , 0
.equ HAVE_VPX_PORTS , 1
.equ HAVE_PTHREAD_H , 1
.equ HAVE_UNISTD_H , 0
.equ CONFIG_DEPENDENCY_TRACKING , 1
.equ CONFIG_EXTERNAL_BUILD , 1
.equ CONFIG_INSTALL_DOCS , 0
.equ CONFIG_INSTALL_BINS , 1
.equ CONFIG_INSTALL_LIBS , 1
.equ CONFIG_INSTALL_SRCS , 0
.equ CONFIG_DEBUG , 0
.equ CONFIG_GPROF , 0
.equ CONFIG_GCOV , 0
.equ CONFIG_RVCT , 0
.equ CONFIG_GCC , 1
.equ CONFIG_MSVS , 0
.equ CONFIG_PIC , 0
.equ CONFIG_BIG_ENDIAN , 0
.equ CONFIG_CODEC_SRCS , 0
.equ CONFIG_DEBUG_LIBS , 0
.equ CONFIG_DEQUANT_TOKENS , 0
.equ CONFIG_DC_RECON , 0
.equ CONFIG_RUNTIME_CPU_DETECT , 0
.equ CONFIG_POSTPROC , 1
.equ CONFIG_VP9_POSTPROC , 1
.equ CONFIG_MULTITHREAD , 1
.equ CONFIG_INTERNAL_STATS , 0
.equ CONFIG_VP8_ENCODER , 1
.equ CONFIG_VP8_DECODER , 1
.equ CONFIG_VP9_ENCODER , 1
.equ CONFIG_VP9_DECODER , 1
.equ CONFIG_VP8 , 1
.equ CONFIG_VP9 , 1
.equ CONFIG_ENCODERS , 1
.equ CONFIG_DECODERS , 1
.equ CONFIG_STATIC_MSVCRT , 0
.equ CONFIG_SPATIAL_RESAMPLING , 1
.equ CONFIG_REALTIME_ONLY , 1
.equ CONFIG_ONTHEFLY_BITPACKING , 0
.equ CONFIG_ERROR_CONCEALMENT , 0
.equ CONFIG_SHARED , 0
.equ CONFIG_STATIC , 1
.equ CONFIG_SMALL , 0
.equ CONFIG_POSTPROC_VISUALIZER , 0
.equ CONFIG_OS_SUPPORT , 1
.equ CONFIG_UNIT_TESTS , 1
.equ CONFIG_WEBM_IO , 1
.equ CONFIG_LIBYUV , 0
.equ CONFIG_DECODE_PERF_TESTS , 0
.equ CONFIG_ENCODE_PERF_TESTS , 0
.equ CONFIG_MULTI_RES_ENCODING , 1
.equ CONFIG_TEMPORAL_DENOISING , 1
.equ CONFIG_VP9_TEMPORAL_DENOISING , 1
.equ CONFIG_CONSISTENT_RECODE , 0
.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0
.equ CONFIG_VP9_HIGHBITDEPTH , 1
.equ CONFIG_BETTER_HW_COMPATIBILITY , 0
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_ALWAYS_ADJUST_BPM , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_MISMATCH_DEBUG , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_EMULATE_HARDWARE , 0
.equ CONFIG_NON_GREEDY_MV , 0
.equ CONFIG_RATE_CTRL , 0
.equ DECODE_WIDTH_LIMIT , 16384
.equ DECODE_HEIGHT_LIMIT , 16384
.section .note.GNU-stack,"",%progbits

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=generic-gnu --enable-vp9-highbitdepth --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 0
#define ARCH_ARM 0
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 0
#define ARCH_X86 0
#define VPX_ARCH_X86_64 0
#define ARCH_X86_64 0
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 0
#define HAVE_NEON_ASM 0
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 0
#define HAVE_SSE 0
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSSE3 0
#define HAVE_SSE4_1 0
#define HAVE_AVX 0
#define HAVE_AVX2 0
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 0
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,96 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#include "vpx_config.h"
#ifdef RTCD_C
static void setup_rtcd_internal(void) {}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,678 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_sse2
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x4_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_sse2
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_bilinear_predict8x8)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
int vp8_block_error_sse2(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_sse2
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
void vp8_copy32xn_sse2(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
void vp8_copy32xn_sse3(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem16x16_sse2(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem16x16 vp8_copy_mem16x16_sse2
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x4_mmx(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x4 vp8_copy_mem8x4_mmx
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x8_mmx(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x8 vp8_copy_mem8x8_mmx
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_dc_only_idct_add_mmx(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_mmx
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_sse2(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter vp8_denoiser_filter_sse2
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_uv_sse2(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_sse2
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
void vp8_dequant_idct_add_mmx(short* input,
short* dq,
unsigned char* dest,
int stride);
#define vp8_dequant_idct_add vp8_dequant_idct_add_mmx
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
void vp8_dequant_idct_add_uv_block_sse2(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_sse2
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
void vp8_dequant_idct_add_y_block_sse2(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_sse2
void vp8_dequantize_b_c(struct blockd*, short* DQC);
void vp8_dequantize_b_mmx(struct blockd*, short* DQC);
#define vp8_dequantize_b vp8_dequantize_b_mmx
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
int vp8_diamond_search_sadx4(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sadx4
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
void vp8_fast_quantize_b_sse2(struct block*, struct blockd*);
void vp8_fast_quantize_b_ssse3(struct block*, struct blockd*);
RTCD_EXTERN void (*vp8_fast_quantize_b)(struct block*, struct blockd*);
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
void vp8_filter_by_weight16x16_sse2(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_sse2
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
void vp8_filter_by_weight8x8_sse2(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_sse2
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
int vp8_full_search_sadx3(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
int vp8_full_search_sadx8(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
RTCD_EXTERN int (*vp8_full_search_sad)(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bh_sse2(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bh vp8_loop_filter_bh_sse2
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bv_sse2(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bv vp8_loop_filter_bv_sse2
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbh_sse2(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_sse2
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbv_sse2(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_sse2
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bhs_sse2(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_sse2
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bvs_sse2(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_sse2
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_simple_horizontal_edge_sse2(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_sse2
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_simple_vertical_edge_sse2(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_sse2
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
int vp8_mbblock_error_sse2(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_sse2
int vp8_mbuverror_c(struct macroblock* mb);
int vp8_mbuverror_sse2(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_sse2
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
int vp8_refining_search_sadx4(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sadx4
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
void vp8_regular_quantize_b_sse2(struct block*, struct blockd*);
void vp8_regular_quantize_b_sse4_1(struct block*, struct blockd*);
RTCD_EXTERN void (*vp8_regular_quantize_b)(struct block*, struct blockd*);
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
void vp8_short_fdct4x4_sse2(short* input, short* output, int pitch);
#define vp8_short_fdct4x4 vp8_short_fdct4x4_sse2
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
void vp8_short_fdct8x4_sse2(short* input, short* output, int pitch);
#define vp8_short_fdct8x4 vp8_short_fdct8x4_sse2
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_short_idct4x4llm_mmx(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_mmx
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
void vp8_short_inv_walsh4x4_sse2(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_sse2
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
void vp8_short_walsh4x4_sse2(short* input, short* output, int pitch);
#define vp8_short_walsh4x4 vp8_short_walsh4x4_sse2
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict16x16)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_mmx(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict4x4)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict8x4)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_rtcd(void);
#ifdef RTCD_C
#include "vpx_ports/x86.h"
static void setup_rtcd_internal(void) {
int flags = x86_simd_caps();
(void)flags;
vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_sse2;
if (flags & HAS_SSSE3)
vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_ssse3;
vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_sse2;
if (flags & HAS_SSSE3)
vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_ssse3;
vp8_copy32xn = vp8_copy32xn_sse2;
if (flags & HAS_SSE3)
vp8_copy32xn = vp8_copy32xn_sse3;
vp8_fast_quantize_b = vp8_fast_quantize_b_sse2;
if (flags & HAS_SSSE3)
vp8_fast_quantize_b = vp8_fast_quantize_b_ssse3;
vp8_full_search_sad = vp8_full_search_sad_c;
if (flags & HAS_SSE3)
vp8_full_search_sad = vp8_full_search_sadx3;
if (flags & HAS_SSE4_1)
vp8_full_search_sad = vp8_full_search_sadx8;
vp8_regular_quantize_b = vp8_regular_quantize_b_sse2;
if (flags & HAS_SSE4_1)
vp8_regular_quantize_b = vp8_regular_quantize_b_sse4_1;
vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_sse2;
if (flags & HAS_SSSE3)
vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_ssse3;
vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_mmx;
if (flags & HAS_SSSE3)
vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_ssse3;
vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_sse2;
if (flags & HAS_SSSE3)
vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_ssse3;
vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
if (flags & HAS_SSSE3)
vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,456 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
int64_t vp9_block_error_sse2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
int64_t vp9_block_error_avx2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
RTCD_EXTERN int64_t (*vp9_block_error)(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int64_t vp9_block_error_fp_sse2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int64_t vp9_block_error_fp_avx2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
RTCD_EXTERN int64_t (*vp9_block_error_fp)(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
int vp9_denoiser_filter_sse2(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
#define vp9_denoiser_filter vp9_denoiser_filter_sse2
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
int vp9_diamond_search_sad_avx(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
RTCD_EXTERN int (*vp9_diamond_search_sad)(
const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
void vp9_fht16x16_sse2(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_sse2
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
void vp9_fht4x4_sse2(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_sse2
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
void vp9_fht8x8_sse2(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_sse2
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
void vp9_filter_by_weight16x16_sse2(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_sse2
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
void vp9_filter_by_weight8x8_sse2(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_sse2
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
void vp9_fwht4x4_sse2(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_sse2
int64_t vp9_highbd_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz,
int bd);
int64_t vp9_highbd_block_error_sse2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz,
int bd);
#define vp9_highbd_block_error vp9_highbd_block_error_sse2
void vp9_highbd_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht16x16 vp9_highbd_fht16x16_c
void vp9_highbd_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht4x4 vp9_highbd_fht4x4_c
void vp9_highbd_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht8x8 vp9_highbd_fht8x8_c
void vp9_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_highbd_fwht4x4 vp9_highbd_fwht4x4_c
void vp9_highbd_iht16x16_256_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht16x16_256_add_sse4_1(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
RTCD_EXTERN void (*vp9_highbd_iht16x16_256_add)(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht4x4_16_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht4x4_16_add_sse4_1(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
RTCD_EXTERN void (*vp9_highbd_iht4x4_16_add)(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht8x8_64_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht8x8_64_add_sse4_1(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
RTCD_EXTERN void (*vp9_highbd_iht8x8_64_add)(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_mbpost_proc_across_ip_c(uint16_t* src,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_across_ip vp9_highbd_mbpost_proc_across_ip_c
void vp9_highbd_mbpost_proc_down_c(uint16_t* dst,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_down vp9_highbd_mbpost_proc_down_c
void vp9_highbd_post_proc_down_and_across_c(const uint16_t* src_ptr,
uint16_t* dst_ptr,
int src_pixels_per_line,
int dst_pixels_per_line,
int rows,
int cols,
int flimit);
#define vp9_highbd_post_proc_down_and_across \
vp9_highbd_post_proc_down_and_across_c
void vp9_highbd_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp vp9_highbd_quantize_fp_c
void vp9_highbd_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp_32x32 vp9_highbd_quantize_fp_32x32_c
void vp9_highbd_temporal_filter_apply_c(const uint8_t* frame1,
unsigned int stride,
const uint8_t* frame2,
unsigned int block_width,
unsigned int block_height,
int strength,
int* blk_fw,
int use_32x32,
uint32_t* accumulator,
uint16_t* count);
#define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht16x16_256_add_sse2(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_sse2
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht4x4_16_add_sse2(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_sse2
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht8x8_64_add_sse2(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_sse2
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_sse2(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_avx2(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
RTCD_EXTERN void (*vp9_quantize_fp)(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_c
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_scale_and_extend_frame_ssse3(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
RTCD_EXTERN void (*vp9_scale_and_extend_frame)(
const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_rtcd(void);
#ifdef RTCD_C
#include "vpx_ports/x86.h"
static void setup_rtcd_internal(void) {
int flags = x86_simd_caps();
(void)flags;
vp9_block_error = vp9_block_error_sse2;
if (flags & HAS_AVX2)
vp9_block_error = vp9_block_error_avx2;
vp9_block_error_fp = vp9_block_error_fp_sse2;
if (flags & HAS_AVX2)
vp9_block_error_fp = vp9_block_error_fp_avx2;
vp9_diamond_search_sad = vp9_diamond_search_sad_c;
if (flags & HAS_AVX)
vp9_diamond_search_sad = vp9_diamond_search_sad_avx;
vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_c;
if (flags & HAS_SSE4_1)
vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_sse4_1;
vp9_highbd_iht4x4_16_add = vp9_highbd_iht4x4_16_add_c;
if (flags & HAS_SSE4_1)
vp9_highbd_iht4x4_16_add = vp9_highbd_iht4x4_16_add_sse4_1;
vp9_highbd_iht8x8_64_add = vp9_highbd_iht8x8_64_add_c;
if (flags & HAS_SSE4_1)
vp9_highbd_iht8x8_64_add = vp9_highbd_iht8x8_64_add_sse4_1;
vp9_quantize_fp = vp9_quantize_fp_sse2;
if (flags & HAS_AVX2)
vp9_quantize_fp = vp9_quantize_fp_avx2;
vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_c;
if (flags & HAS_SSSE3)
vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_ssse3;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,94 @@
%define VPX_ARCH_ARM 0
%define ARCH_ARM 0
%define VPX_ARCH_MIPS 0
%define ARCH_MIPS 0
%define VPX_ARCH_X86 1
%define ARCH_X86 1
%define VPX_ARCH_X86_64 0
%define ARCH_X86_64 0
%define VPX_ARCH_PPC 0
%define ARCH_PPC 0
%define HAVE_NEON 0
%define HAVE_NEON_ASM 0
%define HAVE_MIPS32 0
%define HAVE_DSPR2 0
%define HAVE_MSA 0
%define HAVE_MIPS64 0
%define HAVE_MMX 1
%define HAVE_SSE 1
%define HAVE_SSE2 1
%define HAVE_SSE3 1
%define HAVE_SSSE3 1
%define HAVE_SSE4_1 1
%define HAVE_AVX 1
%define HAVE_AVX2 1
%define HAVE_AVX512 0
%define HAVE_VSX 0
%define HAVE_MMI 0
%define HAVE_VPX_PORTS 1
%define HAVE_PTHREAD_H 1
%define HAVE_UNISTD_H 0
%define CONFIG_DEPENDENCY_TRACKING 1
%define CONFIG_EXTERNAL_BUILD 1
%define CONFIG_INSTALL_DOCS 0
%define CONFIG_INSTALL_BINS 1
%define CONFIG_INSTALL_LIBS 1
%define CONFIG_INSTALL_SRCS 0
%define CONFIG_DEBUG 0
%define CONFIG_GPROF 0
%define CONFIG_GCOV 0
%define CONFIG_RVCT 0
%define CONFIG_GCC 1
%define CONFIG_MSVS 0
%define CONFIG_PIC 1
%define CONFIG_BIG_ENDIAN 0
%define CONFIG_CODEC_SRCS 0
%define CONFIG_DEBUG_LIBS 0
%define CONFIG_DEQUANT_TOKENS 0
%define CONFIG_DC_RECON 0
%define CONFIG_RUNTIME_CPU_DETECT 1
%define CONFIG_POSTPROC 1
%define CONFIG_VP9_POSTPROC 1
%define CONFIG_MULTITHREAD 1
%define CONFIG_INTERNAL_STATS 0
%define CONFIG_VP8_ENCODER 1
%define CONFIG_VP8_DECODER 1
%define CONFIG_VP9_ENCODER 1
%define CONFIG_VP9_DECODER 1
%define CONFIG_VP8 1
%define CONFIG_VP9 1
%define CONFIG_ENCODERS 1
%define CONFIG_DECODERS 1
%define CONFIG_STATIC_MSVCRT 0
%define CONFIG_SPATIAL_RESAMPLING 1
%define CONFIG_REALTIME_ONLY 1
%define CONFIG_ONTHEFLY_BITPACKING 0
%define CONFIG_ERROR_CONCEALMENT 0
%define CONFIG_SHARED 0
%define CONFIG_STATIC 1
%define CONFIG_SMALL 0
%define CONFIG_POSTPROC_VISUALIZER 0
%define CONFIG_OS_SUPPORT 1
%define CONFIG_UNIT_TESTS 1
%define CONFIG_WEBM_IO 1
%define CONFIG_LIBYUV 0
%define CONFIG_DECODE_PERF_TESTS 0
%define CONFIG_ENCODE_PERF_TESTS 0
%define CONFIG_MULTI_RES_ENCODING 1
%define CONFIG_TEMPORAL_DENOISING 1
%define CONFIG_VP9_TEMPORAL_DENOISING 1
%define CONFIG_CONSISTENT_RECODE 0
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_VP9_HIGHBITDEPTH 1
%define CONFIG_BETTER_HW_COMPATIBILITY 0
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
%define CONFIG_ALWAYS_ADJUST_BPM 0
%define CONFIG_BITSTREAM_DEBUG 0
%define CONFIG_MISMATCH_DEBUG 0
%define CONFIG_FP_MB_STATS 0
%define CONFIG_EMULATE_HARDWARE 0
%define CONFIG_NON_GREEDY_MV 0
%define CONFIG_RATE_CTRL 0
%define DECODE_WIDTH_LIMIT 16384
%define DECODE_HEIGHT_LIMIT 16384

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=x86-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv --enable-pic --as=yasm --disable-avx512 --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 0
#define ARCH_ARM 0
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 1
#define ARCH_X86 1
#define VPX_ARCH_X86_64 0
#define ARCH_X86_64 0
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 0
#define HAVE_NEON_ASM 0
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 1
#define HAVE_SSE 1
#define HAVE_SSE2 1
#define HAVE_SSE3 1
#define HAVE_SSSE3 1
#define HAVE_SSE4_1 1
#define HAVE_AVX 1
#define HAVE_AVX2 1
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 1
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 1
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,99 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#ifdef RTCD_C
#include "vpx_ports/x86.h"
static void setup_rtcd_internal(void) {
int flags = x86_simd_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,678 @@
// This file is generated. Do not edit.
#ifndef VP8_RTCD_H_
#define VP8_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP8
*/
struct blockd;
struct macroblockd;
struct loop_filter_info;
/* Encoder forward decls */
struct block;
struct macroblock;
struct variance_vtable;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict16x16_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict4x4_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_sse2
void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x4_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_sse2
void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_bilinear_predict8x8_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_bilinear_predict8x8)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_blend_b_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_b vp8_blend_b_c
void vp8_blend_mb_inner_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_inner vp8_blend_mb_inner_c
void vp8_blend_mb_outer_c(unsigned char* y,
unsigned char* u,
unsigned char* v,
int y_1,
int u_1,
int v_1,
int alpha,
int stride);
#define vp8_blend_mb_outer vp8_blend_mb_outer_c
int vp8_block_error_c(short* coeff, short* dqcoeff);
int vp8_block_error_sse2(short* coeff, short* dqcoeff);
#define vp8_block_error vp8_block_error_sse2
void vp8_copy32xn_c(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
void vp8_copy32xn_sse2(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
void vp8_copy32xn_sse3(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char* src_ptr,
int src_stride,
unsigned char* dst_ptr,
int dst_stride,
int height);
void vp8_copy_mem16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem16x16_sse2(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem16x16 vp8_copy_mem16x16_sse2
void vp8_copy_mem8x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x4_mmx(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x4 vp8_copy_mem8x4_mmx
void vp8_copy_mem8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
void vp8_copy_mem8x8_mmx(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride);
#define vp8_copy_mem8x8 vp8_copy_mem8x8_mmx
void vp8_dc_only_idct_add_c(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_dc_only_idct_add_mmx(short input_dc,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_mmx
int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_sse2(unsigned char* mc_running_avg_y,
int mc_avg_y_stride,
unsigned char* running_avg_y,
int avg_y_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter vp8_denoiser_filter_sse2
int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
int vp8_denoiser_filter_uv_sse2(unsigned char* mc_running_avg,
int mc_avg_stride,
unsigned char* running_avg,
int avg_stride,
unsigned char* sig,
int sig_stride,
unsigned int motion_magnitude,
int increase_denoising);
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_sse2
void vp8_dequant_idct_add_c(short* input,
short* dq,
unsigned char* dest,
int stride);
void vp8_dequant_idct_add_mmx(short* input,
short* dq,
unsigned char* dest,
int stride);
#define vp8_dequant_idct_add vp8_dequant_idct_add_mmx
void vp8_dequant_idct_add_uv_block_c(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
void vp8_dequant_idct_add_uv_block_sse2(short* q,
short* dq,
unsigned char* dst_u,
unsigned char* dst_v,
int stride,
char* eobs);
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_sse2
void vp8_dequant_idct_add_y_block_c(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
void vp8_dequant_idct_add_y_block_sse2(short* q,
short* dq,
unsigned char* dst,
int stride,
char* eobs);
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_sse2
void vp8_dequantize_b_c(struct blockd*, short* DQC);
void vp8_dequantize_b_mmx(struct blockd*, short* DQC);
#define vp8_dequantize_b vp8_dequantize_b_mmx
int vp8_diamond_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
int vp8_diamond_search_sadx4(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
union int_mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_diamond_search_sad vp8_diamond_search_sadx4
void vp8_fast_quantize_b_c(struct block*, struct blockd*);
void vp8_fast_quantize_b_sse2(struct block*, struct blockd*);
void vp8_fast_quantize_b_ssse3(struct block*, struct blockd*);
RTCD_EXTERN void (*vp8_fast_quantize_b)(struct block*, struct blockd*);
void vp8_filter_by_weight16x16_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
void vp8_filter_by_weight16x16_sse2(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_sse2
void vp8_filter_by_weight4x4_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
void vp8_filter_by_weight8x8_c(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
void vp8_filter_by_weight8x8_sse2(unsigned char* src,
int src_stride,
unsigned char* dst,
int dst_stride,
int src_weight);
#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_sse2
int vp8_full_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
int vp8_full_search_sadx3(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
int vp8_full_search_sadx8(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
RTCD_EXTERN int (*vp8_full_search_sad)(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int sad_per_bit,
int distance,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
void vp8_loop_filter_bh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bh_sse2(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bh vp8_loop_filter_bh_sse2
void vp8_loop_filter_bv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_bv_sse2(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_bv vp8_loop_filter_bv_sse2
void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbh_sse2(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_sse2
void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
void vp8_loop_filter_mbv_sse2(unsigned char* y_ptr,
unsigned char* u_ptr,
unsigned char* v_ptr,
int y_stride,
int uv_stride,
struct loop_filter_info* lfi);
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_sse2
void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bhs_sse2(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_sse2
void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_bvs_sse2(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_sse2
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_simple_horizontal_edge_sse2(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_sse2
void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
void vp8_loop_filter_simple_vertical_edge_sse2(unsigned char* y_ptr,
int y_stride,
const unsigned char* blimit);
#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_sse2
int vp8_mbblock_error_c(struct macroblock* mb, int dc);
int vp8_mbblock_error_sse2(struct macroblock* mb, int dc);
#define vp8_mbblock_error vp8_mbblock_error_sse2
int vp8_mbuverror_c(struct macroblock* mb);
int vp8_mbuverror_sse2(struct macroblock* mb);
#define vp8_mbuverror vp8_mbuverror_sse2
int vp8_refining_search_sad_c(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
int vp8_refining_search_sadx4(struct macroblock* x,
struct block* b,
struct blockd* d,
union int_mv* ref_mv,
int error_per_bit,
int search_range,
struct variance_vtable* fn_ptr,
int* mvcost[2],
union int_mv* center_mv);
#define vp8_refining_search_sad vp8_refining_search_sadx4
void vp8_regular_quantize_b_c(struct block*, struct blockd*);
void vp8_regular_quantize_b_sse2(struct block*, struct blockd*);
void vp8_regular_quantize_b_sse4_1(struct block*, struct blockd*);
RTCD_EXTERN void (*vp8_regular_quantize_b)(struct block*, struct blockd*);
void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
void vp8_short_fdct4x4_sse2(short* input, short* output, int pitch);
#define vp8_short_fdct4x4 vp8_short_fdct4x4_sse2
void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
void vp8_short_fdct8x4_sse2(short* input, short* output, int pitch);
#define vp8_short_fdct8x4 vp8_short_fdct8x4_sse2
void vp8_short_idct4x4llm_c(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
void vp8_short_idct4x4llm_mmx(short* input,
unsigned char* pred_ptr,
int pred_stride,
unsigned char* dst_ptr,
int dst_stride);
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_mmx
void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
void vp8_short_inv_walsh4x4_sse2(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_sse2
void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
void vp8_short_walsh4x4_sse2(short* input, short* output, int pitch);
#define vp8_short_walsh4x4 vp8_short_walsh4x4_sse2
void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict16x16_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict16x16)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_mmx(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict4x4_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict4x4)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x4_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict8x4)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_sse2(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_sixtap_predict8x8_ssse3(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char* src_ptr,
int src_pixels_per_line,
int xoffset,
int yoffset,
unsigned char* dst_ptr,
int dst_pitch);
void vp8_rtcd(void);
#ifdef RTCD_C
#include "vpx_ports/x86.h"
static void setup_rtcd_internal(void) {
int flags = x86_simd_caps();
(void)flags;
vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_sse2;
if (flags & HAS_SSSE3)
vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_ssse3;
vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_sse2;
if (flags & HAS_SSSE3)
vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_ssse3;
vp8_copy32xn = vp8_copy32xn_sse2;
if (flags & HAS_SSE3)
vp8_copy32xn = vp8_copy32xn_sse3;
vp8_fast_quantize_b = vp8_fast_quantize_b_sse2;
if (flags & HAS_SSSE3)
vp8_fast_quantize_b = vp8_fast_quantize_b_ssse3;
vp8_full_search_sad = vp8_full_search_sad_c;
if (flags & HAS_SSE3)
vp8_full_search_sad = vp8_full_search_sadx3;
if (flags & HAS_SSE4_1)
vp8_full_search_sad = vp8_full_search_sadx8;
vp8_regular_quantize_b = vp8_regular_quantize_b_sse2;
if (flags & HAS_SSE4_1)
vp8_regular_quantize_b = vp8_regular_quantize_b_sse4_1;
vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_sse2;
if (flags & HAS_SSSE3)
vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_ssse3;
vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_mmx;
if (flags & HAS_SSSE3)
vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_ssse3;
vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_sse2;
if (flags & HAS_SSSE3)
vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_ssse3;
vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
if (flags & HAS_SSSE3)
vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,493 @@
// This file is generated. Do not edit.
#ifndef VP9_RTCD_H_
#define VP9_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* VP9
*/
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_enums.h"
#include "vp9/common/vp9_filter.h"
#include "vpx/vpx_integer.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct vp9_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
int64_t vp9_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
int64_t vp9_block_error_sse2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
int64_t vp9_block_error_avx2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
RTCD_EXTERN int64_t (*vp9_block_error)(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz);
int64_t vp9_block_error_fp_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int64_t vp9_block_error_fp_sse2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int64_t vp9_block_error_fp_avx2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
RTCD_EXTERN int64_t (*vp9_block_error_fp)(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
int block_size);
int vp9_denoiser_filter_c(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
int vp9_denoiser_filter_sse2(const uint8_t* sig,
int sig_stride,
const uint8_t* mc_avg,
int mc_avg_stride,
uint8_t* avg,
int avg_stride,
int increase_denoising,
BLOCK_SIZE bs,
int motion_magnitude);
#define vp9_denoiser_filter vp9_denoiser_filter_sse2
int vp9_diamond_search_sad_c(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
int vp9_diamond_search_sad_avx(const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
RTCD_EXTERN int (*vp9_diamond_search_sad)(
const struct macroblock* x,
const struct search_site_config* cfg,
struct mv* ref_mv,
struct mv* best_mv,
int search_param,
int sad_per_bit,
int* num00,
const struct vp9_variance_vtable* fn_ptr,
const struct mv* center_mv);
void vp9_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
void vp9_fht16x16_sse2(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht16x16 vp9_fht16x16_sse2
void vp9_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
void vp9_fht4x4_sse2(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht4x4 vp9_fht4x4_sse2
void vp9_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
void vp9_fht8x8_sse2(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_fht8x8 vp9_fht8x8_sse2
void vp9_filter_by_weight16x16_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
void vp9_filter_by_weight16x16_sse2(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_sse2
void vp9_filter_by_weight8x8_c(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
void vp9_filter_by_weight8x8_sse2(const uint8_t* src,
int src_stride,
uint8_t* dst,
int dst_stride,
int src_weight);
#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_sse2
void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
void vp9_fwht4x4_sse2(const int16_t* input, tran_low_t* output, int stride);
#define vp9_fwht4x4 vp9_fwht4x4_sse2
int64_t vp9_highbd_block_error_c(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz,
int bd);
int64_t vp9_highbd_block_error_sse2(const tran_low_t* coeff,
const tran_low_t* dqcoeff,
intptr_t block_size,
int64_t* ssz,
int bd);
#define vp9_highbd_block_error vp9_highbd_block_error_sse2
void vp9_highbd_fht16x16_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht16x16 vp9_highbd_fht16x16_c
void vp9_highbd_fht4x4_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht4x4 vp9_highbd_fht4x4_c
void vp9_highbd_fht8x8_c(const int16_t* input,
tran_low_t* output,
int stride,
int tx_type);
#define vp9_highbd_fht8x8 vp9_highbd_fht8x8_c
void vp9_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
#define vp9_highbd_fwht4x4 vp9_highbd_fwht4x4_c
void vp9_highbd_iht16x16_256_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht16x16_256_add_sse4_1(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
RTCD_EXTERN void (*vp9_highbd_iht16x16_256_add)(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht4x4_16_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht4x4_16_add_sse4_1(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
RTCD_EXTERN void (*vp9_highbd_iht4x4_16_add)(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht8x8_64_add_c(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_iht8x8_64_add_sse4_1(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
RTCD_EXTERN void (*vp9_highbd_iht8x8_64_add)(const tran_low_t* input,
uint16_t* dest,
int stride,
int tx_type,
int bd);
void vp9_highbd_mbpost_proc_across_ip_c(uint16_t* src,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_across_ip vp9_highbd_mbpost_proc_across_ip_c
void vp9_highbd_mbpost_proc_down_c(uint16_t* dst,
int pitch,
int rows,
int cols,
int flimit);
#define vp9_highbd_mbpost_proc_down vp9_highbd_mbpost_proc_down_c
void vp9_highbd_post_proc_down_and_across_c(const uint16_t* src_ptr,
uint16_t* dst_ptr,
int src_pixels_per_line,
int dst_pixels_per_line,
int rows,
int cols,
int flimit);
#define vp9_highbd_post_proc_down_and_across \
vp9_highbd_post_proc_down_and_across_c
void vp9_highbd_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp vp9_highbd_quantize_fp_c
void vp9_highbd_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
#define vp9_highbd_quantize_fp_32x32 vp9_highbd_quantize_fp_32x32_c
void vp9_highbd_temporal_filter_apply_c(const uint8_t* frame1,
unsigned int stride,
const uint8_t* frame2,
unsigned int block_width,
unsigned int block_height,
int strength,
int* blk_fw,
int use_32x32,
uint32_t* accumulator,
uint16_t* count);
#define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
void vp9_iht16x16_256_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht16x16_256_add_sse2(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_sse2
void vp9_iht4x4_16_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht4x4_16_add_sse2(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_sse2
void vp9_iht8x8_64_add_c(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
void vp9_iht8x8_64_add_sse2(const tran_low_t* input,
uint8_t* dest,
int stride,
int tx_type);
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_sse2
void vp9_quantize_fp_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_sse2(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_ssse3(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_avx2(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
RTCD_EXTERN void (*vp9_quantize_fp)(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_quantize_fp_32x32_ssse3(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
RTCD_EXTERN void (*vp9_quantize_fp_32x32)(const tran_low_t* coeff_ptr,
intptr_t n_coeffs,
int skip_block,
const int16_t* round_ptr,
const int16_t* quant_ptr,
tran_low_t* qcoeff_ptr,
tran_low_t* dqcoeff_ptr,
const int16_t* dequant_ptr,
uint16_t* eob_ptr,
const int16_t* scan,
const int16_t* iscan);
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_scale_and_extend_frame_ssse3(const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
RTCD_EXTERN void (*vp9_scale_and_extend_frame)(
const struct yv12_buffer_config* src,
struct yv12_buffer_config* dst,
INTERP_FILTER filter_type,
int phase_scaler);
void vp9_rtcd(void);
#ifdef RTCD_C
#include "vpx_ports/x86.h"
static void setup_rtcd_internal(void) {
int flags = x86_simd_caps();
(void)flags;
vp9_block_error = vp9_block_error_sse2;
if (flags & HAS_AVX2)
vp9_block_error = vp9_block_error_avx2;
vp9_block_error_fp = vp9_block_error_fp_sse2;
if (flags & HAS_AVX2)
vp9_block_error_fp = vp9_block_error_fp_avx2;
vp9_diamond_search_sad = vp9_diamond_search_sad_c;
if (flags & HAS_AVX)
vp9_diamond_search_sad = vp9_diamond_search_sad_avx;
vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_c;
if (flags & HAS_SSE4_1)
vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_sse4_1;
vp9_highbd_iht4x4_16_add = vp9_highbd_iht4x4_16_add_c;
if (flags & HAS_SSE4_1)
vp9_highbd_iht4x4_16_add = vp9_highbd_iht4x4_16_add_sse4_1;
vp9_highbd_iht8x8_64_add = vp9_highbd_iht8x8_64_add_c;
if (flags & HAS_SSE4_1)
vp9_highbd_iht8x8_64_add = vp9_highbd_iht8x8_64_add_sse4_1;
vp9_quantize_fp = vp9_quantize_fp_sse2;
if (flags & HAS_SSSE3)
vp9_quantize_fp = vp9_quantize_fp_ssse3;
if (flags & HAS_AVX2)
vp9_quantize_fp = vp9_quantize_fp_avx2;
vp9_quantize_fp_32x32 = vp9_quantize_fp_32x32_c;
if (flags & HAS_SSSE3)
vp9_quantize_fp_32x32 = vp9_quantize_fp_32x32_ssse3;
vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_c;
if (flags & HAS_SSSE3)
vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_ssse3;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,94 @@
%define VPX_ARCH_ARM 0
%define ARCH_ARM 0
%define VPX_ARCH_MIPS 0
%define ARCH_MIPS 0
%define VPX_ARCH_X86 0
%define ARCH_X86 0
%define VPX_ARCH_X86_64 1
%define ARCH_X86_64 1
%define VPX_ARCH_PPC 0
%define ARCH_PPC 0
%define HAVE_NEON 0
%define HAVE_NEON_ASM 0
%define HAVE_MIPS32 0
%define HAVE_DSPR2 0
%define HAVE_MSA 0
%define HAVE_MIPS64 0
%define HAVE_MMX 1
%define HAVE_SSE 1
%define HAVE_SSE2 1
%define HAVE_SSE3 1
%define HAVE_SSSE3 1
%define HAVE_SSE4_1 1
%define HAVE_AVX 1
%define HAVE_AVX2 1
%define HAVE_AVX512 0
%define HAVE_VSX 0
%define HAVE_MMI 0
%define HAVE_VPX_PORTS 1
%define HAVE_PTHREAD_H 1
%define HAVE_UNISTD_H 0
%define CONFIG_DEPENDENCY_TRACKING 1
%define CONFIG_EXTERNAL_BUILD 1
%define CONFIG_INSTALL_DOCS 0
%define CONFIG_INSTALL_BINS 1
%define CONFIG_INSTALL_LIBS 1
%define CONFIG_INSTALL_SRCS 0
%define CONFIG_DEBUG 0
%define CONFIG_GPROF 0
%define CONFIG_GCOV 0
%define CONFIG_RVCT 0
%define CONFIG_GCC 1
%define CONFIG_MSVS 0
%define CONFIG_PIC 1
%define CONFIG_BIG_ENDIAN 0
%define CONFIG_CODEC_SRCS 0
%define CONFIG_DEBUG_LIBS 0
%define CONFIG_DEQUANT_TOKENS 0
%define CONFIG_DC_RECON 0
%define CONFIG_RUNTIME_CPU_DETECT 1
%define CONFIG_POSTPROC 1
%define CONFIG_VP9_POSTPROC 1
%define CONFIG_MULTITHREAD 1
%define CONFIG_INTERNAL_STATS 0
%define CONFIG_VP8_ENCODER 1
%define CONFIG_VP8_DECODER 1
%define CONFIG_VP9_ENCODER 1
%define CONFIG_VP9_DECODER 1
%define CONFIG_VP8 1
%define CONFIG_VP9 1
%define CONFIG_ENCODERS 1
%define CONFIG_DECODERS 1
%define CONFIG_STATIC_MSVCRT 0
%define CONFIG_SPATIAL_RESAMPLING 1
%define CONFIG_REALTIME_ONLY 1
%define CONFIG_ONTHEFLY_BITPACKING 0
%define CONFIG_ERROR_CONCEALMENT 0
%define CONFIG_SHARED 0
%define CONFIG_STATIC 1
%define CONFIG_SMALL 0
%define CONFIG_POSTPROC_VISUALIZER 0
%define CONFIG_OS_SUPPORT 1
%define CONFIG_UNIT_TESTS 1
%define CONFIG_WEBM_IO 1
%define CONFIG_LIBYUV 0
%define CONFIG_DECODE_PERF_TESTS 0
%define CONFIG_ENCODE_PERF_TESTS 0
%define CONFIG_MULTI_RES_ENCODING 1
%define CONFIG_TEMPORAL_DENOISING 1
%define CONFIG_VP9_TEMPORAL_DENOISING 1
%define CONFIG_CONSISTENT_RECODE 0
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_VP9_HIGHBITDEPTH 1
%define CONFIG_BETTER_HW_COMPATIBILITY 0
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
%define CONFIG_ALWAYS_ADJUST_BPM 0
%define CONFIG_BITSTREAM_DEBUG 0
%define CONFIG_MISMATCH_DEBUG 0
%define CONFIG_FP_MB_STATS 0
%define CONFIG_EMULATE_HARDWARE 0
%define CONFIG_NON_GREEDY_MV 0
%define CONFIG_RATE_CTRL 0
%define DECODE_WIDTH_LIMIT 16384
%define DECODE_HEIGHT_LIMIT 16384

View file

@ -0,0 +1,10 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=x86_64-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv --enable-pic --as=yasm --disable-avx512 --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,107 @@
/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
/* */
/* Use of this source code is governed by a BSD-style license */
/* that can be found in the LICENSE file in the root of the source */
/* tree. An additional intellectual property rights grant can be found */
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
#define RESTRICT
#define INLINE inline
#define VPX_ARCH_ARM 0
#define ARCH_ARM 0
#define VPX_ARCH_MIPS 0
#define ARCH_MIPS 0
#define VPX_ARCH_X86 0
#define ARCH_X86 0
#define VPX_ARCH_X86_64 1
#define ARCH_X86_64 1
#define VPX_ARCH_PPC 0
#define ARCH_PPC 0
#define HAVE_NEON 0
#define HAVE_NEON_ASM 0
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 1
#define HAVE_SSE 1
#define HAVE_SSE2 1
#define HAVE_SSE3 1
#define HAVE_SSSE3 1
#define HAVE_SSE4_1 1
#define HAVE_AVX 1
#define HAVE_AVX2 1
#define HAVE_AVX512 0
#define HAVE_VSX 0
#define HAVE_MMI 0
#define HAVE_VPX_PORTS 1
#define HAVE_PTHREAD_H 1
#define HAVE_UNISTD_H 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 1
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
#define CONFIG_RUNTIME_CPU_DETECT 1
#define CONFIG_POSTPROC 1
#define CONFIG_VP9_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP9_ENCODER 1
#define CONFIG_VP9_DECODER 1
#define CONFIG_VP8 1
#define CONFIG_VP9 1
#define CONFIG_ENCODERS 1
#define CONFIG_DECODERS 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 1
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 1
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_MULTI_RES_ENCODING 1
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_CONSISTENT_RECODE 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_ALWAYS_ADJUST_BPM 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_EMULATE_HARDWARE 0
#define CONFIG_NON_GREEDY_MV 0
#define CONFIG_RATE_CTRL 0
#define DECODE_WIDTH_LIMIT 16384
#define DECODE_HEIGHT_LIMIT 16384
#endif /* VPX_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,99 @@
// This file is generated. Do not edit.
#ifndef VPX_SCALE_RTCD_H_
#define VPX_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 vp8_horizontal_line_2_1_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
void vp8_horizontal_line_5_3_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
void vp8_horizontal_line_5_4_scale_c(const unsigned char* source,
unsigned int source_width,
unsigned char* dest,
unsigned int dest_width);
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
void vp8_vertical_band_2_1_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
void vp8_vertical_band_2_1_scale_i_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
void vp8_vertical_band_5_3_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
void vp8_vertical_band_5_4_scale_c(unsigned char* source,
unsigned int src_pitch,
unsigned char* dest,
unsigned int dest_pitch,
unsigned int dest_width);
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf);
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc,
struct yv12_buffer_config* dst_ybc);
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
void vpx_scale_rtcd(void);
#ifdef RTCD_C
#include "vpx_ports/x86.h"
static void setup_rtcd_internal(void) {
int flags = x86_simd_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,9 @@
// This file is generated. Do not edit.
#define VERSION_MAJOR 1
#define VERSION_MINOR 8
#define VERSION_PATCH 2
#define VERSION_EXTRA "125-g667138e1f"
#define VERSION_PACKED \
((VERSION_MAJOR << 16) | (VERSION_MINOR << 8) | (VERSION_PATCH))
#define VERSION_STRING_NOSP "v1.8.2-125-g667138e1f"
#define VERSION_STRING " v1.8.2-125-g667138e1f"

View file

@ -0,0 +1,205 @@
# This file is automatically generated from the git commit history
# by tools/gen_authors.sh.
Aaron Watry <awatry@gmail.com>
Abo Talib Mahfoodh <ab.mahfoodh@gmail.com>
Adrian Grange <agrange@google.com>
Ahmad Sharif <asharif@google.com>
Aidan Welch <aidansw@yahoo.com>
Aleksey Vasenev <margtu-fivt@ya.ru>
Alexander Potapenko <glider@google.com>
Alexander Voronov <avoronov@graphics.cs.msu.ru>
Alexandra Hájková <alexandra.khirnova@gmail.com>
Aex Converse <alexconv@twitch.tv>
Alexis Ballier <aballier@gentoo.org>
Alok Ahuja <waveletcoeff@gmail.com>
Alpha Lam <hclam@google.com>
A.Mahfoodh <ab.mahfoodh@gmail.com>
Ami Fischman <fischman@chromium.org>
Andoni Morales Alastruey <ylatuya@gmail.com>
Andres Mejia <mcitadel@gmail.com>
Andrew Lewis <andrewlewis@google.com>
Andrew Russell <anrussell@google.com>
Angie Chen <yunqi@google.com>
Angie Chiang <angiebird@google.com>
Aron Rosenberg <arosenberg@logitech.com>
Attila Nagy <attilanagy@google.com>
Birk Magnussen <birk.magnussen@googlemail.com>
Brian Foley <bpfoley@google.com>
Brion Vibber <bvibber@wikimedia.org>
changjun.yang <changjun.yang@intel.com>
Charles 'Buck' Krasic <ckrasic@google.com>
Cheng Chen <chengchen@google.com>
Chi Yo Tsai <chiyotsai@google.com>
chm <chm@rock-chips.com>
Chris Cunningham <chcunningham@chromium.org>
Christian Duvivier <cduvivier@google.com>
Clement Courbet <courbet@google.com>
Daniele Castagna <dcastagna@chromium.org>
Daniel Kang <ddkang@google.com>
Dan Zhu <zxdan@google.com>
Deb Mukherjee <debargha@google.com>
Deepa K G <deepa.kg@ittiam.com>
Dim Temp <dimtemp0@gmail.com>
Dmitry Kovalev <dkovalev@google.com>
Dragan Mrdjan <dmrdjan@mips.com>
Ed Baker <edward.baker@intel.com>
Ehsan Akhgari <ehsan.akhgari@gmail.com>
Elliott Karpilovsky <elliottk@google.com>
Erik Niemeyer <erik.a.niemeyer@intel.com>
Fabio Pedretti <fabio.ped@libero.it>
Frank Galligan <fgalligan@google.com>
Fredrik Söderquist <fs@opera.com>
Fritz Koenig <frkoenig@google.com>
Fyodor Kyslov <kyslov@google.com>
Gabriel Marin <gmx@chromium.org>
Gaute Strokkenes <gaute.strokkenes@broadcom.com>
Geza Lore <gezalore@gmail.com>
Ghislain MARY <ghislainmary2@gmail.com>
Giuseppe Scrivano <gscrivano@gnu.org>
Gordana Cmiljanovic <gordana.cmiljanovic@imgtec.com>
Gregor Jasny <gjasny@gmail.com>
Guillaume Martres <gmartres@google.com>
Guillermo Ballester Valor <gbvalor@gmail.com>
Hangyu Kuang <hkuang@google.com>
Hanno Böck <hanno@hboeck.de>
Han Shen <shenhan@google.com>
Harish Mahendrakar <harish.mahendrakar@ittiam.com>
Henrik Lundin <hlundin@google.com>
Hien Ho <hienho@google.com>
Hui Su <huisu@google.com>
Ivan Krasin <krasin@chromium.org>
Ivan Maltz <ivanmaltz@google.com>
Jacek Caban <cjacek@gmail.com>
Jacky Chen <jackychen@google.com>
James Berry <jamesberry@google.com>
James Yu <james.yu@linaro.org>
James Zern <jzern@google.com>
Jan Gerber <j@mailb.org>
Jan Kratochvil <jan.kratochvil@redhat.com>
Janne Salonen <jsalonen@google.com>
Jean-Yves Avenard <jyavenard@mozilla.com>
Jeff Faust <jfaust@google.com>
Jeff Muizelaar <jmuizelaar@mozilla.com>
Jeff Petkau <jpet@chromium.org>
Jerome Jiang <jianj@google.com>
Jia Jia <jia.jia@linaro.org>
Jian Zhou <zhoujian@google.com>
Jim Bankoski <jimbankoski@google.com>
Jingning Han <jingning@google.com>
Joey Parrish <joeyparrish@google.com>
Johann Koenig <johannkoenig@google.com>
John Koleszar <jkoleszar@google.com>
Johnny Klonaris <google@jawknee.com>
John Stark <jhnstrk@gmail.com>
Jon Kunkee <jkunkee@microsoft.com>
Jorge E. Moreira <jemoreira@google.com>
Joshua Bleecher Snyder <josh@treelinelabs.com>
Joshua Litt <joshualitt@google.com>
Julia Robson <juliamrobson@gmail.com>
Justin Clift <justin@salasaga.org>
Justin Lebar <justin.lebar@gmail.com>
Kaustubh Raste <kaustubh.raste@imgtec.com>
KO Myung-Hun <komh@chollian.net>
Kyle Siefring <kylesiefring@gmail.com>
Lawrence Velázquez <larryv@macports.org>
Linfeng Zhang <linfengz@google.com>
Liu Peng <pengliu.mail@gmail.com>
Lou Quillio <louquillio@google.com>
Luca Barbato <lu_zero@gentoo.org>
Luc Trudeau <luc@trud.ca>
Makoto Kato <makoto.kt@gmail.com>
Mans Rullgard <mans@mansr.com>
Marco Paniconi <marpan@google.com>
Mark Mentovai <mark@chromium.org>
Martin Ettl <ettl.martin78@googlemail.com>
Martin Storsjö <martin@martin.st>
Matthew Heaney <matthewjheaney@chromium.org>
Matthias Räncker <theonetruecamper@gmx.de>
Michael Horowitz <mhoro@webrtc.org>
Michael Kohler <michaelkohler@live.com>
Mike Frysinger <vapier@chromium.org>
Mike Hommey <mhommey@mozilla.com>
Mikhal Shemer <mikhal@google.com>
Min Chen <chenm003@gmail.com>
Minghai Shang <minghai@google.com>
Min Ye <yeemmi@google.com>
Mirko Bonadei <mbonadei@google.com>
Moriyoshi Koizumi <mozo@mozo.jp>
Morton Jonuschat <yabawock@gmail.com>
Nathan E. Egge <negge@mozilla.com>
Neil Birkbeck <neil.birkbeck@gmail.com>
Nico Weber <thakis@chromium.org>
Niveditha Rau <niveditha.rau@gmail.com>
Parag Salasakar <img.mips1@gmail.com>
Pascal Massimino <pascal.massimino@gmail.com>
Patrik Westin <patrik.westin@gmail.com>
Paul Wilkins <paulwilkins@google.com>
Pavol Rusnak <stick@gk2.sk>
Paweł Hajdan <phajdan@google.com>
Pengchong Jin <pengchong@google.com>
Peter Boström <pbos@chromium.org>
Peter Collingbourne <pcc@chromium.org>
Peter de Rivaz <peter.derivaz@gmail.com>
Philip Jägenstedt <philipj@opera.com>
Priit Laes <plaes@plaes.org>
Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
Rafaël Carré <funman@videolan.org>
Rafael de Lucena Valle <rafaeldelucena@gmail.com>
Rahul Chaudhry <rahulchaudhry@google.com>
Ralph Giles <giles@xiph.org>
Ranjit Kumar Tulabandu <ranjit.tulabandu@ittiam.com>
Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Ravi Chaudhary <ravi.chaudhary@ittiam.com>
Ritu Baldwa <ritu.baldwa@ittiam.com>
Rob Bradford <rob@linux.intel.com>
Ronald S. Bultje <rsbultje@gmail.com>
Rui Ueyama <ruiu@google.com>
Sai Deng <sdeng@google.com>
Sami Pietilä <samipietila@google.com>
Sarah Parker <sarahparker@google.com>
Sasi Inguva <isasi@google.com>
Scott Graham <scottmg@chromium.org>
Scott LaVarnway <slavarnway@google.com>
Sean McGovern <gseanmcg@gmail.com>
Sergey Kolomenkin <kolomenkin@gmail.com>
Sergey Silkin <ssilkin@google.com>
Sergey Ulanov <sergeyu@chromium.org>
Shimon Doodkin <helpmepro1@gmail.com>
Shiyou Yin <yinshiyou-hf@loongson.cn>
Shubham Tandle <shubham.tandle@ittiam.com>
Shunyao Li <shunyaoli@google.com>
Sreerenj Balachandran <bsreerenj@gmail.com>
Stefan Holmer <holmer@google.com>
Suman Sunkara <sunkaras@google.com>
Supradeep T R <supradeep.tr@ittiam.com>
Sylvestre Ledru <sylvestre@mozilla.com>
Taekhyun Kim <takim@nvidia.com>
Takanori MATSUURA <t.matsuu@gmail.com>
Tamar Levy <tamar.levy@intel.com>
Tao Bai <michaelbai@chromium.org>
Tero Rintaluoma <teror@google.com>
Thijs Vermeir <thijsvermeir@gmail.com>
Tim Kopp <tkopp@google.com>
Timothy B. Terriberry <tterribe@xiph.org>
Tom Finegan <tomfinegan@google.com>
Tristan Matthews <le.businessman@gmail.com>
Urvang Joshi <urvang@google.com>
Venkatarama NG. Avadhani <venkatarama.avadhani@ittiam.com>
Vignesh Venkatasubramanian <vigneshv@google.com>
Vitaly Buka <vitalybuka@chromium.org>
Vlad Tsyrklevich <vtsyrklevich@chromium.org>
Wan-Teh Chang <wtc@google.com>
Wonkap Jang <wonkap@google.com>
xiwei gu <guxiwei-hf@loongson.cn>
Yaowu Xu <yaowu@google.com>
Yi Luo <luoyi@google.com>
Yongzhe Wang <yongzhe@google.com>
Yue Chen <yuec@google.com>
Yun Liu <yliuyliu@google.com>
Yunqing Wang <yunqingwang@google.com>
Yury Gitman <yuryg@google.com>
Zoe Liu <zoeliu@google.com>
Google Inc.
The Mozilla Foundation
The Xiph.Org Foundation

View file

@ -0,0 +1,784 @@
2020-07-29 v1.9.0 "Quacking Duck"
This release adds support for NV12, a separate library for rate control, as
well as incremental improvements.
- Upgrading:
NV12 support is added to this release.
A new interface is added for VP9 rate control. The new library libvp9rc.a
must be linked by applications.
Googletest is updated to v1.10.0.
simple_encode.cc is compiled into a new library libsimple_encode.a with
CONFIG_RATE_CTRL.
- Enhancement:
Various changes to improve VP9 SVC, rate control, quality and speed to real
time encoding.
- Bug fixes:
Fix key frame update refresh simulcast flexible svc.
Fix to disable_16x16part speed feature for real time encoding.
Fix some signed integer overflows for VP9 rate control.
Fix initialization of delta_q_uv.
Fix condition in regulate_q for cyclic refresh.
Various fixes to dynamic resizing for VP9 SVC.
2019-12-09 v1.8.2 "Pekin Duck"
This release collects incremental improvements to many aspects of the library.
- Upgrading:
ARCH_* defines have been removed in favor of VPX_ARCH_*.
2019-07-15 v1.8.1 "Orpington Duck"
This release collects incremental improvements to many aspects of the library.
- Upgrading:
VP8E_SET_CPUUSED now accepts values up to 9 for vp9.
VPX_CTRL_VP9E_SET_MAX_INTER_BITRATE_PCT had a spelling fix (was VP8E).
The --sdk-path option has been removed. If you were using it to build for
Android please read build/make/Android.mk for alternatives.
All PPC optimizations have been disabled:
https://bugs.chromium.org/p/webm/issues/detail?id=1522.
- Enhancements:
Various changes to improve encoder rate control, quality and speed
for practically every use case.
- Bug fixes:
vp9-rtc: Fix color artifacts for speed >= 8.
2019-01-31 v1.8.0 "Northern Shoveler Duck"
This release focused on encoding performance for realtime and VOD use cases.
- Upgrading:
This adds and improves several vp9 controls. Most are related to SVC:
VP9E_SET_SVC_FRAME_DROP_LAYER:
- Frame dropping in SVC.
VP9E_SET_SVC_INTER_LAYER_PRED:
- Inter-layer prediction in SVC.
VP9E_SET_SVC_GF_TEMPORAL_REF:
- Enable long term temporal reference in SVC.
VP9E_SET_SVC_REF_FRAME_CONFIG/VP9E_GET_SVC_REF_FRAME_CONFIG:
- Extend and improve this control for better flexibility in setting SVC
pattern dynamically.
VP9E_SET_POSTENCODE_DROP:
- Allow for post-encode frame dropping (applies to non-SVC too).
VP9E_SET_SVC_SPATIAL_LAYER_SYNC:
- Enable spatial layer sync frames.
VP9E_SET_SVC_LAYER_ID:
- Extend api to specify temporal id for each spatial layers.
VP9E_SET_ROI_MAP:
- Extend Region of Interest functionality to VP9.
- Enhancements:
2 pass vp9 encoding has improved substantially. When using --auto-alt-ref=6,
we see approximately 8% for VBR and 10% for CQ. When using --auto-alt-ref=1,
the gains are approximately 4% for VBR and 5% for CQ.
For real-time encoding, speed 7 has improved by ~5-10%. Encodes targeted at
screen sharing have improved when the content changes significantly (slide
sharing) or scrolls. There is a new speed 9 setting for mobile devices which
is about 10-20% faster than speed 8.
- Bug fixes:
VP9 denoiser issue.
VP9 partition issue for 1080p.
VP9 rate control improvments.
Postprocessing Multi Frame Quality Enhancement (MFQE) issue.
VP8 multithread decoder issues.
A variety of fuzzing issues.
2018-01-04 v1.7.0 "Mandarin Duck"
This release focused on high bit depth performance (10/12 bit) and vp9
encoding improvements.
- Upgrading:
This release is ABI incompatible due to new vp9 encoder features.
Frame parallel decoding for vp9 has been removed.
- Enhancements:
vp9 encoding supports additional threads with --row-mt. This can be greater
than the number of tiles.
Two new vp9 encoder options have been added:
--corpus-complexity
--tune-content=film
Additional tooling for respecting the vp9 "level" profiles has been added.
- Bug fixes:
A variety of fuzzing issues.
vp8 threading fix for ARM.
Codec control VP9_SET_SKIP_LOOP_FILTER fixed.
Reject invalid multi resolution configurations.
2017-01-09 v1.6.1 "Long Tailed Duck"
This release improves upon the VP9 encoder and speeds up the encoding and
decoding processes.
- Upgrading:
This release is ABI compatible with 1.6.0.
- Enhancements:
Faster VP9 encoding and decoding.
High bit depth builds now provide similar speed for 8 bit encode and decode
for x86 targets. Other platforms and higher bit depth improvements are in
progress.
- Bug Fixes:
A variety of fuzzing issues.
2016-07-20 v1.6.0 "Khaki Campbell Duck"
This release improves upon the VP9 encoder and speeds up the encoding and
decoding processes.
- Upgrading:
This release is ABI incompatible with 1.5.0 due to a new 'color_range' enum
in vpx_image and some minor changes to the VP8_COMP structure.
The default key frame interval for VP9 has changed from 128 to 9999.
- Enhancement:
A core focus has been performance for low end Intel processors. SSSE3
instructions such as 'pshufb' have been avoided and instructions have been
reordered to better accommodate the more constrained pipelines.
As a result, devices based on Celeron processors have seen substantial
decoding improvements. From Indian Runner Duck to Javan Whistling Duck,
decoding speed improved between 10 and 30%. Between Javan Whistling Duck
and Khaki Campbell Duck, it improved another 10 to 15%.
While Celeron benefited most, Core-i5 also improved 5% and 10% between the
respective releases.
Realtime performance for WebRTC for both speed and quality has received a
lot of attention.
- Bug Fixes:
A number of fuzzing issues, found variously by Mozilla, Chromium and others,
have been fixed and we strongly recommend updating.
2015-11-09 v1.5.0 "Javan Whistling Duck"
This release improves upon the VP9 encoder and speeds up the encoding and
decoding processes.
- Upgrading:
This release is ABI incompatible with 1.4.0. It drops deprecated VP8
controls and adds a variety of VP9 controls for testing.
The vpxenc utility now prefers VP9 by default.
- Enhancements:
Faster VP9 encoding and decoding
Smaller library size by combining functions used by VP8 and VP9
- Bug Fixes:
A variety of fuzzing issues
2015-04-03 v1.4.0 "Indian Runner Duck"
This release includes significant improvements to the VP9 codec.
- Upgrading:
This release is ABI incompatible with 1.3.0. It drops the compatibility
layer, requiring VPX_IMG_FMT_* instead of IMG_FMT_*, and adds several codec
controls for VP9.
- Enhancements:
Faster VP9 encoding and decoding
Multithreaded VP9 decoding (tile and frame-based)
Multithreaded VP9 encoding - on by default
YUV 4:2:2 and 4:4:4 support in VP9
10 and 12bit support in VP9
64bit ARM support by replacing ARM assembly with intrinsics
- Bug Fixes:
Fixes a VP9 bitstream issue in Profile 1. This only affected non-YUV 4:2:0
files.
- Known Issues:
Frame Parallel decoding fails for segmented and non-420 files.
2013-11-15 v1.3.0 "Forest"
This release introduces the VP9 codec in a backward-compatible way.
All existing users of VP8 can continue to use the library without
modification. However, some VP8 options do not map to VP9 in the same manner.
The VP9 encoder in this release is not feature complete. Users interested in
the encoder are advised to use the git master branch and discuss issues on
libvpx mailing lists.
- Upgrading:
This release is ABI and API compatible with Duclair (v1.0.0). Users
of older releases should refer to the Upgrading notes in this document
for that release.
- Enhancements:
Get rid of bashisms in the main build scripts
Added usage info on command line options
Add lossless compression mode
Dll build of libvpx
Add additional Mac OS X targets: 10.7, 10.8 and 10.9 (darwin11-13)
Add option to disable documentation
configure: add --enable-external-build support
make: support V=1 as short form of verbose=yes
configure: support mingw-w64
configure: support hardfloat armv7 CHOSTS
configure: add support for android x86
Add estimated completion time to vpxenc
Don't exit on decode errors in vpxenc
vpxenc: support scaling prior to encoding
vpxdec: support scaling output
vpxenc: improve progress indicators with --skip
msvs: Don't link to winmm.lib
Add a new script for producing vcxproj files
Produce Visual Studio 10 and 11 project files
Produce Windows Phone project files
msvs-build: use msbuild for vs >= 2005
configure: default configure log to config.log
Add encoding option --static-thresh
- Speed:
Miscellaneous speed optimizations for VP8 and VP9.
- Quality:
In general, quality is consistent with the Eider release.
- Bug Fixes:
This release represents approximately a year of engineering effort,
and contains multiple bug fixes. Please refer to git history for details.
2012-12-21 v1.2.0
This release acts as a checkpoint for a large amount of internal refactoring
and testing. It also contains a number of small bugfixes, so all users are
encouraged to upgrade.
- Upgrading:
This release is ABI and API compatible with Duclair (v1.0.0). Users
of older releases should refer to the Upgrading notes in this
document for that release.
- Enhancements:
VP8 optimizations for MIPS dspr2
vpxenc: add -quiet option
- Speed:
Encoder and decoder speed is consistent with the Eider release.
- Quality:
In general, quality is consistent with the Eider release.
Minor tweaks to ARNR filtering
Minor improvements to real time encoding with multiple temporal layers
- Bug Fixes:
Fixes multithreaded encoder race condition in loopfilter
Fixes multi-resolution threaded encoding
Fix potential encoder dead-lock after picture resize
2012-05-09 v1.1.0 "Eider"
This introduces a number of enhancements, mostly focused on real-time
encoding. In addition, it fixes a decoder bug (first introduced in
Duclair) so all users of that release are encouraged to upgrade.
- Upgrading:
This release is ABI and API compatible with Duclair (v1.0.0). Users
of older releases should refer to the Upgrading notes in this
document for that release.
This release introduces a new temporal denoiser, controlled by the
VP8E_SET_NOISE_SENSITIVITY control. The temporal denoiser does not
currently take a strength parameter, so the control is effectively
a boolean - zero (off) or non-zero (on). For compatibility with
existing applications, the values accepted are the same as those
for the spatial denoiser (0-6). The temporal denoiser is enabled
by default, and the older spatial denoiser may be restored by
configuring with --disable-temporal-denoising. The temporal denoiser
is more computationally intensive than the spatial one.
This release removes support for a legacy, decode only API that was
supported, but deprecated, at the initial release of libvpx
(v0.9.0). This is not expected to have any impact. If you are
impacted, you can apply a reversion to commit 2bf8fb58 locally.
Please update to the latest libvpx API if you are affected.
- Enhancements:
Adds a motion compensated temporal denoiser to the encoder, which
gives higher quality than the older spatial denoiser. (See above
for notes on upgrading).
In addition, support for new compilers and platforms were added,
including:
improved support for XCode
Android x86 NDK build
OS/2 support
SunCC support
Changing resolution with vpx_codec_enc_config_set() is now
supported. Previously, reinitializing the codec was required to
change the input resolution.
The vpxenc application has initial support for producing multiple
encodes from the same input in one call. Resizing is not yet
supported, but varying other codec parameters is. Use -- to
delineate output streams. Options persist from one stream to the
next.
Also, the vpxenc application will now use a keyframe interval of
5 seconds by default. Use the --kf-max-dist option to override.
- Speed:
Decoder performance improved 2.5% versus Duclair. Encoder speed is
consistent with Duclair for most material. Two pass encoding of
slideshow-like material will see significant improvements.
Large realtime encoding speed gains at a small quality expense are
possible by configuring the on-the-fly bitpacking experiment with
--enable-onthefly-bitpacking. Realtime encoder can be up to 13%
faster (ARM) depending on the number of threads and bitrate
settings. This technique sees constant gain over the 5-16 speed
range. For VC style input the loss seen is up to 0.2dB. See commit
52cf4dca for further details.
- Quality:
On the whole, quality is consistent with the Duclair release. Some
tweaks:
Reduced blockiness in easy sections by applying a penalty to
intra modes.
Improved quality of static sections (like slideshows) with
two pass encoding.
Improved keyframe sizing with multiple temporal layers
- Bug Fixes:
Corrected alt-ref contribution to frame rate for visible updates
to the alt-ref buffer. This affected applications making manual
usage of the frame reference flags, or temporal layers.
Additional constraints were added to disable multi-frame quality
enhancement (MFQE) in sections of the frame where there is motion.
(#392)
Fixed corruption issues when vpx_codec_enc_config_set() was called
with spatial resampling enabled.
Fixed a decoder error introduced in Duclair where the segmentation
map was not being reinitialized on keyframes (#378)
2012-01-27 v1.0.0 "Duclair"
Our fourth named release, focused on performance and features related to
real-time encoding. It also fixes a decoder crash bug introduced in
v0.9.7, so all users of that release are encouraged to upgrade.
- Upgrading:
This release is ABI incompatible with prior releases of libvpx, so the
"major" version number has been bumped to 1. You must recompile your
applications against the latest version of the libvpx headers. The
API remains compatible, and this should not require code changes in most
applications.
- Enhancements:
This release introduces several substantial new features to the encoder,
of particular interest to real time streaming applications.
Temporal scalability allows the encoder to produce a stream that can
be decimated to different frame rates, with independent rate targeting
for each substream.
Multiframe quality enhancement postprocessing can make visual quality
more consistent in the presence of frames that are substantially
different quality than the surrounding frames, as in the temporal
scalability case and in some forced keyframe scenarios.
Multiple-resolution encoding support allows the encoding of the
same content at different resolutions faster than encoding them
separately.
- Speed:
Optimization targets for this release included the decoder and the real-
time modes of the encoder. Decoder speed on x86 has improved 10.5% with
this release. Encoder improvements followed a curve where speeds 1-3
improved 4.0%-1.5%, speeds 4-8 improved <1%, and speeds 9-16 improved
1.5% to 10.5%, respectively. "Best" mode speed is consistent with the
Cayuga release.
- Quality:
Encoder quality in the single stream case is consistent with the Cayuga
release.
- Bug Fixes:
This release fixes an OOB read decoder crash bug present in v0.9.7
related to the clamping of motion vectors in SPLITMV blocks. This
behavior could be triggered by corrupt input or by starting
decoding from a P-frame.
2011-08-15 v0.9.7-p1 "Cayuga" patch 1
This is an incremental bugfix release against Cayuga. All users of that
release are strongly encouraged to upgrade.
- Fix potential OOB reads (cdae03a)
An unbounded out of bounds read was discovered when the
decoder was requested to perform error concealment (new in
Cayuga) given a frame with corrupt partition sizes.
A bounded out of bounds read was discovered affecting all
versions of libvpx. Given an multipartition input frame that
is truncated between the mode/mv partition and the first
residiual paritition (in the block of partition offsets), up
to 3 extra bytes could have been read from the source buffer.
The code will not take any action regardless of the contents
of these undefined bytes, as the truncated buffer is detected
immediately following the read based on the calculated
starting position of the coefficient partition.
- Fix potential error concealment crash when the very first frame
is missing or corrupt (a609be5)
- Fix significant artifacts in error concealment (a4c2211, 99d870a)
- Revert 1-pass CBR rate control changes (e961317)
Further testing showed this change produced undesirable visual
artifacts, rolling back for now.
2011-08-02 v0.9.7 "Cayuga"
Our third named release, focused on a faster, higher quality, encoder.
- Upgrading:
This release is backwards compatible with Aylesbury (v0.9.5) and
Bali (v0.9.6). Users of older releases should refer to the Upgrading
notes in this document for that release.
- Enhancements:
Stereo 3D format support for vpxenc
Runtime detection of available processor cores.
Allow specifying --end-usage by enum name
vpxdec: test for frame corruption
vpxenc: add quantizer histogram display
vpxenc: add rate histogram display
Set VPX_FRAME_IS_DROPPABLE
update configure for ios sdk 4.3
Avoid text relocations in ARM vp8 decoder
Generate a vpx.pc file for pkg-config.
New ways of passing encoded data between encoder and decoder.
- Speed:
This release includes across-the-board speed improvements to the
encoder. On x86, these measure at approximately 11.5% in Best mode,
21.5% in Good mode (speed 0), and 22.5% in Realtime mode (speed 6).
On ARM Cortex A9 with Neon extensions, real-time encoding of video
telephony content is 35% faster than Bali on single core and 48%
faster on multi-core. On the NVidia Tegra2 platform, real time
encoding is 40% faster than Bali.
Decoder speed was not a priority for this release, but improved
approximately 8.4% on x86.
Reduce motion vector search on alt-ref frame.
Encoder loopfilter running in its own thread
Reworked loopfilter to precalculate more parameters
SSE2/SSSE3 optimizations for build_predictors_mbuv{,_s}().
Make hor UV predict ~2x faster (73 vs 132 cycles) using SSSE3.
Removed redundant checks
Reduced structure sizes
utilize preload in ARMv6 MC/LPF/Copy routines
ARM optimized quantization, dfct, variance, subtract
Increase chrow row alignment to 16 bytes.
disable trellis optimization for first pass
Write SSSE3 sub-pixel filter function
Improve SSE2 half-pixel filter funtions
Add vp8_sub_pixel_variance16x8_ssse3 function
Reduce unnecessary distortion computation
Use diamond search to replace full search
Preload reference area in sub-pixel motion search (real-time mode)
- Quality:
This release focused primarily on one-pass use cases, including
video conferencing. Low latency data rate control was significantly
improved, improving streamability over bandwidth constrained links.
Added support for error concealment, allowing frames to maintain
visual quality in the presence of substantial packet loss.
Add rc_max_intra_bitrate_pct control
Limit size of initial keyframe in one-pass.
Improve framerate adaptation
Improved 1-pass CBR rate control
Improved KF insertion after fades to still.
Improved key frame detection.
Improved activity masking (lower PSNR impact for same SSIM boost)
Improved interaction between GF and ARFs
Adding error-concealment to the decoder.
Adding support for independent partitions
Adjusted rate-distortion constants
- Bug Fixes:
Removed firstpass motion map
Fix parallel make install
Fix multithreaded encoding for 1 MB wide frame
Fixed iwalsh_neon build problems with RVDS4.1
Fix semaphore emulation, spin-wait intrinsics on Windows
Fix build with xcode4 and simplify GLOBAL.
Mark ARM asm objects as allowing a non-executable stack.
Fix vpxenc encoding incorrect webm file header on big endian
2011-03-07 v0.9.6 "Bali"
Our second named release, focused on a faster, higher quality, encoder.
- Upgrading:
This release is backwards compatible with Aylesbury (v0.9.5). Users
of older releases should refer to the Upgrading notes in this
document for that release.
- Enhancements:
vpxenc --psnr shows a summary when encode completes
--tune=ssim option to enable activity masking
improved postproc visualizations for development
updated support for Apple iOS to SDK 4.2
query decoder to determine which reference frames were updated
implemented error tracking in the decoder
fix pipe support on windows
- Speed:
Primary focus was on good quality mode, speed 0. Average improvement
on x86 about 40%, up to 100% on user-generated content at that speed.
Best quality mode speed improved 35%, and realtime speed 10-20%. This
release also saw significant improvement in realtime encoding speed
on ARM platforms.
Improved encoder threading
Dont pick encoder filter level when loopfilter is disabled.
Avoid double copying of key frames into alt and golden buffer
FDCT optimizations.
x86 sse2 temporal filter
SSSE3 version of fast quantizer
vp8_rd_pick_best_mbsegmentation code restructure
Adjusted breakout RD for SPLITMV
Changed segmentation check order
Improved rd_pick_intra4x4block
Adds armv6 optimized variance calculation
ARMv6 optimized sad16x16
ARMv6 optimized half pixel variance calculations
Full search SAD function optimization in SSE4.1
Improve MV prediction accuracy to achieve performance gain
Improve MV prediction in vp8_pick_inter_mode() for speed>3
- Quality:
Best quality mode improved PSNR 6.3%, and SSIM 6.1%. This release
also includes support for "activity masking," which greatly improves
SSIM at the expense of PSNR. For now, this feature is available with
the --tune=ssim option. Further experimentation in this area
is ongoing. This release also introduces a new rate control mode
called "CQ," which changes the allocation of bits within a clip to
the sections where they will have the most visual impact.
Tuning for the more exact quantizer.
Relax rate control for last few frames
CQ Mode
Limit key frame quantizer for forced key frames.
KF/GF Pulsing
Add simple version of activity masking.
make rdmult adaptive for intra in quantizer RDO
cap the best quantizer for 2nd order DC
change the threshold of DC check for encode breakout
- Bug Fixes:
Fix crash on Sparc Solaris.
Fix counter of fixed keyframe distance
ARNR filter pointer update bug fix
Fixed use of motion percentage in KF/GF group calc
Changed condition for using RD in Intra Mode
Fix encoder real-time only configuration.
Fix ARM encoder crash with multiple token partitions
Fixed bug first cluster timecode of webm file is wrong.
Fixed various encoder bugs with odd-sized images
vp8e_get_preview fixed when spatial resampling enabled
quantizer: fix assertion in fast quantizer path
Allocate source buffers to be multiples of 16
Fix for manual Golden frame frequency
Fix drastic undershoot in long form content
2010-10-28 v0.9.5 "Aylesbury"
Our first named release, focused on a faster decoder, and a better encoder.
- Upgrading:
This release incorporates backwards-incompatible changes to the
ivfenc and ivfdec tools. These tools are now called vpxenc and vpxdec.
vpxdec
* the -q (quiet) option has been removed, and replaced with
-v (verbose). the output is quiet by default. Use -v to see
the version number of the binary.
* The default behavior is now to write output to a single file
instead of individual frames. The -y option has been removed.
Y4M output is the default.
* For raw I420/YV12 output instead of Y4M, the --i420 or --yv12
options must be specified.
$ ivfdec -o OUTPUT INPUT
$ vpxdec --i420 -o OUTPUT INPUT
* If an output file is not specified, the default is to write
Y4M to stdout. This makes piping more natural.
$ ivfdec -y -o - INPUT | ...
$ vpxdec INPUT | ...
* The output file has additional flexibility for formatting the
filename. It supports escape characters for constructing a
filename from the width, height, and sequence number. This
replaces the -p option. To get the equivalent:
$ ivfdec -p frame INPUT
$ vpxdec --i420 -o frame-%wx%h-%4.i420 INPUT
vpxenc
* The output file must be specified with -o, rather than as the
last argument.
$ ivfenc <options> INPUT OUTPUT
$ vpxenc <options> -o OUTPUT INPUT
* The output defaults to webm. To get IVF output, use the --ivf
option.
$ ivfenc <options> INPUT OUTPUT.ivf
$ vpxenc <options> -o OUTPUT.ivf --ivf INPUT
- Enhancements:
ivfenc and ivfdec have been renamed to vpxenc, vpxdec.
vpxdec supports .webm input
vpxdec writes .y4m by default
vpxenc writes .webm output by default
vpxenc --psnr now shows the average/overall PSNR at the end
ARM platforms now support runtime cpu detection
vpxdec visualizations added for motion vectors, block modes, references
vpxdec now silent by default
vpxdec --progress shows frame-by-frame timing information
vpxenc supports the distinction between --fps and --timebase
NASM is now a supported assembler
configure: enable PIC for shared libs by default
configure: add --enable-small
configure: support for ppc32-linux-gcc
configure: support for sparc-solaris-gcc
- Bugs:
Improve handling of invalid frames
Fix valgrind errors in the NEON loop filters.
Fix loopfilter delta zero transitions
Fix valgrind errors in vp8_sixtap_predict8x4_armv6().
Build fixes for darwin-icc
- Speed:
20-40% (average 28%) improvement in libvpx decoder speed,
including:
Rewrite vp8_short_walsh4x4_sse2()
Optimizations on the loopfilters.
Miscellaneous improvements for Atom
Add 4-tap version of 2nd-pass ARMv6 MC filter.
Improved multithread utilization
Better instruction choices on x86
reorder data to use wider instructions
Update NEON wide idcts
Make block access to frame buffer sequential
Improved subset block search
Bilinear subpixel optimizations for ssse3.
Decrease memory footprint
Encoder speed improvements (percentage gain not measured):
Skip unnecessary search of identical frames
Add SSE2 subtract functions
Improve bounds checking in vp8_diamond_search_sadx4()
Added vp8_fast_quantize_b_sse2
- Quality:
Over 7% overall PSNR improvement (6.3% SSIM) in "best" quality
encoding mode, and up to 60% improvement on very noisy, still
or slow moving source video
Motion compensated temporal filter for Alt-Ref Noise Reduction
Improved use of trellis quantization on 2nd order Y blocks
Tune effect of motion on KF/GF boost in two pass
Allow coefficient optimization for good quality speed 0.
Improved control of active min quantizer for two pass.
Enable ARFs for non-lagged compress
2010-09-02 v0.9.2
- Enhancements:
Disable frame dropping by default
Improved multithreaded performance
Improved Force Key Frame Behaviour
Increased rate control buffer level precision
Fix bug in 1st pass motion compensation
ivfenc: correct fixed kf interval, --disable-kf
- Speed:
Changed above and left context data layout
Rework idct calling structure.
Removed unnecessary MB_MODE_INFO copies
x86: SSSE3 sixtap prediction
Reworked IDCT to include reconstruction (add) step
Swap alt/gold/new/last frame buffer ptrs instead of copying.
Improve SSE2 loopfilter functions
Change bitreader to use a larger window.
Avoid loopfilter reinitialization when possible
- Quality:
Normalize quantizer's zero bin and rounding factors
Add trellis quantization.
Make the quantizer exact.
Updates to ARNR filtering algorithm
Fix breakout thresh computation for golden & AltRef frames
Redo the forward 4x4 dct
Improve the accuracy of forward walsh-hadamard transform
Further adjustment of RD behaviour with Q and Zbin.
- Build System:
Allow linking of libs built with MinGW to MSVC
Fix target auto-detection on mingw32
Allow --cpu= to work for x86.
configure: pass original arguments through to make dist
Fix builds without runtime CPU detection
msvs: fix install of codec sources
msvs: Change devenv.com command line for better msys support
msvs: Add vs9 targets.
Add x86_64-linux-icc target
- Bugs:
Potential crashes on older MinGW builds
Fix two-pass framrate for Y4M input.
Fixed simple loop filter, other crashes on ARM v6
arm: fix missing dependency with --enable-shared
configure: support directories containing .o
Replace pinsrw (SSE) with MMX instructions
apple: include proper mach primatives
Fixed rate control bug with long key frame interval.
Fix DSO link errors on x86-64 when not using a version script
Fixed buffer selection for UV in AltRef filtering
2010-06-17 v0.9.1
- Enhancements:
* ivfenc/ivfdec now support YUV4MPEG2 input and pipe I/O
* Speed optimizations
- Bugfixes:
* Rate control
* Prevent out-of-bounds accesses on invalid data
- Build system updates:
* Detect toolchain to be used automatically for native builds
* Support building shared libraries
* Better autotools emulation (--prefix, --libdir, DESTDIR)
- Updated LICENSE
* http://webmproject.blogspot.com/2010/06/changes-to-webm-open-source-license.html
2010-05-18 v0.9.0
- Initial open source release. Welcome to WebM and VP8!

View file

@ -0,0 +1,31 @@
Copyright (c) 2010, The WebM Project authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Google, nor the WebM Project, nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -0,0 +1,23 @@
Additional IP Rights Grant (Patents)
------------------------------------
"These implementations" means the copyrightable works that implement the WebM
codecs distributed by Google as part of the WebM Project.
Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
royalty-free, irrevocable (except as stated in this section) patent license to
make, have made, use, offer to sell, sell, import, transfer, and otherwise
run, modify and propagate the contents of these implementations of WebM, where
such license applies only to those patent claims, both currently owned by
Google and acquired in the future, licensable by Google that are necessarily
infringed by these implementations of WebM. This grant does not include claims
that would be infringed only as a consequence of further modification of these
implementations. If you or your agent or exclusive licensee institute or order
or agree to the institution of patent litigation or any other patent
enforcement activity against any entity (including a cross-claim or
counterclaim in a lawsuit) alleging that any of these implementations of WebM
or any code incorporated within any of these implementations of WebM
constitute direct or contributory patent infringement, or inducement of
patent infringement, then any patent rights granted to you under this License
for these implementations of WebM shall terminate as of the date such
litigation is filed.

View file

@ -0,0 +1,170 @@
README - 9 December 2019
Welcome to the WebM VP8/VP9 Codec SDK!
COMPILING THE APPLICATIONS/LIBRARIES:
The build system used is similar to autotools. Building generally consists of
"configuring" with your desired build options, then using GNU make to build
the application.
1. Prerequisites
* All x86 targets require the Yasm[1] assembler be installed[2].
* All Windows builds require that Cygwin[3] be installed.
* Building the documentation requires Doxygen[4]. If you do not
have this package, the install-docs option will be disabled.
* Downloading the data for the unit tests requires curl[5] and sha1sum.
sha1sum is provided via the GNU coreutils, installed by default on
many *nix platforms, as well as MinGW and Cygwin. If coreutils is not
available, a compatible version of sha1sum can be built from
source[6]. These requirements are optional if not running the unit
tests.
[1]: http://www.tortall.net/projects/yasm
[2]: For Visual Studio the base yasm binary (not vsyasm) should be in the
PATH for Visual Studio. For VS2017 it is sufficient to rename
yasm-<version>-<arch>.exe to yasm.exe and place it in:
Program Files (x86)/Microsoft Visual Studio/2017/<level>/Common7/Tools/
[3]: http://www.cygwin.com
[4]: http://www.doxygen.org
[5]: http://curl.haxx.se
[6]: http://www.microbrew.org/tools/md5sha1sum/
2. Out-of-tree builds
Out of tree builds are a supported method of building the application. For
an out of tree build, the source tree is kept separate from the object
files produced during compilation. For instance:
$ mkdir build
$ cd build
$ ../libvpx/configure <options>
$ make
3. Configuration options
The 'configure' script supports a number of options. The --help option can be
used to get a list of supported options:
$ ../libvpx/configure --help
4. Compiler analyzers
Compilers have added sanitizers which instrument binaries with information
about address calculation, memory usage, threading, undefined behavior, and
other common errors. To simplify building libvpx with some of these features
use tools/set_analyzer_env.sh before running configure. It will set the
compiler and necessary flags for building as well as environment variables
read by the analyzer when testing the binaries.
$ source ../libvpx/tools/set_analyzer_env.sh address
5. Cross development
For cross development, the most notable option is the --target option. The
most up-to-date list of supported targets can be found at the bottom of the
--help output of the configure script. As of this writing, the list of
available targets is:
arm64-android-gcc
arm64-darwin-gcc
arm64-linux-gcc
arm64-win64-gcc
arm64-win64-vs15
armv7-android-gcc
armv7-darwin-gcc
armv7-linux-rvct
armv7-linux-gcc
armv7-none-rvct
armv7-win32-gcc
armv7-win32-vs14
armv7-win32-vs15
armv7s-darwin-gcc
armv8-linux-gcc
mips32-linux-gcc
mips64-linux-gcc
ppc64le-linux-gcc
sparc-solaris-gcc
x86-android-gcc
x86-darwin8-gcc
x86-darwin8-icc
x86-darwin9-gcc
x86-darwin9-icc
x86-darwin10-gcc
x86-darwin11-gcc
x86-darwin12-gcc
x86-darwin13-gcc
x86-darwin14-gcc
x86-darwin15-gcc
x86-darwin16-gcc
x86-darwin17-gcc
x86-iphonesimulator-gcc
x86-linux-gcc
x86-linux-icc
x86-os2-gcc
x86-solaris-gcc
x86-win32-gcc
x86-win32-vs14
x86-win32-vs15
x86-win32-vs16
x86_64-android-gcc
x86_64-darwin9-gcc
x86_64-darwin10-gcc
x86_64-darwin11-gcc
x86_64-darwin12-gcc
x86_64-darwin13-gcc
x86_64-darwin14-gcc
x86_64-darwin15-gcc
x86_64-darwin16-gcc
x86_64-darwin17-gcc
x86_64-darwin18-gcc
x86_64-darwin19-gcc
x86_64-iphonesimulator-gcc
x86_64-linux-gcc
x86_64-linux-icc
x86_64-solaris-gcc
x86_64-win64-gcc
x86_64-win64-vs14
x86_64-win64-vs15
x86_64-win64-vs16
generic-gnu
The generic-gnu target, in conjunction with the CROSS environment variable,
can be used to cross compile architectures that aren't explicitly listed, if
the toolchain is a cross GNU (gcc/binutils) toolchain. Other POSIX toolchains
will likely work as well. For instance, to build using the mipsel-linux-uclibc
toolchain, the following command could be used (note, POSIX SH syntax, adapt
to your shell as necessary):
$ CROSS=mipsel-linux-uclibc- ../libvpx/configure
In addition, the executables to be invoked can be overridden by specifying the
environment variables: CC, AR, LD, AS, STRIP, NM. Additional flags can be
passed to these executables with CFLAGS, LDFLAGS, and ASFLAGS.
6. Configuration errors
If the configuration step fails, the first step is to look in the error log.
This defaults to config.log. This should give a good indication of what went
wrong. If not, contact us for support.
VP8/VP9 TEST VECTORS:
The test vectors can be downloaded and verified using the build system after
running configure. To specify an alternate directory the
LIBVPX_TEST_DATA_PATH environment variable can be used.
$ ./configure --enable-unit-tests
$ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
CODE STYLE:
The coding style used by this project is enforced with clang-format using the
configuration contained in the .clang-format file in the root of the
repository.
Before pushing changes for review you can format your code with:
# Apply clang-format to modified .c, .h and .cc files
$ clang-format -i --style=file \
$(git diff --name-only --diff-filter=ACMR '*.[hc]' '*.cc')
Check the .clang-format file for the version used to generate it if there is
any difference between your local formatting and the review system.
See also: http://clang.llvm.org/docs/ClangFormat.html
SUPPORT
This library is an open source project supported by its community. Please
email webm-discuss@webmproject.org for help.

View file

@ -0,0 +1,215 @@
/*
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include "args.h"
#include "vpx/vpx_integer.h"
#include "vpx_ports/msvc.h"
#if defined(__GNUC__) && __GNUC__
extern void die(const char *fmt, ...) __attribute__((noreturn));
#else
extern void die(const char *fmt, ...);
#endif
struct arg arg_init(char **argv) {
struct arg a;
a.argv = argv;
a.argv_step = 1;
a.name = NULL;
a.val = NULL;
a.def = NULL;
return a;
}
int arg_match(struct arg *arg_, const struct arg_def *def, char **argv) {
struct arg arg;
if (!argv[0] || argv[0][0] != '-') return 0;
arg = arg_init(argv);
if (def->short_name && strlen(arg.argv[0]) == strlen(def->short_name) + 1 &&
!strcmp(arg.argv[0] + 1, def->short_name)) {
arg.name = arg.argv[0] + 1;
arg.val = def->has_val ? arg.argv[1] : NULL;
arg.argv_step = def->has_val ? 2 : 1;
} else if (def->long_name) {
const size_t name_len = strlen(def->long_name);
if (strlen(arg.argv[0]) >= name_len + 2 && arg.argv[0][1] == '-' &&
!strncmp(arg.argv[0] + 2, def->long_name, name_len) &&
(arg.argv[0][name_len + 2] == '=' ||
arg.argv[0][name_len + 2] == '\0')) {
arg.name = arg.argv[0] + 2;
arg.val = arg.name[name_len] == '=' ? arg.name + name_len + 1 : NULL;
arg.argv_step = 1;
}
}
if (arg.name && !arg.val && def->has_val)
die("Error: option %s requires argument.\n", arg.name);
if (arg.name && arg.val && !def->has_val)
die("Error: option %s requires no argument.\n", arg.name);
if (arg.name && (arg.val || !def->has_val)) {
arg.def = def;
*arg_ = arg;
return 1;
}
return 0;
}
const char *arg_next(struct arg *arg) {
if (arg->argv[0]) arg->argv += arg->argv_step;
return *arg->argv;
}
char **argv_dup(int argc, const char **argv) {
char **new_argv = malloc((argc + 1) * sizeof(*argv));
memcpy(new_argv, argv, argc * sizeof(*argv));
new_argv[argc] = NULL;
return new_argv;
}
void arg_show_usage(FILE *fp, const struct arg_def *const *defs) {
char option_text[40] = { 0 };
for (; *defs; defs++) {
const struct arg_def *def = *defs;
char *short_val = def->has_val ? " <arg>" : "";
char *long_val = def->has_val ? "=<arg>" : "";
if (def->short_name && def->long_name) {
char *comma = def->has_val ? "," : ", ";
snprintf(option_text, 37, "-%s%s%s --%s%6s", def->short_name, short_val,
comma, def->long_name, long_val);
} else if (def->short_name)
snprintf(option_text, 37, "-%s%s", def->short_name, short_val);
else if (def->long_name)
snprintf(option_text, 37, " --%s%s", def->long_name, long_val);
fprintf(fp, " %-37s\t%s\n", option_text, def->desc);
if (def->enums) {
const struct arg_enum_list *listptr;
fprintf(fp, " %-37s\t ", "");
for (listptr = def->enums; listptr->name; listptr++)
fprintf(fp, "%s%s", listptr->name, listptr[1].name ? ", " : "\n");
}
}
}
unsigned int arg_parse_uint(const struct arg *arg) {
uint32_t rawval;
char *endptr;
rawval = (uint32_t)strtoul(arg->val, &endptr, 10);
if (arg->val[0] != '\0' && endptr[0] == '\0') {
if (rawval <= UINT_MAX) return rawval;
die("Option %s: Value %ld out of range for unsigned int\n", arg->name,
rawval);
}
die("Option %s: Invalid character '%c'\n", arg->name, *endptr);
return 0;
}
int arg_parse_int(const struct arg *arg) {
int32_t rawval;
char *endptr;
rawval = (int32_t)strtol(arg->val, &endptr, 10);
if (arg->val[0] != '\0' && endptr[0] == '\0') {
if (rawval >= INT_MIN && rawval <= INT_MAX) return (int)rawval;
die("Option %s: Value %ld out of range for signed int\n", arg->name,
rawval);
}
die("Option %s: Invalid character '%c'\n", arg->name, *endptr);
return 0;
}
struct vpx_rational {
int num; /**< fraction numerator */
int den; /**< fraction denominator */
};
struct vpx_rational arg_parse_rational(const struct arg *arg) {
long int rawval;
char *endptr;
struct vpx_rational rat;
/* parse numerator */
rawval = strtol(arg->val, &endptr, 10);
if (arg->val[0] != '\0' && endptr[0] == '/') {
if (rawval >= INT_MIN && rawval <= INT_MAX)
rat.num = (int)rawval;
else
die("Option %s: Value %ld out of range for signed int\n", arg->name,
rawval);
} else
die("Option %s: Expected / at '%c'\n", arg->name, *endptr);
/* parse denominator */
rawval = strtol(endptr + 1, &endptr, 10);
if (arg->val[0] != '\0' && endptr[0] == '\0') {
if (rawval >= INT_MIN && rawval <= INT_MAX)
rat.den = (int)rawval;
else
die("Option %s: Value %ld out of range for signed int\n", arg->name,
rawval);
} else
die("Option %s: Invalid character '%c'\n", arg->name, *endptr);
return rat;
}
int arg_parse_enum(const struct arg *arg) {
const struct arg_enum_list *listptr;
long int rawval;
char *endptr;
/* First see if the value can be parsed as a raw value */
rawval = strtol(arg->val, &endptr, 10);
if (arg->val[0] != '\0' && endptr[0] == '\0') {
/* Got a raw value, make sure it's valid */
for (listptr = arg->def->enums; listptr->name; listptr++)
if (listptr->val == rawval) return (int)rawval;
}
/* Next see if it can be parsed as a string */
for (listptr = arg->def->enums; listptr->name; listptr++)
if (!strcmp(arg->val, listptr->name)) return listptr->val;
die("Option %s: Invalid value '%s'\n", arg->name, arg->val);
return 0;
}
int arg_parse_enum_or_int(const struct arg *arg) {
if (arg->def->enums) return arg_parse_enum(arg);
return arg_parse_int(arg);
}

View file

@ -0,0 +1,63 @@
/*
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VPX_ARGS_H_
#define VPX_ARGS_H_
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
struct arg {
char **argv;
const char *name;
const char *val;
unsigned int argv_step;
const struct arg_def *def;
};
struct arg_enum_list {
const char *name;
int val;
};
#define ARG_ENUM_LIST_END \
{ 0 }
typedef struct arg_def {
const char *short_name;
const char *long_name;
int has_val;
const char *desc;
const struct arg_enum_list *enums;
} arg_def_t;
#define ARG_DEF(s, l, v, d) \
{ s, l, v, d, NULL }
#define ARG_DEF_ENUM(s, l, v, d, e) \
{ s, l, v, d, e }
#define ARG_DEF_LIST_END \
{ 0 }
struct arg arg_init(char **argv);
int arg_match(struct arg *arg_, const struct arg_def *def, char **argv);
const char *arg_next(struct arg *arg);
void arg_show_usage(FILE *fp, const struct arg_def *const *defs);
char **argv_dup(int argc, const char **argv);
unsigned int arg_parse_uint(const struct arg *arg);
int arg_parse_int(const struct arg *arg);
struct vpx_rational arg_parse_rational(const struct arg *arg);
int arg_parse_enum(const struct arg *arg);
int arg_parse_enum_or_int(const struct arg *arg);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // VPX_ARGS_H_

View file

@ -0,0 +1,112 @@
/*
* Copyright (c) 2013 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "vpx_ports/mem_ops.h"
#include "./ivfdec.h"
static const char *IVF_SIGNATURE = "DKIF";
static void fix_framerate(int *num, int *den) {
// Some versions of vpxenc used 1/(2*fps) for the timebase, so
// we can guess the framerate using only the timebase in this
// case. Other files would require reading ahead to guess the
// timebase, like we do for webm.
if (*den > 0 && *den < 1000000000 && *num > 0 && *num < 1000) {
// Correct for the factor of 2 applied to the timebase in the encoder.
if (*num & 1)
*den *= 2;
else
*num /= 2;
} else {
// Don't know FPS for sure, and don't have readahead code
// (yet?), so just default to 30fps.
*num = 30;
*den = 1;
}
}
int file_is_ivf(struct VpxInputContext *input_ctx) {
char raw_hdr[32];
int is_ivf = 0;
if (fread(raw_hdr, 1, 32, input_ctx->file) == 32) {
if (memcmp(IVF_SIGNATURE, raw_hdr, 4) == 0) {
is_ivf = 1;
if (mem_get_le16(raw_hdr + 4) != 0) {
fprintf(stderr,
"Error: Unrecognized IVF version! This file may not"
" decode properly.");
}
input_ctx->fourcc = mem_get_le32(raw_hdr + 8);
input_ctx->width = mem_get_le16(raw_hdr + 12);
input_ctx->height = mem_get_le16(raw_hdr + 14);
input_ctx->framerate.numerator = mem_get_le32(raw_hdr + 16);
input_ctx->framerate.denominator = mem_get_le32(raw_hdr + 20);
fix_framerate(&input_ctx->framerate.numerator,
&input_ctx->framerate.denominator);
}
}
if (!is_ivf) {
rewind(input_ctx->file);
input_ctx->detect.buf_read = 0;
} else {
input_ctx->detect.position = 4;
}
return is_ivf;
}
int ivf_read_frame(FILE *infile, uint8_t **buffer, size_t *bytes_read,
size_t *buffer_size) {
char raw_header[IVF_FRAME_HDR_SZ] = { 0 };
size_t frame_size = 0;
if (fread(raw_header, IVF_FRAME_HDR_SZ, 1, infile) != 1) {
if (!feof(infile)) warn("Failed to read frame size");
} else {
frame_size = mem_get_le32(raw_header);
if (frame_size > 256 * 1024 * 1024) {
warn("Read invalid frame size (%u)", (unsigned int)frame_size);
frame_size = 0;
}
if (frame_size > *buffer_size) {
uint8_t *new_buffer = realloc(*buffer, 2 * frame_size);
if (new_buffer) {
*buffer = new_buffer;
*buffer_size = 2 * frame_size;
} else {
warn("Failed to allocate compressed data buffer");
frame_size = 0;
}
}
}
if (!feof(infile)) {
if (fread(*buffer, 1, frame_size, infile) != frame_size) {
warn("Failed to read full frame");
return 1;
}
*bytes_read = frame_size;
return 0;
}
return 1;
}

View file

@ -0,0 +1,28 @@
/*
* Copyright (c) 2013 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VPX_IVFDEC_H_
#define VPX_IVFDEC_H_
#include "./tools_common.h"
#ifdef __cplusplus
extern "C" {
#endif
int file_is_ivf(struct VpxInputContext *input);
int ivf_read_frame(FILE *infile, uint8_t **buffer, size_t *bytes_read,
size_t *buffer_size);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif // VPX_IVFDEC_H_

View file

@ -0,0 +1,59 @@
/*
* Copyright (c) 2013 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "./ivfenc.h"
#include "vpx/vpx_encoder.h"
#include "vpx_ports/mem_ops.h"
void ivf_write_file_header_with_video_info(FILE *outfile, unsigned int fourcc,
int frame_cnt, int frame_width,
int frame_height,
vpx_rational_t timebase) {
char header[32];
header[0] = 'D';
header[1] = 'K';
header[2] = 'I';
header[3] = 'F';
mem_put_le16(header + 4, 0); // version
mem_put_le16(header + 6, 32); // header size
mem_put_le32(header + 8, fourcc); // fourcc
mem_put_le16(header + 12, frame_width); // width
mem_put_le16(header + 14, frame_height); // height
mem_put_le32(header + 16, timebase.den); // rate
mem_put_le32(header + 20, timebase.num); // scale
mem_put_le32(header + 24, frame_cnt); // length
mem_put_le32(header + 28, 0); // unused
fwrite(header, 1, 32, outfile);
}
void ivf_write_file_header(FILE *outfile, const struct vpx_codec_enc_cfg *cfg,
unsigned int fourcc, int frame_cnt) {
ivf_write_file_header_with_video_info(outfile, fourcc, frame_cnt, cfg->g_w,
cfg->g_h, cfg->g_timebase);
}
void ivf_write_frame_header(FILE *outfile, int64_t pts, size_t frame_size) {
char header[12];
mem_put_le32(header, (int)frame_size);
mem_put_le32(header + 4, (int)(pts & 0xFFFFFFFF));
mem_put_le32(header + 8, (int)(pts >> 32));
fwrite(header, 1, 12, outfile);
}
void ivf_write_frame_size(FILE *outfile, size_t frame_size) {
char header[4];
mem_put_le32(header, (int)frame_size);
fwrite(header, 1, 4, outfile);
}

View file

@ -0,0 +1,40 @@
/*
* Copyright (c) 2013 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VPX_IVFENC_H_
#define VPX_IVFENC_H_
#include "./tools_common.h"
#include "vpx/vpx_encoder.h"
struct vpx_codec_enc_cfg;
struct vpx_codec_cx_pkt;
#ifdef __cplusplus
extern "C" {
#endif
void ivf_write_file_header_with_video_info(FILE *outfile, unsigned int fourcc,
int frame_cnt, int frame_width,
int frame_height,
vpx_rational_t timebase);
void ivf_write_file_header(FILE *outfile, const struct vpx_codec_enc_cfg *cfg,
uint32_t fourcc, int frame_cnt);
void ivf_write_frame_header(FILE *outfile, int64_t pts, size_t frame_size);
void ivf_write_frame_size(FILE *outfile, size_t frame_size);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif // VPX_IVFENC_H_

View file

@ -0,0 +1,237 @@
/*
* This code implements the MD5 message-digest algorithm.
* The algorithm is due to Ron Rivest. This code was
* written by Colin Plumb in 1993, no copyright is claimed.
* This code is in the public domain; do with it what you wish.
*
* Equivalent code is available from RSA Data Security, Inc.
* This code has been tested against that, and is equivalent,
* except that you don't need to include two pages of legalese
* with every copy.
*
* To compute the message digest of a chunk of bytes, declare an
* MD5Context structure, pass it to MD5Init, call MD5Update as
* needed on buffers full of bytes, and then call MD5Final, which
* will fill a supplied 16-byte array with the digest.
*
* Changed so as no longer to depend on Colin Plumb's `usual.h' header
* definitions
* - Ian Jackson <ian@chiark.greenend.org.uk>.
* Still in the public domain.
*/
#include <string.h> /* for memcpy() */
#include "md5_utils.h"
#include "vpx_ports/compiler_attributes.h"
static void byteSwap(UWORD32 *buf, unsigned words) {
md5byte *p;
/* Only swap bytes for big endian machines */
int i = 1;
if (*(char *)&i == 1) return;
p = (md5byte *)buf;
do {
*buf++ = (UWORD32)((unsigned)p[3] << 8 | p[2]) << 16 |
((unsigned)p[1] << 8 | p[0]);
p += 4;
} while (--words);
}
/*
* Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
* initialization constants.
*/
void MD5Init(struct MD5Context *ctx) {
ctx->buf[0] = 0x67452301;
ctx->buf[1] = 0xefcdab89;
ctx->buf[2] = 0x98badcfe;
ctx->buf[3] = 0x10325476;
ctx->bytes[0] = 0;
ctx->bytes[1] = 0;
}
/*
* Update context to reflect the concatenation of another buffer full
* of bytes.
*/
void MD5Update(struct MD5Context *ctx, md5byte const *buf, unsigned len) {
UWORD32 t;
/* Update byte count */
t = ctx->bytes[0];
if ((ctx->bytes[0] = t + len) < t)
ctx->bytes[1]++; /* Carry from low to high */
t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */
if (t > len) {
memcpy((md5byte *)ctx->in + 64 - t, buf, len);
return;
}
/* First chunk is an odd size */
memcpy((md5byte *)ctx->in + 64 - t, buf, t);
byteSwap(ctx->in, 16);
MD5Transform(ctx->buf, ctx->in);
buf += t;
len -= t;
/* Process data in 64-byte chunks */
while (len >= 64) {
memcpy(ctx->in, buf, 64);
byteSwap(ctx->in, 16);
MD5Transform(ctx->buf, ctx->in);
buf += 64;
len -= 64;
}
/* Handle any remaining bytes of data. */
memcpy(ctx->in, buf, len);
}
/*
* Final wrapup - pad to 64-byte boundary with the bit pattern
* 1 0* (64-bit count of bits processed, MSB-first)
*/
void MD5Final(md5byte digest[16], struct MD5Context *ctx) {
int count = ctx->bytes[0] & 0x3f; /* Number of bytes in ctx->in */
md5byte *p = (md5byte *)ctx->in + count;
/* Set the first char of padding to 0x80. There is always room. */
*p++ = 0x80;
/* Bytes of padding needed to make 56 bytes (-8..55) */
count = 56 - 1 - count;
if (count < 0) { /* Padding forces an extra block */
memset(p, 0, count + 8);
byteSwap(ctx->in, 16);
MD5Transform(ctx->buf, ctx->in);
p = (md5byte *)ctx->in;
count = 56;
}
memset(p, 0, count);
byteSwap(ctx->in, 14);
/* Append length in bits and transform */
ctx->in[14] = ctx->bytes[0] << 3;
ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29;
MD5Transform(ctx->buf, ctx->in);
byteSwap(ctx->buf, 4);
memcpy(digest, ctx->buf, 16);
memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */
}
#ifndef ASM_MD5
/* The four core functions - F1 is optimized somewhat */
/* #define F1(x, y, z) (x & y | ~x & z) */
#define F1(x, y, z) (z ^ (x & (y ^ z)))
#define F2(x, y, z) F1(z, x, y)
#define F3(x, y, z) (x ^ y ^ z)
#define F4(x, y, z) (y ^ (x | ~z))
/* This is the central step in the MD5 algorithm. */
#define MD5STEP(f, w, x, y, z, in, s) \
(w += f(x, y, z) + in, w = (w << s | w >> (32 - s)) + x)
/*
* The core of the MD5 algorithm, this alters an existing MD5 hash to
* reflect the addition of 16 longwords of new data. MD5Update blocks
* the data and converts bytes into longwords for this routine.
*/
VPX_NO_UNSIGNED_OVERFLOW_CHECK void MD5Transform(UWORD32 buf[4],
UWORD32 const in[16]) {
UWORD32 a, b, c, d;
a = buf[0];
b = buf[1];
c = buf[2];
d = buf[3];
MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
buf[0] += a;
buf[1] += b;
buf[2] += c;
buf[3] += d;
}
#endif

View file

@ -0,0 +1,49 @@
/*
* This is the header file for the MD5 message-digest algorithm.
* The algorithm is due to Ron Rivest. This code was
* written by Colin Plumb in 1993, no copyright is claimed.
* This code is in the public domain; do with it what you wish.
*
* Equivalent code is available from RSA Data Security, Inc.
* This code has been tested against that, and is equivalent,
* except that you don't need to include two pages of legalese
* with every copy.
*
* To compute the message digest of a chunk of bytes, declare an
* MD5Context structure, pass it to MD5Init, call MD5Update as
* needed on buffers full of bytes, and then call MD5Final, which
* will fill a supplied 16-byte array with the digest.
*
* Changed so as no longer to depend on Colin Plumb's `usual.h'
* header definitions
* - Ian Jackson <ian@chiark.greenend.org.uk>.
* Still in the public domain.
*/
#ifndef VPX_MD5_UTILS_H_
#define VPX_MD5_UTILS_H_
#ifdef __cplusplus
extern "C" {
#endif
#define md5byte unsigned char
#define UWORD32 unsigned int
typedef struct MD5Context MD5Context;
struct MD5Context {
UWORD32 buf[4];
UWORD32 bytes[2];
UWORD32 in[16];
};
void MD5Init(struct MD5Context *context);
void MD5Update(struct MD5Context *context, md5byte const *buf, unsigned len);
void MD5Final(unsigned char digest[16], struct MD5Context *context);
void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // VPX_MD5_UTILS_H_

View file

@ -0,0 +1,289 @@
/*
* Copyright (c) 2014 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include <assert.h>
#include <stdlib.h>
#include <limits.h>
#include <stdio.h>
#include <math.h>
#include "./rate_hist.h"
#define RATE_BINS 100
#define HIST_BAR_MAX 40
struct hist_bucket {
int low;
int high;
int count;
};
struct rate_hist {
int64_t *pts;
int *sz;
int samples;
int frames;
struct hist_bucket bucket[RATE_BINS];
int total;
};
struct rate_hist *init_rate_histogram(const vpx_codec_enc_cfg_t *cfg,
const vpx_rational_t *fps) {
int i;
struct rate_hist *hist = calloc(1, sizeof(*hist));
if (hist == NULL || cfg == NULL || fps == NULL || fps->num == 0 ||
fps->den == 0) {
destroy_rate_histogram(hist);
return NULL;
}
// Determine the number of samples in the buffer. Use the file's framerate
// to determine the number of frames in rc_buf_sz milliseconds, with an
// adjustment (5/4) to account for alt-refs
hist->samples = cfg->rc_buf_sz * 5 / 4 * fps->num / fps->den / 1000;
// prevent division by zero
if (hist->samples == 0) hist->samples = 1;
hist->frames = 0;
hist->total = 0;
hist->pts = calloc(hist->samples, sizeof(*hist->pts));
hist->sz = calloc(hist->samples, sizeof(*hist->sz));
for (i = 0; i < RATE_BINS; i++) {
hist->bucket[i].low = INT_MAX;
hist->bucket[i].high = 0;
hist->bucket[i].count = 0;
}
return hist;
}
void destroy_rate_histogram(struct rate_hist *hist) {
if (hist) {
free(hist->pts);
free(hist->sz);
free(hist);
}
}
void update_rate_histogram(struct rate_hist *hist,
const vpx_codec_enc_cfg_t *cfg,
const vpx_codec_cx_pkt_t *pkt) {
int i;
int64_t then = 0;
int64_t avg_bitrate = 0;
int64_t sum_sz = 0;
const int64_t now = pkt->data.frame.pts * 1000 *
(uint64_t)cfg->g_timebase.num /
(uint64_t)cfg->g_timebase.den;
int idx;
if (hist == NULL || cfg == NULL || pkt == NULL) return;
idx = hist->frames++ % hist->samples;
hist->pts[idx] = now;
hist->sz[idx] = (int)pkt->data.frame.sz;
if (now < cfg->rc_buf_initial_sz) return;
if (!cfg->rc_target_bitrate) return;
then = now;
/* Sum the size over the past rc_buf_sz ms */
for (i = hist->frames; i > 0 && hist->frames - i < hist->samples; i--) {
const int i_idx = (i - 1) % hist->samples;
then = hist->pts[i_idx];
if (now - then > cfg->rc_buf_sz) break;
sum_sz += hist->sz[i_idx];
}
if (now == then) return;
avg_bitrate = sum_sz * 8 * 1000 / (now - then);
idx = (int)(avg_bitrate * (RATE_BINS / 2) / (cfg->rc_target_bitrate * 1000));
if (idx < 0) idx = 0;
if (idx > RATE_BINS - 1) idx = RATE_BINS - 1;
if (hist->bucket[idx].low > avg_bitrate)
hist->bucket[idx].low = (int)avg_bitrate;
if (hist->bucket[idx].high < avg_bitrate)
hist->bucket[idx].high = (int)avg_bitrate;
hist->bucket[idx].count++;
hist->total++;
}
static int merge_hist_buckets(struct hist_bucket *bucket, int max_buckets,
int *num_buckets) {
int small_bucket = 0, merge_bucket = INT_MAX, big_bucket = 0;
int buckets;
int i;
assert(bucket != NULL);
assert(num_buckets != NULL);
buckets = *num_buckets;
/* Find the extrema for this list of buckets */
big_bucket = small_bucket = 0;
for (i = 0; i < buckets; i++) {
if (bucket[i].count < bucket[small_bucket].count) small_bucket = i;
if (bucket[i].count > bucket[big_bucket].count) big_bucket = i;
}
/* If we have too many buckets, merge the smallest with an adjacent
* bucket.
*/
while (buckets > max_buckets) {
int last_bucket = buckets - 1;
/* merge the small bucket with an adjacent one. */
if (small_bucket == 0)
merge_bucket = 1;
else if (small_bucket == last_bucket)
merge_bucket = last_bucket - 1;
else if (bucket[small_bucket - 1].count < bucket[small_bucket + 1].count)
merge_bucket = small_bucket - 1;
else
merge_bucket = small_bucket + 1;
assert(abs(merge_bucket - small_bucket) <= 1);
assert(small_bucket < buckets);
assert(big_bucket < buckets);
assert(merge_bucket < buckets);
if (merge_bucket < small_bucket) {
bucket[merge_bucket].high = bucket[small_bucket].high;
bucket[merge_bucket].count += bucket[small_bucket].count;
} else {
bucket[small_bucket].high = bucket[merge_bucket].high;
bucket[small_bucket].count += bucket[merge_bucket].count;
merge_bucket = small_bucket;
}
assert(bucket[merge_bucket].low != bucket[merge_bucket].high);
buckets--;
/* Remove the merge_bucket from the list, and find the new small
* and big buckets while we're at it
*/
big_bucket = small_bucket = 0;
for (i = 0; i < buckets; i++) {
if (i > merge_bucket) bucket[i] = bucket[i + 1];
if (bucket[i].count < bucket[small_bucket].count) small_bucket = i;
if (bucket[i].count > bucket[big_bucket].count) big_bucket = i;
}
}
*num_buckets = buckets;
return bucket[big_bucket].count;
}
static void show_histogram(const struct hist_bucket *bucket, int buckets,
int total, int scale) {
const char *pat1, *pat2;
int i;
assert(bucket != NULL);
switch ((int)(log(bucket[buckets - 1].high) / log(10)) + 1) {
case 1:
case 2:
pat1 = "%4d %2s: ";
pat2 = "%4d-%2d: ";
break;
case 3:
pat1 = "%5d %3s: ";
pat2 = "%5d-%3d: ";
break;
case 4:
pat1 = "%6d %4s: ";
pat2 = "%6d-%4d: ";
break;
case 5:
pat1 = "%7d %5s: ";
pat2 = "%7d-%5d: ";
break;
case 6:
pat1 = "%8d %6s: ";
pat2 = "%8d-%6d: ";
break;
case 7:
pat1 = "%9d %7s: ";
pat2 = "%9d-%7d: ";
break;
default:
pat1 = "%12d %10s: ";
pat2 = "%12d-%10d: ";
break;
}
for (i = 0; i < buckets; i++) {
int len;
int j;
float pct;
pct = (float)(100.0 * bucket[i].count / total);
len = HIST_BAR_MAX * bucket[i].count / scale;
if (len < 1) len = 1;
assert(len <= HIST_BAR_MAX);
if (bucket[i].low == bucket[i].high)
fprintf(stderr, pat1, bucket[i].low, "");
else
fprintf(stderr, pat2, bucket[i].low, bucket[i].high);
for (j = 0; j < HIST_BAR_MAX; j++) fprintf(stderr, j < len ? "=" : " ");
fprintf(stderr, "\t%5d (%6.2f%%)\n", bucket[i].count, pct);
}
}
void show_q_histogram(const int counts[64], int max_buckets) {
struct hist_bucket bucket[64];
int buckets = 0;
int total = 0;
int scale;
int i;
for (i = 0; i < 64; i++) {
if (counts[i]) {
bucket[buckets].low = bucket[buckets].high = i;
bucket[buckets].count = counts[i];
buckets++;
total += counts[i];
}
}
fprintf(stderr, "\nQuantizer Selection:\n");
scale = merge_hist_buckets(bucket, max_buckets, &buckets);
show_histogram(bucket, buckets, total, scale);
}
void show_rate_histogram(struct rate_hist *hist, const vpx_codec_enc_cfg_t *cfg,
int max_buckets) {
int i, scale;
int buckets = 0;
if (hist == NULL || cfg == NULL) return;
for (i = 0; i < RATE_BINS; i++) {
if (hist->bucket[i].low == INT_MAX) continue;
hist->bucket[buckets++] = hist->bucket[i];
}
fprintf(stderr, "\nRate (over %dms window):\n", cfg->rc_buf_sz);
scale = merge_hist_buckets(hist->bucket, max_buckets, &buckets);
show_histogram(hist->bucket, buckets, hist->total, scale);
}

View file

@ -0,0 +1,40 @@
/*
* Copyright (c) 2014 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VPX_RATE_HIST_H_
#define VPX_RATE_HIST_H_
#include "vpx/vpx_encoder.h"
#ifdef __cplusplus
extern "C" {
#endif
struct rate_hist;
struct rate_hist *init_rate_histogram(const vpx_codec_enc_cfg_t *cfg,
const vpx_rational_t *fps);
void destroy_rate_histogram(struct rate_hist *hist);
void update_rate_histogram(struct rate_hist *hist,
const vpx_codec_enc_cfg_t *cfg,
const vpx_codec_cx_pkt_t *pkt);
void show_q_histogram(const int counts[64], int max_buckets);
void show_rate_histogram(struct rate_hist *hist, const vpx_codec_enc_cfg_t *cfg,
int max_buckets);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // VPX_RATE_HIST_H_

View file

@ -0,0 +1,4 @@
# Names should be added to this file like so:
# Name or Organization <email address>
Google Inc.

View file

@ -0,0 +1,17 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= libwebm
LOCAL_CPPFLAGS:=-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
LOCAL_CPPFLAGS+=-D__STDC_LIMIT_MACROS -std=c++11
LOCAL_C_INCLUDES:= $(LOCAL_PATH)
LOCAL_EXPORT_C_INCLUDES:= $(LOCAL_PATH)
LOCAL_SRC_FILES:= common/file_util.cc \
common/hdr_util.cc \
mkvparser/mkvparser.cc \
mkvparser/mkvreader.cc \
mkvmuxer/mkvmuxer.cc \
mkvmuxer/mkvmuxerutil.cc \
mkvmuxer/mkvwriter.cc
include $(BUILD_STATIC_LIBRARY)

View file

@ -0,0 +1,30 @@
Copyright (c) 2010, Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Google nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -0,0 +1,23 @@
Additional IP Rights Grant (Patents)
------------------------------------
"These implementations" means the copyrightable works that implement the WebM
codecs distributed by Google as part of the WebM Project.
Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
royalty-free, irrevocable (except as stated in this section) patent license to
make, have made, use, offer to sell, sell, import, transfer, and otherwise
run, modify and propagate the contents of these implementations of WebM, where
such license applies only to those patent claims, both currently owned by
Google and acquired in the future, licensable by Google that are necessarily
infringed by these implementations of WebM. This grant does not include claims
that would be infringed only as a consequence of further modification of these
implementations. If you or your agent or exclusive licensee institute or order
or agree to the institution of patent litigation or any other patent
enforcement activity against any entity (including a cross-claim or
counterclaim in a lawsuit) alleging that any of these implementations of WebM
or any code incorporated within any of these implementations of WebM
constitute direct or contributory patent infringement, or inducement of
patent infringement, then any patent rights granted to you under this License
for these implementations of WebM shall terminate as of the date such
litigation is filed.

View file

@ -0,0 +1,20 @@
URL: https://chromium.googlesource.com/webm/libwebm
Version: 37d9b860ebbf40cb0f6dcb7a6fef452d798062da
License: BSD
License File: LICENSE.txt
Description:
libwebm is used to handle WebM container I/O.
Local Changes:
Only keep:
- Android.mk
- AUTHORS.TXT
- common/
file_util.cc/h
hdr_util.cc/h
webmids.h
- LICENSE.TXT
- mkvmuxer/
- mkvparser/
- PATENTS.TXT

View file

@ -0,0 +1,93 @@
// Copyright (c) 2016 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#include "common/file_util.h"
#include <sys/stat.h>
#ifndef _MSC_VER
#include <unistd.h> // close()
#endif
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <ios>
#include <string>
namespace libwebm {
std::string GetTempFileName() {
#if !defined _MSC_VER && !defined __MINGW32__
std::string temp_file_name_template_str =
std::string(std::getenv("TEST_TMPDIR") ? std::getenv("TEST_TMPDIR")
: ".") +
"/libwebm_temp.XXXXXX";
char* temp_file_name_template =
new char[temp_file_name_template_str.length() + 1];
memset(temp_file_name_template, 0, temp_file_name_template_str.length() + 1);
temp_file_name_template_str.copy(temp_file_name_template,
temp_file_name_template_str.length(), 0);
int fd = mkstemp(temp_file_name_template);
std::string temp_file_name =
(fd != -1) ? std::string(temp_file_name_template) : std::string();
delete[] temp_file_name_template;
if (fd != -1) {
close(fd);
}
return temp_file_name;
#else
char tmp_file_name[_MAX_PATH];
#if defined _MSC_VER || defined MINGW_HAS_SECURE_API
errno_t err = tmpnam_s(tmp_file_name);
#else
char* fname_pointer = tmpnam(tmp_file_name);
int err = (fname_pointer == &tmp_file_name[0]) ? 0 : -1;
#endif
if (err == 0) {
return std::string(tmp_file_name);
}
return std::string();
#endif
}
uint64_t GetFileSize(const std::string& file_name) {
uint64_t file_size = 0;
#ifndef _MSC_VER
struct stat st;
st.st_size = 0;
if (stat(file_name.c_str(), &st) == 0) {
#else
struct _stat st;
st.st_size = 0;
if (_stat(file_name.c_str(), &st) == 0) {
#endif
file_size = st.st_size;
}
return file_size;
}
bool GetFileContents(const std::string& file_name, std::string* contents) {
std::ifstream file(file_name.c_str());
*contents = std::string(static_cast<size_t>(GetFileSize(file_name)), 0);
if (file.good() && contents->size()) {
file.read(&(*contents)[0], contents->size());
}
return !file.fail();
}
TempFileDeleter::TempFileDeleter() { file_name_ = GetTempFileName(); }
TempFileDeleter::~TempFileDeleter() {
std::ifstream file(file_name_.c_str());
if (file.good()) {
file.close();
std::remove(file_name_.c_str());
}
}
} // namespace libwebm

View file

@ -0,0 +1,44 @@
// Copyright (c) 2016 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef LIBWEBM_COMMON_FILE_UTIL_H_
#define LIBWEBM_COMMON_FILE_UTIL_H_
#include <stdint.h>
#include <string>
#include "mkvmuxer/mkvmuxertypes.h" // LIBWEBM_DISALLOW_COPY_AND_ASSIGN()
namespace libwebm {
// Returns a temporary file name.
std::string GetTempFileName();
// Returns size of file specified by |file_name|, or 0 upon failure.
uint64_t GetFileSize(const std::string& file_name);
// Gets the contents file_name as a string. Returns false on error.
bool GetFileContents(const std::string& file_name, std::string* contents);
// Manages life of temporary file specified at time of construction. Deletes
// file upon destruction.
class TempFileDeleter {
public:
TempFileDeleter();
explicit TempFileDeleter(std::string file_name) : file_name_(file_name) {}
~TempFileDeleter();
const std::string& name() const { return file_name_; }
private:
std::string file_name_;
LIBWEBM_DISALLOW_COPY_AND_ASSIGN(TempFileDeleter);
};
} // namespace libwebm
#endif // LIBWEBM_COMMON_FILE_UTIL_H_

View file

@ -0,0 +1,220 @@
// Copyright (c) 2016 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#include "hdr_util.h"
#include <climits>
#include <cstddef>
#include <new>
#include "mkvparser/mkvparser.h"
namespace libwebm {
const int Vp9CodecFeatures::kValueNotPresent = INT_MAX;
bool CopyPrimaryChromaticity(const mkvparser::PrimaryChromaticity& parser_pc,
PrimaryChromaticityPtr* muxer_pc) {
muxer_pc->reset(new (std::nothrow)
mkvmuxer::PrimaryChromaticity(parser_pc.x, parser_pc.y));
if (!muxer_pc->get())
return false;
return true;
}
bool MasteringMetadataValuePresent(double value) {
return value != mkvparser::MasteringMetadata::kValueNotPresent;
}
bool CopyMasteringMetadata(const mkvparser::MasteringMetadata& parser_mm,
mkvmuxer::MasteringMetadata* muxer_mm) {
if (MasteringMetadataValuePresent(parser_mm.luminance_max))
muxer_mm->set_luminance_max(parser_mm.luminance_max);
if (MasteringMetadataValuePresent(parser_mm.luminance_min))
muxer_mm->set_luminance_min(parser_mm.luminance_min);
PrimaryChromaticityPtr r_ptr(nullptr);
PrimaryChromaticityPtr g_ptr(nullptr);
PrimaryChromaticityPtr b_ptr(nullptr);
PrimaryChromaticityPtr wp_ptr(nullptr);
if (parser_mm.r) {
if (!CopyPrimaryChromaticity(*parser_mm.r, &r_ptr))
return false;
}
if (parser_mm.g) {
if (!CopyPrimaryChromaticity(*parser_mm.g, &g_ptr))
return false;
}
if (parser_mm.b) {
if (!CopyPrimaryChromaticity(*parser_mm.b, &b_ptr))
return false;
}
if (parser_mm.white_point) {
if (!CopyPrimaryChromaticity(*parser_mm.white_point, &wp_ptr))
return false;
}
if (!muxer_mm->SetChromaticity(r_ptr.get(), g_ptr.get(), b_ptr.get(),
wp_ptr.get())) {
return false;
}
return true;
}
bool ColourValuePresent(long long value) {
return value != mkvparser::Colour::kValueNotPresent;
}
bool CopyColour(const mkvparser::Colour& parser_colour,
mkvmuxer::Colour* muxer_colour) {
if (!muxer_colour)
return false;
if (ColourValuePresent(parser_colour.matrix_coefficients))
muxer_colour->set_matrix_coefficients(parser_colour.matrix_coefficients);
if (ColourValuePresent(parser_colour.bits_per_channel))
muxer_colour->set_bits_per_channel(parser_colour.bits_per_channel);
if (ColourValuePresent(parser_colour.chroma_subsampling_horz)) {
muxer_colour->set_chroma_subsampling_horz(
parser_colour.chroma_subsampling_horz);
}
if (ColourValuePresent(parser_colour.chroma_subsampling_vert)) {
muxer_colour->set_chroma_subsampling_vert(
parser_colour.chroma_subsampling_vert);
}
if (ColourValuePresent(parser_colour.cb_subsampling_horz))
muxer_colour->set_cb_subsampling_horz(parser_colour.cb_subsampling_horz);
if (ColourValuePresent(parser_colour.cb_subsampling_vert))
muxer_colour->set_cb_subsampling_vert(parser_colour.cb_subsampling_vert);
if (ColourValuePresent(parser_colour.chroma_siting_horz))
muxer_colour->set_chroma_siting_horz(parser_colour.chroma_siting_horz);
if (ColourValuePresent(parser_colour.chroma_siting_vert))
muxer_colour->set_chroma_siting_vert(parser_colour.chroma_siting_vert);
if (ColourValuePresent(parser_colour.range))
muxer_colour->set_range(parser_colour.range);
if (ColourValuePresent(parser_colour.transfer_characteristics)) {
muxer_colour->set_transfer_characteristics(
parser_colour.transfer_characteristics);
}
if (ColourValuePresent(parser_colour.primaries))
muxer_colour->set_primaries(parser_colour.primaries);
if (ColourValuePresent(parser_colour.max_cll))
muxer_colour->set_max_cll(parser_colour.max_cll);
if (ColourValuePresent(parser_colour.max_fall))
muxer_colour->set_max_fall(parser_colour.max_fall);
if (parser_colour.mastering_metadata) {
mkvmuxer::MasteringMetadata muxer_mm;
if (!CopyMasteringMetadata(*parser_colour.mastering_metadata, &muxer_mm))
return false;
if (!muxer_colour->SetMasteringMetadata(muxer_mm))
return false;
}
return true;
}
// Format of VPx private data:
//
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | ID Byte | Length | |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
// | |
// : Bytes 1..Length of Codec Feature :
// | |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// ID Byte Format
// ID byte is an unsigned byte.
// 0 1 2 3 4 5 6 7
// +-+-+-+-+-+-+-+-+
// |X| ID |
// +-+-+-+-+-+-+-+-+
//
// The X bit is reserved.
//
// See the following link for more information:
// http://www.webmproject.org/vp9/profiles/
bool ParseVpxCodecPrivate(const uint8_t* private_data, int32_t length,
Vp9CodecFeatures* features) {
const int kVpxCodecPrivateMinLength = 3;
if (!private_data || !features || length < kVpxCodecPrivateMinLength)
return false;
const uint8_t kVp9ProfileId = 1;
const uint8_t kVp9LevelId = 2;
const uint8_t kVp9BitDepthId = 3;
const uint8_t kVp9ChromaSubsamplingId = 4;
const int kVpxFeatureLength = 1;
int offset = 0;
// Set features to not set.
features->profile = Vp9CodecFeatures::kValueNotPresent;
features->level = Vp9CodecFeatures::kValueNotPresent;
features->bit_depth = Vp9CodecFeatures::kValueNotPresent;
features->chroma_subsampling = Vp9CodecFeatures::kValueNotPresent;
do {
const uint8_t id_byte = private_data[offset++];
const uint8_t length_byte = private_data[offset++];
if (length_byte != kVpxFeatureLength)
return false;
if (id_byte == kVp9ProfileId) {
const int priv_profile = static_cast<int>(private_data[offset++]);
if (priv_profile < 0 || priv_profile > 3)
return false;
if (features->profile != Vp9CodecFeatures::kValueNotPresent &&
features->profile != priv_profile) {
return false;
}
features->profile = priv_profile;
} else if (id_byte == kVp9LevelId) {
const int priv_level = static_cast<int>(private_data[offset++]);
const int kNumLevels = 14;
const int levels[kNumLevels] = {10, 11, 20, 21, 30, 31, 40,
41, 50, 51, 52, 60, 61, 62};
for (int i = 0; i < kNumLevels; ++i) {
if (priv_level == levels[i]) {
if (features->level != Vp9CodecFeatures::kValueNotPresent &&
features->level != priv_level) {
return false;
}
features->level = priv_level;
break;
}
}
if (features->level == Vp9CodecFeatures::kValueNotPresent)
return false;
} else if (id_byte == kVp9BitDepthId) {
const int priv_profile = static_cast<int>(private_data[offset++]);
if (priv_profile != 8 && priv_profile != 10 && priv_profile != 12)
return false;
if (features->bit_depth != Vp9CodecFeatures::kValueNotPresent &&
features->bit_depth != priv_profile) {
return false;
}
features->bit_depth = priv_profile;
} else if (id_byte == kVp9ChromaSubsamplingId) {
const int priv_profile = static_cast<int>(private_data[offset++]);
if (priv_profile != 0 && priv_profile != 2 && priv_profile != 3)
return false;
if (features->chroma_subsampling != Vp9CodecFeatures::kValueNotPresent &&
features->chroma_subsampling != priv_profile) {
return false;
}
features->chroma_subsampling = priv_profile;
} else {
// Invalid ID.
return false;
}
} while (offset + kVpxCodecPrivateMinLength <= length);
return true;
}
} // namespace libwebm

View file

@ -0,0 +1,71 @@
// Copyright (c) 2016 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef LIBWEBM_COMMON_HDR_UTIL_H_
#define LIBWEBM_COMMON_HDR_UTIL_H_
#include <stdint.h>
#include <memory>
#include "mkvmuxer/mkvmuxer.h"
namespace mkvparser {
struct Colour;
struct MasteringMetadata;
struct PrimaryChromaticity;
} // namespace mkvparser
namespace libwebm {
// Utility types and functions for working with the Colour element and its
// children. Copiers return true upon success. Presence functions return true
// when the specified element is present.
// TODO(tomfinegan): These should be moved to libwebm_utils once c++11 is
// required by libwebm.
// Features of the VP9 codec that may be set in the CodecPrivate of a VP9 video
// stream. A value of kValueNotPresent represents that the value was not set in
// the CodecPrivate.
struct Vp9CodecFeatures {
static const int kValueNotPresent;
Vp9CodecFeatures()
: profile(kValueNotPresent),
level(kValueNotPresent),
bit_depth(kValueNotPresent),
chroma_subsampling(kValueNotPresent) {}
~Vp9CodecFeatures() {}
int profile;
int level;
int bit_depth;
int chroma_subsampling;
};
typedef std::unique_ptr<mkvmuxer::PrimaryChromaticity> PrimaryChromaticityPtr;
bool CopyPrimaryChromaticity(const mkvparser::PrimaryChromaticity& parser_pc,
PrimaryChromaticityPtr* muxer_pc);
bool MasteringMetadataValuePresent(double value);
bool CopyMasteringMetadata(const mkvparser::MasteringMetadata& parser_mm,
mkvmuxer::MasteringMetadata* muxer_mm);
bool ColourValuePresent(long long value);
bool CopyColour(const mkvparser::Colour& parser_colour,
mkvmuxer::Colour* muxer_colour);
// Returns true if |features| is set to one or more valid values.
bool ParseVpxCodecPrivate(const uint8_t* private_data, int32_t length,
Vp9CodecFeatures* features);
} // namespace libwebm
#endif // LIBWEBM_COMMON_HDR_UTIL_H_

View file

@ -0,0 +1,193 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef COMMON_WEBMIDS_H_
#define COMMON_WEBMIDS_H_
namespace libwebm {
enum MkvId {
kMkvEBML = 0x1A45DFA3,
kMkvEBMLVersion = 0x4286,
kMkvEBMLReadVersion = 0x42F7,
kMkvEBMLMaxIDLength = 0x42F2,
kMkvEBMLMaxSizeLength = 0x42F3,
kMkvDocType = 0x4282,
kMkvDocTypeVersion = 0x4287,
kMkvDocTypeReadVersion = 0x4285,
kMkvVoid = 0xEC,
kMkvSignatureSlot = 0x1B538667,
kMkvSignatureAlgo = 0x7E8A,
kMkvSignatureHash = 0x7E9A,
kMkvSignaturePublicKey = 0x7EA5,
kMkvSignature = 0x7EB5,
kMkvSignatureElements = 0x7E5B,
kMkvSignatureElementList = 0x7E7B,
kMkvSignedElement = 0x6532,
// segment
kMkvSegment = 0x18538067,
// Meta Seek Information
kMkvSeekHead = 0x114D9B74,
kMkvSeek = 0x4DBB,
kMkvSeekID = 0x53AB,
kMkvSeekPosition = 0x53AC,
// Segment Information
kMkvInfo = 0x1549A966,
kMkvTimecodeScale = 0x2AD7B1,
kMkvDuration = 0x4489,
kMkvDateUTC = 0x4461,
kMkvTitle = 0x7BA9,
kMkvMuxingApp = 0x4D80,
kMkvWritingApp = 0x5741,
// Cluster
kMkvCluster = 0x1F43B675,
kMkvTimecode = 0xE7,
kMkvPrevSize = 0xAB,
kMkvBlockGroup = 0xA0,
kMkvBlock = 0xA1,
kMkvBlockDuration = 0x9B,
kMkvReferenceBlock = 0xFB,
kMkvLaceNumber = 0xCC,
kMkvSimpleBlock = 0xA3,
kMkvBlockAdditions = 0x75A1,
kMkvBlockMore = 0xA6,
kMkvBlockAddID = 0xEE,
kMkvBlockAdditional = 0xA5,
kMkvDiscardPadding = 0x75A2,
// Track
kMkvTracks = 0x1654AE6B,
kMkvTrackEntry = 0xAE,
kMkvTrackNumber = 0xD7,
kMkvTrackUID = 0x73C5,
kMkvTrackType = 0x83,
kMkvFlagEnabled = 0xB9,
kMkvFlagDefault = 0x88,
kMkvFlagForced = 0x55AA,
kMkvFlagLacing = 0x9C,
kMkvDefaultDuration = 0x23E383,
kMkvMaxBlockAdditionID = 0x55EE,
kMkvName = 0x536E,
kMkvLanguage = 0x22B59C,
kMkvCodecID = 0x86,
kMkvCodecPrivate = 0x63A2,
kMkvCodecName = 0x258688,
kMkvCodecDelay = 0x56AA,
kMkvSeekPreRoll = 0x56BB,
// video
kMkvVideo = 0xE0,
kMkvFlagInterlaced = 0x9A,
kMkvStereoMode = 0x53B8,
kMkvAlphaMode = 0x53C0,
kMkvPixelWidth = 0xB0,
kMkvPixelHeight = 0xBA,
kMkvPixelCropBottom = 0x54AA,
kMkvPixelCropTop = 0x54BB,
kMkvPixelCropLeft = 0x54CC,
kMkvPixelCropRight = 0x54DD,
kMkvDisplayWidth = 0x54B0,
kMkvDisplayHeight = 0x54BA,
kMkvDisplayUnit = 0x54B2,
kMkvAspectRatioType = 0x54B3,
kMkvColourSpace = 0x2EB524,
kMkvFrameRate = 0x2383E3,
// end video
// colour
kMkvColour = 0x55B0,
kMkvMatrixCoefficients = 0x55B1,
kMkvBitsPerChannel = 0x55B2,
kMkvChromaSubsamplingHorz = 0x55B3,
kMkvChromaSubsamplingVert = 0x55B4,
kMkvCbSubsamplingHorz = 0x55B5,
kMkvCbSubsamplingVert = 0x55B6,
kMkvChromaSitingHorz = 0x55B7,
kMkvChromaSitingVert = 0x55B8,
kMkvRange = 0x55B9,
kMkvTransferCharacteristics = 0x55BA,
kMkvPrimaries = 0x55BB,
kMkvMaxCLL = 0x55BC,
kMkvMaxFALL = 0x55BD,
// mastering metadata
kMkvMasteringMetadata = 0x55D0,
kMkvPrimaryRChromaticityX = 0x55D1,
kMkvPrimaryRChromaticityY = 0x55D2,
kMkvPrimaryGChromaticityX = 0x55D3,
kMkvPrimaryGChromaticityY = 0x55D4,
kMkvPrimaryBChromaticityX = 0x55D5,
kMkvPrimaryBChromaticityY = 0x55D6,
kMkvWhitePointChromaticityX = 0x55D7,
kMkvWhitePointChromaticityY = 0x55D8,
kMkvLuminanceMax = 0x55D9,
kMkvLuminanceMin = 0x55DA,
// end mastering metadata
// end colour
// projection
kMkvProjection = 0x7670,
kMkvProjectionType = 0x7671,
kMkvProjectionPrivate = 0x7672,
kMkvProjectionPoseYaw = 0x7673,
kMkvProjectionPosePitch = 0x7674,
kMkvProjectionPoseRoll = 0x7675,
// end projection
// audio
kMkvAudio = 0xE1,
kMkvSamplingFrequency = 0xB5,
kMkvOutputSamplingFrequency = 0x78B5,
kMkvChannels = 0x9F,
kMkvBitDepth = 0x6264,
// end audio
// ContentEncodings
kMkvContentEncodings = 0x6D80,
kMkvContentEncoding = 0x6240,
kMkvContentEncodingOrder = 0x5031,
kMkvContentEncodingScope = 0x5032,
kMkvContentEncodingType = 0x5033,
kMkvContentCompression = 0x5034,
kMkvContentCompAlgo = 0x4254,
kMkvContentCompSettings = 0x4255,
kMkvContentEncryption = 0x5035,
kMkvContentEncAlgo = 0x47E1,
kMkvContentEncKeyID = 0x47E2,
kMkvContentSignature = 0x47E3,
kMkvContentSigKeyID = 0x47E4,
kMkvContentSigAlgo = 0x47E5,
kMkvContentSigHashAlgo = 0x47E6,
kMkvContentEncAESSettings = 0x47E7,
kMkvAESSettingsCipherMode = 0x47E8,
kMkvAESSettingsCipherInitData = 0x47E9,
// end ContentEncodings
// Cueing Data
kMkvCues = 0x1C53BB6B,
kMkvCuePoint = 0xBB,
kMkvCueTime = 0xB3,
kMkvCueTrackPositions = 0xB7,
kMkvCueTrack = 0xF7,
kMkvCueClusterPosition = 0xF1,
kMkvCueBlockNumber = 0x5378,
// Chapters
kMkvChapters = 0x1043A770,
kMkvEditionEntry = 0x45B9,
kMkvChapterAtom = 0xB6,
kMkvChapterUID = 0x73C4,
kMkvChapterStringUID = 0x5654,
kMkvChapterTimeStart = 0x91,
kMkvChapterTimeEnd = 0x92,
kMkvChapterDisplay = 0x80,
kMkvChapString = 0x85,
kMkvChapLanguage = 0x437C,
kMkvChapCountry = 0x437E,
// Tags
kMkvTags = 0x1254C367,
kMkvTag = 0x7373,
kMkvSimpleTag = 0x67C8,
kMkvTagName = 0x45A3,
kMkvTagString = 0x4487
};
} // namespace libwebm
#endif // COMMON_WEBMIDS_H_

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,28 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef MKVMUXER_MKVMUXERTYPES_H_
#define MKVMUXER_MKVMUXERTYPES_H_
namespace mkvmuxer {
typedef unsigned char uint8;
typedef short int16;
typedef int int32;
typedef unsigned int uint32;
typedef long long int64;
typedef unsigned long long uint64;
} // namespace mkvmuxer
// Copied from Chromium basictypes.h
// A macro to disallow the copy constructor and operator= functions
// This should be used in the private: declarations for a class
#define LIBWEBM_DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName&); \
void operator=(const TypeName&)
#endif // MKVMUXER_MKVMUXERTYPES_HPP_

View file

@ -0,0 +1,743 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#include "mkvmuxer/mkvmuxerutil.h"
#ifdef __ANDROID__
#include <fcntl.h>
#include <unistd.h>
#endif
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <new>
#include "common/webmids.h"
#include "mkvmuxer/mkvmuxer.h"
#include "mkvmuxer/mkvwriter.h"
namespace mkvmuxer {
namespace {
// Date elements are always 8 octets in size.
const int kDateElementSize = 8;
uint64 WriteBlock(IMkvWriter* writer, const Frame* const frame, int64 timecode,
uint64 timecode_scale) {
uint64 block_additional_elem_size = 0;
uint64 block_addid_elem_size = 0;
uint64 block_more_payload_size = 0;
uint64 block_more_elem_size = 0;
uint64 block_additions_payload_size = 0;
uint64 block_additions_elem_size = 0;
if (frame->additional()) {
block_additional_elem_size =
EbmlElementSize(libwebm::kMkvBlockAdditional, frame->additional(),
frame->additional_length());
block_addid_elem_size = EbmlElementSize(
libwebm::kMkvBlockAddID, static_cast<uint64>(frame->add_id()));
block_more_payload_size =
block_addid_elem_size + block_additional_elem_size;
block_more_elem_size =
EbmlMasterElementSize(libwebm::kMkvBlockMore, block_more_payload_size) +
block_more_payload_size;
block_additions_payload_size = block_more_elem_size;
block_additions_elem_size =
EbmlMasterElementSize(libwebm::kMkvBlockAdditions,
block_additions_payload_size) +
block_additions_payload_size;
}
uint64 discard_padding_elem_size = 0;
if (frame->discard_padding() != 0) {
discard_padding_elem_size =
EbmlElementSize(libwebm::kMkvDiscardPadding,
static_cast<int64>(frame->discard_padding()));
}
const uint64 reference_block_timestamp =
frame->reference_block_timestamp() / timecode_scale;
uint64 reference_block_elem_size = 0;
if (!frame->is_key()) {
reference_block_elem_size =
EbmlElementSize(libwebm::kMkvReferenceBlock, reference_block_timestamp);
}
const uint64 duration = frame->duration() / timecode_scale;
uint64 block_duration_elem_size = 0;
if (duration > 0)
block_duration_elem_size =
EbmlElementSize(libwebm::kMkvBlockDuration, duration);
const uint64 block_payload_size = 4 + frame->length();
const uint64 block_elem_size =
EbmlMasterElementSize(libwebm::kMkvBlock, block_payload_size) +
block_payload_size;
const uint64 block_group_payload_size =
block_elem_size + block_additions_elem_size + block_duration_elem_size +
discard_padding_elem_size + reference_block_elem_size;
if (!WriteEbmlMasterElement(writer, libwebm::kMkvBlockGroup,
block_group_payload_size)) {
return 0;
}
if (!WriteEbmlMasterElement(writer, libwebm::kMkvBlock, block_payload_size))
return 0;
if (WriteUInt(writer, frame->track_number()))
return 0;
if (SerializeInt(writer, timecode, 2))
return 0;
// For a Block, flags is always 0.
if (SerializeInt(writer, 0, 1))
return 0;
if (writer->Write(frame->frame(), static_cast<uint32>(frame->length())))
return 0;
if (frame->additional()) {
if (!WriteEbmlMasterElement(writer, libwebm::kMkvBlockAdditions,
block_additions_payload_size)) {
return 0;
}
if (!WriteEbmlMasterElement(writer, libwebm::kMkvBlockMore,
block_more_payload_size))
return 0;
if (!WriteEbmlElement(writer, libwebm::kMkvBlockAddID,
static_cast<uint64>(frame->add_id())))
return 0;
if (!WriteEbmlElement(writer, libwebm::kMkvBlockAdditional,
frame->additional(), frame->additional_length())) {
return 0;
}
}
if (frame->discard_padding() != 0 &&
!WriteEbmlElement(writer, libwebm::kMkvDiscardPadding,
static_cast<int64>(frame->discard_padding()))) {
return false;
}
if (!frame->is_key() && !WriteEbmlElement(writer, libwebm::kMkvReferenceBlock,
reference_block_timestamp)) {
return false;
}
if (duration > 0 &&
!WriteEbmlElement(writer, libwebm::kMkvBlockDuration, duration)) {
return false;
}
return EbmlMasterElementSize(libwebm::kMkvBlockGroup,
block_group_payload_size) +
block_group_payload_size;
}
uint64 WriteSimpleBlock(IMkvWriter* writer, const Frame* const frame,
int64 timecode) {
if (WriteID(writer, libwebm::kMkvSimpleBlock))
return 0;
const int32 size = static_cast<int32>(frame->length()) + 4;
if (WriteUInt(writer, size))
return 0;
if (WriteUInt(writer, static_cast<uint64>(frame->track_number())))
return 0;
if (SerializeInt(writer, timecode, 2))
return 0;
uint64 flags = 0;
if (frame->is_key())
flags |= 0x80;
if (SerializeInt(writer, flags, 1))
return 0;
if (writer->Write(frame->frame(), static_cast<uint32>(frame->length())))
return 0;
return GetUIntSize(libwebm::kMkvSimpleBlock) + GetCodedUIntSize(size) + 4 +
frame->length();
}
} // namespace
int32 GetCodedUIntSize(uint64 value) {
if (value < 0x000000000000007FULL)
return 1;
else if (value < 0x0000000000003FFFULL)
return 2;
else if (value < 0x00000000001FFFFFULL)
return 3;
else if (value < 0x000000000FFFFFFFULL)
return 4;
else if (value < 0x00000007FFFFFFFFULL)
return 5;
else if (value < 0x000003FFFFFFFFFFULL)
return 6;
else if (value < 0x0001FFFFFFFFFFFFULL)
return 7;
return 8;
}
int32 GetUIntSize(uint64 value) {
if (value < 0x0000000000000100ULL)
return 1;
else if (value < 0x0000000000010000ULL)
return 2;
else if (value < 0x0000000001000000ULL)
return 3;
else if (value < 0x0000000100000000ULL)
return 4;
else if (value < 0x0000010000000000ULL)
return 5;
else if (value < 0x0001000000000000ULL)
return 6;
else if (value < 0x0100000000000000ULL)
return 7;
return 8;
}
int32 GetIntSize(int64 value) {
// Doubling the requested value ensures positive values with their high bit
// set are written with 0-padding to avoid flipping the signedness.
const uint64 v = (value < 0) ? value ^ -1LL : value;
return GetUIntSize(2 * v);
}
uint64 EbmlMasterElementSize(uint64 type, uint64 value) {
// Size of EBML ID
int32 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += GetCodedUIntSize(value);
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, int64 value) {
// Size of EBML ID
int32 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += GetIntSize(value);
// Size of Datasize
ebml_size++;
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, uint64 value) {
return EbmlElementSize(type, value, 0);
}
uint64 EbmlElementSize(uint64 type, uint64 value, uint64 fixed_size) {
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += (fixed_size > 0) ? fixed_size : GetUIntSize(value);
// Size of Datasize
ebml_size++;
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, float /* value */) {
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += sizeof(float);
// Size of Datasize
ebml_size++;
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, const char* value) {
if (!value)
return 0;
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += strlen(value);
// Size of Datasize
ebml_size += GetCodedUIntSize(strlen(value));
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, const uint8* value, uint64 size) {
if (!value)
return 0;
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += size;
// Size of Datasize
ebml_size += GetCodedUIntSize(size);
return ebml_size;
}
uint64 EbmlDateElementSize(uint64 type) {
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += kDateElementSize;
// Size of Datasize
ebml_size++;
return ebml_size;
}
int32 SerializeInt(IMkvWriter* writer, int64 value, int32 size) {
if (!writer || size < 1 || size > 8)
return -1;
for (int32 i = 1; i <= size; ++i) {
const int32 byte_count = size - i;
const int32 bit_count = byte_count * 8;
const int64 bb = value >> bit_count;
const uint8 b = static_cast<uint8>(bb);
const int32 status = writer->Write(&b, 1);
if (status < 0)
return status;
}
return 0;
}
int32 SerializeFloat(IMkvWriter* writer, float f) {
if (!writer)
return -1;
assert(sizeof(uint32) == sizeof(float));
// This union is merely used to avoid a reinterpret_cast from float& to
// uint32& which will result in violation of strict aliasing.
union U32 {
uint32 u32;
float f;
} value;
value.f = f;
for (int32 i = 1; i <= 4; ++i) {
const int32 byte_count = 4 - i;
const int32 bit_count = byte_count * 8;
const uint8 byte = static_cast<uint8>(value.u32 >> bit_count);
const int32 status = writer->Write(&byte, 1);
if (status < 0)
return status;
}
return 0;
}
int32 WriteUInt(IMkvWriter* writer, uint64 value) {
if (!writer)
return -1;
int32 size = GetCodedUIntSize(value);
return WriteUIntSize(writer, value, size);
}
int32 WriteUIntSize(IMkvWriter* writer, uint64 value, int32 size) {
if (!writer || size < 0 || size > 8)
return -1;
if (size > 0) {
const uint64 bit = 1LL << (size * 7);
if (value > (bit - 2))
return -1;
value |= bit;
} else {
size = 1;
int64 bit;
for (;;) {
bit = 1LL << (size * 7);
const uint64 max = bit - 2;
if (value <= max)
break;
++size;
}
if (size > 8)
return false;
value |= bit;
}
return SerializeInt(writer, value, size);
}
int32 WriteID(IMkvWriter* writer, uint64 type) {
if (!writer)
return -1;
writer->ElementStartNotify(type, writer->Position());
const int32 size = GetUIntSize(type);
return SerializeInt(writer, type, size);
}
bool WriteEbmlMasterElement(IMkvWriter* writer, uint64 type, uint64 size) {
if (!writer)
return false;
if (WriteID(writer, type))
return false;
if (WriteUInt(writer, size))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, uint64 value) {
return WriteEbmlElement(writer, type, value, 0);
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, uint64 value,
uint64 fixed_size) {
if (!writer)
return false;
if (WriteID(writer, type))
return false;
uint64 size = GetUIntSize(value);
if (fixed_size > 0) {
if (size > fixed_size)
return false;
size = fixed_size;
}
if (WriteUInt(writer, size))
return false;
if (SerializeInt(writer, value, static_cast<int32>(size)))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, int64 value) {
if (!writer)
return false;
if (WriteID(writer, type))
return 0;
const uint64 size = GetIntSize(value);
if (WriteUInt(writer, size))
return false;
if (SerializeInt(writer, value, static_cast<int32>(size)))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, float value) {
if (!writer)
return false;
if (WriteID(writer, type))
return false;
if (WriteUInt(writer, 4))
return false;
if (SerializeFloat(writer, value))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const char* value) {
if (!writer || !value)
return false;
if (WriteID(writer, type))
return false;
const uint64 length = strlen(value);
if (WriteUInt(writer, length))
return false;
if (writer->Write(value, static_cast<uint32>(length)))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const uint8* value,
uint64 size) {
if (!writer || !value || size < 1)
return false;
if (WriteID(writer, type))
return false;
if (WriteUInt(writer, size))
return false;
if (writer->Write(value, static_cast<uint32>(size)))
return false;
return true;
}
bool WriteEbmlDateElement(IMkvWriter* writer, uint64 type, int64 value) {
if (!writer)
return false;
if (WriteID(writer, type))
return false;
if (WriteUInt(writer, kDateElementSize))
return false;
if (SerializeInt(writer, value, kDateElementSize))
return false;
return true;
}
uint64 WriteFrame(IMkvWriter* writer, const Frame* const frame,
Cluster* cluster) {
if (!writer || !frame || !frame->IsValid() || !cluster ||
!cluster->timecode_scale())
return 0;
// Technically the timecode for a block can be less than the
// timecode for the cluster itself (remember that block timecode
// is a signed, 16-bit integer). However, as a simplification we
// only permit non-negative cluster-relative timecodes for blocks.
const int64 relative_timecode = cluster->GetRelativeTimecode(
frame->timestamp() / cluster->timecode_scale());
if (relative_timecode < 0 || relative_timecode > kMaxBlockTimecode)
return 0;
return frame->CanBeSimpleBlock()
? WriteSimpleBlock(writer, frame, relative_timecode)
: WriteBlock(writer, frame, relative_timecode,
cluster->timecode_scale());
}
uint64 WriteVoidElement(IMkvWriter* writer, uint64 size) {
if (!writer)
return false;
// Subtract one for the void ID and the coded size.
uint64 void_entry_size = size - 1 - GetCodedUIntSize(size - 1);
uint64 void_size = EbmlMasterElementSize(libwebm::kMkvVoid, void_entry_size) +
void_entry_size;
if (void_size != size)
return 0;
const int64 payload_position = writer->Position();
if (payload_position < 0)
return 0;
if (WriteID(writer, libwebm::kMkvVoid))
return 0;
if (WriteUInt(writer, void_entry_size))
return 0;
const uint8 value = 0;
for (int32 i = 0; i < static_cast<int32>(void_entry_size); ++i) {
if (writer->Write(&value, 1))
return 0;
}
const int64 stop_position = writer->Position();
if (stop_position < 0 ||
stop_position - payload_position != static_cast<int64>(void_size))
return 0;
return void_size;
}
void GetVersion(int32* major, int32* minor, int32* build, int32* revision) {
*major = 0;
*minor = 2;
*build = 1;
*revision = 0;
}
uint64 MakeUID(unsigned int* seed) {
uint64 uid = 0;
#ifdef __MINGW32__
srand(*seed);
#endif
for (int i = 0; i < 7; ++i) { // avoid problems with 8-byte values
uid <<= 8;
// TODO(fgalligan): Move random number generation to platform specific code.
#ifdef _MSC_VER
(void)seed;
const int32 nn = rand();
#elif __ANDROID__
(void)seed;
int32 temp_num = 1;
int fd = open("/dev/urandom", O_RDONLY);
if (fd != -1) {
read(fd, &temp_num, sizeof(temp_num));
close(fd);
}
const int32 nn = temp_num;
#elif defined __MINGW32__
const int32 nn = rand();
#else
const int32 nn = rand_r(seed);
#endif
const int32 n = 0xFF & (nn >> 4); // throw away low-order bits
uid |= n;
}
return uid;
}
bool IsMatrixCoefficientsValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kGbr:
case mkvmuxer::Colour::kBt709:
case mkvmuxer::Colour::kUnspecifiedMc:
case mkvmuxer::Colour::kReserved:
case mkvmuxer::Colour::kFcc:
case mkvmuxer::Colour::kBt470bg:
case mkvmuxer::Colour::kSmpte170MMc:
case mkvmuxer::Colour::kSmpte240MMc:
case mkvmuxer::Colour::kYcocg:
case mkvmuxer::Colour::kBt2020NonConstantLuminance:
case mkvmuxer::Colour::kBt2020ConstantLuminance:
return true;
}
return false;
}
bool IsChromaSitingHorzValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kUnspecifiedCsh:
case mkvmuxer::Colour::kLeftCollocated:
case mkvmuxer::Colour::kHalfCsh:
return true;
}
return false;
}
bool IsChromaSitingVertValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kUnspecifiedCsv:
case mkvmuxer::Colour::kTopCollocated:
case mkvmuxer::Colour::kHalfCsv:
return true;
}
return false;
}
bool IsColourRangeValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kUnspecifiedCr:
case mkvmuxer::Colour::kBroadcastRange:
case mkvmuxer::Colour::kFullRange:
case mkvmuxer::Colour::kMcTcDefined:
return true;
}
return false;
}
bool IsTransferCharacteristicsValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kIturBt709Tc:
case mkvmuxer::Colour::kUnspecifiedTc:
case mkvmuxer::Colour::kReservedTc:
case mkvmuxer::Colour::kGamma22Curve:
case mkvmuxer::Colour::kGamma28Curve:
case mkvmuxer::Colour::kSmpte170MTc:
case mkvmuxer::Colour::kSmpte240MTc:
case mkvmuxer::Colour::kLinear:
case mkvmuxer::Colour::kLog:
case mkvmuxer::Colour::kLogSqrt:
case mkvmuxer::Colour::kIec6196624:
case mkvmuxer::Colour::kIturBt1361ExtendedColourGamut:
case mkvmuxer::Colour::kIec6196621:
case mkvmuxer::Colour::kIturBt202010bit:
case mkvmuxer::Colour::kIturBt202012bit:
case mkvmuxer::Colour::kSmpteSt2084:
case mkvmuxer::Colour::kSmpteSt4281Tc:
case mkvmuxer::Colour::kAribStdB67Hlg:
return true;
}
return false;
}
bool IsPrimariesValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kReservedP0:
case mkvmuxer::Colour::kIturBt709P:
case mkvmuxer::Colour::kUnspecifiedP:
case mkvmuxer::Colour::kReservedP3:
case mkvmuxer::Colour::kIturBt470M:
case mkvmuxer::Colour::kIturBt470Bg:
case mkvmuxer::Colour::kSmpte170MP:
case mkvmuxer::Colour::kSmpte240MP:
case mkvmuxer::Colour::kFilm:
case mkvmuxer::Colour::kIturBt2020:
case mkvmuxer::Colour::kSmpteSt4281P:
case mkvmuxer::Colour::kJedecP22Phosphors:
return true;
}
return false;
}
} // namespace mkvmuxer

View file

@ -0,0 +1,115 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef MKVMUXER_MKVMUXERUTIL_H_
#define MKVMUXER_MKVMUXERUTIL_H_
#include "mkvmuxertypes.h"
#include "stdint.h"
namespace mkvmuxer {
class Cluster;
class Frame;
class IMkvWriter;
// TODO(tomfinegan): mkvmuxer:: integer types continue to be used here because
// changing them causes pain for downstream projects. It would be nice if a
// solution that allows removal of the mkvmuxer:: integer types while avoiding
// pain for downstream users of libwebm. Considering that mkvmuxerutil.{cc,h}
// are really, for the great majority of cases, EBML size calculation and writer
// functions, perhaps a more EBML focused utility would be the way to go as a
// first step.
const uint64 kEbmlUnknownValue = 0x01FFFFFFFFFFFFFFULL;
const int64 kMaxBlockTimecode = 0x07FFFLL;
// Writes out |value| in Big Endian order. Returns 0 on success.
int32 SerializeInt(IMkvWriter* writer, int64 value, int32 size);
// Writes out |f| in Big Endian order. Returns 0 on success.
int32 SerializeFloat(IMkvWriter* writer, float f);
// Returns the size in bytes of the element.
int32 GetUIntSize(uint64 value);
int32 GetIntSize(int64 value);
int32 GetCodedUIntSize(uint64 value);
uint64 EbmlMasterElementSize(uint64 type, uint64 value);
uint64 EbmlElementSize(uint64 type, int64 value);
uint64 EbmlElementSize(uint64 type, uint64 value);
uint64 EbmlElementSize(uint64 type, float value);
uint64 EbmlElementSize(uint64 type, const char* value);
uint64 EbmlElementSize(uint64 type, const uint8* value, uint64 size);
uint64 EbmlDateElementSize(uint64 type);
// Returns the size in bytes of the element assuming that the element was
// written using |fixed_size| bytes. If |fixed_size| is set to zero, then it
// computes the necessary number of bytes based on |value|.
uint64 EbmlElementSize(uint64 type, uint64 value, uint64 fixed_size);
// Creates an EBML coded number from |value| and writes it out. The size of
// the coded number is determined by the value of |value|. |value| must not
// be in a coded form. Returns 0 on success.
int32 WriteUInt(IMkvWriter* writer, uint64 value);
// Creates an EBML coded number from |value| and writes it out. The size of
// the coded number is determined by the value of |size|. |value| must not
// be in a coded form. Returns 0 on success.
int32 WriteUIntSize(IMkvWriter* writer, uint64 value, int32 size);
// Output an Mkv master element. Returns true if the element was written.
bool WriteEbmlMasterElement(IMkvWriter* writer, uint64 value, uint64 size);
// Outputs an Mkv ID, calls |IMkvWriter::ElementStartNotify|, and passes the
// ID to |SerializeInt|. Returns 0 on success.
int32 WriteID(IMkvWriter* writer, uint64 type);
// Output an Mkv non-master element. Returns true if the element was written.
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, uint64 value);
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, int64 value);
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, float value);
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const char* value);
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const uint8* value,
uint64 size);
bool WriteEbmlDateElement(IMkvWriter* writer, uint64 type, int64 value);
// Output an Mkv non-master element using fixed size. The element will be
// written out using exactly |fixed_size| bytes. If |fixed_size| is set to zero
// then it computes the necessary number of bytes based on |value|. Returns true
// if the element was written.
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, uint64 value,
uint64 fixed_size);
// Output a Mkv Frame. It decides the correct element to write (Block vs
// SimpleBlock) based on the parameters of the Frame.
uint64 WriteFrame(IMkvWriter* writer, const Frame* const frame,
Cluster* cluster);
// Output a void element. |size| must be the entire size in bytes that will be
// void. The function will calculate the size of the void header and subtract
// it from |size|.
uint64 WriteVoidElement(IMkvWriter* writer, uint64 size);
// Returns the version number of the muxer in |major|, |minor|, |build|,
// and |revision|.
void GetVersion(int32* major, int32* minor, int32* build, int32* revision);
// Returns a random number to be used for UID, using |seed| to seed
// the random-number generator (see POSIX rand_r() for semantics).
uint64 MakeUID(unsigned int* seed);
// Colour field validation helpers. All return true when |value| is valid.
bool IsMatrixCoefficientsValueValid(uint64_t value);
bool IsChromaSitingHorzValueValid(uint64_t value);
bool IsChromaSitingVertValueValid(uint64_t value);
bool IsColourRangeValueValid(uint64_t value);
bool IsTransferCharacteristicsValueValid(uint64_t value);
bool IsPrimariesValueValid(uint64_t value);
} // namespace mkvmuxer
#endif // MKVMUXER_MKVMUXERUTIL_H_

View file

@ -0,0 +1,92 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#include "mkvmuxer/mkvwriter.h"
#include <sys/types.h>
#ifdef _MSC_VER
#include <share.h> // for _SH_DENYWR
#endif
namespace mkvmuxer {
MkvWriter::MkvWriter() : file_(NULL), writer_owns_file_(true) {}
MkvWriter::MkvWriter(FILE* fp) : file_(fp), writer_owns_file_(false) {}
MkvWriter::~MkvWriter() { Close(); }
int32 MkvWriter::Write(const void* buffer, uint32 length) {
if (!file_)
return -1;
if (length == 0)
return 0;
if (buffer == NULL)
return -1;
const size_t bytes_written = fwrite(buffer, 1, length, file_);
return (bytes_written == length) ? 0 : -1;
}
bool MkvWriter::Open(const char* filename) {
if (filename == NULL)
return false;
if (file_)
return false;
#ifdef _MSC_VER
file_ = _fsopen(filename, "wb", _SH_DENYWR);
#else
file_ = fopen(filename, "wb");
#endif
if (file_ == NULL)
return false;
return true;
}
void MkvWriter::Close() {
if (file_ && writer_owns_file_) {
fclose(file_);
}
file_ = NULL;
}
int64 MkvWriter::Position() const {
if (!file_)
return 0;
#ifdef _MSC_VER
return _ftelli64(file_);
#else
return ftell(file_);
#endif
}
int32 MkvWriter::Position(int64 position) {
if (!file_)
return -1;
#ifdef _MSC_VER
return _fseeki64(file_, position, SEEK_SET);
#elif defined(_WIN32)
return fseeko64(file_, static_cast<off_t>(position), SEEK_SET);
#else
return fseeko(file_, static_cast<off_t>(position), SEEK_SET);
#endif
}
bool MkvWriter::Seekable() const { return true; }
void MkvWriter::ElementStartNotify(uint64, int64) {}
} // namespace mkvmuxer

View file

@ -0,0 +1,51 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef MKVMUXER_MKVWRITER_H_
#define MKVMUXER_MKVWRITER_H_
#include <stdio.h>
#include "mkvmuxer/mkvmuxer.h"
#include "mkvmuxer/mkvmuxertypes.h"
namespace mkvmuxer {
// Default implementation of the IMkvWriter interface on Windows.
class MkvWriter : public IMkvWriter {
public:
MkvWriter();
explicit MkvWriter(FILE* fp);
virtual ~MkvWriter();
// IMkvWriter interface
virtual int64 Position() const;
virtual int32 Position(int64 position);
virtual bool Seekable() const;
virtual int32 Write(const void* buffer, uint32 length);
virtual void ElementStartNotify(uint64 element_id, int64 position);
// Creates and opens a file for writing. |filename| is the name of the file
// to open. This function will overwrite the contents of |filename|. Returns
// true on success.
bool Open(const char* filename);
// Closes an opened file.
void Close();
private:
// File handle to output file.
FILE* file_;
bool writer_owns_file_;
LIBWEBM_DISALLOW_COPY_AND_ASSIGN(MkvWriter);
};
} // namespace mkvmuxer
#endif // MKVMUXER_MKVWRITER_H_

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more