1df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## 2df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## Copyright (c) 2017 The WebM project authors. All Rights Reserved. 3df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## 4df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## Use of this source code is governed by a BSD-style license 5df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## that can be found in the LICENSE file in the root of the source 6df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## tree. An additional intellectual property rights grant can be found 7df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## in the file PATENTS. All contributing project authors may 8df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## be found in the AUTHORS file in the root of the source tree. 9df37111358d02836cb29bbcb9c6e4c95dff90a16Johann## 10df37111358d02836cb29bbcb9c6e4c95dff90a16Johann 112ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansub vp9_common_forward_decls() { 122ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianprint <<EOF 132ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian/* 142ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * VP9 152ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian */ 162ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 172ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#include "vpx/vpx_integer.h" 187ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian#include "vp9/common/vp9_common.h" 192ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#include "vp9/common/vp9_enums.h" 200a39d0a697ff3603e8c100300fda363658e10b23James Zern#include "vp9/common/vp9_filter.h" 212ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 222ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstruct macroblockd; 232ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 242ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian/* Encoder forward decls */ 252ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstruct macroblock; 262ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstruct vp9_variance_vtable; 27ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianstruct search_site_config; 282ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstruct mv; 292ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianunion int_mv; 302ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstruct yv12_buffer_config; 312ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEOF 322ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 332ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianforward_decls qw/vp9_common_forward_decls/; 342ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 357ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian# functions that are 64 bit only. 367ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian$mmx_x86_64 = $sse2_x86_64 = $ssse3_x86_64 = $avx_x86_64 = $avx2_x86_64 = ''; 372ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianif ($opts{arch} eq "x86_64") { 382ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian $mmx_x86_64 = 'mmx'; 392ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian $sse2_x86_64 = 'sse2'; 402ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian $ssse3_x86_64 = 'ssse3'; 412ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian $avx_x86_64 = 'avx'; 422ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian $avx2_x86_64 = 'avx2'; 43df37111358d02836cb29bbcb9c6e4c95dff90a16Johann $avx512_x86_64 = 'avx512'; 442ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 452ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 462ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# 472ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# post proc 482ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# 492ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianif (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") { 507ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianadd_proto qw/void vp9_filter_by_weight16x16/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int src_weight"; 517ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianspecialize qw/vp9_filter_by_weight16x16 sse2 msa/; 522ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 537ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianadd_proto qw/void vp9_filter_by_weight8x8/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int src_weight"; 547ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianspecialize qw/vp9_filter_by_weight8x8 sse2 msa/; 557ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian} 562ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 572ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# 582ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# dct 592ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# 60df37111358d02836cb29bbcb9c6e4c95dff90a16Johann# Force C versions if CONFIG_EMULATE_HARDWARE is 1 61df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int stride, int tx_type"; 62df37111358d02836cb29bbcb9c6e4c95dff90a16Johann 63df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int stride, int tx_type"; 64df37111358d02836cb29bbcb9c6e4c95dff90a16Johann 65df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type"; 66df37111358d02836cb29bbcb9c6e4c95dff90a16Johann 67df37111358d02836cb29bbcb9c6e4c95dff90a16Johannif (vpx_config("CONFIG_EMULATE_HARDWARE") ne "yes") { 68df37111358d02836cb29bbcb9c6e4c95dff90a16Johann # Note that there are more specializations appended when 69df37111358d02836cb29bbcb9c6e4c95dff90a16Johann # CONFIG_VP9_HIGHBITDEPTH is off. 70df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_iht4x4_16_add sse2/; 71df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_iht8x8_64_add sse2/; 72df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_iht16x16_256_add sse2/; 73df37111358d02836cb29bbcb9c6e4c95dff90a16Johann if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") ne "yes") { 74df37111358d02836cb29bbcb9c6e4c95dff90a16Johann # Note that these specializations are appended to the above ones. 75df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_iht4x4_16_add neon dspr2 msa/; 76df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_iht8x8_64_add neon dspr2 msa/; 77df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_iht16x16_256_add dspr2 msa/; 787ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian } 797ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian} 802ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 817ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian# High bitdepth functions 827ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianif (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 837ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # 847ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # post proc 857ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # 867ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian if (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") { 877ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian add_proto qw/void vp9_highbd_mbpost_proc_down/, "uint16_t *dst, int pitch, int rows, int cols, int flimit"; 882ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 897ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian add_proto qw/void vp9_highbd_mbpost_proc_across_ip/, "uint16_t *src, int pitch, int rows, int cols, int flimit"; 902ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 917ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian add_proto qw/void vp9_highbd_post_proc_down_and_across/, "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"; 927ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian } 932ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 947ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # 957ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # dct 967ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # 977ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # Note as optimized versions of these functions are added we need to add a check to ensure 987ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # that when CONFIG_EMULATE_HARDWARE is on, it defaults to the C versions only. 990a39d0a697ff3603e8c100300fda363658e10b23James Zern add_proto qw/void vp9_highbd_iht4x4_16_add/, "const tran_low_t *input, uint16_t *dest, int stride, int tx_type, int bd"; 1002ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1010a39d0a697ff3603e8c100300fda363658e10b23James Zern add_proto qw/void vp9_highbd_iht8x8_64_add/, "const tran_low_t *input, uint16_t *dest, int stride, int tx_type, int bd"; 1027ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 1030a39d0a697ff3603e8c100300fda363658e10b23James Zern add_proto qw/void vp9_highbd_iht16x16_256_add/, "const tran_low_t *input, uint16_t *output, int pitch, int tx_type, int bd"; 1047ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian} 1052ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1062ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# 1072ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# Encoder functions below this point. 1082ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# 1092ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianif (vpx_config("CONFIG_VP9_ENCODER") eq "yes") { 1102ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1112ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# ENCODEMB INVOKE 1122ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1137ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian# 1147ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian# Denoiser 1157ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian# 1167ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianif (vpx_config("CONFIG_VP9_TEMPORAL_DENOISING") eq "yes") { 1177ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian add_proto qw/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"; 1180a39d0a697ff3603e8c100300fda363658e10b23James Zern specialize qw/vp9_denoiser_filter neon sse2/; 1197ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian} 1202ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 121df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/int64_t vp9_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz"; 122ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 123df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/int64_t vp9_block_error_fp/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, int block_size"; 124c927526be9a7b72fb5edb3f29c4e8ceabe0ec98aJohann 125df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/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"; 126df37111358d02836cb29bbcb9c6e4c95dff90a16Johannspecialize qw/vp9_quantize_fp neon sse2/, "$ssse3_x86_64"; 127c927526be9a7b72fb5edb3f29c4e8ceabe0ec98aJohann 128df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/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"; 129df37111358d02836cb29bbcb9c6e4c95dff90a16Johannspecialize qw/vp9_quantize_fp_32x32 neon/, "$ssse3_x86_64"; 130ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 131df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/void vp9_fdct8x8_quant/, "const int16_t *input, int stride, 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"; 132df37111358d02836cb29bbcb9c6e4c95dff90a16Johann 133df37111358d02836cb29bbcb9c6e4c95dff90a16Johannif (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 134df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_block_error avx2 sse2/; 135df37111358d02836cb29bbcb9c6e4c95dff90a16Johann 136df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_block_error_fp avx2 sse2/; 1372ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1380a39d0a697ff3603e8c100300fda363658e10b23James Zern specialize qw/vp9_fdct8x8_quant neon ssse3/; 139df37111358d02836cb29bbcb9c6e4c95dff90a16Johann 140df37111358d02836cb29bbcb9c6e4c95dff90a16Johann add_proto qw/int64_t vp9_highbd_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd"; 141df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_highbd_block_error sse2/; 1427ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian} else { 1437bc9febe8749e98a3812a0dc4380ceae75c29450Johann specialize qw/vp9_block_error avx2 msa sse2/; 1442ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 145df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_block_error_fp neon avx2 sse2/; 1462ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1477ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian specialize qw/vp9_fdct8x8_quant sse2 ssse3 neon/; 1482ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 1492ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1502ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# fdct functions 1512ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 152df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 1532ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 154df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 155ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 156df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 157ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 158df37111358d02836cb29bbcb9c6e4c95dff90a16Johannadd_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride"; 1592ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 160df37111358d02836cb29bbcb9c6e4c95dff90a16Johann# Note that there are more specializations appended when CONFIG_VP9_HIGHBITDEPTH 161df37111358d02836cb29bbcb9c6e4c95dff90a16Johann# is off. 162df37111358d02836cb29bbcb9c6e4c95dff90a16Johannspecialize qw/vp9_fht4x4 sse2/; 163df37111358d02836cb29bbcb9c6e4c95dff90a16Johannspecialize qw/vp9_fht8x8 sse2/; 164df37111358d02836cb29bbcb9c6e4c95dff90a16Johannspecialize qw/vp9_fht16x16 sse2/; 165df37111358d02836cb29bbcb9c6e4c95dff90a16Johannspecialize qw/vp9_fwht4x4 sse2/; 166df37111358d02836cb29bbcb9c6e4c95dff90a16Johannif (vpx_config("CONFIG_VP9_HIGHBITDEPTH") ne "yes") { 167df37111358d02836cb29bbcb9c6e4c95dff90a16Johann # Note that these specializations are appended to the above ones. 168df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_fht4x4 msa/; 169df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_fht8x8 msa/; 170df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_fht16x16 msa/; 171df37111358d02836cb29bbcb9c6e4c95dff90a16Johann specialize qw/vp9_fwht4x4 msa/; 1727ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian} 1732ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1742ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# 1752ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# Motion search 1762ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# 177ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianadd_proto qw/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"; 17868e1c830ade592be74773e249bf94e2bbfb50de7Johannspecialize qw/vp9_diamond_search_sad avx/; 1792ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 180df37111358d02836cb29bbcb9c6e4c95dff90a16Johannif (vpx_config("CONFIG_REALTIME_ONLY") ne "yes") { 1810a39d0a697ff3603e8c100300fda363658e10b23James Zernadd_proto qw/void vp9_temporal_filter_apply/, "const uint8_t *frame1, unsigned int stride, const uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, uint32_t *accumulator, uint16_t *count"; 1820a39d0a697ff3603e8c100300fda363658e10b23James Zernspecialize qw/vp9_temporal_filter_apply sse4_1/; 183df37111358d02836cb29bbcb9c6e4c95dff90a16Johann} 1847ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 1857ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianif (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 1867ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 1877ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # ENCODEMB INVOKE 1887ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 1890a39d0a697ff3603e8c100300fda363658e10b23James Zern add_proto qw/void vp9_highbd_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"; 1907ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 1910a39d0a697ff3603e8c100300fda363658e10b23James Zern add_proto qw/void vp9_highbd_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" ; 1927ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 1937ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian # fdct functions 1947ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian add_proto qw/void vp9_highbd_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 1957ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 1967ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian add_proto qw/void vp9_highbd_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 1977ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 1987ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian add_proto qw/void vp9_highbd_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 1997ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 2007ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian add_proto qw/void vp9_highbd_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride"; 2017ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 2020a39d0a697ff3603e8c100300fda363658e10b23James Zern add_proto qw/void vp9_highbd_temporal_filter_apply/, "const uint8_t *frame1, unsigned int stride, const uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, uint32_t *accumulator, uint16_t *count"; 2037ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 2047ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian} 2057ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian# End vp9_high encoder functions 2062ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 20768e1c830ade592be74773e249bf94e2bbfb50de7Johann# 20868e1c830ade592be74773e249bf94e2bbfb50de7Johann# frame based scale 20968e1c830ade592be74773e249bf94e2bbfb50de7Johann# 2100a39d0a697ff3603e8c100300fda363658e10b23James Zernadd_proto qw/void vp9_scale_and_extend_frame/, "const struct yv12_buffer_config *src, struct yv12_buffer_config *dst, INTERP_FILTER filter_type, int phase_scaler"; 211df37111358d02836cb29bbcb9c6e4c95dff90a16Johannspecialize qw/vp9_scale_and_extend_frame neon ssse3/; 21268e1c830ade592be74773e249bf94e2bbfb50de7Johann 2132ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 2142ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# end encoder functions 2152ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian1; 216