зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1178215 - Update libvpx. r=rillian
Update libvpx to e67d45d4ce92468ba193288b59093fef0a502662 * * * Bug 1178215 - Bump clobber for libvpx file renames. r=me --HG-- rename : media/libvpx/vp8/common/x86/variance_impl_mmx.asm => media/libvpx/vp8/common/x86/vp8_variance_impl_mmx.asm rename : media/libvpx/vp8/common/x86/variance_mmx.c => media/libvpx/vp8/common/x86/vp8_variance_mmx.c rename : media/libvpx/vp8/common/x86/variance_sse2.c => media/libvpx/vp8/common/x86/vp8_variance_sse2.c rename : media/libvpx/vp9/common/arm/neon/vp9_avg_neon.c => media/libvpx/vp9/common/arm/neon/vp9_convolve_avg_neon.c rename : media/libvpx/vp9/common/arm/neon/vp9_avg_neon_asm.asm => media/libvpx/vp9/common/arm/neon/vp9_convolve_avg_neon_asm.asm rename : media/libvpx/vp9/encoder/x86/vp9_dct32x32_avx2.c => media/libvpx/vp9/encoder/x86/vp9_dct32x32_avx2_impl.h rename : media/libvpx/vp9/encoder/x86/vp9_dct32x32_sse2.c => media/libvpx/vp9/encoder/x86/vp9_dct32x32_sse2_impl.h rename : media/libvpx/vp9/encoder/x86/vp9_dct_impl_sse2.c => media/libvpx/vp9/encoder/x86/vp9_dct_sse2_impl.h rename : media/libvpx/vp9/encoder/arm/neon/vp9_sad4d_neon.c => media/libvpx/vpx_dsp/arm/sad4d_neon.c rename : media/libvpx/vp8/common/arm/armv6/vp8_sad16x16_armv6.asm => media/libvpx/vpx_dsp/arm/sad_media.asm rename : media/libvpx/vp9/encoder/arm/neon/vp9_sad_neon.c => media/libvpx/vpx_dsp/arm/sad_neon.c rename : media/libvpx/vp8/common/arm/armv6/vp8_variance16x16_armv6.asm => media/libvpx/vpx_dsp/arm/variance_media.asm rename : media/libvpx/vp9/encoder/vp9_sad.c => media/libvpx/vpx_dsp/sad.c rename : media/libvpx/vp9/encoder/x86/vp9_highbd_sad4d_sse2.asm => media/libvpx/vpx_dsp/x86/highbd_sad4d_sse2.asm rename : media/libvpx/vp9/encoder/x86/vp9_highbd_sad_sse2.asm => media/libvpx/vpx_dsp/x86/highbd_sad_sse2.asm rename : media/libvpx/vp9/encoder/x86/vp9_highbd_variance_impl_sse2.asm => media/libvpx/vpx_dsp/x86/highbd_variance_impl_sse2.asm rename : media/libvpx/vp9/encoder/x86/vp9_sad4d_intrin_avx2.c => media/libvpx/vpx_dsp/x86/sad4d_avx2.c rename : media/libvpx/vp9/encoder/x86/vp9_sad4d_sse2.asm => media/libvpx/vpx_dsp/x86/sad4d_sse2.asm rename : media/libvpx/vp9/encoder/x86/vp9_sad_intrin_avx2.c => media/libvpx/vpx_dsp/x86/sad_avx2.c rename : media/libvpx/vp8/common/x86/sad_mmx.asm => media/libvpx/vpx_dsp/x86/sad_mmx.asm rename : media/libvpx/vp9/encoder/x86/vp9_sad_sse2.asm => media/libvpx/vpx_dsp/x86/sad_sse2.asm rename : media/libvpx/vp9/encoder/x86/vp9_sad_sse3.asm => media/libvpx/vpx_dsp/x86/sad_sse3.asm rename : media/libvpx/vp9/encoder/x86/vp9_sad_sse4.asm => media/libvpx/vpx_dsp/x86/sad_sse4.asm rename : media/libvpx/vp9/encoder/x86/vp9_sad_ssse3.asm => media/libvpx/vpx_dsp/x86/sad_ssse3.asm rename : media/libvpx/vp9/encoder/x86/vp9_variance_impl_intrin_avx2.c => media/libvpx/vpx_dsp/x86/variance_impl_avx2.c rename : media/libvpx/vp8/common/x86/variance_impl_mmx.asm => media/libvpx/vpx_dsp/x86/variance_impl_mmx.asm
This commit is contained in:
Родитель
c186adf8ce
Коммит
0741d70e20
2
CLOBBER
2
CLOBBER
|
@ -22,4 +22,4 @@
|
|||
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
|
||||
# don't change CLOBBER for WebIDL changes any more.
|
||||
|
||||
Bug 1075758 (updating ICU to 55) requires a clobber.
|
||||
Bug 1178215 requires clobber for libvpx file moves.
|
||||
|
|
|
@ -17,7 +17,7 @@ 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
|
||||
constitutes direct or contributory patent infringement, or inducement of
|
||||
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.
|
||||
|
|
|
@ -8,4 +8,4 @@ The libvpx git repository is:
|
|||
|
||||
https://chromium.googlesource.com/webm/libvpx
|
||||
|
||||
The git commit ID used was c74bf6d889992c3cabe017ec353ca85c323107cd
|
||||
The git commit ID used was e67d45d4ce92468ba193288b59093fef0a502662
|
||||
|
|
|
@ -14,9 +14,6 @@ files = {
|
|||
'vp8/common/arm/armv6/loopfilter_v6.asm',
|
||||
'vp8/common/arm/armv6/simpleloopfilter_v6.asm',
|
||||
'vp8/common/arm/armv6/sixtappredict8x4_v6.asm',
|
||||
'vp8/common/arm/armv6/vp8_sad16x16_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance16x16_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance8x8_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_h_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_hv_armv6.asm',
|
||||
'vp8/common/arm/armv6/vp8_variance_halfpixvar16x16_v_armv6.asm',
|
||||
|
@ -38,13 +35,10 @@ files = {
|
|||
'vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c',
|
||||
'vp8/common/arm/neon/mbloopfilter_neon.c',
|
||||
'vp8/common/arm/neon/reconintra_neon.c',
|
||||
'vp8/common/arm/neon/sad_neon.c',
|
||||
'vp8/common/arm/neon/shortidct4x4llm_neon.c',
|
||||
'vp8/common/arm/neon/sixtappredict_neon.c',
|
||||
'vp8/common/arm/neon/variance_neon.c',
|
||||
'vp8/common/arm/neon/vp8_subpixelvariance_neon.c',
|
||||
'vp8/common/arm/variance_arm.c',
|
||||
'vp8/encoder/arm/armv6/vp8_mse16x16_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/vp8_short_fdct4x4_armv6.asm',
|
||||
'vp8/encoder/arm/armv6/walsh_v6.asm',
|
||||
'vp8/encoder/arm/dct_arm.c',
|
||||
|
@ -52,11 +46,10 @@ files = {
|
|||
'vp8/encoder/arm/neon/fastquantizeb_neon.c',
|
||||
'vp8/encoder/arm/neon/shortfdct_neon.c',
|
||||
'vp8/encoder/arm/neon/subtract_neon.c',
|
||||
'vp8/encoder/arm/neon/vp8_mse16x16_neon.c',
|
||||
'vp8/encoder/arm/neon/vp8_shortwalsh4x4_neon.c',
|
||||
'vp9/common/arm/neon/vp9_avg_neon_asm.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve8_avg_neon_asm.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve8_neon_asm.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve_avg_neon_asm.asm',
|
||||
'vp9/common/arm/neon/vp9_convolve_neon.c',
|
||||
'vp9/common/arm/neon/vp9_copy_neon_asm.asm',
|
||||
'vp9/common/arm/neon/vp9_idct16x16_1_add_neon_asm.asm',
|
||||
|
@ -75,26 +68,30 @@ files = {
|
|||
'vp9/common/arm/neon/vp9_loopfilter_8_neon_asm.asm',
|
||||
'vp9/common/arm/neon/vp9_loopfilter_neon.c',
|
||||
'vp9/common/arm/neon/vp9_mb_lpf_neon.asm',
|
||||
'vp9/common/arm/neon/vp9_reconintra_neon.c',
|
||||
'vp9/common/arm/neon/vp9_reconintra_neon_asm.asm',
|
||||
'vp9/common/arm/neon/vp9_save_reg_neon.asm',
|
||||
'vp9/encoder/arm/neon/vp9_dct_neon.c',
|
||||
'vp9/encoder/arm/neon/vp9_quantize_neon.c',
|
||||
'vp9/encoder/arm/neon/vp9_sad4d_neon.c',
|
||||
'vp9/encoder/arm/neon/vp9_sad_neon.c',
|
||||
'vp9/encoder/arm/neon/vp9_subtract_neon.c',
|
||||
'vp9/encoder/arm/neon/vp9_variance_neon.c',
|
||||
'vp9/encoder/arm/neon/vp9enc_avg_neon.c',
|
||||
'vpx_dsp/arm/sad4d_neon.c',
|
||||
'vpx_dsp/arm/sad_media.asm',
|
||||
'vpx_dsp/arm/sad_neon.c',
|
||||
'vpx_dsp/arm/variance_media.asm',
|
||||
'vpx_dsp/arm/variance_neon.c',
|
||||
'vpx_ports/arm_cpudetect.c'],
|
||||
'AVX2': ['vp9/common/x86/vp9_loopfilter_intrin_avx2.c',
|
||||
'vp9/common/x86/vp9_subpixel_8t_intrin_avx2.c',
|
||||
'vp9/encoder/x86/vp9_dct32x32_avx2.c',
|
||||
'vp9/encoder/x86/vp9_dct_avx2.c',
|
||||
'vp9/encoder/x86/vp9_error_intrin_avx2.c',
|
||||
'vp9/encoder/x86/vp9_sad4d_intrin_avx2.c',
|
||||
'vp9/encoder/x86/vp9_sad_intrin_avx2.c',
|
||||
'vp9/encoder/x86/vp9_subpel_variance_impl_intrin_avx2.c',
|
||||
'vp9/encoder/x86/vp9_variance_avx2.c',
|
||||
'vp9/encoder/x86/vp9_variance_impl_intrin_avx2.c'],
|
||||
'vpx_dsp/x86/sad4d_avx2.c',
|
||||
'vpx_dsp/x86/sad_avx2.c',
|
||||
'vpx_dsp/x86/variance_avx2.c',
|
||||
'vpx_dsp/x86/variance_impl_avx2.c'],
|
||||
'ERROR_CONCEALMENT': ['vp8/decoder/error_concealment.c'],
|
||||
'EXPORTS': ['vpx/vp8.h',
|
||||
'vpx/vp8cx.h',
|
||||
|
@ -115,6 +112,7 @@ files = {
|
|||
'vpx_scale/yv12config.h'],
|
||||
'SOURCES': ['vp8/common/alloccommon.c',
|
||||
'vp8/common/blockd.c',
|
||||
'vp8/common/copy_c.c',
|
||||
'vp8/common/debugmodes.c',
|
||||
'vp8/common/dequantize.c',
|
||||
'vp8/common/entropy.c',
|
||||
|
@ -135,7 +133,6 @@ files = {
|
|||
'vp8/common/reconintra.c',
|
||||
'vp8/common/reconintra4x4.c',
|
||||
'vp8/common/rtcd.c',
|
||||
'vp8/common/sad_c.c',
|
||||
'vp8/common/setupintrarecon.c',
|
||||
'vp8/common/swapyv12buffer.c',
|
||||
'vp8/common/treecoder.c',
|
||||
|
@ -230,7 +227,6 @@ files = {
|
|||
'vp9/encoder/vp9_rd.c',
|
||||
'vp9/encoder/vp9_rdopt.c',
|
||||
'vp9/encoder/vp9_resize.c',
|
||||
'vp9/encoder/vp9_sad.c',
|
||||
'vp9/encoder/vp9_segmentation.c',
|
||||
'vp9/encoder/vp9_skin_detection.c',
|
||||
'vp9/encoder/vp9_speed_features.c',
|
||||
|
@ -249,6 +245,9 @@ files = {
|
|||
'vpx/src/vpx_encoder.c',
|
||||
'vpx/src/vpx_image.c',
|
||||
'vpx/src/vpx_psnr.c',
|
||||
'vpx_dsp/sad.c',
|
||||
'vpx_dsp/variance.c',
|
||||
'vpx_dsp/vpx_dsp_rtcd.c',
|
||||
'vpx_mem/vpx_mem.c',
|
||||
'vpx_scale/generic/gen_scalers.c',
|
||||
'vpx_scale/generic/vpx_scale.c',
|
||||
|
@ -266,7 +265,9 @@ files = {
|
|||
'vp9/encoder/x86/vp9_dct_ssse3_x86_64.asm',
|
||||
'vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm',
|
||||
'vp9/encoder/x86/vp9_ssim_opt_x86_64.asm'],
|
||||
'X86_ASM': ['vp8/common/x86/dequantize_mmx.asm',
|
||||
'X86_ASM': ['vp8/common/x86/copy_sse2.asm',
|
||||
'vp8/common/x86/copy_sse3.asm',
|
||||
'vp8/common/x86/dequantize_mmx.asm',
|
||||
'vp8/common/x86/filter_x86.c',
|
||||
'vp8/common/x86/idct_blk_mmx.c',
|
||||
'vp8/common/x86/idct_blk_sse2.c',
|
||||
|
@ -283,21 +284,16 @@ files = {
|
|||
'vp8/common/x86/recon_mmx.asm',
|
||||
'vp8/common/x86/recon_sse2.asm',
|
||||
'vp8/common/x86/recon_wrapper_sse2.c',
|
||||
'vp8/common/x86/sad_mmx.asm',
|
||||
'vp8/common/x86/sad_sse2.asm',
|
||||
'vp8/common/x86/sad_sse3.asm',
|
||||
'vp8/common/x86/sad_sse4.asm',
|
||||
'vp8/common/x86/sad_ssse3.asm',
|
||||
'vp8/common/x86/subpixel_mmx.asm',
|
||||
'vp8/common/x86/subpixel_sse2.asm',
|
||||
'vp8/common/x86/subpixel_ssse3.asm',
|
||||
'vp8/common/x86/variance_impl_mmx.asm',
|
||||
'vp8/common/x86/variance_impl_sse2.asm',
|
||||
'vp8/common/x86/variance_impl_ssse3.asm',
|
||||
'vp8/common/x86/variance_mmx.c',
|
||||
'vp8/common/x86/variance_sse2.c',
|
||||
'vp8/common/x86/variance_ssse3.c',
|
||||
'vp8/common/x86/vp8_asm_stubs.c',
|
||||
'vp8/common/x86/vp8_variance_impl_mmx.asm',
|
||||
'vp8/common/x86/vp8_variance_mmx.c',
|
||||
'vp8/common/x86/vp8_variance_sse2.c',
|
||||
'vp8/encoder/x86/dct_mmx.asm',
|
||||
'vp8/encoder/x86/dct_sse2.asm',
|
||||
'vp8/encoder/x86/denoising_sse2.c',
|
||||
|
@ -315,7 +311,6 @@ files = {
|
|||
'vp9/common/x86/vp9_asm_stubs.c',
|
||||
'vp9/common/x86/vp9_copy_sse2.asm',
|
||||
'vp9/common/x86/vp9_idct_intrin_sse2.c',
|
||||
'vp9/common/x86/vp9_idct_intrin_ssse3.c',
|
||||
'vp9/common/x86/vp9_intrapred_sse2.asm',
|
||||
'vp9/common/x86/vp9_intrapred_ssse3.asm',
|
||||
'vp9/common/x86/vp9_loopfilter_intrin_sse2.c',
|
||||
|
@ -326,21 +321,23 @@ files = {
|
|||
'vp9/common/x86/vp9_subpixel_bilinear_sse2.asm',
|
||||
'vp9/common/x86/vp9_subpixel_bilinear_ssse3.asm',
|
||||
'vp9/encoder/x86/vp9_avg_intrin_sse2.c',
|
||||
'vp9/encoder/x86/vp9_dct32x32_sse2.c',
|
||||
'vp9/encoder/x86/vp9_dct_impl_sse2.c',
|
||||
'vp9/encoder/x86/vp9_dct_mmx.asm',
|
||||
'vp9/encoder/x86/vp9_dct_sse2.c',
|
||||
'vp9/encoder/x86/vp9_dct_ssse3.c',
|
||||
'vp9/encoder/x86/vp9_error_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_quantize_sse2.c',
|
||||
'vp9/encoder/x86/vp9_sad4d_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse3.asm',
|
||||
'vp9/encoder/x86/vp9_sad_sse4.asm',
|
||||
'vp9/encoder/x86/vp9_sad_ssse3.asm',
|
||||
'vp9/encoder/x86/vp9_subpel_variance.asm',
|
||||
'vp9/encoder/x86/vp9_subtract_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_temporal_filter_apply_sse2.asm',
|
||||
'vp9/encoder/x86/vp9_variance_sse2.c',
|
||||
'vpx_dsp/x86/sad4d_sse2.asm',
|
||||
'vpx_dsp/x86/sad_mmx.asm',
|
||||
'vpx_dsp/x86/sad_sse2.asm',
|
||||
'vpx_dsp/x86/sad_sse3.asm',
|
||||
'vpx_dsp/x86/sad_sse4.asm',
|
||||
'vpx_dsp/x86/sad_ssse3.asm',
|
||||
'vpx_dsp/x86/variance_impl_mmx.asm',
|
||||
'vpx_dsp/x86/variance_mmx.c',
|
||||
'vpx_dsp/x86/variance_sse2.c',
|
||||
'vpx_ports/emms.asm']
|
||||
}
|
||||
|
|
|
@ -36,7 +36,9 @@
|
|||
|
||||
%include "vpx_config.asm"
|
||||
|
||||
%ifndef program_name
|
||||
%define program_name vp9
|
||||
%endif
|
||||
|
||||
|
||||
%define UNIX64 0
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
|
||||
#include "vpx_config.h"
|
||||
#include "alloccommon.h"
|
||||
#include "blockd.h"
|
||||
#include "vpx_mem/vpx_mem.h"
|
||||
#include "onyxc_int.h"
|
||||
|
@ -103,9 +104,9 @@ int vp8_alloc_frame_buffers(VP8_COMMON *oci, int width, int height)
|
|||
goto allocation_fail;
|
||||
|
||||
oci->post_proc_buffer_int_used = 0;
|
||||
vpx_memset(&oci->postproc_state, 0, sizeof(oci->postproc_state));
|
||||
vpx_memset(oci->post_proc_buffer.buffer_alloc, 128,
|
||||
oci->post_proc_buffer.frame_size);
|
||||
memset(&oci->postproc_state, 0, sizeof(oci->postproc_state));
|
||||
memset(oci->post_proc_buffer.buffer_alloc, 128,
|
||||
oci->post_proc_buffer.frame_size);
|
||||
|
||||
/* Allocate buffer to store post-processing filter coefficients.
|
||||
*
|
||||
|
@ -176,7 +177,7 @@ void vp8_create_common(VP8_COMMON *oci)
|
|||
oci->clamp_type = RECON_CLAMP_REQUIRED;
|
||||
|
||||
/* Initialize reference frame sign bias structure to defaults */
|
||||
vpx_memset(oci->ref_frame_sign_bias, 0, sizeof(oci->ref_frame_sign_bias));
|
||||
memset(oci->ref_frame_sign_bias, 0, sizeof(oci->ref_frame_sign_bias));
|
||||
|
||||
/* Default disable buffer to buffer copying */
|
||||
oci->copy_buffer_to_gf = 0;
|
||||
|
|
|
@ -165,7 +165,7 @@ vp8_dequant_idct_loop2_v6
|
|||
str r1, [r2], r12 ; store output to dst
|
||||
bne vp8_dequant_idct_loop2_v6
|
||||
|
||||
; vpx_memset
|
||||
; memset
|
||||
sub r0, r0, #32
|
||||
add sp, sp, #4
|
||||
|
||||
|
|
|
@ -1,154 +0,0 @@
|
|||
;
|
||||
; 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.
|
||||
;
|
||||
|
||||
|
||||
EXPORT |vp8_variance16x16_armv6|
|
||||
|
||||
ARM
|
||||
REQUIRE8
|
||||
PRESERVE8
|
||||
|
||||
AREA ||.text||, CODE, READONLY, ALIGN=2
|
||||
|
||||
; r0 unsigned char *src_ptr
|
||||
; r1 int source_stride
|
||||
; r2 unsigned char *ref_ptr
|
||||
; r3 int recon_stride
|
||||
; stack unsigned int *sse
|
||||
|vp8_variance16x16_armv6| PROC
|
||||
|
||||
stmfd sp!, {r4-r12, lr}
|
||||
|
||||
pld [r0, r1, lsl #0]
|
||||
pld [r2, r3, lsl #0]
|
||||
|
||||
mov r8, #0 ; initialize sum = 0
|
||||
mov r11, #0 ; initialize sse = 0
|
||||
mov r12, #16 ; set loop counter to 16 (=block height)
|
||||
|
||||
loop
|
||||
; 1st 4 pixels
|
||||
ldr r4, [r0, #0] ; load 4 src pixels
|
||||
ldr r5, [r2, #0] ; load 4 ref pixels
|
||||
|
||||
mov lr, #0 ; constant zero
|
||||
|
||||
usub8 r6, r4, r5 ; calculate difference
|
||||
pld [r0, r1, lsl #1]
|
||||
sel r7, r6, lr ; select bytes with positive difference
|
||||
usub8 r9, r5, r4 ; calculate difference with reversed operands
|
||||
pld [r2, r3, lsl #1]
|
||||
sel r6, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r4, r7, lr ; calculate sum of positive differences
|
||||
usad8 r5, r6, lr ; calculate sum of negative differences
|
||||
orr r6, r6, r7 ; differences of all 4 pixels
|
||||
; calculate total sum
|
||||
adds r8, r8, r4 ; add positive differences to sum
|
||||
subs r8, r8, r5 ; subtract negative differences from sum
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r5, r6 ; byte (two pixels) to halfwords
|
||||
uxtb16 r10, r6, ror #8 ; another two pixels to halfwords
|
||||
smlad r11, r5, r5, r11 ; dual signed multiply, add and accumulate (1)
|
||||
|
||||
; 2nd 4 pixels
|
||||
ldr r4, [r0, #4] ; load 4 src pixels
|
||||
ldr r5, [r2, #4] ; load 4 ref pixels
|
||||
smlad r11, r10, r10, r11 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
usub8 r6, r4, r5 ; calculate difference
|
||||
sel r7, r6, lr ; select bytes with positive difference
|
||||
usub8 r9, r5, r4 ; calculate difference with reversed operands
|
||||
sel r6, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r4, r7, lr ; calculate sum of positive differences
|
||||
usad8 r5, r6, lr ; calculate sum of negative differences
|
||||
orr r6, r6, r7 ; differences of all 4 pixels
|
||||
|
||||
; calculate total sum
|
||||
add r8, r8, r4 ; add positive differences to sum
|
||||
sub r8, r8, r5 ; subtract negative differences from sum
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r5, r6 ; byte (two pixels) to halfwords
|
||||
uxtb16 r10, r6, ror #8 ; another two pixels to halfwords
|
||||
smlad r11, r5, r5, r11 ; dual signed multiply, add and accumulate (1)
|
||||
|
||||
; 3rd 4 pixels
|
||||
ldr r4, [r0, #8] ; load 4 src pixels
|
||||
ldr r5, [r2, #8] ; load 4 ref pixels
|
||||
smlad r11, r10, r10, r11 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
usub8 r6, r4, r5 ; calculate difference
|
||||
sel r7, r6, lr ; select bytes with positive difference
|
||||
usub8 r9, r5, r4 ; calculate difference with reversed operands
|
||||
sel r6, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r4, r7, lr ; calculate sum of positive differences
|
||||
usad8 r5, r6, lr ; calculate sum of negative differences
|
||||
orr r6, r6, r7 ; differences of all 4 pixels
|
||||
|
||||
; calculate total sum
|
||||
add r8, r8, r4 ; add positive differences to sum
|
||||
sub r8, r8, r5 ; subtract negative differences from sum
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r5, r6 ; byte (two pixels) to halfwords
|
||||
uxtb16 r10, r6, ror #8 ; another two pixels to halfwords
|
||||
smlad r11, r5, r5, r11 ; dual signed multiply, add and accumulate (1)
|
||||
|
||||
; 4th 4 pixels
|
||||
ldr r4, [r0, #12] ; load 4 src pixels
|
||||
ldr r5, [r2, #12] ; load 4 ref pixels
|
||||
smlad r11, r10, r10, r11 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
usub8 r6, r4, r5 ; calculate difference
|
||||
add r0, r0, r1 ; set src_ptr to next row
|
||||
sel r7, r6, lr ; select bytes with positive difference
|
||||
usub8 r9, r5, r4 ; calculate difference with reversed operands
|
||||
add r2, r2, r3 ; set dst_ptr to next row
|
||||
sel r6, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r4, r7, lr ; calculate sum of positive differences
|
||||
usad8 r5, r6, lr ; calculate sum of negative differences
|
||||
orr r6, r6, r7 ; differences of all 4 pixels
|
||||
|
||||
; calculate total sum
|
||||
add r8, r8, r4 ; add positive differences to sum
|
||||
sub r8, r8, r5 ; subtract negative differences from sum
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r5, r6 ; byte (two pixels) to halfwords
|
||||
uxtb16 r10, r6, ror #8 ; another two pixels to halfwords
|
||||
smlad r11, r5, r5, r11 ; dual signed multiply, add and accumulate (1)
|
||||
smlad r11, r10, r10, r11 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
|
||||
subs r12, r12, #1
|
||||
|
||||
bne loop
|
||||
|
||||
; return stuff
|
||||
ldr r6, [sp, #40] ; get address of sse
|
||||
mul r0, r8, r8 ; sum * sum
|
||||
str r11, [r6] ; store sse
|
||||
sub r0, r11, r0, lsr #8 ; return (sse - ((sum * sum) >> 8))
|
||||
|
||||
ldmfd sp!, {r4-r12, pc}
|
||||
|
||||
ENDP
|
||||
|
||||
END
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
;
|
||||
; 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.
|
||||
;
|
||||
|
||||
|
||||
EXPORT |vp8_variance8x8_armv6|
|
||||
|
||||
ARM
|
||||
|
||||
AREA ||.text||, CODE, READONLY, ALIGN=2
|
||||
|
||||
; r0 unsigned char *src_ptr
|
||||
; r1 int source_stride
|
||||
; r2 unsigned char *ref_ptr
|
||||
; r3 int recon_stride
|
||||
; stack unsigned int *sse
|
||||
|vp8_variance8x8_armv6| PROC
|
||||
|
||||
push {r4-r10, lr}
|
||||
|
||||
pld [r0, r1, lsl #0]
|
||||
pld [r2, r3, lsl #0]
|
||||
|
||||
mov r12, #8 ; set loop counter to 8 (=block height)
|
||||
mov r4, #0 ; initialize sum = 0
|
||||
mov r5, #0 ; initialize sse = 0
|
||||
|
||||
loop
|
||||
; 1st 4 pixels
|
||||
ldr r6, [r0, #0x0] ; load 4 src pixels
|
||||
ldr r7, [r2, #0x0] ; load 4 ref pixels
|
||||
|
||||
mov lr, #0 ; constant zero
|
||||
|
||||
usub8 r8, r6, r7 ; calculate difference
|
||||
pld [r0, r1, lsl #1]
|
||||
sel r10, r8, lr ; select bytes with positive difference
|
||||
usub8 r9, r7, r6 ; calculate difference with reversed operands
|
||||
pld [r2, r3, lsl #1]
|
||||
sel r8, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r6, r10, lr ; calculate sum of positive differences
|
||||
usad8 r7, r8, lr ; calculate sum of negative differences
|
||||
orr r8, r8, r10 ; differences of all 4 pixels
|
||||
; calculate total sum
|
||||
add r4, r4, r6 ; add positive differences to sum
|
||||
sub r4, r4, r7 ; subtract negative differences from sum
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r7, r8 ; byte (two pixels) to halfwords
|
||||
uxtb16 r10, r8, ror #8 ; another two pixels to halfwords
|
||||
smlad r5, r7, r7, r5 ; dual signed multiply, add and accumulate (1)
|
||||
|
||||
; 2nd 4 pixels
|
||||
ldr r6, [r0, #0x4] ; load 4 src pixels
|
||||
ldr r7, [r2, #0x4] ; load 4 ref pixels
|
||||
smlad r5, r10, r10, r5 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
usub8 r8, r6, r7 ; calculate difference
|
||||
add r0, r0, r1 ; set src_ptr to next row
|
||||
sel r10, r8, lr ; select bytes with positive difference
|
||||
usub8 r9, r7, r6 ; calculate difference with reversed operands
|
||||
add r2, r2, r3 ; set dst_ptr to next row
|
||||
sel r8, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r6, r10, lr ; calculate sum of positive differences
|
||||
usad8 r7, r8, lr ; calculate sum of negative differences
|
||||
orr r8, r8, r10 ; differences of all 4 pixels
|
||||
|
||||
; calculate total sum
|
||||
add r4, r4, r6 ; add positive differences to sum
|
||||
sub r4, r4, r7 ; subtract negative differences from sum
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r7, r8 ; byte (two pixels) to halfwords
|
||||
uxtb16 r10, r8, ror #8 ; another two pixels to halfwords
|
||||
smlad r5, r7, r7, r5 ; dual signed multiply, add and accumulate (1)
|
||||
subs r12, r12, #1 ; next row
|
||||
smlad r5, r10, r10, r5 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
bne loop
|
||||
|
||||
; return stuff
|
||||
ldr r8, [sp, #32] ; get address of sse
|
||||
mul r1, r4, r4 ; sum * sum
|
||||
str r5, [r8] ; store sse
|
||||
sub r0, r5, r1, ASR #6 ; return (sse - ((sum * sum) >> 6))
|
||||
|
||||
pop {r4-r10, pc}
|
||||
|
||||
ENDP
|
||||
|
||||
END
|
|
@ -99,7 +99,7 @@ void vp8_sixtap_predict4x4_armv6
|
|||
{
|
||||
const short *HFilter;
|
||||
const short *VFilter;
|
||||
DECLARE_ALIGNED_ARRAY(4, short, FData, 12*4); /* Temp data buffer used in filtering */
|
||||
DECLARE_ALIGNED(4, short, FData[12*4]); /* Temp data buffer used in filtering */
|
||||
|
||||
|
||||
HFilter = vp8_sub_pel_filters[xoffset]; /* 6 tap */
|
||||
|
@ -147,7 +147,7 @@ void vp8_sixtap_predict8x8_armv6
|
|||
{
|
||||
const short *HFilter;
|
||||
const short *VFilter;
|
||||
DECLARE_ALIGNED_ARRAY(4, short, FData, 16*8); /* Temp data buffer used in filtering */
|
||||
DECLARE_ALIGNED(4, short, FData[16*8]); /* Temp data buffer used in filtering */
|
||||
|
||||
HFilter = vp8_sub_pel_filters[xoffset]; /* 6 tap */
|
||||
VFilter = vp8_sub_pel_filters[yoffset]; /* 6 tap */
|
||||
|
@ -189,7 +189,7 @@ void vp8_sixtap_predict16x16_armv6
|
|||
{
|
||||
const short *HFilter;
|
||||
const short *VFilter;
|
||||
DECLARE_ALIGNED_ARRAY(4, short, FData, 24*16); /* Temp data buffer used in filtering */
|
||||
DECLARE_ALIGNED(4, short, FData[24*16]); /* Temp data buffer used in filtering */
|
||||
|
||||
HFilter = vp8_sub_pel_filters[xoffset]; /* 6 tap */
|
||||
VFilter = vp8_sub_pel_filters[yoffset]; /* 6 tap */
|
||||
|
|
|
@ -1,184 +0,0 @@
|
|||
/*
|
||||
* 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 <arm_neon.h>
|
||||
|
||||
unsigned int vp8_sad8x8_neon(
|
||||
unsigned char *src_ptr,
|
||||
int src_stride,
|
||||
unsigned char *ref_ptr,
|
||||
int ref_stride) {
|
||||
uint8x8_t d0, d8;
|
||||
uint16x8_t q12;
|
||||
uint32x4_t q1;
|
||||
uint64x2_t q3;
|
||||
uint32x2_t d5;
|
||||
int i;
|
||||
|
||||
d0 = vld1_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
d8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabdl_u8(d0, d8);
|
||||
|
||||
for (i = 0; i < 7; i++) {
|
||||
d0 = vld1_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
d8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabal_u8(q12, d0, d8);
|
||||
}
|
||||
|
||||
q1 = vpaddlq_u16(q12);
|
||||
q3 = vpaddlq_u32(q1);
|
||||
d5 = vadd_u32(vreinterpret_u32_u64(vget_low_u64(q3)),
|
||||
vreinterpret_u32_u64(vget_high_u64(q3)));
|
||||
|
||||
return vget_lane_u32(d5, 0);
|
||||
}
|
||||
|
||||
unsigned int vp8_sad8x16_neon(
|
||||
unsigned char *src_ptr,
|
||||
int src_stride,
|
||||
unsigned char *ref_ptr,
|
||||
int ref_stride) {
|
||||
uint8x8_t d0, d8;
|
||||
uint16x8_t q12;
|
||||
uint32x4_t q1;
|
||||
uint64x2_t q3;
|
||||
uint32x2_t d5;
|
||||
int i;
|
||||
|
||||
d0 = vld1_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
d8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabdl_u8(d0, d8);
|
||||
|
||||
for (i = 0; i < 15; i++) {
|
||||
d0 = vld1_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
d8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabal_u8(q12, d0, d8);
|
||||
}
|
||||
|
||||
q1 = vpaddlq_u16(q12);
|
||||
q3 = vpaddlq_u32(q1);
|
||||
d5 = vadd_u32(vreinterpret_u32_u64(vget_low_u64(q3)),
|
||||
vreinterpret_u32_u64(vget_high_u64(q3)));
|
||||
|
||||
return vget_lane_u32(d5, 0);
|
||||
}
|
||||
|
||||
unsigned int vp8_sad4x4_neon(
|
||||
unsigned char *src_ptr,
|
||||
int src_stride,
|
||||
unsigned char *ref_ptr,
|
||||
int ref_stride) {
|
||||
uint8x8_t d0, d8;
|
||||
uint16x8_t q12;
|
||||
uint32x2_t d1;
|
||||
uint64x1_t d3;
|
||||
int i;
|
||||
|
||||
d0 = vld1_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
d8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabdl_u8(d0, d8);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
d0 = vld1_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
d8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabal_u8(q12, d0, d8);
|
||||
}
|
||||
|
||||
d1 = vpaddl_u16(vget_low_u16(q12));
|
||||
d3 = vpaddl_u32(d1);
|
||||
|
||||
return vget_lane_u32(vreinterpret_u32_u64(d3), 0);
|
||||
}
|
||||
|
||||
unsigned int vp8_sad16x16_neon(
|
||||
unsigned char *src_ptr,
|
||||
int src_stride,
|
||||
unsigned char *ref_ptr,
|
||||
int ref_stride) {
|
||||
uint8x16_t q0, q4;
|
||||
uint16x8_t q12, q13;
|
||||
uint32x4_t q1;
|
||||
uint64x2_t q3;
|
||||
uint32x2_t d5;
|
||||
int i;
|
||||
|
||||
q0 = vld1q_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
q4 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabdl_u8(vget_low_u8(q0), vget_low_u8(q4));
|
||||
q13 = vabdl_u8(vget_high_u8(q0), vget_high_u8(q4));
|
||||
|
||||
for (i = 0; i < 15; i++) {
|
||||
q0 = vld1q_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
q4 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabal_u8(q12, vget_low_u8(q0), vget_low_u8(q4));
|
||||
q13 = vabal_u8(q13, vget_high_u8(q0), vget_high_u8(q4));
|
||||
}
|
||||
|
||||
q12 = vaddq_u16(q12, q13);
|
||||
q1 = vpaddlq_u16(q12);
|
||||
q3 = vpaddlq_u32(q1);
|
||||
d5 = vadd_u32(vreinterpret_u32_u64(vget_low_u64(q3)),
|
||||
vreinterpret_u32_u64(vget_high_u64(q3)));
|
||||
|
||||
return vget_lane_u32(d5, 0);
|
||||
}
|
||||
|
||||
unsigned int vp8_sad16x8_neon(
|
||||
unsigned char *src_ptr,
|
||||
int src_stride,
|
||||
unsigned char *ref_ptr,
|
||||
int ref_stride) {
|
||||
uint8x16_t q0, q4;
|
||||
uint16x8_t q12, q13;
|
||||
uint32x4_t q1;
|
||||
uint64x2_t q3;
|
||||
uint32x2_t d5;
|
||||
int i;
|
||||
|
||||
q0 = vld1q_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
q4 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabdl_u8(vget_low_u8(q0), vget_low_u8(q4));
|
||||
q13 = vabdl_u8(vget_high_u8(q0), vget_high_u8(q4));
|
||||
|
||||
for (i = 0; i < 7; i++) {
|
||||
q0 = vld1q_u8(src_ptr);
|
||||
src_ptr += src_stride;
|
||||
q4 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += ref_stride;
|
||||
q12 = vabal_u8(q12, vget_low_u8(q0), vget_low_u8(q4));
|
||||
q13 = vabal_u8(q13, vget_high_u8(q0), vget_high_u8(q4));
|
||||
}
|
||||
|
||||
q12 = vaddq_u16(q12, q13);
|
||||
q1 = vpaddlq_u16(q12);
|
||||
q3 = vpaddlq_u32(q1);
|
||||
d5 = vadd_u32(vreinterpret_u32_u64(vget_low_u64(q3)),
|
||||
vreinterpret_u32_u64(vget_high_u64(q3)));
|
||||
|
||||
return vget_lane_u32(d5, 0);
|
||||
}
|
|
@ -1,320 +0,0 @@
|
|||
/*
|
||||
* 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 <arm_neon.h>
|
||||
#include "vpx_ports/mem.h"
|
||||
|
||||
unsigned int vp8_variance16x16_neon(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse) {
|
||||
int i;
|
||||
int16x4_t d22s16, d23s16, d24s16, d25s16, d26s16, d27s16, d28s16, d29s16;
|
||||
uint32x2_t d0u32, d10u32;
|
||||
int64x1_t d0s64, d1s64;
|
||||
uint8x16_t q0u8, q1u8, q2u8, q3u8;
|
||||
uint16x8_t q11u16, q12u16, q13u16, q14u16;
|
||||
int32x4_t q8s32, q9s32, q10s32;
|
||||
int64x2_t q0s64, q1s64, q5s64;
|
||||
|
||||
q8s32 = vdupq_n_s32(0);
|
||||
q9s32 = vdupq_n_s32(0);
|
||||
q10s32 = vdupq_n_s32(0);
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
q0u8 = vld1q_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
q1u8 = vld1q_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
__builtin_prefetch(src_ptr);
|
||||
|
||||
q2u8 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
q3u8 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
__builtin_prefetch(ref_ptr);
|
||||
|
||||
q11u16 = vsubl_u8(vget_low_u8(q0u8), vget_low_u8(q2u8));
|
||||
q12u16 = vsubl_u8(vget_high_u8(q0u8), vget_high_u8(q2u8));
|
||||
q13u16 = vsubl_u8(vget_low_u8(q1u8), vget_low_u8(q3u8));
|
||||
q14u16 = vsubl_u8(vget_high_u8(q1u8), vget_high_u8(q3u8));
|
||||
|
||||
d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
|
||||
d23s16 = vreinterpret_s16_u16(vget_high_u16(q11u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q11u16));
|
||||
q9s32 = vmlal_s16(q9s32, d22s16, d22s16);
|
||||
q10s32 = vmlal_s16(q10s32, d23s16, d23s16);
|
||||
|
||||
d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
|
||||
d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q12u16));
|
||||
q9s32 = vmlal_s16(q9s32, d24s16, d24s16);
|
||||
q10s32 = vmlal_s16(q10s32, d25s16, d25s16);
|
||||
|
||||
d26s16 = vreinterpret_s16_u16(vget_low_u16(q13u16));
|
||||
d27s16 = vreinterpret_s16_u16(vget_high_u16(q13u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q13u16));
|
||||
q9s32 = vmlal_s16(q9s32, d26s16, d26s16);
|
||||
q10s32 = vmlal_s16(q10s32, d27s16, d27s16);
|
||||
|
||||
d28s16 = vreinterpret_s16_u16(vget_low_u16(q14u16));
|
||||
d29s16 = vreinterpret_s16_u16(vget_high_u16(q14u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q14u16));
|
||||
q9s32 = vmlal_s16(q9s32, d28s16, d28s16);
|
||||
q10s32 = vmlal_s16(q10s32, d29s16, d29s16);
|
||||
}
|
||||
|
||||
q10s32 = vaddq_s32(q10s32, q9s32);
|
||||
q0s64 = vpaddlq_s32(q8s32);
|
||||
q1s64 = vpaddlq_s32(q10s32);
|
||||
|
||||
d0s64 = vadd_s64(vget_low_s64(q0s64), vget_high_s64(q0s64));
|
||||
d1s64 = vadd_s64(vget_low_s64(q1s64), vget_high_s64(q1s64));
|
||||
|
||||
q5s64 = vmull_s32(vreinterpret_s32_s64(d0s64),
|
||||
vreinterpret_s32_s64(d0s64));
|
||||
vst1_lane_u32((uint32_t *)sse, vreinterpret_u32_s64(d1s64), 0);
|
||||
|
||||
d10u32 = vshr_n_u32(vreinterpret_u32_s64(vget_low_s64(q5s64)), 8);
|
||||
d0u32 = vsub_u32(vreinterpret_u32_s64(d1s64), d10u32);
|
||||
|
||||
return vget_lane_u32(d0u32, 0);
|
||||
}
|
||||
|
||||
unsigned int vp8_variance16x8_neon(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse) {
|
||||
int i;
|
||||
int16x4_t d22s16, d23s16, d24s16, d25s16, d26s16, d27s16, d28s16, d29s16;
|
||||
uint32x2_t d0u32, d10u32;
|
||||
int64x1_t d0s64, d1s64;
|
||||
uint8x16_t q0u8, q1u8, q2u8, q3u8;
|
||||
uint16x8_t q11u16, q12u16, q13u16, q14u16;
|
||||
int32x4_t q8s32, q9s32, q10s32;
|
||||
int64x2_t q0s64, q1s64, q5s64;
|
||||
|
||||
q8s32 = vdupq_n_s32(0);
|
||||
q9s32 = vdupq_n_s32(0);
|
||||
q10s32 = vdupq_n_s32(0);
|
||||
|
||||
for (i = 0; i < 4; i++) { // variance16x8_neon_loop
|
||||
q0u8 = vld1q_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
q1u8 = vld1q_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
__builtin_prefetch(src_ptr);
|
||||
|
||||
q2u8 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
q3u8 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
__builtin_prefetch(ref_ptr);
|
||||
|
||||
q11u16 = vsubl_u8(vget_low_u8(q0u8), vget_low_u8(q2u8));
|
||||
q12u16 = vsubl_u8(vget_high_u8(q0u8), vget_high_u8(q2u8));
|
||||
q13u16 = vsubl_u8(vget_low_u8(q1u8), vget_low_u8(q3u8));
|
||||
q14u16 = vsubl_u8(vget_high_u8(q1u8), vget_high_u8(q3u8));
|
||||
|
||||
d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
|
||||
d23s16 = vreinterpret_s16_u16(vget_high_u16(q11u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q11u16));
|
||||
q9s32 = vmlal_s16(q9s32, d22s16, d22s16);
|
||||
q10s32 = vmlal_s16(q10s32, d23s16, d23s16);
|
||||
|
||||
d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
|
||||
d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q12u16));
|
||||
q9s32 = vmlal_s16(q9s32, d24s16, d24s16);
|
||||
q10s32 = vmlal_s16(q10s32, d25s16, d25s16);
|
||||
|
||||
d26s16 = vreinterpret_s16_u16(vget_low_u16(q13u16));
|
||||
d27s16 = vreinterpret_s16_u16(vget_high_u16(q13u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q13u16));
|
||||
q9s32 = vmlal_s16(q9s32, d26s16, d26s16);
|
||||
q10s32 = vmlal_s16(q10s32, d27s16, d27s16);
|
||||
|
||||
d28s16 = vreinterpret_s16_u16(vget_low_u16(q14u16));
|
||||
d29s16 = vreinterpret_s16_u16(vget_high_u16(q14u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q14u16));
|
||||
q9s32 = vmlal_s16(q9s32, d28s16, d28s16);
|
||||
q10s32 = vmlal_s16(q10s32, d29s16, d29s16);
|
||||
}
|
||||
|
||||
q10s32 = vaddq_s32(q10s32, q9s32);
|
||||
q0s64 = vpaddlq_s32(q8s32);
|
||||
q1s64 = vpaddlq_s32(q10s32);
|
||||
|
||||
d0s64 = vadd_s64(vget_low_s64(q0s64), vget_high_s64(q0s64));
|
||||
d1s64 = vadd_s64(vget_low_s64(q1s64), vget_high_s64(q1s64));
|
||||
|
||||
q5s64 = vmull_s32(vreinterpret_s32_s64(d0s64),
|
||||
vreinterpret_s32_s64(d0s64));
|
||||
vst1_lane_u32((uint32_t *)sse, vreinterpret_u32_s64(d1s64), 0);
|
||||
|
||||
d10u32 = vshr_n_u32(vreinterpret_u32_s64(vget_low_s64(q5s64)), 7);
|
||||
d0u32 = vsub_u32(vreinterpret_u32_s64(d1s64), d10u32);
|
||||
|
||||
return vget_lane_u32(d0u32, 0);
|
||||
}
|
||||
|
||||
unsigned int vp8_variance8x16_neon(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse) {
|
||||
int i;
|
||||
uint8x8_t d0u8, d2u8, d4u8, d6u8;
|
||||
int16x4_t d22s16, d23s16, d24s16, d25s16;
|
||||
uint32x2_t d0u32, d10u32;
|
||||
int64x1_t d0s64, d1s64;
|
||||
uint16x8_t q11u16, q12u16;
|
||||
int32x4_t q8s32, q9s32, q10s32;
|
||||
int64x2_t q0s64, q1s64, q5s64;
|
||||
|
||||
q8s32 = vdupq_n_s32(0);
|
||||
q9s32 = vdupq_n_s32(0);
|
||||
q10s32 = vdupq_n_s32(0);
|
||||
|
||||
for (i = 0; i < 8; i++) { // variance8x16_neon_loop
|
||||
d0u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
d2u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
__builtin_prefetch(src_ptr);
|
||||
|
||||
d4u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
d6u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
__builtin_prefetch(ref_ptr);
|
||||
|
||||
q11u16 = vsubl_u8(d0u8, d4u8);
|
||||
q12u16 = vsubl_u8(d2u8, d6u8);
|
||||
|
||||
d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
|
||||
d23s16 = vreinterpret_s16_u16(vget_high_u16(q11u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q11u16));
|
||||
q9s32 = vmlal_s16(q9s32, d22s16, d22s16);
|
||||
q10s32 = vmlal_s16(q10s32, d23s16, d23s16);
|
||||
|
||||
d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
|
||||
d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q12u16));
|
||||
q9s32 = vmlal_s16(q9s32, d24s16, d24s16);
|
||||
q10s32 = vmlal_s16(q10s32, d25s16, d25s16);
|
||||
}
|
||||
|
||||
q10s32 = vaddq_s32(q10s32, q9s32);
|
||||
q0s64 = vpaddlq_s32(q8s32);
|
||||
q1s64 = vpaddlq_s32(q10s32);
|
||||
|
||||
d0s64 = vadd_s64(vget_low_s64(q0s64), vget_high_s64(q0s64));
|
||||
d1s64 = vadd_s64(vget_low_s64(q1s64), vget_high_s64(q1s64));
|
||||
|
||||
q5s64 = vmull_s32(vreinterpret_s32_s64(d0s64),
|
||||
vreinterpret_s32_s64(d0s64));
|
||||
vst1_lane_u32((uint32_t *)sse, vreinterpret_u32_s64(d1s64), 0);
|
||||
|
||||
d10u32 = vshr_n_u32(vreinterpret_u32_s64(vget_low_s64(q5s64)), 7);
|
||||
d0u32 = vsub_u32(vreinterpret_u32_s64(d1s64), d10u32);
|
||||
|
||||
return vget_lane_u32(d0u32, 0);
|
||||
}
|
||||
|
||||
unsigned int vp8_variance8x8_neon(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse) {
|
||||
int i;
|
||||
uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8;
|
||||
int16x4_t d22s16, d23s16, d24s16, d25s16, d26s16, d27s16, d28s16, d29s16;
|
||||
uint32x2_t d0u32, d10u32;
|
||||
int64x1_t d0s64, d1s64;
|
||||
uint16x8_t q11u16, q12u16, q13u16, q14u16;
|
||||
int32x4_t q8s32, q9s32, q10s32;
|
||||
int64x2_t q0s64, q1s64, q5s64;
|
||||
|
||||
q8s32 = vdupq_n_s32(0);
|
||||
q9s32 = vdupq_n_s32(0);
|
||||
q10s32 = vdupq_n_s32(0);
|
||||
|
||||
for (i = 0; i < 2; i++) { // variance8x8_neon_loop
|
||||
d0u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
d1u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
d2u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
d3u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
|
||||
d4u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
d5u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
d6u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
d7u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
|
||||
q11u16 = vsubl_u8(d0u8, d4u8);
|
||||
q12u16 = vsubl_u8(d1u8, d5u8);
|
||||
q13u16 = vsubl_u8(d2u8, d6u8);
|
||||
q14u16 = vsubl_u8(d3u8, d7u8);
|
||||
|
||||
d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
|
||||
d23s16 = vreinterpret_s16_u16(vget_high_u16(q11u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q11u16));
|
||||
q9s32 = vmlal_s16(q9s32, d22s16, d22s16);
|
||||
q10s32 = vmlal_s16(q10s32, d23s16, d23s16);
|
||||
|
||||
d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
|
||||
d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q12u16));
|
||||
q9s32 = vmlal_s16(q9s32, d24s16, d24s16);
|
||||
q10s32 = vmlal_s16(q10s32, d25s16, d25s16);
|
||||
|
||||
d26s16 = vreinterpret_s16_u16(vget_low_u16(q13u16));
|
||||
d27s16 = vreinterpret_s16_u16(vget_high_u16(q13u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q13u16));
|
||||
q9s32 = vmlal_s16(q9s32, d26s16, d26s16);
|
||||
q10s32 = vmlal_s16(q10s32, d27s16, d27s16);
|
||||
|
||||
d28s16 = vreinterpret_s16_u16(vget_low_u16(q14u16));
|
||||
d29s16 = vreinterpret_s16_u16(vget_high_u16(q14u16));
|
||||
q8s32 = vpadalq_s16(q8s32, vreinterpretq_s16_u16(q14u16));
|
||||
q9s32 = vmlal_s16(q9s32, d28s16, d28s16);
|
||||
q10s32 = vmlal_s16(q10s32, d29s16, d29s16);
|
||||
}
|
||||
|
||||
q10s32 = vaddq_s32(q10s32, q9s32);
|
||||
q0s64 = vpaddlq_s32(q8s32);
|
||||
q1s64 = vpaddlq_s32(q10s32);
|
||||
|
||||
d0s64 = vadd_s64(vget_low_s64(q0s64), vget_high_s64(q0s64));
|
||||
d1s64 = vadd_s64(vget_low_s64(q1s64), vget_high_s64(q1s64));
|
||||
|
||||
q5s64 = vmull_s32(vreinterpret_s32_s64(d0s64),
|
||||
vreinterpret_s32_s64(d0s64));
|
||||
vst1_lane_u32((uint32_t *)sse, vreinterpret_u32_s64(d1s64), 0);
|
||||
|
||||
d10u32 = vshr_n_u32(vreinterpret_u32_s64(vget_low_s64(q5s64)), 6);
|
||||
d0u32 = vsub_u32(vreinterpret_u32_s64(d1s64), d10u32);
|
||||
|
||||
return vget_lane_u32(d0u32, 0);
|
||||
}
|
|
@ -32,7 +32,7 @@ unsigned int vp8_sub_pixel_variance16x16_neon_func(
|
|||
int dst_pixels_per_line,
|
||||
unsigned int *sse) {
|
||||
int i;
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned char, tmp, 528);
|
||||
DECLARE_ALIGNED(16, unsigned char, tmp[528]);
|
||||
unsigned char *tmpp;
|
||||
unsigned char *tmpp2;
|
||||
uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8, d8u8, d9u8;
|
||||
|
@ -911,12 +911,6 @@ unsigned int vp8_variance_halfpixvar16x16_hv_neon(
|
|||
return vget_lane_u32(d0u32, 0);
|
||||
}
|
||||
|
||||
enum { kWidth8 = 8 };
|
||||
enum { kHeight8 = 8 };
|
||||
enum { kHeight8PlusOne = 9 };
|
||||
enum { kPixelStepOne = 1 };
|
||||
enum { kAlign16 = 16 };
|
||||
|
||||
#define FILTER_BITS 7
|
||||
|
||||
static INLINE int horizontal_add_s16x8(const int16x8_t v_16x8) {
|
||||
|
@ -968,8 +962,8 @@ static unsigned int variance8x8_neon(const uint8_t *a, int a_stride,
|
|||
const uint8_t *b, int b_stride,
|
||||
unsigned int *sse) {
|
||||
int sum;
|
||||
variance_neon_w8(a, a_stride, b, b_stride, kWidth8, kHeight8, sse, &sum);
|
||||
return *sse - (((int64_t)sum * sum) / (kWidth8 * kHeight8));
|
||||
variance_neon_w8(a, a_stride, b, b_stride, 8, 8, sse, &sum);
|
||||
return *sse - (((int64_t)sum * sum) / (8 * 8));
|
||||
}
|
||||
|
||||
static void var_filter_block2d_bil_w8(const uint8_t *src_ptr,
|
||||
|
@ -1003,21 +997,21 @@ unsigned int vp8_sub_pixel_variance8x8_neon(
|
|||
const unsigned char *dst,
|
||||
int dst_stride,
|
||||
unsigned int *sse) {
|
||||
DECLARE_ALIGNED_ARRAY(kAlign16, uint8_t, temp2, kHeight8PlusOne * kWidth8);
|
||||
DECLARE_ALIGNED_ARRAY(kAlign16, uint8_t, fdata3, kHeight8PlusOne * kWidth8);
|
||||
DECLARE_ALIGNED(16, uint8_t, temp2[9 * 8]);
|
||||
DECLARE_ALIGNED(16, uint8_t, fdata3[9 * 8]);
|
||||
if (xoffset == 0) {
|
||||
var_filter_block2d_bil_w8(src, temp2, src_stride, kWidth8, kHeight8,
|
||||
kWidth8, bilinear_taps_coeff[yoffset]);
|
||||
var_filter_block2d_bil_w8(src, temp2, src_stride, 8, 8,
|
||||
8, bilinear_taps_coeff[yoffset]);
|
||||
} else if (yoffset == 0) {
|
||||
var_filter_block2d_bil_w8(src, temp2, src_stride, kPixelStepOne,
|
||||
kHeight8PlusOne, kWidth8,
|
||||
var_filter_block2d_bil_w8(src, temp2, src_stride, 1,
|
||||
9, 8,
|
||||
bilinear_taps_coeff[xoffset]);
|
||||
} else {
|
||||
var_filter_block2d_bil_w8(src, fdata3, src_stride, kPixelStepOne,
|
||||
kHeight8PlusOne, kWidth8,
|
||||
var_filter_block2d_bil_w8(src, fdata3, src_stride, 1,
|
||||
9, 8,
|
||||
bilinear_taps_coeff[xoffset]);
|
||||
var_filter_block2d_bil_w8(fdata3, temp2, kWidth8, kWidth8, kHeight8,
|
||||
kWidth8, bilinear_taps_coeff[yoffset]);
|
||||
var_filter_block2d_bil_w8(fdata3, temp2, 8, 8, 8,
|
||||
8, bilinear_taps_coeff[yoffset]);
|
||||
}
|
||||
return variance8x8_neon(temp2, kWidth8, dst, dst_stride, sse);
|
||||
return variance8x8_neon(temp2, 8, dst, dst_stride, sse);
|
||||
}
|
||||
|
|
|
@ -9,10 +9,14 @@
|
|||
*/
|
||||
|
||||
#include "vpx_config.h"
|
||||
#include "vp8_rtcd.h"
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "vp8/common/variance.h"
|
||||
#include "vp8/common/filter.h"
|
||||
|
||||
// TODO(johannkoenig): Move this to vpx_dsp or vp8/encoder
|
||||
#if CONFIG_VP8_ENCODER
|
||||
|
||||
#if HAVE_MEDIA
|
||||
#include "vp8/common/arm/bilinearfilter_arm.h"
|
||||
|
||||
|
@ -40,8 +44,8 @@ unsigned int vp8_sub_pixel_variance8x8_armv6
|
|||
vp8_filter_block2d_bil_second_pass_armv6(first_pass, second_pass,
|
||||
8, 8, 8, VFilter);
|
||||
|
||||
return vp8_variance8x8_armv6(second_pass, 8, dst_ptr,
|
||||
dst_pixels_per_line, sse);
|
||||
return vpx_variance8x8_media(second_pass, 8, dst_ptr,
|
||||
dst_pixels_per_line, sse);
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_armv6
|
||||
|
@ -86,13 +90,13 @@ unsigned int vp8_sub_pixel_variance16x16_armv6
|
|||
vp8_filter_block2d_bil_second_pass_armv6(first_pass, second_pass,
|
||||
16, 16, 16, VFilter);
|
||||
|
||||
var = vp8_variance16x16_armv6(second_pass, 16, dst_ptr,
|
||||
dst_pixels_per_line, sse);
|
||||
var = vpx_variance16x16_media(second_pass, 16, dst_ptr,
|
||||
dst_pixels_per_line, sse);
|
||||
}
|
||||
return var;
|
||||
}
|
||||
|
||||
#endif /* HAVE_MEDIA */
|
||||
#endif // HAVE_MEDIA
|
||||
|
||||
|
||||
#if HAVE_NEON
|
||||
|
@ -129,4 +133,5 @@ unsigned int vp8_sub_pixel_variance16x16_neon
|
|||
return vp8_sub_pixel_variance16x16_neon_func(src_ptr, src_pixels_per_line, xoffset, yoffset, dst_ptr, dst_pixels_per_line, sse);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif // HAVE_NEON
|
||||
#endif // CONFIG_VP8_ENCODER
|
||||
|
|
|
@ -29,19 +29,19 @@ extern "C" {
|
|||
|
||||
#define vp8_copy( Dest, Src) { \
|
||||
assert( sizeof( Dest) == sizeof( Src)); \
|
||||
vpx_memcpy( Dest, Src, sizeof( Src)); \
|
||||
memcpy( Dest, Src, sizeof( Src)); \
|
||||
}
|
||||
|
||||
/* Use this for variably-sized arrays. */
|
||||
|
||||
#define vp8_copy_array( Dest, Src, N) { \
|
||||
assert( sizeof( *Dest) == sizeof( *Src)); \
|
||||
vpx_memcpy( Dest, Src, N * sizeof( *Src)); \
|
||||
memcpy( Dest, Src, N * sizeof( *Src)); \
|
||||
}
|
||||
|
||||
#define vp8_zero( Dest) vpx_memset( &Dest, 0, sizeof( Dest));
|
||||
#define vp8_zero( Dest) memset( &Dest, 0, sizeof( Dest));
|
||||
|
||||
#define vp8_zero_array( Dest, N) vpx_memset( Dest, 0, N * sizeof( *Dest));
|
||||
#define vp8_zero_array( Dest, N) memset( Dest, 0, N * sizeof( *Dest));
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* 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 <string.h>
|
||||
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "vpx/vpx_integer.h"
|
||||
|
||||
/* Copy 2 macroblocks to a buffer */
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int src_stride,
|
||||
unsigned char *dst_ptr, int dst_stride,
|
||||
int height)
|
||||
{
|
||||
int r;
|
||||
|
||||
for (r = 0; r < height; r++)
|
||||
{
|
||||
memcpy(dst_ptr, src_ptr, 32);
|
||||
|
||||
src_ptr += src_stride;
|
||||
dst_ptr += dst_stride;
|
||||
|
||||
}
|
||||
}
|
|
@ -81,7 +81,6 @@ void vp8_print_modes_and_motion_vectors(MODE_INFO *mi, int rows, int cols, int f
|
|||
fprintf(mvs, "\n");
|
||||
|
||||
/* print out the block modes */
|
||||
mb_index = 0;
|
||||
fprintf(mvs, "Mbs for Frame %d\n", frame);
|
||||
{
|
||||
int b_row;
|
||||
|
@ -129,7 +128,6 @@ void vp8_print_modes_and_motion_vectors(MODE_INFO *mi, int rows, int cols, int f
|
|||
|
||||
|
||||
/* print out the block modes */
|
||||
mb_index = 0;
|
||||
fprintf(mvs, "MVs for Frame %d\n", frame);
|
||||
{
|
||||
int b_row;
|
||||
|
|
|
@ -38,6 +38,6 @@ void vp8_dequant_idct_add_c(short *input, short *dq,
|
|||
|
||||
vp8_short_idct4x4llm_c(input, dest, stride, dest, stride);
|
||||
|
||||
vpx_memset(input, 0, 32);
|
||||
memset(input, 0, 32);
|
||||
|
||||
}
|
||||
|
|
|
@ -183,7 +183,6 @@ const vp8_extra_bit_struct vp8_extra_bits[12] =
|
|||
|
||||
void vp8_default_coef_probs(VP8_COMMON *pc)
|
||||
{
|
||||
vpx_memcpy(pc->fc.coef_probs, default_coef_probs,
|
||||
sizeof(default_coef_probs));
|
||||
memcpy(pc->fc.coef_probs, default_coef_probs, sizeof(default_coef_probs));
|
||||
}
|
||||
|
||||
|
|
|
@ -159,13 +159,13 @@ const vp8_tree_index vp8_small_mvtree [14] =
|
|||
|
||||
void vp8_init_mbmode_probs(VP8_COMMON *x)
|
||||
{
|
||||
vpx_memcpy(x->fc.ymode_prob, vp8_ymode_prob, sizeof(vp8_ymode_prob));
|
||||
vpx_memcpy(x->fc.uv_mode_prob, vp8_uv_mode_prob, sizeof(vp8_uv_mode_prob));
|
||||
vpx_memcpy(x->fc.sub_mv_ref_prob, sub_mv_ref_prob, sizeof(sub_mv_ref_prob));
|
||||
memcpy(x->fc.ymode_prob, vp8_ymode_prob, sizeof(vp8_ymode_prob));
|
||||
memcpy(x->fc.uv_mode_prob, vp8_uv_mode_prob, sizeof(vp8_uv_mode_prob));
|
||||
memcpy(x->fc.sub_mv_ref_prob, sub_mv_ref_prob, sizeof(sub_mv_ref_prob));
|
||||
}
|
||||
|
||||
void vp8_default_bmode_probs(vp8_prob p [VP8_BINTRAMODES-1])
|
||||
{
|
||||
vpx_memcpy(p, vp8_bmode_prob, sizeof(vp8_bmode_prob));
|
||||
memcpy(p, vp8_bmode_prob, sizeof(vp8_bmode_prob));
|
||||
}
|
||||
|
||||
|
|
|
@ -40,9 +40,9 @@ static void copy_and_extend_plane
|
|||
|
||||
for (i = 0; i < h; i++)
|
||||
{
|
||||
vpx_memset(dest_ptr1, src_ptr1[0], el);
|
||||
vpx_memcpy(dest_ptr1 + el, src_ptr1, w);
|
||||
vpx_memset(dest_ptr2, src_ptr2[0], er);
|
||||
memset(dest_ptr1, src_ptr1[0], el);
|
||||
memcpy(dest_ptr1 + el, src_ptr1, w);
|
||||
memset(dest_ptr2, src_ptr2[0], er);
|
||||
src_ptr1 += sp;
|
||||
src_ptr2 += sp;
|
||||
dest_ptr1 += dp;
|
||||
|
@ -60,13 +60,13 @@ static void copy_and_extend_plane
|
|||
|
||||
for (i = 0; i < et; i++)
|
||||
{
|
||||
vpx_memcpy(dest_ptr1, src_ptr1, linesize);
|
||||
memcpy(dest_ptr1, src_ptr1, linesize);
|
||||
dest_ptr1 += dp;
|
||||
}
|
||||
|
||||
for (i = 0; i < eb; i++)
|
||||
{
|
||||
vpx_memcpy(dest_ptr2, src_ptr2, linesize);
|
||||
memcpy(dest_ptr2, src_ptr2, linesize);
|
||||
dest_ptr2 += dp;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
|
||||
#include "filter.h"
|
||||
#include "./vp8_rtcd.h"
|
||||
|
||||
DECLARE_ALIGNED(16, const short, vp8_bilinear_filters[8][2]) =
|
||||
{
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "vpx_ports/x86.h"
|
||||
#endif
|
||||
#include "vp8/common/onyxc_int.h"
|
||||
#include "vp8/common/systemdependent.h"
|
||||
|
||||
#if CONFIG_MULTITHREAD
|
||||
#if HAVE_UNISTD_H && !defined(__OS2__)
|
||||
|
|
|
@ -33,7 +33,7 @@ void vp8_dequant_idct_add_y_block_c
|
|||
else
|
||||
{
|
||||
vp8_dc_only_idct_add_c (q[0]*dq[0], dst, stride, dst, stride);
|
||||
vpx_memset(q, 0, 2 * sizeof(q[0]));
|
||||
memset(q, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
q += 16;
|
||||
|
@ -59,7 +59,7 @@ void vp8_dequant_idct_add_uv_block_c
|
|||
else
|
||||
{
|
||||
vp8_dc_only_idct_add_c (q[0]*dq[0], dstu, stride, dstu, stride);
|
||||
vpx_memset(q, 0, 2 * sizeof(q[0]));
|
||||
memset(q, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
q += 16;
|
||||
|
@ -78,7 +78,7 @@ void vp8_dequant_idct_add_uv_block_c
|
|||
else
|
||||
{
|
||||
vp8_dc_only_idct_add_c (q[0]*dq[0], dstv, stride, dstv, stride);
|
||||
vpx_memset(q, 0, 2 * sizeof(q[0]));
|
||||
memset(q, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
q += 16;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "./vp8_rtcd.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Notes:
|
||||
|
|
|
@ -82,11 +82,10 @@ void vp8_loop_filter_update_sharpness(loop_filter_info_n *lfi,
|
|||
if (block_inside_limit < 1)
|
||||
block_inside_limit = 1;
|
||||
|
||||
vpx_memset(lfi->lim[i], block_inside_limit, SIMD_WIDTH);
|
||||
vpx_memset(lfi->blim[i], (2 * filt_lvl + block_inside_limit),
|
||||
SIMD_WIDTH);
|
||||
vpx_memset(lfi->mblim[i], (2 * (filt_lvl + 2) + block_inside_limit),
|
||||
SIMD_WIDTH);
|
||||
memset(lfi->lim[i], block_inside_limit, SIMD_WIDTH);
|
||||
memset(lfi->blim[i], (2 * filt_lvl + block_inside_limit), SIMD_WIDTH);
|
||||
memset(lfi->mblim[i], (2 * (filt_lvl + 2) + block_inside_limit),
|
||||
SIMD_WIDTH);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -105,7 +104,7 @@ void vp8_loop_filter_init(VP8_COMMON *cm)
|
|||
/* init hev threshold const vectors */
|
||||
for(i = 0; i < 4 ; i++)
|
||||
{
|
||||
vpx_memset(lfi->hev_thr[i], i, SIMD_WIDTH);
|
||||
memset(lfi->hev_thr[i], i, SIMD_WIDTH);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -151,7 +150,7 @@ void vp8_loop_filter_frame_init(VP8_COMMON *cm,
|
|||
/* we could get rid of this if we assume that deltas are set to
|
||||
* zero when not in use; encoder always uses deltas
|
||||
*/
|
||||
vpx_memset(lfi->lvl[seg][0], lvl_seg, 4 * 4 );
|
||||
memset(lfi->lvl[seg][0], lvl_seg, 4 * 4 );
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,10 +17,11 @@
|
|||
* higher quality.
|
||||
*/
|
||||
|
||||
#include "postproc.h"
|
||||
#include "variance.h"
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "vp8/common/postproc.h"
|
||||
#include "vp8/common/variance.h"
|
||||
#include "vpx_mem/vpx_mem.h"
|
||||
#include "vp8_rtcd.h"
|
||||
#include "vpx_scale/yv12config.h"
|
||||
|
||||
#include <limits.h>
|
||||
|
@ -150,36 +151,36 @@ static void multiframe_quality_enhance_block
|
|||
|
||||
if (blksize == 16)
|
||||
{
|
||||
actd = (vp8_variance16x16(yd, yd_stride, VP8_ZEROS, 0, &sse)+128)>>8;
|
||||
act = (vp8_variance16x16(y, y_stride, VP8_ZEROS, 0, &sse)+128)>>8;
|
||||
actd = (vpx_variance16x16(yd, yd_stride, VP8_ZEROS, 0, &sse)+128)>>8;
|
||||
act = (vpx_variance16x16(y, y_stride, VP8_ZEROS, 0, &sse)+128)>>8;
|
||||
#ifdef USE_SSD
|
||||
sad = (vp8_variance16x16(y, y_stride, yd, yd_stride, &sse));
|
||||
vpx_variance16x16(y, y_stride, yd, yd_stride, &sse);
|
||||
sad = (sse + 128)>>8;
|
||||
usad = (vp8_variance8x8(u, uv_stride, ud, uvd_stride, &sse));
|
||||
vpx_variance8x8(u, uv_stride, ud, uvd_stride, &sse);
|
||||
usad = (sse + 32)>>6;
|
||||
vsad = (vp8_variance8x8(v, uv_stride, vd, uvd_stride, &sse));
|
||||
vpx_variance8x8(v, uv_stride, vd, uvd_stride, &sse);
|
||||
vsad = (sse + 32)>>6;
|
||||
#else
|
||||
sad = (vp8_sad16x16(y, y_stride, yd, yd_stride, UINT_MAX) + 128) >> 8;
|
||||
usad = (vp8_sad8x8(u, uv_stride, ud, uvd_stride, UINT_MAX) + 32) >> 6;
|
||||
vsad = (vp8_sad8x8(v, uv_stride, vd, uvd_stride, UINT_MAX)+ 32) >> 6;
|
||||
sad = (vpx_sad16x16(y, y_stride, yd, yd_stride) + 128) >> 8;
|
||||
usad = (vpx_sad8x8(u, uv_stride, ud, uvd_stride) + 32) >> 6;
|
||||
vsad = (vpx_sad8x8(v, uv_stride, vd, uvd_stride)+ 32) >> 6;
|
||||
#endif
|
||||
}
|
||||
else /* if (blksize == 8) */
|
||||
{
|
||||
actd = (vp8_variance8x8(yd, yd_stride, VP8_ZEROS, 0, &sse)+32)>>6;
|
||||
act = (vp8_variance8x8(y, y_stride, VP8_ZEROS, 0, &sse)+32)>>6;
|
||||
actd = (vpx_variance8x8(yd, yd_stride, VP8_ZEROS, 0, &sse)+32)>>6;
|
||||
act = (vpx_variance8x8(y, y_stride, VP8_ZEROS, 0, &sse)+32)>>6;
|
||||
#ifdef USE_SSD
|
||||
sad = (vp8_variance8x8(y, y_stride, yd, yd_stride, &sse));
|
||||
vpx_variance8x8(y, y_stride, yd, yd_stride, &sse);
|
||||
sad = (sse + 32)>>6;
|
||||
usad = (vp8_variance4x4(u, uv_stride, ud, uvd_stride, &sse));
|
||||
vpx_variance4x4(u, uv_stride, ud, uvd_stride, &sse);
|
||||
usad = (sse + 8)>>4;
|
||||
vsad = (vp8_variance4x4(v, uv_stride, vd, uvd_stride, &sse));
|
||||
vpx_variance4x4(v, uv_stride, vd, uvd_stride, &sse);
|
||||
vsad = (sse + 8)>>4;
|
||||
#else
|
||||
sad = (vp8_sad8x8(y, y_stride, yd, yd_stride, UINT_MAX) + 32) >> 6;
|
||||
usad = (vp8_sad4x4(u, uv_stride, ud, uvd_stride, UINT_MAX) + 8) >> 4;
|
||||
vsad = (vp8_sad4x4(v, uv_stride, vd, uvd_stride, UINT_MAX) + 8) >> 4;
|
||||
sad = (vpx_sad8x8(y, y_stride, yd, yd_stride) + 32) >> 6;
|
||||
usad = (vpx_sad4x4(u, uv_stride, ud, uvd_stride) + 8) >> 4;
|
||||
vsad = (vpx_sad4x4(v, uv_stride, vd, uvd_stride) + 8) >> 4;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -231,9 +232,9 @@ static void multiframe_quality_enhance_block
|
|||
{
|
||||
vp8_copy_mem8x8(y, y_stride, yd, yd_stride);
|
||||
for (up = u, udp = ud, i = 0; i < uvblksize; ++i, up += uv_stride, udp += uvd_stride)
|
||||
vpx_memcpy(udp, up, uvblksize);
|
||||
memcpy(udp, up, uvblksize);
|
||||
for (vp = v, vdp = vd, i = 0; i < uvblksize; ++i, vp += uv_stride, vdp += uvd_stride)
|
||||
vpx_memcpy(vdp, vp, uvblksize);
|
||||
memcpy(vdp, vp, uvblksize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -341,8 +342,8 @@ void vp8_multiframe_quality_enhance
|
|||
for (k = 0; k < 4; ++k, up += show->uv_stride, udp += dest->uv_stride,
|
||||
vp += show->uv_stride, vdp += dest->uv_stride)
|
||||
{
|
||||
vpx_memcpy(udp, up, 4);
|
||||
vpx_memcpy(vdp, vp, 4);
|
||||
memcpy(udp, up, 4);
|
||||
memcpy(vdp, vp, 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -355,8 +355,8 @@ void vp8_deblock(VP8_COMMON *cm,
|
|||
else
|
||||
mb_ppl = (unsigned char)ppl;
|
||||
|
||||
vpx_memset(ylptr, mb_ppl, 16);
|
||||
vpx_memset(uvlptr, mb_ppl, 8);
|
||||
memset(ylptr, mb_ppl, 16);
|
||||
memset(uvlptr, mb_ppl, 8);
|
||||
|
||||
ylptr += 16;
|
||||
uvlptr += 8;
|
||||
|
@ -403,7 +403,7 @@ void vp8_de_noise(VP8_COMMON *cm,
|
|||
(void) low_var_thresh;
|
||||
(void) flag;
|
||||
|
||||
vpx_memset(limits, (unsigned char)ppl, 16 * mb_cols);
|
||||
memset(limits, (unsigned char)ppl, 16 * mb_cols);
|
||||
|
||||
/* TODO: The original code don't filter the 2 outer rows and columns. */
|
||||
for (mbr = 0; mbr < mb_rows; mbr++)
|
||||
|
@ -427,7 +427,7 @@ void vp8_de_noise(VP8_COMMON *cm,
|
|||
}
|
||||
}
|
||||
|
||||
double vp8_gaussian(double sigma, double mu, double x)
|
||||
static double gaussian(double sigma, double mu, double x)
|
||||
{
|
||||
return 1 / (sigma * sqrt(2.0 * 3.14159265)) *
|
||||
(exp(-(x - mu) * (x - mu) / (2 * sigma * sigma)));
|
||||
|
@ -455,7 +455,7 @@ static void fillrd(struct postproc_state *state, int q, int a)
|
|||
|
||||
for (i = -32; i < 32; i++)
|
||||
{
|
||||
const int v = (int)(.5 + 256 * vp8_gaussian(sigma, 0, i));
|
||||
const int v = (int)(.5 + 256 * gaussian(sigma, 0, i));
|
||||
|
||||
if (v)
|
||||
{
|
||||
|
@ -763,7 +763,7 @@ int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t
|
|||
/* insure that postproc is set to all 0's so that post proc
|
||||
* doesn't pull random data in from edge
|
||||
*/
|
||||
vpx_memset((&oci->post_proc_buffer_int)->buffer_alloc,128,(&oci->post_proc_buffer)->frame_size);
|
||||
memset((&oci->post_proc_buffer_int)->buffer_alloc,128,(&oci->post_proc_buffer)->frame_size);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
|
||||
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "vpx_config.h"
|
||||
#include "vp8_rtcd.h"
|
||||
#include "vpx/vpx_integer.h"
|
||||
|
@ -30,31 +32,8 @@ void vp8_copy_mem16x16_c(
|
|||
|
||||
for (r = 0; r < 16; r++)
|
||||
{
|
||||
#if !(CONFIG_FAST_UNALIGNED)
|
||||
dst[0] = src[0];
|
||||
dst[1] = src[1];
|
||||
dst[2] = src[2];
|
||||
dst[3] = src[3];
|
||||
dst[4] = src[4];
|
||||
dst[5] = src[5];
|
||||
dst[6] = src[6];
|
||||
dst[7] = src[7];
|
||||
dst[8] = src[8];
|
||||
dst[9] = src[9];
|
||||
dst[10] = src[10];
|
||||
dst[11] = src[11];
|
||||
dst[12] = src[12];
|
||||
dst[13] = src[13];
|
||||
dst[14] = src[14];
|
||||
dst[15] = src[15];
|
||||
memcpy(dst, src, 16);
|
||||
|
||||
#else
|
||||
((uint32_t *)dst)[0] = ((uint32_t *)src)[0] ;
|
||||
((uint32_t *)dst)[1] = ((uint32_t *)src)[1] ;
|
||||
((uint32_t *)dst)[2] = ((uint32_t *)src)[2] ;
|
||||
((uint32_t *)dst)[3] = ((uint32_t *)src)[3] ;
|
||||
|
||||
#endif
|
||||
src += src_stride;
|
||||
dst += dst_stride;
|
||||
|
||||
|
@ -72,19 +51,8 @@ void vp8_copy_mem8x8_c(
|
|||
|
||||
for (r = 0; r < 8; r++)
|
||||
{
|
||||
#if !(CONFIG_FAST_UNALIGNED)
|
||||
dst[0] = src[0];
|
||||
dst[1] = src[1];
|
||||
dst[2] = src[2];
|
||||
dst[3] = src[3];
|
||||
dst[4] = src[4];
|
||||
dst[5] = src[5];
|
||||
dst[6] = src[6];
|
||||
dst[7] = src[7];
|
||||
#else
|
||||
((uint32_t *)dst)[0] = ((uint32_t *)src)[0] ;
|
||||
((uint32_t *)dst)[1] = ((uint32_t *)src)[1] ;
|
||||
#endif
|
||||
memcpy(dst, src, 8);
|
||||
|
||||
src += src_stride;
|
||||
dst += dst_stride;
|
||||
|
||||
|
@ -102,19 +70,8 @@ void vp8_copy_mem8x4_c(
|
|||
|
||||
for (r = 0; r < 4; r++)
|
||||
{
|
||||
#if !(CONFIG_FAST_UNALIGNED)
|
||||
dst[0] = src[0];
|
||||
dst[1] = src[1];
|
||||
dst[2] = src[2];
|
||||
dst[3] = src[3];
|
||||
dst[4] = src[4];
|
||||
dst[5] = src[5];
|
||||
dst[6] = src[6];
|
||||
dst[7] = src[7];
|
||||
#else
|
||||
((uint32_t *)dst)[0] = ((uint32_t *)src)[0] ;
|
||||
((uint32_t *)dst)[1] = ((uint32_t *)src)[1] ;
|
||||
#endif
|
||||
memcpy(dst, src, 8);
|
||||
|
||||
src += src_stride;
|
||||
dst += dst_stride;
|
||||
|
||||
|
|
|
@ -70,10 +70,10 @@ void vp8_build_intra_predictors_mby_s_c(MACROBLOCKD *x,
|
|||
expected_dc = 128;
|
||||
}
|
||||
|
||||
/*vpx_memset(ypred_ptr, expected_dc, 256);*/
|
||||
/*memset(ypred_ptr, expected_dc, 256);*/
|
||||
for (r = 0; r < 16; r++)
|
||||
{
|
||||
vpx_memset(ypred_ptr, expected_dc, 16);
|
||||
memset(ypred_ptr, expected_dc, 16);
|
||||
ypred_ptr += y_stride;
|
||||
}
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ void vp8_build_intra_predictors_mby_s_c(MACROBLOCKD *x,
|
|||
for (r = 0; r < 16; r++)
|
||||
{
|
||||
|
||||
vpx_memset(ypred_ptr, yleft_col[r], 16);
|
||||
memset(ypred_ptr, yleft_col[r], 16);
|
||||
ypred_ptr += y_stride;
|
||||
}
|
||||
|
||||
|
@ -202,12 +202,12 @@ void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x,
|
|||
}
|
||||
|
||||
|
||||
/*vpx_memset(upred_ptr,expected_udc,64);*/
|
||||
/*vpx_memset(vpred_ptr,expected_vdc,64);*/
|
||||
/*memset(upred_ptr,expected_udc,64);*/
|
||||
/*memset(vpred_ptr,expected_vdc,64);*/
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
vpx_memset(upred_ptr, expected_udc, 8);
|
||||
vpx_memset(vpred_ptr, expected_vdc, 8);
|
||||
memset(upred_ptr, expected_udc, 8);
|
||||
memset(vpred_ptr, expected_vdc, 8);
|
||||
upred_ptr += pred_stride;
|
||||
vpred_ptr += pred_stride;
|
||||
}
|
||||
|
@ -217,8 +217,8 @@ void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x,
|
|||
{
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
vpx_memcpy(upred_ptr, uabove_row, 8);
|
||||
vpx_memcpy(vpred_ptr, vabove_row, 8);
|
||||
memcpy(upred_ptr, uabove_row, 8);
|
||||
memcpy(vpred_ptr, vabove_row, 8);
|
||||
upred_ptr += pred_stride;
|
||||
vpred_ptr += pred_stride;
|
||||
}
|
||||
|
@ -229,8 +229,8 @@ void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x,
|
|||
{
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
vpx_memset(upred_ptr, uleft_col[i], 8);
|
||||
vpx_memset(vpred_ptr, vleft_col[i], 8);
|
||||
memset(upred_ptr, uleft_col[i], 8);
|
||||
memset(vpred_ptr, vleft_col[i], 8);
|
||||
upred_ptr += pred_stride;
|
||||
vpred_ptr += pred_stride;
|
||||
}
|
||||
|
|
|
@ -7,15 +7,13 @@
|
|||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
#include "vpx_config.h"
|
||||
#include "./vpx_config.h"
|
||||
#define RTCD_C
|
||||
#include "vp8_rtcd.h"
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "vpx_ports/vpx_once.h"
|
||||
|
||||
extern void vpx_scale_rtcd(void);
|
||||
|
||||
void vp8_rtcd()
|
||||
{
|
||||
vpx_scale_rtcd();
|
||||
once(setup_rtcd_internal);
|
||||
}
|
||||
|
|
|
@ -1,302 +0,0 @@
|
|||
/*
|
||||
* 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 <limits.h>
|
||||
#include <stdlib.h>
|
||||
#include "vpx_config.h"
|
||||
#include "vpx/vpx_integer.h"
|
||||
|
||||
static unsigned int sad_mx_n_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int max_sad, int m, int n)
|
||||
{
|
||||
int r, c;
|
||||
unsigned int sad = 0;
|
||||
|
||||
for (r = 0; r < n; r++)
|
||||
{
|
||||
for (c = 0; c < m; c++)
|
||||
{
|
||||
sad += abs(src_ptr[c] - ref_ptr[c]);
|
||||
}
|
||||
|
||||
if (sad > max_sad)
|
||||
break;
|
||||
|
||||
src_ptr += src_stride;
|
||||
ref_ptr += ref_stride;
|
||||
}
|
||||
|
||||
return sad;
|
||||
}
|
||||
|
||||
/* max_sad is provided as an optional optimization point. Alternative
|
||||
* implementations of these functions are not required to check it.
|
||||
*/
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int max_sad)
|
||||
{
|
||||
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 16, 16);
|
||||
}
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int max_sad)
|
||||
{
|
||||
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 8, 8);
|
||||
}
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int max_sad)
|
||||
{
|
||||
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 16, 8);
|
||||
|
||||
}
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int max_sad)
|
||||
{
|
||||
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 8, 16);
|
||||
}
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int max_sad)
|
||||
{
|
||||
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, max_sad, 4, 4);
|
||||
}
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned short *sad_array)
|
||||
{
|
||||
sad_array[0] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
sad_array[3] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
|
||||
sad_array[4] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
|
||||
sad_array[5] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
|
||||
sad_array[6] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
|
||||
sad_array[7] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned short *sad_array)
|
||||
{
|
||||
sad_array[0] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
sad_array[3] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
|
||||
sad_array[4] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
|
||||
sad_array[5] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
|
||||
sad_array[6] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
|
||||
sad_array[7] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned short *sad_array)
|
||||
{
|
||||
sad_array[0] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
sad_array[3] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
|
||||
sad_array[4] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
|
||||
sad_array[5] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
|
||||
sad_array[6] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
|
||||
sad_array[7] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned short *sad_array)
|
||||
{
|
||||
sad_array[0] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
sad_array[3] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
|
||||
sad_array[4] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
|
||||
sad_array[5] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
|
||||
sad_array[6] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
|
||||
sad_array[7] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char *ref_ptr, int ref_stride,
|
||||
unsigned short *sad_array)
|
||||
{
|
||||
sad_array[0] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 0, ref_stride, UINT_MAX);
|
||||
sad_array[1] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, UINT_MAX);
|
||||
sad_array[2] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, UINT_MAX);
|
||||
sad_array[3] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, UINT_MAX);
|
||||
sad_array[4] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, UINT_MAX);
|
||||
sad_array[5] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, UINT_MAX);
|
||||
sad_array[6] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, UINT_MAX);
|
||||
sad_array[7] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char * const ref_ptr[], int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
|
||||
sad_array[3] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char * const ref_ptr[], int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
|
||||
sad_array[3] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char * const ref_ptr[], int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
|
||||
sad_array[3] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char * const ref_ptr[], int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
|
||||
sad_array[3] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride,
|
||||
const unsigned char * const ref_ptr[], int ref_stride,
|
||||
unsigned int *sad_array)
|
||||
{
|
||||
sad_array[0] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[0], ref_stride, UINT_MAX);
|
||||
sad_array[1] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[1], ref_stride, UINT_MAX);
|
||||
sad_array[2] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[2], ref_stride, UINT_MAX);
|
||||
sad_array[3] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr[3], ref_stride, UINT_MAX);
|
||||
}
|
||||
|
||||
/* Copy 2 macroblocks to a buffer */
|
||||
void vp8_copy32xn_c(unsigned char *src_ptr, int src_stride,
|
||||
unsigned char *dst_ptr, int dst_stride,
|
||||
int height)
|
||||
{
|
||||
int r;
|
||||
|
||||
for (r = 0; r < height; r++)
|
||||
{
|
||||
#if !(CONFIG_FAST_UNALIGNED)
|
||||
dst_ptr[0] = src_ptr[0];
|
||||
dst_ptr[1] = src_ptr[1];
|
||||
dst_ptr[2] = src_ptr[2];
|
||||
dst_ptr[3] = src_ptr[3];
|
||||
dst_ptr[4] = src_ptr[4];
|
||||
dst_ptr[5] = src_ptr[5];
|
||||
dst_ptr[6] = src_ptr[6];
|
||||
dst_ptr[7] = src_ptr[7];
|
||||
dst_ptr[8] = src_ptr[8];
|
||||
dst_ptr[9] = src_ptr[9];
|
||||
dst_ptr[10] = src_ptr[10];
|
||||
dst_ptr[11] = src_ptr[11];
|
||||
dst_ptr[12] = src_ptr[12];
|
||||
dst_ptr[13] = src_ptr[13];
|
||||
dst_ptr[14] = src_ptr[14];
|
||||
dst_ptr[15] = src_ptr[15];
|
||||
dst_ptr[16] = src_ptr[16];
|
||||
dst_ptr[17] = src_ptr[17];
|
||||
dst_ptr[18] = src_ptr[18];
|
||||
dst_ptr[19] = src_ptr[19];
|
||||
dst_ptr[20] = src_ptr[20];
|
||||
dst_ptr[21] = src_ptr[21];
|
||||
dst_ptr[22] = src_ptr[22];
|
||||
dst_ptr[23] = src_ptr[23];
|
||||
dst_ptr[24] = src_ptr[24];
|
||||
dst_ptr[25] = src_ptr[25];
|
||||
dst_ptr[26] = src_ptr[26];
|
||||
dst_ptr[27] = src_ptr[27];
|
||||
dst_ptr[28] = src_ptr[28];
|
||||
dst_ptr[29] = src_ptr[29];
|
||||
dst_ptr[30] = src_ptr[30];
|
||||
dst_ptr[31] = src_ptr[31];
|
||||
#else
|
||||
((uint32_t *)dst_ptr)[0] = ((uint32_t *)src_ptr)[0] ;
|
||||
((uint32_t *)dst_ptr)[1] = ((uint32_t *)src_ptr)[1] ;
|
||||
((uint32_t *)dst_ptr)[2] = ((uint32_t *)src_ptr)[2] ;
|
||||
((uint32_t *)dst_ptr)[3] = ((uint32_t *)src_ptr)[3] ;
|
||||
((uint32_t *)dst_ptr)[4] = ((uint32_t *)src_ptr)[4] ;
|
||||
((uint32_t *)dst_ptr)[5] = ((uint32_t *)src_ptr)[5] ;
|
||||
((uint32_t *)dst_ptr)[6] = ((uint32_t *)src_ptr)[6] ;
|
||||
((uint32_t *)dst_ptr)[7] = ((uint32_t *)src_ptr)[7] ;
|
||||
#endif
|
||||
src_ptr += src_stride;
|
||||
dst_ptr += dst_stride;
|
||||
|
||||
}
|
||||
}
|
|
@ -17,15 +17,15 @@ void vp8_setup_intra_recon(YV12_BUFFER_CONFIG *ybf)
|
|||
int i;
|
||||
|
||||
/* set up frame new frame for intra coded blocks */
|
||||
vpx_memset(ybf->y_buffer - 1 - ybf->y_stride, 127, ybf->y_width + 5);
|
||||
memset(ybf->y_buffer - 1 - ybf->y_stride, 127, ybf->y_width + 5);
|
||||
for (i = 0; i < ybf->y_height; i++)
|
||||
ybf->y_buffer[ybf->y_stride *i - 1] = (unsigned char) 129;
|
||||
|
||||
vpx_memset(ybf->u_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
|
||||
memset(ybf->u_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
|
||||
for (i = 0; i < ybf->uv_height; i++)
|
||||
ybf->u_buffer[ybf->uv_stride *i - 1] = (unsigned char) 129;
|
||||
|
||||
vpx_memset(ybf->v_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
|
||||
memset(ybf->v_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
|
||||
for (i = 0; i < ybf->uv_height; i++)
|
||||
ybf->v_buffer[ybf->uv_stride *i - 1] = (unsigned char) 129;
|
||||
|
||||
|
@ -33,7 +33,7 @@ void vp8_setup_intra_recon(YV12_BUFFER_CONFIG *ybf)
|
|||
|
||||
void vp8_setup_intra_recon_top_line(YV12_BUFFER_CONFIG *ybf)
|
||||
{
|
||||
vpx_memset(ybf->y_buffer - 1 - ybf->y_stride, 127, ybf->y_width + 5);
|
||||
vpx_memset(ybf->u_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
|
||||
vpx_memset(ybf->v_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
|
||||
memset(ybf->y_buffer - 1 - ybf->y_stride, 127, ybf->y_width + 5);
|
||||
memset(ybf->u_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
|
||||
memset(ybf->v_buffer - 1 - ybf->uv_stride, 127, ybf->uv_width + 5);
|
||||
}
|
||||
|
|
|
@ -14,50 +14,42 @@
|
|||
|
||||
#include "vpx_config.h"
|
||||
|
||||
#include "vpx/vpx_integer.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned int(*vp8_sad_fn_t)(
|
||||
const unsigned char *src_ptr,
|
||||
typedef unsigned int(*vpx_sad_fn_t)(
|
||||
const uint8_t *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int ref_stride,
|
||||
unsigned int max_sad);
|
||||
const uint8_t *ref_ptr,
|
||||
int ref_stride);
|
||||
|
||||
typedef void (*vp8_copy32xn_fn_t)(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
unsigned char *ref_ptr,
|
||||
int ref_stride,
|
||||
int n);
|
||||
|
||||
typedef void (*vp8_sad_multi_fn_t)(
|
||||
typedef void (*vpx_sad_multi_fn_t)(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
const unsigned char *ref_array,
|
||||
int ref_stride,
|
||||
unsigned int *sad_array);
|
||||
|
||||
typedef void (*vp8_sad_multi1_fn_t)
|
||||
typedef void (*vpx_sad_multi_d_fn_t)
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int ref_stride,
|
||||
unsigned short *sad_array
|
||||
);
|
||||
|
||||
typedef void (*vp8_sad_multi_d_fn_t)
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char * const ref_ptr[],
|
||||
const unsigned char * const ref_array[],
|
||||
int ref_stride,
|
||||
unsigned int *sad_array
|
||||
);
|
||||
|
||||
typedef unsigned int (*vp8_variance_fn_t)
|
||||
typedef unsigned int (*vpx_variance_fn_t)
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
|
@ -77,40 +69,17 @@ typedef unsigned int (*vp8_subpixvariance_fn_t)
|
|||
unsigned int *sse
|
||||
);
|
||||
|
||||
typedef void (*vp8_ssimpf_fn_t)
|
||||
(
|
||||
unsigned char *s,
|
||||
int sp,
|
||||
unsigned char *r,
|
||||
int rp,
|
||||
unsigned long *sum_s,
|
||||
unsigned long *sum_r,
|
||||
unsigned long *sum_sq_s,
|
||||
unsigned long *sum_sq_r,
|
||||
unsigned long *sum_sxr
|
||||
);
|
||||
|
||||
typedef unsigned int (*vp8_getmbss_fn_t)(const short *);
|
||||
|
||||
typedef unsigned int (*vp8_get16x16prederror_fn_t)
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int ref_stride
|
||||
);
|
||||
|
||||
typedef struct variance_vtable
|
||||
{
|
||||
vp8_sad_fn_t sdf;
|
||||
vp8_variance_fn_t vf;
|
||||
vpx_sad_fn_t sdf;
|
||||
vpx_variance_fn_t vf;
|
||||
vp8_subpixvariance_fn_t svf;
|
||||
vp8_variance_fn_t svf_halfpix_h;
|
||||
vp8_variance_fn_t svf_halfpix_v;
|
||||
vp8_variance_fn_t svf_halfpix_hv;
|
||||
vp8_sad_multi_fn_t sdx3f;
|
||||
vp8_sad_multi1_fn_t sdx8f;
|
||||
vp8_sad_multi_d_fn_t sdx4df;
|
||||
vpx_variance_fn_t svf_halfpix_h;
|
||||
vpx_variance_fn_t svf_halfpix_v;
|
||||
vpx_variance_fn_t svf_halfpix_hv;
|
||||
vpx_sad_multi_fn_t sdx3f;
|
||||
vpx_sad_multi_fn_t sdx8f;
|
||||
vpx_sad_multi_d_fn_t sdx4df;
|
||||
#if ARCH_X86 || ARCH_X86_64
|
||||
vp8_copy32xn_fn_t copymem;
|
||||
#endif
|
||||
|
|
|
@ -8,43 +8,34 @@
|
|||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
|
||||
#include "variance.h"
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "filter.h"
|
||||
#include "variance.h"
|
||||
|
||||
|
||||
unsigned int vp8_get_mb_ss_c
|
||||
(
|
||||
const short *src_ptr
|
||||
)
|
||||
{
|
||||
unsigned int i = 0, sum = 0;
|
||||
|
||||
do
|
||||
{
|
||||
sum += (src_ptr[i] * src_ptr[i]);
|
||||
i++;
|
||||
}
|
||||
while (i < 256);
|
||||
|
||||
return sum;
|
||||
/* This is a bad idea.
|
||||
* ctz = count trailing zeros */
|
||||
static int ctz(int a) {
|
||||
int b = 0;
|
||||
while (a != 1) {
|
||||
a >>= 1;
|
||||
b++;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
|
||||
static void variance(
|
||||
static unsigned int variance(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
int w,
|
||||
int h,
|
||||
unsigned int *sse,
|
||||
int *sum)
|
||||
unsigned int *sse)
|
||||
{
|
||||
int i, j;
|
||||
int diff;
|
||||
int diff, sum;
|
||||
|
||||
*sum = 0;
|
||||
sum = 0;
|
||||
*sse = 0;
|
||||
|
||||
for (i = 0; i < h; i++)
|
||||
|
@ -52,114 +43,17 @@ static void variance(
|
|||
for (j = 0; j < w; j++)
|
||||
{
|
||||
diff = src_ptr[j] - ref_ptr[j];
|
||||
*sum += diff;
|
||||
sum += diff;
|
||||
*sse += diff * diff;
|
||||
}
|
||||
|
||||
src_ptr += source_stride;
|
||||
ref_ptr += recon_stride;
|
||||
}
|
||||
|
||||
return (*sse - (((unsigned int)sum * sum) >> (int)((ctz(w) + ctz(h)))));
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_variance16x16_c(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
|
||||
variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg);
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 8));
|
||||
}
|
||||
|
||||
unsigned int vp8_variance8x16_c(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
|
||||
variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 16, &var, &avg);
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 7));
|
||||
}
|
||||
|
||||
unsigned int vp8_variance16x8_c(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
|
||||
variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 8, &var, &avg);
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 7));
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_variance8x8_c(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
|
||||
variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 8, &var, &avg);
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 6));
|
||||
}
|
||||
|
||||
unsigned int vp8_variance4x4_c(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
|
||||
variance(src_ptr, source_stride, ref_ptr, recon_stride, 4, 4, &var, &avg);
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 4));
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_mse16x16_c(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg);
|
||||
*sse = var;
|
||||
return var;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* ROUTINE : filter_block2d_bil_first_pass
|
||||
|
@ -303,7 +197,7 @@ unsigned int vp8_sub_pixel_variance4x4_c
|
|||
/* Now filter Verticaly */
|
||||
var_filter_block2d_bil_second_pass(FData3, temp2, 4, 4, 4, 4, VFilter);
|
||||
|
||||
return vp8_variance4x4_c(temp2, 4, dst_ptr, dst_pixels_per_line, sse);
|
||||
return variance(temp2, 4, dst_ptr, dst_pixels_per_line, 4, 4, sse);
|
||||
}
|
||||
|
||||
|
||||
|
@ -328,7 +222,7 @@ unsigned int vp8_sub_pixel_variance8x8_c
|
|||
var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 9, 8, HFilter);
|
||||
var_filter_block2d_bil_second_pass(FData3, temp2, 8, 8, 8, 8, VFilter);
|
||||
|
||||
return vp8_variance8x8_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse);
|
||||
return variance(temp2, 8, dst_ptr, dst_pixels_per_line, 8, 8, sse);
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c
|
||||
|
@ -352,7 +246,7 @@ unsigned int vp8_sub_pixel_variance16x16_c
|
|||
var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 17, 16, HFilter);
|
||||
var_filter_block2d_bil_second_pass(FData3, temp2, 16, 16, 16, 16, VFilter);
|
||||
|
||||
return vp8_variance16x16_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse);
|
||||
return variance(temp2, 16, dst_ptr, dst_pixels_per_line, 16, 16, sse);
|
||||
}
|
||||
|
||||
|
||||
|
@ -392,21 +286,6 @@ unsigned int vp8_variance_halfpixvar16x16_hv_c(
|
|||
}
|
||||
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int src_pixels_per_line,
|
||||
int xoffset,
|
||||
int yoffset,
|
||||
const unsigned char *dst_ptr,
|
||||
int dst_pixels_per_line,
|
||||
unsigned int *sse
|
||||
)
|
||||
{
|
||||
vp8_sub_pixel_variance16x16_c(src_ptr, src_pixels_per_line, xoffset, yoffset, dst_ptr, dst_pixels_per_line, sse);
|
||||
return *sse;
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x8_c
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
|
@ -428,7 +307,7 @@ unsigned int vp8_sub_pixel_variance16x8_c
|
|||
var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 9, 16, HFilter);
|
||||
var_filter_block2d_bil_second_pass(FData3, temp2, 16, 16, 8, 16, VFilter);
|
||||
|
||||
return vp8_variance16x8_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse);
|
||||
return variance(temp2, 16, dst_ptr, dst_pixels_per_line, 16, 8, sse);
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_variance8x16_c
|
||||
|
@ -454,5 +333,5 @@ unsigned int vp8_sub_pixel_variance8x16_c
|
|||
var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 17, 8, HFilter);
|
||||
var_filter_block2d_bil_second_pass(FData3, temp2, 8, 8, 16, 8, VFilter);
|
||||
|
||||
return vp8_variance8x16_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse);
|
||||
return variance(temp2, 8, dst_ptr, dst_pixels_per_line, 8, 16, sse);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
;
|
||||
; 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 "vpx_ports/x86_abi_support.asm"
|
||||
|
||||
|
||||
;void vp8_copy32xn_sse2(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *dst_ptr,
|
||||
; int dst_stride,
|
||||
; int height);
|
||||
global sym(vp8_copy32xn_sse2) PRIVATE
|
||||
sym(vp8_copy32xn_sse2):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
SAVE_XMM 7
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;dst_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;dst_stride
|
||||
movsxd rcx, dword ptr arg(4) ;height
|
||||
|
||||
.block_copy_sse2_loopx4:
|
||||
movdqu xmm0, XMMWORD PTR [rsi]
|
||||
movdqu xmm1, XMMWORD PTR [rsi + 16]
|
||||
movdqu xmm2, XMMWORD PTR [rsi + rax]
|
||||
movdqu xmm3, XMMWORD PTR [rsi + rax + 16]
|
||||
|
||||
lea rsi, [rsi+rax*2]
|
||||
|
||||
movdqu xmm4, XMMWORD PTR [rsi]
|
||||
movdqu xmm5, XMMWORD PTR [rsi + 16]
|
||||
movdqu xmm6, XMMWORD PTR [rsi + rax]
|
||||
movdqu xmm7, XMMWORD PTR [rsi + rax + 16]
|
||||
|
||||
lea rsi, [rsi+rax*2]
|
||||
|
||||
movdqa XMMWORD PTR [rdi], xmm0
|
||||
movdqa XMMWORD PTR [rdi + 16], xmm1
|
||||
movdqa XMMWORD PTR [rdi + rdx], xmm2
|
||||
movdqa XMMWORD PTR [rdi + rdx + 16], xmm3
|
||||
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
movdqa XMMWORD PTR [rdi], xmm4
|
||||
movdqa XMMWORD PTR [rdi + 16], xmm5
|
||||
movdqa XMMWORD PTR [rdi + rdx], xmm6
|
||||
movdqa XMMWORD PTR [rdi + rdx + 16], xmm7
|
||||
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
sub rcx, 4
|
||||
cmp rcx, 4
|
||||
jge .block_copy_sse2_loopx4
|
||||
|
||||
cmp rcx, 0
|
||||
je .copy_is_done
|
||||
|
||||
.block_copy_sse2_loop:
|
||||
movdqu xmm0, XMMWORD PTR [rsi]
|
||||
movdqu xmm1, XMMWORD PTR [rsi + 16]
|
||||
lea rsi, [rsi+rax]
|
||||
|
||||
movdqa XMMWORD PTR [rdi], xmm0
|
||||
movdqa XMMWORD PTR [rdi + 16], xmm1
|
||||
lea rdi, [rdi+rdx]
|
||||
|
||||
sub rcx, 1
|
||||
jne .block_copy_sse2_loop
|
||||
|
||||
.copy_is_done:
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
RESTORE_XMM
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
|
@ -0,0 +1,146 @@
|
|||
;
|
||||
; 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 "vpx_ports/x86_abi_support.asm"
|
||||
|
||||
%macro STACK_FRAME_CREATE_X3 0
|
||||
%if ABI_IS_32BIT
|
||||
%define src_ptr rsi
|
||||
%define src_stride rax
|
||||
%define ref_ptr rdi
|
||||
%define ref_stride rdx
|
||||
%define end_ptr rcx
|
||||
%define ret_var rbx
|
||||
%define result_ptr arg(4)
|
||||
%define max_sad arg(4)
|
||||
%define height dword ptr arg(4)
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
push rsi
|
||||
push rdi
|
||||
push rbx
|
||||
|
||||
mov rsi, arg(0) ; src_ptr
|
||||
mov rdi, arg(2) ; ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ; src_stride
|
||||
movsxd rdx, dword ptr arg(3) ; ref_stride
|
||||
%else
|
||||
%if LIBVPX_YASM_WIN64
|
||||
SAVE_XMM 7, u
|
||||
%define src_ptr rcx
|
||||
%define src_stride rdx
|
||||
%define ref_ptr r8
|
||||
%define ref_stride r9
|
||||
%define end_ptr r10
|
||||
%define ret_var r11
|
||||
%define result_ptr [rsp+xmm_stack_space+8+4*8]
|
||||
%define max_sad [rsp+xmm_stack_space+8+4*8]
|
||||
%define height dword ptr [rsp+xmm_stack_space+8+4*8]
|
||||
%else
|
||||
%define src_ptr rdi
|
||||
%define src_stride rsi
|
||||
%define ref_ptr rdx
|
||||
%define ref_stride rcx
|
||||
%define end_ptr r9
|
||||
%define ret_var r10
|
||||
%define result_ptr r8
|
||||
%define max_sad r8
|
||||
%define height r8
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%endmacro
|
||||
|
||||
%macro STACK_FRAME_DESTROY_X3 0
|
||||
%define src_ptr
|
||||
%define src_stride
|
||||
%define ref_ptr
|
||||
%define ref_stride
|
||||
%define end_ptr
|
||||
%define ret_var
|
||||
%define result_ptr
|
||||
%define max_sad
|
||||
%define height
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
pop rbx
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbp
|
||||
%else
|
||||
%if LIBVPX_YASM_WIN64
|
||||
RESTORE_XMM
|
||||
%endif
|
||||
%endif
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
|
||||
;void vp8_copy32xn_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *dst_ptr,
|
||||
; int dst_stride,
|
||||
; int height);
|
||||
global sym(vp8_copy32xn_sse3) PRIVATE
|
||||
sym(vp8_copy32xn_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X3
|
||||
|
||||
.block_copy_sse3_loopx4:
|
||||
lea end_ptr, [src_ptr+src_stride*2]
|
||||
|
||||
movdqu xmm0, XMMWORD PTR [src_ptr]
|
||||
movdqu xmm1, XMMWORD PTR [src_ptr + 16]
|
||||
movdqu xmm2, XMMWORD PTR [src_ptr + src_stride]
|
||||
movdqu xmm3, XMMWORD PTR [src_ptr + src_stride + 16]
|
||||
movdqu xmm4, XMMWORD PTR [end_ptr]
|
||||
movdqu xmm5, XMMWORD PTR [end_ptr + 16]
|
||||
movdqu xmm6, XMMWORD PTR [end_ptr + src_stride]
|
||||
movdqu xmm7, XMMWORD PTR [end_ptr + src_stride + 16]
|
||||
|
||||
lea src_ptr, [src_ptr+src_stride*4]
|
||||
|
||||
lea end_ptr, [ref_ptr+ref_stride*2]
|
||||
|
||||
movdqa XMMWORD PTR [ref_ptr], xmm0
|
||||
movdqa XMMWORD PTR [ref_ptr + 16], xmm1
|
||||
movdqa XMMWORD PTR [ref_ptr + ref_stride], xmm2
|
||||
movdqa XMMWORD PTR [ref_ptr + ref_stride + 16], xmm3
|
||||
movdqa XMMWORD PTR [end_ptr], xmm4
|
||||
movdqa XMMWORD PTR [end_ptr + 16], xmm5
|
||||
movdqa XMMWORD PTR [end_ptr + ref_stride], xmm6
|
||||
movdqa XMMWORD PTR [end_ptr + ref_stride + 16], xmm7
|
||||
|
||||
lea ref_ptr, [ref_ptr+ref_stride*4]
|
||||
|
||||
sub height, 4
|
||||
cmp height, 4
|
||||
jge .block_copy_sse3_loopx4
|
||||
|
||||
;Check to see if there is more rows need to be copied.
|
||||
cmp height, 0
|
||||
je .copy_is_done
|
||||
|
||||
.block_copy_sse3_loop:
|
||||
movdqu xmm0, XMMWORD PTR [src_ptr]
|
||||
movdqu xmm1, XMMWORD PTR [src_ptr + 16]
|
||||
lea src_ptr, [src_ptr+src_stride]
|
||||
|
||||
movdqa XMMWORD PTR [ref_ptr], xmm0
|
||||
movdqa XMMWORD PTR [ref_ptr + 16], xmm1
|
||||
lea ref_ptr, [ref_ptr+ref_stride]
|
||||
|
||||
sub height, 1
|
||||
jne .block_copy_sse3_loop
|
||||
|
||||
.copy_is_done:
|
||||
STACK_FRAME_DESTROY_X3
|
|
@ -36,7 +36,7 @@ void vp8_dequant_idct_add_y_block_mmx
|
|||
else if (eobs[0] == 1)
|
||||
{
|
||||
vp8_dc_only_idct_add_mmx (q[0]*dq[0], dst, stride, dst, stride);
|
||||
vpx_memset(q, 0, 2 * sizeof(q[0]));
|
||||
memset(q, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
if (eobs[1] > 1)
|
||||
|
@ -45,7 +45,7 @@ void vp8_dequant_idct_add_y_block_mmx
|
|||
{
|
||||
vp8_dc_only_idct_add_mmx (q[16]*dq[0], dst+4, stride,
|
||||
dst+4, stride);
|
||||
vpx_memset(q + 16, 0, 2 * sizeof(q[0]));
|
||||
memset(q + 16, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
if (eobs[2] > 1)
|
||||
|
@ -54,7 +54,7 @@ void vp8_dequant_idct_add_y_block_mmx
|
|||
{
|
||||
vp8_dc_only_idct_add_mmx (q[32]*dq[0], dst+8, stride,
|
||||
dst+8, stride);
|
||||
vpx_memset(q + 32, 0, 2 * sizeof(q[0]));
|
||||
memset(q + 32, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
if (eobs[3] > 1)
|
||||
|
@ -63,7 +63,7 @@ void vp8_dequant_idct_add_y_block_mmx
|
|||
{
|
||||
vp8_dc_only_idct_add_mmx (q[48]*dq[0], dst+12, stride,
|
||||
dst+12, stride);
|
||||
vpx_memset(q + 48, 0, 2 * sizeof(q[0]));
|
||||
memset(q + 48, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
q += 64;
|
||||
|
@ -85,7 +85,7 @@ void vp8_dequant_idct_add_uv_block_mmx
|
|||
else if (eobs[0] == 1)
|
||||
{
|
||||
vp8_dc_only_idct_add_mmx (q[0]*dq[0], dstu, stride, dstu, stride);
|
||||
vpx_memset(q, 0, 2 * sizeof(q[0]));
|
||||
memset(q, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
if (eobs[1] > 1)
|
||||
|
@ -94,7 +94,7 @@ void vp8_dequant_idct_add_uv_block_mmx
|
|||
{
|
||||
vp8_dc_only_idct_add_mmx (q[16]*dq[0], dstu+4, stride,
|
||||
dstu+4, stride);
|
||||
vpx_memset(q + 16, 0, 2 * sizeof(q[0]));
|
||||
memset(q + 16, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
q += 32;
|
||||
|
@ -109,7 +109,7 @@ void vp8_dequant_idct_add_uv_block_mmx
|
|||
else if (eobs[0] == 1)
|
||||
{
|
||||
vp8_dc_only_idct_add_mmx (q[0]*dq[0], dstv, stride, dstv, stride);
|
||||
vpx_memset(q, 0, 2 * sizeof(q[0]));
|
||||
memset(q, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
if (eobs[1] > 1)
|
||||
|
@ -118,7 +118,7 @@ void vp8_dequant_idct_add_uv_block_mmx
|
|||
{
|
||||
vp8_dc_only_idct_add_mmx (q[16]*dq[0], dstv+4, stride,
|
||||
dstv+4, stride);
|
||||
vpx_memset(q + 16, 0, 2 * sizeof(q[0]));
|
||||
memset(q + 16, 0, 2 * sizeof(q[0]));
|
||||
}
|
||||
|
||||
q += 32;
|
||||
|
|
|
@ -1,410 +0,0 @@
|
|||
;
|
||||
; 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 "vpx_ports/x86_abi_support.asm"
|
||||
|
||||
;unsigned int vp8_sad16x16_wmt(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride)
|
||||
global sym(vp8_sad16x16_wmt) PRIVATE
|
||||
sym(vp8_sad16x16_wmt):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 4
|
||||
SAVE_XMM 6
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
lea rcx, [rsi+rax*8]
|
||||
|
||||
lea rcx, [rcx+rax*8]
|
||||
pxor xmm6, xmm6
|
||||
|
||||
.x16x16sad_wmt_loop:
|
||||
|
||||
movq xmm0, QWORD PTR [rsi]
|
||||
movq xmm2, QWORD PTR [rsi+8]
|
||||
|
||||
movq xmm1, QWORD PTR [rdi]
|
||||
movq xmm3, QWORD PTR [rdi+8]
|
||||
|
||||
movq xmm4, QWORD PTR [rsi+rax]
|
||||
movq xmm5, QWORD PTR [rdi+rdx]
|
||||
|
||||
|
||||
punpcklbw xmm0, xmm2
|
||||
punpcklbw xmm1, xmm3
|
||||
|
||||
psadbw xmm0, xmm1
|
||||
movq xmm2, QWORD PTR [rsi+rax+8]
|
||||
|
||||
movq xmm3, QWORD PTR [rdi+rdx+8]
|
||||
lea rsi, [rsi+rax*2]
|
||||
|
||||
lea rdi, [rdi+rdx*2]
|
||||
punpcklbw xmm4, xmm2
|
||||
|
||||
punpcklbw xmm5, xmm3
|
||||
psadbw xmm4, xmm5
|
||||
|
||||
paddw xmm6, xmm0
|
||||
paddw xmm6, xmm4
|
||||
|
||||
cmp rsi, rcx
|
||||
jne .x16x16sad_wmt_loop
|
||||
|
||||
movq xmm0, xmm6
|
||||
psrldq xmm6, 8
|
||||
|
||||
paddw xmm0, xmm6
|
||||
movq rax, xmm0
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
RESTORE_XMM
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
;unsigned int vp8_sad8x16_wmt(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int max_sad)
|
||||
global sym(vp8_sad8x16_wmt) PRIVATE
|
||||
sym(vp8_sad8x16_wmt):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
push rbx
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rbx, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
lea rcx, [rsi+rbx*8]
|
||||
|
||||
lea rcx, [rcx+rbx*8]
|
||||
pxor mm7, mm7
|
||||
|
||||
.x8x16sad_wmt_loop:
|
||||
|
||||
movq rax, mm7
|
||||
cmp eax, arg(4)
|
||||
ja .x8x16sad_wmt_early_exit
|
||||
|
||||
movq mm0, QWORD PTR [rsi]
|
||||
movq mm1, QWORD PTR [rdi]
|
||||
|
||||
movq mm2, QWORD PTR [rsi+rbx]
|
||||
movq mm3, QWORD PTR [rdi+rdx]
|
||||
|
||||
psadbw mm0, mm1
|
||||
psadbw mm2, mm3
|
||||
|
||||
lea rsi, [rsi+rbx*2]
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
paddw mm7, mm0
|
||||
paddw mm7, mm2
|
||||
|
||||
cmp rsi, rcx
|
||||
jne .x8x16sad_wmt_loop
|
||||
|
||||
movq rax, mm7
|
||||
|
||||
.x8x16sad_wmt_early_exit:
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbx
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
;unsigned int vp8_sad8x8_wmt(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride)
|
||||
global sym(vp8_sad8x8_wmt) PRIVATE
|
||||
sym(vp8_sad8x8_wmt):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
push rbx
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rbx, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
lea rcx, [rsi+rbx*8]
|
||||
pxor mm7, mm7
|
||||
|
||||
.x8x8sad_wmt_loop:
|
||||
|
||||
movq rax, mm7
|
||||
cmp eax, arg(4)
|
||||
ja .x8x8sad_wmt_early_exit
|
||||
|
||||
movq mm0, QWORD PTR [rsi]
|
||||
movq mm1, QWORD PTR [rdi]
|
||||
|
||||
psadbw mm0, mm1
|
||||
lea rsi, [rsi+rbx]
|
||||
|
||||
add rdi, rdx
|
||||
paddw mm7, mm0
|
||||
|
||||
cmp rsi, rcx
|
||||
jne .x8x8sad_wmt_loop
|
||||
|
||||
movq rax, mm7
|
||||
.x8x8sad_wmt_early_exit:
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbx
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
;unsigned int vp8_sad4x4_wmt(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride)
|
||||
global sym(vp8_sad4x4_wmt) PRIVATE
|
||||
sym(vp8_sad4x4_wmt):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 4
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
movd mm0, DWORD PTR [rsi]
|
||||
movd mm1, DWORD PTR [rdi]
|
||||
|
||||
movd mm2, DWORD PTR [rsi+rax]
|
||||
movd mm3, DWORD PTR [rdi+rdx]
|
||||
|
||||
punpcklbw mm0, mm2
|
||||
punpcklbw mm1, mm3
|
||||
|
||||
psadbw mm0, mm1
|
||||
lea rsi, [rsi+rax*2]
|
||||
|
||||
lea rdi, [rdi+rdx*2]
|
||||
movd mm4, DWORD PTR [rsi]
|
||||
|
||||
movd mm5, DWORD PTR [rdi]
|
||||
movd mm6, DWORD PTR [rsi+rax]
|
||||
|
||||
movd mm7, DWORD PTR [rdi+rdx]
|
||||
punpcklbw mm4, mm6
|
||||
|
||||
punpcklbw mm5, mm7
|
||||
psadbw mm4, mm5
|
||||
|
||||
paddw mm0, mm4
|
||||
movq rax, mm0
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
;unsigned int vp8_sad16x8_wmt(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride)
|
||||
global sym(vp8_sad16x8_wmt) PRIVATE
|
||||
sym(vp8_sad16x8_wmt):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
push rbx
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rbx, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
lea rcx, [rsi+rbx*8]
|
||||
pxor mm7, mm7
|
||||
|
||||
.x16x8sad_wmt_loop:
|
||||
|
||||
movq rax, mm7
|
||||
cmp eax, arg(4)
|
||||
ja .x16x8sad_wmt_early_exit
|
||||
|
||||
movq mm0, QWORD PTR [rsi]
|
||||
movq mm2, QWORD PTR [rsi+8]
|
||||
|
||||
movq mm1, QWORD PTR [rdi]
|
||||
movq mm3, QWORD PTR [rdi+8]
|
||||
|
||||
movq mm4, QWORD PTR [rsi+rbx]
|
||||
movq mm5, QWORD PTR [rdi+rdx]
|
||||
|
||||
psadbw mm0, mm1
|
||||
psadbw mm2, mm3
|
||||
|
||||
movq mm1, QWORD PTR [rsi+rbx+8]
|
||||
movq mm3, QWORD PTR [rdi+rdx+8]
|
||||
|
||||
psadbw mm4, mm5
|
||||
psadbw mm1, mm3
|
||||
|
||||
lea rsi, [rsi+rbx*2]
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
paddw mm0, mm2
|
||||
paddw mm4, mm1
|
||||
|
||||
paddw mm7, mm0
|
||||
paddw mm7, mm4
|
||||
|
||||
cmp rsi, rcx
|
||||
jne .x16x8sad_wmt_loop
|
||||
|
||||
movq rax, mm7
|
||||
|
||||
.x16x8sad_wmt_early_exit:
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbx
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
;void vp8_copy32xn_sse2(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *dst_ptr,
|
||||
; int dst_stride,
|
||||
; int height);
|
||||
global sym(vp8_copy32xn_sse2) PRIVATE
|
||||
sym(vp8_copy32xn_sse2):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
SAVE_XMM 7
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;dst_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;dst_stride
|
||||
movsxd rcx, dword ptr arg(4) ;height
|
||||
|
||||
.block_copy_sse2_loopx4:
|
||||
movdqu xmm0, XMMWORD PTR [rsi]
|
||||
movdqu xmm1, XMMWORD PTR [rsi + 16]
|
||||
movdqu xmm2, XMMWORD PTR [rsi + rax]
|
||||
movdqu xmm3, XMMWORD PTR [rsi + rax + 16]
|
||||
|
||||
lea rsi, [rsi+rax*2]
|
||||
|
||||
movdqu xmm4, XMMWORD PTR [rsi]
|
||||
movdqu xmm5, XMMWORD PTR [rsi + 16]
|
||||
movdqu xmm6, XMMWORD PTR [rsi + rax]
|
||||
movdqu xmm7, XMMWORD PTR [rsi + rax + 16]
|
||||
|
||||
lea rsi, [rsi+rax*2]
|
||||
|
||||
movdqa XMMWORD PTR [rdi], xmm0
|
||||
movdqa XMMWORD PTR [rdi + 16], xmm1
|
||||
movdqa XMMWORD PTR [rdi + rdx], xmm2
|
||||
movdqa XMMWORD PTR [rdi + rdx + 16], xmm3
|
||||
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
movdqa XMMWORD PTR [rdi], xmm4
|
||||
movdqa XMMWORD PTR [rdi + 16], xmm5
|
||||
movdqa XMMWORD PTR [rdi + rdx], xmm6
|
||||
movdqa XMMWORD PTR [rdi + rdx + 16], xmm7
|
||||
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
sub rcx, 4
|
||||
cmp rcx, 4
|
||||
jge .block_copy_sse2_loopx4
|
||||
|
||||
cmp rcx, 0
|
||||
je .copy_is_done
|
||||
|
||||
.block_copy_sse2_loop:
|
||||
movdqu xmm0, XMMWORD PTR [rsi]
|
||||
movdqu xmm1, XMMWORD PTR [rsi + 16]
|
||||
lea rsi, [rsi+rax]
|
||||
|
||||
movdqa XMMWORD PTR [rdi], xmm0
|
||||
movdqa XMMWORD PTR [rdi + 16], xmm1
|
||||
lea rdi, [rdi+rdx]
|
||||
|
||||
sub rcx, 1
|
||||
jne .block_copy_sse2_loop
|
||||
|
||||
.copy_is_done:
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
RESTORE_XMM
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
|
@ -1,960 +0,0 @@
|
|||
;
|
||||
; 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 "vpx_ports/x86_abi_support.asm"
|
||||
|
||||
%macro STACK_FRAME_CREATE_X3 0
|
||||
%if ABI_IS_32BIT
|
||||
%define src_ptr rsi
|
||||
%define src_stride rax
|
||||
%define ref_ptr rdi
|
||||
%define ref_stride rdx
|
||||
%define end_ptr rcx
|
||||
%define ret_var rbx
|
||||
%define result_ptr arg(4)
|
||||
%define max_sad arg(4)
|
||||
%define height dword ptr arg(4)
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
push rsi
|
||||
push rdi
|
||||
push rbx
|
||||
|
||||
mov rsi, arg(0) ; src_ptr
|
||||
mov rdi, arg(2) ; ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ; src_stride
|
||||
movsxd rdx, dword ptr arg(3) ; ref_stride
|
||||
%else
|
||||
%if LIBVPX_YASM_WIN64
|
||||
SAVE_XMM 7, u
|
||||
%define src_ptr rcx
|
||||
%define src_stride rdx
|
||||
%define ref_ptr r8
|
||||
%define ref_stride r9
|
||||
%define end_ptr r10
|
||||
%define ret_var r11
|
||||
%define result_ptr [rsp+xmm_stack_space+8+4*8]
|
||||
%define max_sad [rsp+xmm_stack_space+8+4*8]
|
||||
%define height dword ptr [rsp+xmm_stack_space+8+4*8]
|
||||
%else
|
||||
%define src_ptr rdi
|
||||
%define src_stride rsi
|
||||
%define ref_ptr rdx
|
||||
%define ref_stride rcx
|
||||
%define end_ptr r9
|
||||
%define ret_var r10
|
||||
%define result_ptr r8
|
||||
%define max_sad r8
|
||||
%define height r8
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%endmacro
|
||||
|
||||
%macro STACK_FRAME_DESTROY_X3 0
|
||||
%define src_ptr
|
||||
%define src_stride
|
||||
%define ref_ptr
|
||||
%define ref_stride
|
||||
%define end_ptr
|
||||
%define ret_var
|
||||
%define result_ptr
|
||||
%define max_sad
|
||||
%define height
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
pop rbx
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbp
|
||||
%else
|
||||
%if LIBVPX_YASM_WIN64
|
||||
RESTORE_XMM
|
||||
%endif
|
||||
%endif
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro STACK_FRAME_CREATE_X4 0
|
||||
%if ABI_IS_32BIT
|
||||
%define src_ptr rsi
|
||||
%define src_stride rax
|
||||
%define r0_ptr rcx
|
||||
%define r1_ptr rdx
|
||||
%define r2_ptr rbx
|
||||
%define r3_ptr rdi
|
||||
%define ref_stride rbp
|
||||
%define result_ptr arg(4)
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
push rsi
|
||||
push rdi
|
||||
push rbx
|
||||
|
||||
push rbp
|
||||
mov rdi, arg(2) ; ref_ptr_base
|
||||
|
||||
LOAD_X4_ADDRESSES rdi, rcx, rdx, rax, rdi
|
||||
|
||||
mov rsi, arg(0) ; src_ptr
|
||||
|
||||
movsxd rbx, dword ptr arg(1) ; src_stride
|
||||
movsxd rbp, dword ptr arg(3) ; ref_stride
|
||||
|
||||
xchg rbx, rax
|
||||
%else
|
||||
%if LIBVPX_YASM_WIN64
|
||||
SAVE_XMM 7, u
|
||||
%define src_ptr rcx
|
||||
%define src_stride rdx
|
||||
%define r0_ptr rsi
|
||||
%define r1_ptr r10
|
||||
%define r2_ptr r11
|
||||
%define r3_ptr r8
|
||||
%define ref_stride r9
|
||||
%define result_ptr [rsp+xmm_stack_space+16+4*8]
|
||||
push rsi
|
||||
|
||||
LOAD_X4_ADDRESSES r8, r0_ptr, r1_ptr, r2_ptr, r3_ptr
|
||||
%else
|
||||
%define src_ptr rdi
|
||||
%define src_stride rsi
|
||||
%define r0_ptr r9
|
||||
%define r1_ptr r10
|
||||
%define r2_ptr r11
|
||||
%define r3_ptr rdx
|
||||
%define ref_stride rcx
|
||||
%define result_ptr r8
|
||||
|
||||
LOAD_X4_ADDRESSES rdx, r0_ptr, r1_ptr, r2_ptr, r3_ptr
|
||||
|
||||
%endif
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro STACK_FRAME_DESTROY_X4 0
|
||||
%define src_ptr
|
||||
%define src_stride
|
||||
%define r0_ptr
|
||||
%define r1_ptr
|
||||
%define r2_ptr
|
||||
%define r3_ptr
|
||||
%define ref_stride
|
||||
%define result_ptr
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
pop rbx
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbp
|
||||
%else
|
||||
%if LIBVPX_YASM_WIN64
|
||||
pop rsi
|
||||
RESTORE_XMM
|
||||
%endif
|
||||
%endif
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro PROCESS_16X2X3 5
|
||||
%if %1==0
|
||||
movdqa xmm0, XMMWORD PTR [%2]
|
||||
lddqu xmm5, XMMWORD PTR [%3]
|
||||
lddqu xmm6, XMMWORD PTR [%3+1]
|
||||
lddqu xmm7, XMMWORD PTR [%3+2]
|
||||
|
||||
psadbw xmm5, xmm0
|
||||
psadbw xmm6, xmm0
|
||||
psadbw xmm7, xmm0
|
||||
%else
|
||||
movdqa xmm0, XMMWORD PTR [%2]
|
||||
lddqu xmm1, XMMWORD PTR [%3]
|
||||
lddqu xmm2, XMMWORD PTR [%3+1]
|
||||
lddqu xmm3, XMMWORD PTR [%3+2]
|
||||
|
||||
psadbw xmm1, xmm0
|
||||
psadbw xmm2, xmm0
|
||||
psadbw xmm3, xmm0
|
||||
|
||||
paddw xmm5, xmm1
|
||||
paddw xmm6, xmm2
|
||||
paddw xmm7, xmm3
|
||||
%endif
|
||||
movdqa xmm0, XMMWORD PTR [%2+%4]
|
||||
lddqu xmm1, XMMWORD PTR [%3+%5]
|
||||
lddqu xmm2, XMMWORD PTR [%3+%5+1]
|
||||
lddqu xmm3, XMMWORD PTR [%3+%5+2]
|
||||
|
||||
%if %1==0 || %1==1
|
||||
lea %2, [%2+%4*2]
|
||||
lea %3, [%3+%5*2]
|
||||
%endif
|
||||
|
||||
psadbw xmm1, xmm0
|
||||
psadbw xmm2, xmm0
|
||||
psadbw xmm3, xmm0
|
||||
|
||||
paddw xmm5, xmm1
|
||||
paddw xmm6, xmm2
|
||||
paddw xmm7, xmm3
|
||||
%endmacro
|
||||
|
||||
%macro PROCESS_8X2X3 5
|
||||
%if %1==0
|
||||
movq mm0, QWORD PTR [%2]
|
||||
movq mm5, QWORD PTR [%3]
|
||||
movq mm6, QWORD PTR [%3+1]
|
||||
movq mm7, QWORD PTR [%3+2]
|
||||
|
||||
psadbw mm5, mm0
|
||||
psadbw mm6, mm0
|
||||
psadbw mm7, mm0
|
||||
%else
|
||||
movq mm0, QWORD PTR [%2]
|
||||
movq mm1, QWORD PTR [%3]
|
||||
movq mm2, QWORD PTR [%3+1]
|
||||
movq mm3, QWORD PTR [%3+2]
|
||||
|
||||
psadbw mm1, mm0
|
||||
psadbw mm2, mm0
|
||||
psadbw mm3, mm0
|
||||
|
||||
paddw mm5, mm1
|
||||
paddw mm6, mm2
|
||||
paddw mm7, mm3
|
||||
%endif
|
||||
movq mm0, QWORD PTR [%2+%4]
|
||||
movq mm1, QWORD PTR [%3+%5]
|
||||
movq mm2, QWORD PTR [%3+%5+1]
|
||||
movq mm3, QWORD PTR [%3+%5+2]
|
||||
|
||||
%if %1==0 || %1==1
|
||||
lea %2, [%2+%4*2]
|
||||
lea %3, [%3+%5*2]
|
||||
%endif
|
||||
|
||||
psadbw mm1, mm0
|
||||
psadbw mm2, mm0
|
||||
psadbw mm3, mm0
|
||||
|
||||
paddw mm5, mm1
|
||||
paddw mm6, mm2
|
||||
paddw mm7, mm3
|
||||
%endmacro
|
||||
|
||||
%macro LOAD_X4_ADDRESSES 5
|
||||
mov %2, [%1+REG_SZ_BYTES*0]
|
||||
mov %3, [%1+REG_SZ_BYTES*1]
|
||||
|
||||
mov %4, [%1+REG_SZ_BYTES*2]
|
||||
mov %5, [%1+REG_SZ_BYTES*3]
|
||||
%endmacro
|
||||
|
||||
%macro PROCESS_16X2X4 8
|
||||
%if %1==0
|
||||
movdqa xmm0, XMMWORD PTR [%2]
|
||||
lddqu xmm4, XMMWORD PTR [%3]
|
||||
lddqu xmm5, XMMWORD PTR [%4]
|
||||
lddqu xmm6, XMMWORD PTR [%5]
|
||||
lddqu xmm7, XMMWORD PTR [%6]
|
||||
|
||||
psadbw xmm4, xmm0
|
||||
psadbw xmm5, xmm0
|
||||
psadbw xmm6, xmm0
|
||||
psadbw xmm7, xmm0
|
||||
%else
|
||||
movdqa xmm0, XMMWORD PTR [%2]
|
||||
lddqu xmm1, XMMWORD PTR [%3]
|
||||
lddqu xmm2, XMMWORD PTR [%4]
|
||||
lddqu xmm3, XMMWORD PTR [%5]
|
||||
|
||||
psadbw xmm1, xmm0
|
||||
psadbw xmm2, xmm0
|
||||
psadbw xmm3, xmm0
|
||||
|
||||
paddw xmm4, xmm1
|
||||
lddqu xmm1, XMMWORD PTR [%6]
|
||||
paddw xmm5, xmm2
|
||||
paddw xmm6, xmm3
|
||||
|
||||
psadbw xmm1, xmm0
|
||||
paddw xmm7, xmm1
|
||||
%endif
|
||||
movdqa xmm0, XMMWORD PTR [%2+%7]
|
||||
lddqu xmm1, XMMWORD PTR [%3+%8]
|
||||
lddqu xmm2, XMMWORD PTR [%4+%8]
|
||||
lddqu xmm3, XMMWORD PTR [%5+%8]
|
||||
|
||||
psadbw xmm1, xmm0
|
||||
psadbw xmm2, xmm0
|
||||
psadbw xmm3, xmm0
|
||||
|
||||
paddw xmm4, xmm1
|
||||
lddqu xmm1, XMMWORD PTR [%6+%8]
|
||||
paddw xmm5, xmm2
|
||||
paddw xmm6, xmm3
|
||||
|
||||
%if %1==0 || %1==1
|
||||
lea %2, [%2+%7*2]
|
||||
lea %3, [%3+%8*2]
|
||||
|
||||
lea %4, [%4+%8*2]
|
||||
lea %5, [%5+%8*2]
|
||||
|
||||
lea %6, [%6+%8*2]
|
||||
%endif
|
||||
psadbw xmm1, xmm0
|
||||
paddw xmm7, xmm1
|
||||
|
||||
%endmacro
|
||||
|
||||
%macro PROCESS_8X2X4 8
|
||||
%if %1==0
|
||||
movq mm0, QWORD PTR [%2]
|
||||
movq mm4, QWORD PTR [%3]
|
||||
movq mm5, QWORD PTR [%4]
|
||||
movq mm6, QWORD PTR [%5]
|
||||
movq mm7, QWORD PTR [%6]
|
||||
|
||||
psadbw mm4, mm0
|
||||
psadbw mm5, mm0
|
||||
psadbw mm6, mm0
|
||||
psadbw mm7, mm0
|
||||
%else
|
||||
movq mm0, QWORD PTR [%2]
|
||||
movq mm1, QWORD PTR [%3]
|
||||
movq mm2, QWORD PTR [%4]
|
||||
movq mm3, QWORD PTR [%5]
|
||||
|
||||
psadbw mm1, mm0
|
||||
psadbw mm2, mm0
|
||||
psadbw mm3, mm0
|
||||
|
||||
paddw mm4, mm1
|
||||
movq mm1, QWORD PTR [%6]
|
||||
paddw mm5, mm2
|
||||
paddw mm6, mm3
|
||||
|
||||
psadbw mm1, mm0
|
||||
paddw mm7, mm1
|
||||
%endif
|
||||
movq mm0, QWORD PTR [%2+%7]
|
||||
movq mm1, QWORD PTR [%3+%8]
|
||||
movq mm2, QWORD PTR [%4+%8]
|
||||
movq mm3, QWORD PTR [%5+%8]
|
||||
|
||||
psadbw mm1, mm0
|
||||
psadbw mm2, mm0
|
||||
psadbw mm3, mm0
|
||||
|
||||
paddw mm4, mm1
|
||||
movq mm1, QWORD PTR [%6+%8]
|
||||
paddw mm5, mm2
|
||||
paddw mm6, mm3
|
||||
|
||||
%if %1==0 || %1==1
|
||||
lea %2, [%2+%7*2]
|
||||
lea %3, [%3+%8*2]
|
||||
|
||||
lea %4, [%4+%8*2]
|
||||
lea %5, [%5+%8*2]
|
||||
|
||||
lea %6, [%6+%8*2]
|
||||
%endif
|
||||
psadbw mm1, mm0
|
||||
paddw mm7, mm1
|
||||
|
||||
%endmacro
|
||||
|
||||
;void int vp8_sad16x16x3_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad16x16x3_sse3) PRIVATE
|
||||
sym(vp8_sad16x16x3_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X3
|
||||
|
||||
PROCESS_16X2X3 0, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 2, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
|
||||
mov rcx, result_ptr
|
||||
|
||||
movq xmm0, xmm5
|
||||
psrldq xmm5, 8
|
||||
|
||||
paddw xmm0, xmm5
|
||||
movd [rcx], xmm0
|
||||
;-
|
||||
movq xmm0, xmm6
|
||||
psrldq xmm6, 8
|
||||
|
||||
paddw xmm0, xmm6
|
||||
movd [rcx+4], xmm0
|
||||
;-
|
||||
movq xmm0, xmm7
|
||||
psrldq xmm7, 8
|
||||
|
||||
paddw xmm0, xmm7
|
||||
movd [rcx+8], xmm0
|
||||
|
||||
STACK_FRAME_DESTROY_X3
|
||||
|
||||
;void int vp8_sad16x8x3_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad16x8x3_sse3) PRIVATE
|
||||
sym(vp8_sad16x8x3_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X3
|
||||
|
||||
PROCESS_16X2X3 0, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X3 2, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
|
||||
mov rcx, result_ptr
|
||||
|
||||
movq xmm0, xmm5
|
||||
psrldq xmm5, 8
|
||||
|
||||
paddw xmm0, xmm5
|
||||
movd [rcx], xmm0
|
||||
;-
|
||||
movq xmm0, xmm6
|
||||
psrldq xmm6, 8
|
||||
|
||||
paddw xmm0, xmm6
|
||||
movd [rcx+4], xmm0
|
||||
;-
|
||||
movq xmm0, xmm7
|
||||
psrldq xmm7, 8
|
||||
|
||||
paddw xmm0, xmm7
|
||||
movd [rcx+8], xmm0
|
||||
|
||||
STACK_FRAME_DESTROY_X3
|
||||
|
||||
;void int vp8_sad8x16x3_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad8x16x3_sse3) PRIVATE
|
||||
sym(vp8_sad8x16x3_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X3
|
||||
|
||||
PROCESS_8X2X3 0, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 2, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
|
||||
mov rcx, result_ptr
|
||||
|
||||
punpckldq mm5, mm6
|
||||
|
||||
movq [rcx], mm5
|
||||
movd [rcx+8], mm7
|
||||
|
||||
STACK_FRAME_DESTROY_X3
|
||||
|
||||
;void int vp8_sad8x8x3_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad8x8x3_sse3) PRIVATE
|
||||
sym(vp8_sad8x8x3_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X3
|
||||
|
||||
PROCESS_8X2X3 0, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 1, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X3 2, src_ptr, ref_ptr, src_stride, ref_stride
|
||||
|
||||
mov rcx, result_ptr
|
||||
|
||||
punpckldq mm5, mm6
|
||||
|
||||
movq [rcx], mm5
|
||||
movd [rcx+8], mm7
|
||||
|
||||
STACK_FRAME_DESTROY_X3
|
||||
|
||||
;void int vp8_sad4x4x3_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad4x4x3_sse3) PRIVATE
|
||||
sym(vp8_sad4x4x3_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X3
|
||||
|
||||
movd mm0, DWORD PTR [src_ptr]
|
||||
movd mm1, DWORD PTR [ref_ptr]
|
||||
|
||||
movd mm2, DWORD PTR [src_ptr+src_stride]
|
||||
movd mm3, DWORD PTR [ref_ptr+ref_stride]
|
||||
|
||||
punpcklbw mm0, mm2
|
||||
punpcklbw mm1, mm3
|
||||
|
||||
movd mm4, DWORD PTR [ref_ptr+1]
|
||||
movd mm5, DWORD PTR [ref_ptr+2]
|
||||
|
||||
movd mm2, DWORD PTR [ref_ptr+ref_stride+1]
|
||||
movd mm3, DWORD PTR [ref_ptr+ref_stride+2]
|
||||
|
||||
psadbw mm1, mm0
|
||||
|
||||
punpcklbw mm4, mm2
|
||||
punpcklbw mm5, mm3
|
||||
|
||||
psadbw mm4, mm0
|
||||
psadbw mm5, mm0
|
||||
|
||||
lea src_ptr, [src_ptr+src_stride*2]
|
||||
lea ref_ptr, [ref_ptr+ref_stride*2]
|
||||
|
||||
movd mm0, DWORD PTR [src_ptr]
|
||||
movd mm2, DWORD PTR [ref_ptr]
|
||||
|
||||
movd mm3, DWORD PTR [src_ptr+src_stride]
|
||||
movd mm6, DWORD PTR [ref_ptr+ref_stride]
|
||||
|
||||
punpcklbw mm0, mm3
|
||||
punpcklbw mm2, mm6
|
||||
|
||||
movd mm3, DWORD PTR [ref_ptr+1]
|
||||
movd mm7, DWORD PTR [ref_ptr+2]
|
||||
|
||||
psadbw mm2, mm0
|
||||
|
||||
paddw mm1, mm2
|
||||
|
||||
movd mm2, DWORD PTR [ref_ptr+ref_stride+1]
|
||||
movd mm6, DWORD PTR [ref_ptr+ref_stride+2]
|
||||
|
||||
punpcklbw mm3, mm2
|
||||
punpcklbw mm7, mm6
|
||||
|
||||
psadbw mm3, mm0
|
||||
psadbw mm7, mm0
|
||||
|
||||
paddw mm3, mm4
|
||||
paddw mm7, mm5
|
||||
|
||||
mov rcx, result_ptr
|
||||
|
||||
punpckldq mm1, mm3
|
||||
|
||||
movq [rcx], mm1
|
||||
movd [rcx+8], mm7
|
||||
|
||||
STACK_FRAME_DESTROY_X3
|
||||
|
||||
;unsigned int vp8_sad16x16_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int max_sad)
|
||||
;%define lddqu movdqu
|
||||
global sym(vp8_sad16x16_sse3) PRIVATE
|
||||
sym(vp8_sad16x16_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X3
|
||||
|
||||
mov end_ptr, 4
|
||||
pxor xmm7, xmm7
|
||||
|
||||
.vp8_sad16x16_sse3_loop:
|
||||
movdqa xmm0, XMMWORD PTR [src_ptr]
|
||||
movdqu xmm1, XMMWORD PTR [ref_ptr]
|
||||
movdqa xmm2, XMMWORD PTR [src_ptr+src_stride]
|
||||
movdqu xmm3, XMMWORD PTR [ref_ptr+ref_stride]
|
||||
|
||||
lea src_ptr, [src_ptr+src_stride*2]
|
||||
lea ref_ptr, [ref_ptr+ref_stride*2]
|
||||
|
||||
movdqa xmm4, XMMWORD PTR [src_ptr]
|
||||
movdqu xmm5, XMMWORD PTR [ref_ptr]
|
||||
movdqa xmm6, XMMWORD PTR [src_ptr+src_stride]
|
||||
|
||||
psadbw xmm0, xmm1
|
||||
|
||||
movdqu xmm1, XMMWORD PTR [ref_ptr+ref_stride]
|
||||
|
||||
psadbw xmm2, xmm3
|
||||
psadbw xmm4, xmm5
|
||||
psadbw xmm6, xmm1
|
||||
|
||||
lea src_ptr, [src_ptr+src_stride*2]
|
||||
lea ref_ptr, [ref_ptr+ref_stride*2]
|
||||
|
||||
paddw xmm7, xmm0
|
||||
paddw xmm7, xmm2
|
||||
paddw xmm7, xmm4
|
||||
paddw xmm7, xmm6
|
||||
|
||||
sub end_ptr, 1
|
||||
jne .vp8_sad16x16_sse3_loop
|
||||
|
||||
movq xmm0, xmm7
|
||||
psrldq xmm7, 8
|
||||
paddw xmm0, xmm7
|
||||
movq rax, xmm0
|
||||
|
||||
STACK_FRAME_DESTROY_X3
|
||||
|
||||
;void vp8_copy32xn_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *dst_ptr,
|
||||
; int dst_stride,
|
||||
; int height);
|
||||
global sym(vp8_copy32xn_sse3) PRIVATE
|
||||
sym(vp8_copy32xn_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X3
|
||||
|
||||
.block_copy_sse3_loopx4:
|
||||
lea end_ptr, [src_ptr+src_stride*2]
|
||||
|
||||
movdqu xmm0, XMMWORD PTR [src_ptr]
|
||||
movdqu xmm1, XMMWORD PTR [src_ptr + 16]
|
||||
movdqu xmm2, XMMWORD PTR [src_ptr + src_stride]
|
||||
movdqu xmm3, XMMWORD PTR [src_ptr + src_stride + 16]
|
||||
movdqu xmm4, XMMWORD PTR [end_ptr]
|
||||
movdqu xmm5, XMMWORD PTR [end_ptr + 16]
|
||||
movdqu xmm6, XMMWORD PTR [end_ptr + src_stride]
|
||||
movdqu xmm7, XMMWORD PTR [end_ptr + src_stride + 16]
|
||||
|
||||
lea src_ptr, [src_ptr+src_stride*4]
|
||||
|
||||
lea end_ptr, [ref_ptr+ref_stride*2]
|
||||
|
||||
movdqa XMMWORD PTR [ref_ptr], xmm0
|
||||
movdqa XMMWORD PTR [ref_ptr + 16], xmm1
|
||||
movdqa XMMWORD PTR [ref_ptr + ref_stride], xmm2
|
||||
movdqa XMMWORD PTR [ref_ptr + ref_stride + 16], xmm3
|
||||
movdqa XMMWORD PTR [end_ptr], xmm4
|
||||
movdqa XMMWORD PTR [end_ptr + 16], xmm5
|
||||
movdqa XMMWORD PTR [end_ptr + ref_stride], xmm6
|
||||
movdqa XMMWORD PTR [end_ptr + ref_stride + 16], xmm7
|
||||
|
||||
lea ref_ptr, [ref_ptr+ref_stride*4]
|
||||
|
||||
sub height, 4
|
||||
cmp height, 4
|
||||
jge .block_copy_sse3_loopx4
|
||||
|
||||
;Check to see if there is more rows need to be copied.
|
||||
cmp height, 0
|
||||
je .copy_is_done
|
||||
|
||||
.block_copy_sse3_loop:
|
||||
movdqu xmm0, XMMWORD PTR [src_ptr]
|
||||
movdqu xmm1, XMMWORD PTR [src_ptr + 16]
|
||||
lea src_ptr, [src_ptr+src_stride]
|
||||
|
||||
movdqa XMMWORD PTR [ref_ptr], xmm0
|
||||
movdqa XMMWORD PTR [ref_ptr + 16], xmm1
|
||||
lea ref_ptr, [ref_ptr+ref_stride]
|
||||
|
||||
sub height, 1
|
||||
jne .block_copy_sse3_loop
|
||||
|
||||
.copy_is_done:
|
||||
STACK_FRAME_DESTROY_X3
|
||||
|
||||
;void vp8_sad16x16x4d_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr_base,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad16x16x4d_sse3) PRIVATE
|
||||
sym(vp8_sad16x16x4d_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X4
|
||||
|
||||
PROCESS_16X2X4 0, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 2, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
pop rbp
|
||||
%endif
|
||||
mov rcx, result_ptr
|
||||
|
||||
movq xmm0, xmm4
|
||||
psrldq xmm4, 8
|
||||
|
||||
paddw xmm0, xmm4
|
||||
movd [rcx], xmm0
|
||||
;-
|
||||
movq xmm0, xmm5
|
||||
psrldq xmm5, 8
|
||||
|
||||
paddw xmm0, xmm5
|
||||
movd [rcx+4], xmm0
|
||||
;-
|
||||
movq xmm0, xmm6
|
||||
psrldq xmm6, 8
|
||||
|
||||
paddw xmm0, xmm6
|
||||
movd [rcx+8], xmm0
|
||||
;-
|
||||
movq xmm0, xmm7
|
||||
psrldq xmm7, 8
|
||||
|
||||
paddw xmm0, xmm7
|
||||
movd [rcx+12], xmm0
|
||||
|
||||
STACK_FRAME_DESTROY_X4
|
||||
|
||||
;void vp8_sad16x8x4d_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr_base,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad16x8x4d_sse3) PRIVATE
|
||||
sym(vp8_sad16x8x4d_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X4
|
||||
|
||||
PROCESS_16X2X4 0, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_16X2X4 2, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
pop rbp
|
||||
%endif
|
||||
mov rcx, result_ptr
|
||||
|
||||
movq xmm0, xmm4
|
||||
psrldq xmm4, 8
|
||||
|
||||
paddw xmm0, xmm4
|
||||
movd [rcx], xmm0
|
||||
;-
|
||||
movq xmm0, xmm5
|
||||
psrldq xmm5, 8
|
||||
|
||||
paddw xmm0, xmm5
|
||||
movd [rcx+4], xmm0
|
||||
;-
|
||||
movq xmm0, xmm6
|
||||
psrldq xmm6, 8
|
||||
|
||||
paddw xmm0, xmm6
|
||||
movd [rcx+8], xmm0
|
||||
;-
|
||||
movq xmm0, xmm7
|
||||
psrldq xmm7, 8
|
||||
|
||||
paddw xmm0, xmm7
|
||||
movd [rcx+12], xmm0
|
||||
|
||||
STACK_FRAME_DESTROY_X4
|
||||
|
||||
;void int vp8_sad8x16x4d_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad8x16x4d_sse3) PRIVATE
|
||||
sym(vp8_sad8x16x4d_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X4
|
||||
|
||||
PROCESS_8X2X4 0, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 2, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
pop rbp
|
||||
%endif
|
||||
mov rcx, result_ptr
|
||||
|
||||
punpckldq mm4, mm5
|
||||
punpckldq mm6, mm7
|
||||
|
||||
movq [rcx], mm4
|
||||
movq [rcx+8], mm6
|
||||
|
||||
STACK_FRAME_DESTROY_X4
|
||||
|
||||
;void int vp8_sad8x8x4d_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad8x8x4d_sse3) PRIVATE
|
||||
sym(vp8_sad8x8x4d_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X4
|
||||
|
||||
PROCESS_8X2X4 0, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 1, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
PROCESS_8X2X4 2, src_ptr, r0_ptr, r1_ptr, r2_ptr, r3_ptr, src_stride, ref_stride
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
pop rbp
|
||||
%endif
|
||||
mov rcx, result_ptr
|
||||
|
||||
punpckldq mm4, mm5
|
||||
punpckldq mm6, mm7
|
||||
|
||||
movq [rcx], mm4
|
||||
movq [rcx+8], mm6
|
||||
|
||||
STACK_FRAME_DESTROY_X4
|
||||
|
||||
;void int vp8_sad4x4x4d_sse3(
|
||||
; unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; int *results)
|
||||
global sym(vp8_sad4x4x4d_sse3) PRIVATE
|
||||
sym(vp8_sad4x4x4d_sse3):
|
||||
|
||||
STACK_FRAME_CREATE_X4
|
||||
|
||||
movd mm0, DWORD PTR [src_ptr]
|
||||
movd mm1, DWORD PTR [r0_ptr]
|
||||
|
||||
movd mm2, DWORD PTR [src_ptr+src_stride]
|
||||
movd mm3, DWORD PTR [r0_ptr+ref_stride]
|
||||
|
||||
punpcklbw mm0, mm2
|
||||
punpcklbw mm1, mm3
|
||||
|
||||
movd mm4, DWORD PTR [r1_ptr]
|
||||
movd mm5, DWORD PTR [r2_ptr]
|
||||
|
||||
movd mm6, DWORD PTR [r3_ptr]
|
||||
movd mm2, DWORD PTR [r1_ptr+ref_stride]
|
||||
|
||||
movd mm3, DWORD PTR [r2_ptr+ref_stride]
|
||||
movd mm7, DWORD PTR [r3_ptr+ref_stride]
|
||||
|
||||
psadbw mm1, mm0
|
||||
|
||||
punpcklbw mm4, mm2
|
||||
punpcklbw mm5, mm3
|
||||
|
||||
punpcklbw mm6, mm7
|
||||
psadbw mm4, mm0
|
||||
|
||||
psadbw mm5, mm0
|
||||
psadbw mm6, mm0
|
||||
|
||||
|
||||
|
||||
lea src_ptr, [src_ptr+src_stride*2]
|
||||
lea r0_ptr, [r0_ptr+ref_stride*2]
|
||||
|
||||
lea r1_ptr, [r1_ptr+ref_stride*2]
|
||||
lea r2_ptr, [r2_ptr+ref_stride*2]
|
||||
|
||||
lea r3_ptr, [r3_ptr+ref_stride*2]
|
||||
|
||||
movd mm0, DWORD PTR [src_ptr]
|
||||
movd mm2, DWORD PTR [r0_ptr]
|
||||
|
||||
movd mm3, DWORD PTR [src_ptr+src_stride]
|
||||
movd mm7, DWORD PTR [r0_ptr+ref_stride]
|
||||
|
||||
punpcklbw mm0, mm3
|
||||
punpcklbw mm2, mm7
|
||||
|
||||
movd mm3, DWORD PTR [r1_ptr]
|
||||
movd mm7, DWORD PTR [r2_ptr]
|
||||
|
||||
psadbw mm2, mm0
|
||||
%if ABI_IS_32BIT
|
||||
mov rax, rbp
|
||||
|
||||
pop rbp
|
||||
%define ref_stride rax
|
||||
%endif
|
||||
mov rsi, result_ptr
|
||||
|
||||
paddw mm1, mm2
|
||||
movd [rsi], mm1
|
||||
|
||||
movd mm2, DWORD PTR [r1_ptr+ref_stride]
|
||||
movd mm1, DWORD PTR [r2_ptr+ref_stride]
|
||||
|
||||
punpcklbw mm3, mm2
|
||||
punpcklbw mm7, mm1
|
||||
|
||||
psadbw mm3, mm0
|
||||
psadbw mm7, mm0
|
||||
|
||||
movd mm2, DWORD PTR [r3_ptr]
|
||||
movd mm1, DWORD PTR [r3_ptr+ref_stride]
|
||||
|
||||
paddw mm3, mm4
|
||||
paddw mm7, mm5
|
||||
|
||||
movd [rsi+4], mm3
|
||||
punpcklbw mm2, mm1
|
||||
|
||||
movd [rsi+8], mm7
|
||||
psadbw mm2, mm0
|
||||
|
||||
paddw mm2, mm6
|
||||
movd [rsi+12], mm2
|
||||
|
||||
|
||||
STACK_FRAME_DESTROY_X4
|
||||
|
|
@ -1,353 +0,0 @@
|
|||
;
|
||||
; 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 "vpx_ports/x86_abi_support.asm"
|
||||
|
||||
%macro PROCESS_16X2X8 1
|
||||
%if %1
|
||||
movdqa xmm0, XMMWORD PTR [rsi]
|
||||
movq xmm1, MMWORD PTR [rdi]
|
||||
movq xmm3, MMWORD PTR [rdi+8]
|
||||
movq xmm2, MMWORD PTR [rdi+16]
|
||||
punpcklqdq xmm1, xmm3
|
||||
punpcklqdq xmm3, xmm2
|
||||
|
||||
movdqa xmm2, xmm1
|
||||
mpsadbw xmm1, xmm0, 0x0
|
||||
mpsadbw xmm2, xmm0, 0x5
|
||||
|
||||
psrldq xmm0, 8
|
||||
|
||||
movdqa xmm4, xmm3
|
||||
mpsadbw xmm3, xmm0, 0x0
|
||||
mpsadbw xmm4, xmm0, 0x5
|
||||
|
||||
paddw xmm1, xmm2
|
||||
paddw xmm1, xmm3
|
||||
paddw xmm1, xmm4
|
||||
%else
|
||||
movdqa xmm0, XMMWORD PTR [rsi]
|
||||
movq xmm5, MMWORD PTR [rdi]
|
||||
movq xmm3, MMWORD PTR [rdi+8]
|
||||
movq xmm2, MMWORD PTR [rdi+16]
|
||||
punpcklqdq xmm5, xmm3
|
||||
punpcklqdq xmm3, xmm2
|
||||
|
||||
movdqa xmm2, xmm5
|
||||
mpsadbw xmm5, xmm0, 0x0
|
||||
mpsadbw xmm2, xmm0, 0x5
|
||||
|
||||
psrldq xmm0, 8
|
||||
|
||||
movdqa xmm4, xmm3
|
||||
mpsadbw xmm3, xmm0, 0x0
|
||||
mpsadbw xmm4, xmm0, 0x5
|
||||
|
||||
paddw xmm5, xmm2
|
||||
paddw xmm5, xmm3
|
||||
paddw xmm5, xmm4
|
||||
|
||||
paddw xmm1, xmm5
|
||||
%endif
|
||||
movdqa xmm0, XMMWORD PTR [rsi + rax]
|
||||
movq xmm5, MMWORD PTR [rdi+ rdx]
|
||||
movq xmm3, MMWORD PTR [rdi+ rdx+8]
|
||||
movq xmm2, MMWORD PTR [rdi+ rdx+16]
|
||||
punpcklqdq xmm5, xmm3
|
||||
punpcklqdq xmm3, xmm2
|
||||
|
||||
lea rsi, [rsi+rax*2]
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
movdqa xmm2, xmm5
|
||||
mpsadbw xmm5, xmm0, 0x0
|
||||
mpsadbw xmm2, xmm0, 0x5
|
||||
|
||||
psrldq xmm0, 8
|
||||
movdqa xmm4, xmm3
|
||||
mpsadbw xmm3, xmm0, 0x0
|
||||
mpsadbw xmm4, xmm0, 0x5
|
||||
|
||||
paddw xmm5, xmm2
|
||||
paddw xmm5, xmm3
|
||||
paddw xmm5, xmm4
|
||||
|
||||
paddw xmm1, xmm5
|
||||
%endmacro
|
||||
|
||||
%macro PROCESS_8X2X8 1
|
||||
%if %1
|
||||
movq xmm0, MMWORD PTR [rsi]
|
||||
movq xmm1, MMWORD PTR [rdi]
|
||||
movq xmm3, MMWORD PTR [rdi+8]
|
||||
punpcklqdq xmm1, xmm3
|
||||
|
||||
movdqa xmm2, xmm1
|
||||
mpsadbw xmm1, xmm0, 0x0
|
||||
mpsadbw xmm2, xmm0, 0x5
|
||||
paddw xmm1, xmm2
|
||||
%else
|
||||
movq xmm0, MMWORD PTR [rsi]
|
||||
movq xmm5, MMWORD PTR [rdi]
|
||||
movq xmm3, MMWORD PTR [rdi+8]
|
||||
punpcklqdq xmm5, xmm3
|
||||
|
||||
movdqa xmm2, xmm5
|
||||
mpsadbw xmm5, xmm0, 0x0
|
||||
mpsadbw xmm2, xmm0, 0x5
|
||||
paddw xmm5, xmm2
|
||||
|
||||
paddw xmm1, xmm5
|
||||
%endif
|
||||
movq xmm0, MMWORD PTR [rsi + rax]
|
||||
movq xmm5, MMWORD PTR [rdi+ rdx]
|
||||
movq xmm3, MMWORD PTR [rdi+ rdx+8]
|
||||
punpcklqdq xmm5, xmm3
|
||||
|
||||
lea rsi, [rsi+rax*2]
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
movdqa xmm2, xmm5
|
||||
mpsadbw xmm5, xmm0, 0x0
|
||||
mpsadbw xmm2, xmm0, 0x5
|
||||
paddw xmm5, xmm2
|
||||
|
||||
paddw xmm1, xmm5
|
||||
%endmacro
|
||||
|
||||
%macro PROCESS_4X2X8 1
|
||||
%if %1
|
||||
movd xmm0, [rsi]
|
||||
movq xmm1, MMWORD PTR [rdi]
|
||||
movq xmm3, MMWORD PTR [rdi+8]
|
||||
punpcklqdq xmm1, xmm3
|
||||
|
||||
mpsadbw xmm1, xmm0, 0x0
|
||||
%else
|
||||
movd xmm0, [rsi]
|
||||
movq xmm5, MMWORD PTR [rdi]
|
||||
movq xmm3, MMWORD PTR [rdi+8]
|
||||
punpcklqdq xmm5, xmm3
|
||||
|
||||
mpsadbw xmm5, xmm0, 0x0
|
||||
|
||||
paddw xmm1, xmm5
|
||||
%endif
|
||||
movd xmm0, [rsi + rax]
|
||||
movq xmm5, MMWORD PTR [rdi+ rdx]
|
||||
movq xmm3, MMWORD PTR [rdi+ rdx+8]
|
||||
punpcklqdq xmm5, xmm3
|
||||
|
||||
lea rsi, [rsi+rax*2]
|
||||
lea rdi, [rdi+rdx*2]
|
||||
|
||||
mpsadbw xmm5, xmm0, 0x0
|
||||
|
||||
paddw xmm1, xmm5
|
||||
%endmacro
|
||||
|
||||
|
||||
;void vp8_sad16x16x8_sse4(
|
||||
; const unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; const unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; unsigned short *sad_array);
|
||||
global sym(vp8_sad16x16x8_sse4) PRIVATE
|
||||
sym(vp8_sad16x16x8_sse4):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
PROCESS_16X2X8 1
|
||||
PROCESS_16X2X8 0
|
||||
PROCESS_16X2X8 0
|
||||
PROCESS_16X2X8 0
|
||||
PROCESS_16X2X8 0
|
||||
PROCESS_16X2X8 0
|
||||
PROCESS_16X2X8 0
|
||||
PROCESS_16X2X8 0
|
||||
|
||||
mov rdi, arg(4) ;Results
|
||||
movdqa XMMWORD PTR [rdi], xmm1
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
;void vp8_sad16x8x8_sse4(
|
||||
; const unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; const unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; unsigned short *sad_array
|
||||
;);
|
||||
global sym(vp8_sad16x8x8_sse4) PRIVATE
|
||||
sym(vp8_sad16x8x8_sse4):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
PROCESS_16X2X8 1
|
||||
PROCESS_16X2X8 0
|
||||
PROCESS_16X2X8 0
|
||||
PROCESS_16X2X8 0
|
||||
|
||||
mov rdi, arg(4) ;Results
|
||||
movdqa XMMWORD PTR [rdi], xmm1
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
;void vp8_sad8x8x8_sse4(
|
||||
; const unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; const unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; unsigned short *sad_array
|
||||
;);
|
||||
global sym(vp8_sad8x8x8_sse4) PRIVATE
|
||||
sym(vp8_sad8x8x8_sse4):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
PROCESS_8X2X8 1
|
||||
PROCESS_8X2X8 0
|
||||
PROCESS_8X2X8 0
|
||||
PROCESS_8X2X8 0
|
||||
|
||||
mov rdi, arg(4) ;Results
|
||||
movdqa XMMWORD PTR [rdi], xmm1
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
;void vp8_sad8x16x8_sse4(
|
||||
; const unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; const unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; unsigned short *sad_array
|
||||
;);
|
||||
global sym(vp8_sad8x16x8_sse4) PRIVATE
|
||||
sym(vp8_sad8x16x8_sse4):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
PROCESS_8X2X8 1
|
||||
PROCESS_8X2X8 0
|
||||
PROCESS_8X2X8 0
|
||||
PROCESS_8X2X8 0
|
||||
PROCESS_8X2X8 0
|
||||
PROCESS_8X2X8 0
|
||||
PROCESS_8X2X8 0
|
||||
PROCESS_8X2X8 0
|
||||
mov rdi, arg(4) ;Results
|
||||
movdqa XMMWORD PTR [rdi], xmm1
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
;void vp8_sad4x4x8_c(
|
||||
; const unsigned char *src_ptr,
|
||||
; int src_stride,
|
||||
; const unsigned char *ref_ptr,
|
||||
; int ref_stride,
|
||||
; unsigned short *sad_array
|
||||
;);
|
||||
global sym(vp8_sad4x4x8_sse4) PRIVATE
|
||||
sym(vp8_sad4x4x8_sse4):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 5
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
mov rdi, arg(2) ;ref_ptr
|
||||
|
||||
movsxd rax, dword ptr arg(1) ;src_stride
|
||||
movsxd rdx, dword ptr arg(3) ;ref_stride
|
||||
|
||||
PROCESS_4X2X8 1
|
||||
PROCESS_4X2X8 0
|
||||
|
||||
mov rdi, arg(4) ;Results
|
||||
movdqa XMMWORD PTR [rdi], xmm1
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
|
@ -13,393 +13,6 @@
|
|||
|
||||
%define xmm_filter_shift 7
|
||||
|
||||
;unsigned int vp8_get_mb_ss_sse2
|
||||
;(
|
||||
; short *src_ptr
|
||||
;)
|
||||
global sym(vp8_get_mb_ss_sse2) PRIVATE
|
||||
sym(vp8_get_mb_ss_sse2):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 1
|
||||
GET_GOT rbx
|
||||
push rsi
|
||||
push rdi
|
||||
sub rsp, 16
|
||||
; end prolog
|
||||
|
||||
|
||||
mov rax, arg(0) ;[src_ptr]
|
||||
mov rcx, 8
|
||||
pxor xmm4, xmm4
|
||||
|
||||
.NEXTROW:
|
||||
movdqa xmm0, [rax]
|
||||
movdqa xmm1, [rax+16]
|
||||
movdqa xmm2, [rax+32]
|
||||
movdqa xmm3, [rax+48]
|
||||
pmaddwd xmm0, xmm0
|
||||
pmaddwd xmm1, xmm1
|
||||
pmaddwd xmm2, xmm2
|
||||
pmaddwd xmm3, xmm3
|
||||
|
||||
paddd xmm0, xmm1
|
||||
paddd xmm2, xmm3
|
||||
paddd xmm4, xmm0
|
||||
paddd xmm4, xmm2
|
||||
|
||||
add rax, 0x40
|
||||
dec rcx
|
||||
ja .NEXTROW
|
||||
|
||||
movdqa xmm3,xmm4
|
||||
psrldq xmm4,8
|
||||
paddd xmm4,xmm3
|
||||
movdqa xmm3,xmm4
|
||||
psrldq xmm4,4
|
||||
paddd xmm4,xmm3
|
||||
movq rax,xmm4
|
||||
|
||||
|
||||
; begin epilog
|
||||
add rsp, 16
|
||||
pop rdi
|
||||
pop rsi
|
||||
RESTORE_GOT
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
;unsigned int vp8_get16x16var_sse2
|
||||
;(
|
||||
; unsigned char * src_ptr,
|
||||
; int source_stride,
|
||||
; unsigned char * ref_ptr,
|
||||
; int recon_stride,
|
||||
; unsigned int * SSE,
|
||||
; int * Sum
|
||||
;)
|
||||
global sym(vp8_get16x16var_sse2) PRIVATE
|
||||
sym(vp8_get16x16var_sse2):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 6
|
||||
SAVE_XMM 7
|
||||
push rbx
|
||||
push rsi
|
||||
push rdi
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;[src_ptr]
|
||||
mov rdi, arg(2) ;[ref_ptr]
|
||||
|
||||
movsxd rax, DWORD PTR arg(1) ;[source_stride]
|
||||
movsxd rdx, DWORD PTR arg(3) ;[recon_stride]
|
||||
|
||||
; Prefetch data
|
||||
lea rcx, [rax+rax*2]
|
||||
prefetcht0 [rsi]
|
||||
prefetcht0 [rsi+rax]
|
||||
prefetcht0 [rsi+rax*2]
|
||||
prefetcht0 [rsi+rcx]
|
||||
lea rbx, [rsi+rax*4]
|
||||
prefetcht0 [rbx]
|
||||
prefetcht0 [rbx+rax]
|
||||
prefetcht0 [rbx+rax*2]
|
||||
prefetcht0 [rbx+rcx]
|
||||
|
||||
lea rcx, [rdx+rdx*2]
|
||||
prefetcht0 [rdi]
|
||||
prefetcht0 [rdi+rdx]
|
||||
prefetcht0 [rdi+rdx*2]
|
||||
prefetcht0 [rdi+rcx]
|
||||
lea rbx, [rdi+rdx*4]
|
||||
prefetcht0 [rbx]
|
||||
prefetcht0 [rbx+rdx]
|
||||
prefetcht0 [rbx+rdx*2]
|
||||
prefetcht0 [rbx+rcx]
|
||||
|
||||
pxor xmm0, xmm0 ; clear xmm0 for unpack
|
||||
pxor xmm7, xmm7 ; clear xmm7 for accumulating diffs
|
||||
|
||||
pxor xmm6, xmm6 ; clear xmm6 for accumulating sse
|
||||
mov rcx, 16
|
||||
|
||||
.var16loop:
|
||||
movdqu xmm1, XMMWORD PTR [rsi]
|
||||
movdqu xmm2, XMMWORD PTR [rdi]
|
||||
|
||||
prefetcht0 [rsi+rax*8]
|
||||
prefetcht0 [rdi+rdx*8]
|
||||
|
||||
movdqa xmm3, xmm1
|
||||
movdqa xmm4, xmm2
|
||||
|
||||
|
||||
punpcklbw xmm1, xmm0
|
||||
punpckhbw xmm3, xmm0
|
||||
|
||||
punpcklbw xmm2, xmm0
|
||||
punpckhbw xmm4, xmm0
|
||||
|
||||
|
||||
psubw xmm1, xmm2
|
||||
psubw xmm3, xmm4
|
||||
|
||||
paddw xmm7, xmm1
|
||||
pmaddwd xmm1, xmm1
|
||||
|
||||
paddw xmm7, xmm3
|
||||
pmaddwd xmm3, xmm3
|
||||
|
||||
paddd xmm6, xmm1
|
||||
paddd xmm6, xmm3
|
||||
|
||||
add rsi, rax
|
||||
add rdi, rdx
|
||||
|
||||
sub rcx, 1
|
||||
jnz .var16loop
|
||||
|
||||
|
||||
movdqa xmm1, xmm6
|
||||
pxor xmm6, xmm6
|
||||
|
||||
pxor xmm5, xmm5
|
||||
punpcklwd xmm6, xmm7
|
||||
|
||||
punpckhwd xmm5, xmm7
|
||||
psrad xmm5, 16
|
||||
|
||||
psrad xmm6, 16
|
||||
paddd xmm6, xmm5
|
||||
|
||||
movdqa xmm2, xmm1
|
||||
punpckldq xmm1, xmm0
|
||||
|
||||
punpckhdq xmm2, xmm0
|
||||
movdqa xmm7, xmm6
|
||||
|
||||
paddd xmm1, xmm2
|
||||
punpckldq xmm6, xmm0
|
||||
|
||||
punpckhdq xmm7, xmm0
|
||||
paddd xmm6, xmm7
|
||||
|
||||
movdqa xmm2, xmm1
|
||||
movdqa xmm7, xmm6
|
||||
|
||||
psrldq xmm1, 8
|
||||
psrldq xmm6, 8
|
||||
|
||||
paddd xmm7, xmm6
|
||||
paddd xmm1, xmm2
|
||||
|
||||
mov rax, arg(5) ;[Sum]
|
||||
mov rdi, arg(4) ;[SSE]
|
||||
|
||||
movd DWORD PTR [rax], xmm7
|
||||
movd DWORD PTR [rdi], xmm1
|
||||
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbx
|
||||
RESTORE_XMM
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
;unsigned int vp8_get8x8var_sse2
|
||||
;(
|
||||
; unsigned char * src_ptr,
|
||||
; int source_stride,
|
||||
; unsigned char * ref_ptr,
|
||||
; int recon_stride,
|
||||
; unsigned int * SSE,
|
||||
; int * Sum
|
||||
;)
|
||||
global sym(vp8_get8x8var_sse2) PRIVATE
|
||||
sym(vp8_get8x8var_sse2):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 6
|
||||
SAVE_XMM 7
|
||||
GET_GOT rbx
|
||||
push rsi
|
||||
push rdi
|
||||
sub rsp, 16
|
||||
; end prolog
|
||||
|
||||
mov rsi, arg(0) ;[src_ptr]
|
||||
mov rdi, arg(2) ;[ref_ptr]
|
||||
|
||||
movsxd rax, DWORD PTR arg(1) ;[source_stride]
|
||||
movsxd rdx, DWORD PTR arg(3) ;[recon_stride]
|
||||
|
||||
pxor xmm0, xmm0 ; clear xmm0 for unpack
|
||||
pxor xmm7, xmm7 ; clear xmm7 for accumulating diffs
|
||||
|
||||
movq xmm1, QWORD PTR [rsi]
|
||||
movq xmm2, QWORD PTR [rdi]
|
||||
|
||||
punpcklbw xmm1, xmm0
|
||||
punpcklbw xmm2, xmm0
|
||||
|
||||
psubsw xmm1, xmm2
|
||||
paddw xmm7, xmm1
|
||||
|
||||
pmaddwd xmm1, xmm1
|
||||
|
||||
movq xmm2, QWORD PTR[rsi + rax]
|
||||
movq xmm3, QWORD PTR[rdi + rdx]
|
||||
|
||||
punpcklbw xmm2, xmm0
|
||||
punpcklbw xmm3, xmm0
|
||||
|
||||
psubsw xmm2, xmm3
|
||||
paddw xmm7, xmm2
|
||||
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm1, xmm2
|
||||
|
||||
|
||||
movq xmm2, QWORD PTR[rsi + rax * 2]
|
||||
movq xmm3, QWORD PTR[rdi + rdx * 2]
|
||||
|
||||
punpcklbw xmm2, xmm0
|
||||
punpcklbw xmm3, xmm0
|
||||
|
||||
psubsw xmm2, xmm3
|
||||
paddw xmm7, xmm2
|
||||
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm1, xmm2
|
||||
|
||||
|
||||
lea rsi, [rsi + rax * 2]
|
||||
lea rdi, [rdi + rdx * 2]
|
||||
movq xmm2, QWORD PTR[rsi + rax]
|
||||
movq xmm3, QWORD PTR[rdi + rdx]
|
||||
|
||||
punpcklbw xmm2, xmm0
|
||||
punpcklbw xmm3, xmm0
|
||||
|
||||
psubsw xmm2, xmm3
|
||||
paddw xmm7, xmm2
|
||||
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm1, xmm2
|
||||
|
||||
movq xmm2, QWORD PTR[rsi + rax *2]
|
||||
movq xmm3, QWORD PTR[rdi + rdx *2]
|
||||
|
||||
punpcklbw xmm2, xmm0
|
||||
punpcklbw xmm3, xmm0
|
||||
|
||||
psubsw xmm2, xmm3
|
||||
paddw xmm7, xmm2
|
||||
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm1, xmm2
|
||||
|
||||
|
||||
lea rsi, [rsi + rax * 2]
|
||||
lea rdi, [rdi + rdx * 2]
|
||||
|
||||
|
||||
movq xmm2, QWORD PTR[rsi + rax]
|
||||
movq xmm3, QWORD PTR[rdi + rdx]
|
||||
|
||||
punpcklbw xmm2, xmm0
|
||||
punpcklbw xmm3, xmm0
|
||||
|
||||
psubsw xmm2, xmm3
|
||||
paddw xmm7, xmm2
|
||||
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm1, xmm2
|
||||
|
||||
movq xmm2, QWORD PTR[rsi + rax *2]
|
||||
movq xmm3, QWORD PTR[rdi + rdx *2]
|
||||
|
||||
punpcklbw xmm2, xmm0
|
||||
punpcklbw xmm3, xmm0
|
||||
|
||||
psubsw xmm2, xmm3
|
||||
paddw xmm7, xmm2
|
||||
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm1, xmm2
|
||||
|
||||
|
||||
lea rsi, [rsi + rax * 2]
|
||||
lea rdi, [rdi + rdx * 2]
|
||||
|
||||
movq xmm2, QWORD PTR[rsi + rax]
|
||||
movq xmm3, QWORD PTR[rdi + rdx]
|
||||
|
||||
punpcklbw xmm2, xmm0
|
||||
punpcklbw xmm3, xmm0
|
||||
|
||||
psubsw xmm2, xmm3
|
||||
paddw xmm7, xmm2
|
||||
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm1, xmm2
|
||||
|
||||
|
||||
movdqa xmm6, xmm7
|
||||
punpcklwd xmm6, xmm0
|
||||
|
||||
punpckhwd xmm7, xmm0
|
||||
movdqa xmm2, xmm1
|
||||
|
||||
paddw xmm6, xmm7
|
||||
punpckldq xmm1, xmm0
|
||||
|
||||
punpckhdq xmm2, xmm0
|
||||
movdqa xmm7, xmm6
|
||||
|
||||
paddd xmm1, xmm2
|
||||
punpckldq xmm6, xmm0
|
||||
|
||||
punpckhdq xmm7, xmm0
|
||||
paddw xmm6, xmm7
|
||||
|
||||
movdqa xmm2, xmm1
|
||||
movdqa xmm7, xmm6
|
||||
|
||||
psrldq xmm1, 8
|
||||
psrldq xmm6, 8
|
||||
|
||||
paddw xmm7, xmm6
|
||||
paddd xmm1, xmm2
|
||||
|
||||
mov rax, arg(5) ;[Sum]
|
||||
mov rdi, arg(4) ;[SSE]
|
||||
|
||||
movq rdx, xmm7
|
||||
movsx rcx, dx
|
||||
|
||||
mov dword ptr [rax], ecx
|
||||
movd DWORD PTR [rdi], xmm1
|
||||
|
||||
; begin epilog
|
||||
add rsp, 16
|
||||
pop rdi
|
||||
pop rsi
|
||||
RESTORE_GOT
|
||||
RESTORE_XMM
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
;void vp8_filter_block2d_bil_var_sse2
|
||||
;(
|
||||
; unsigned char *ref_ptr,
|
||||
|
|
|
@ -8,19 +8,11 @@
|
|||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "vpx_config.h"
|
||||
#include "vp8/common/variance.h"
|
||||
#include "vpx_ports/mem.h"
|
||||
|
||||
extern unsigned int vp8_get16x16var_sse2
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *SSE,
|
||||
int *Sum
|
||||
);
|
||||
extern void vp8_half_horiz_vert_variance16x_h_sse2
|
||||
(
|
||||
const unsigned char *ref_ptr,
|
||||
|
|
|
@ -127,7 +127,7 @@ void vp8_sixtap_predict4x4_mmx
|
|||
int dst_pitch
|
||||
)
|
||||
{
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 16*16); /* Temp data bufffer used in filtering */
|
||||
DECLARE_ALIGNED(16, unsigned short, FData2[16*16]); /* Temp data bufffer used in filtering */
|
||||
const short *HFilter, *VFilter;
|
||||
HFilter = vp8_six_tap_mmx[xoffset];
|
||||
vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2, src_pixels_per_line, 1, 9, 8, HFilter);
|
||||
|
@ -148,7 +148,7 @@ void vp8_sixtap_predict16x16_mmx
|
|||
)
|
||||
{
|
||||
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 24*24); /* Temp data bufffer used in filtering */
|
||||
DECLARE_ALIGNED(16, unsigned short, FData2[24*24]); /* Temp data bufffer used in filtering */
|
||||
|
||||
const short *HFilter, *VFilter;
|
||||
|
||||
|
@ -180,7 +180,7 @@ void vp8_sixtap_predict8x8_mmx
|
|||
)
|
||||
{
|
||||
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 256); /* Temp data bufffer used in filtering */
|
||||
DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used in filtering */
|
||||
|
||||
const short *HFilter, *VFilter;
|
||||
|
||||
|
@ -206,7 +206,7 @@ void vp8_sixtap_predict8x4_mmx
|
|||
)
|
||||
{
|
||||
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 256); /* Temp data bufffer used in filtering */
|
||||
DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used in filtering */
|
||||
|
||||
const short *HFilter, *VFilter;
|
||||
|
||||
|
@ -252,7 +252,7 @@ void vp8_sixtap_predict16x16_sse2
|
|||
|
||||
)
|
||||
{
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 24*24); /* Temp data bufffer used in filtering */
|
||||
DECLARE_ALIGNED(16, unsigned short, FData2[24*24]); /* Temp data bufffer used in filtering */
|
||||
|
||||
const short *HFilter, *VFilter;
|
||||
|
||||
|
@ -292,7 +292,7 @@ void vp8_sixtap_predict8x8_sse2
|
|||
int dst_pitch
|
||||
)
|
||||
{
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 256); /* Temp data bufffer used in filtering */
|
||||
DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used in filtering */
|
||||
const short *HFilter, *VFilter;
|
||||
|
||||
if (xoffset)
|
||||
|
@ -330,7 +330,7 @@ void vp8_sixtap_predict8x4_sse2
|
|||
int dst_pitch
|
||||
)
|
||||
{
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 256); /* Temp data bufffer used in filtering */
|
||||
DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used in filtering */
|
||||
const short *HFilter, *VFilter;
|
||||
|
||||
if (xoffset)
|
||||
|
@ -432,7 +432,7 @@ void vp8_sixtap_predict16x16_ssse3
|
|||
|
||||
)
|
||||
{
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned char, FData2, 24*24);
|
||||
DECLARE_ALIGNED(16, unsigned char, FData2[24*24]);
|
||||
|
||||
if (xoffset)
|
||||
{
|
||||
|
@ -480,7 +480,7 @@ void vp8_sixtap_predict8x8_ssse3
|
|||
int dst_pitch
|
||||
)
|
||||
{
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned char, FData2, 256);
|
||||
DECLARE_ALIGNED(16, unsigned char, FData2[256]);
|
||||
|
||||
if (xoffset)
|
||||
{
|
||||
|
@ -528,7 +528,7 @@ void vp8_sixtap_predict8x4_ssse3
|
|||
int dst_pitch
|
||||
)
|
||||
{
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned char, FData2, 256);
|
||||
DECLARE_ALIGNED(16, unsigned char, FData2[256]);
|
||||
|
||||
if (xoffset)
|
||||
{
|
||||
|
@ -576,7 +576,7 @@ void vp8_sixtap_predict4x4_ssse3
|
|||
int dst_pitch
|
||||
)
|
||||
{
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned char, FData2, 4*9);
|
||||
DECLARE_ALIGNED(16, unsigned char, FData2[4*9]);
|
||||
|
||||
if (xoffset)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,353 @@
|
|||
;
|
||||
; 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 "vpx_ports/x86_abi_support.asm"
|
||||
|
||||
%define mmx_filter_shift 7
|
||||
|
||||
;void vp8_filter_block2d_bil4x4_var_mmx
|
||||
;(
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_pixels_per_line,
|
||||
; unsigned char *src_ptr,
|
||||
; int src_pixels_per_line,
|
||||
; unsigned short *HFilter,
|
||||
; unsigned short *VFilter,
|
||||
; int *sum,
|
||||
; unsigned int *sumsquared
|
||||
;)
|
||||
global sym(vp8_filter_block2d_bil4x4_var_mmx) PRIVATE
|
||||
sym(vp8_filter_block2d_bil4x4_var_mmx):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 8
|
||||
GET_GOT rbx
|
||||
push rsi
|
||||
push rdi
|
||||
sub rsp, 16
|
||||
; end prolog
|
||||
|
||||
|
||||
pxor mm6, mm6 ;
|
||||
pxor mm7, mm7 ;
|
||||
|
||||
mov rax, arg(4) ;HFilter ;
|
||||
mov rdx, arg(5) ;VFilter ;
|
||||
|
||||
mov rsi, arg(0) ;ref_ptr ;
|
||||
mov rdi, arg(2) ;src_ptr ;
|
||||
|
||||
mov rcx, 4 ;
|
||||
pxor mm0, mm0 ;
|
||||
|
||||
movd mm1, [rsi] ;
|
||||
movd mm3, [rsi+1] ;
|
||||
|
||||
punpcklbw mm1, mm0 ;
|
||||
pmullw mm1, [rax] ;
|
||||
|
||||
punpcklbw mm3, mm0 ;
|
||||
pmullw mm3, [rax+8] ;
|
||||
|
||||
paddw mm1, mm3 ;
|
||||
paddw mm1, [GLOBAL(mmx_bi_rd)] ;
|
||||
|
||||
psraw mm1, mmx_filter_shift ;
|
||||
movq mm5, mm1
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
add rsi, dword ptr arg(1) ;ref_pixels_per_line ;
|
||||
%else
|
||||
movsxd r8, dword ptr arg(1) ;ref_pixels_per_line ;
|
||||
add rsi, r8
|
||||
%endif
|
||||
|
||||
.filter_block2d_bil4x4_var_mmx_loop:
|
||||
|
||||
movd mm1, [rsi] ;
|
||||
movd mm3, [rsi+1] ;
|
||||
|
||||
punpcklbw mm1, mm0 ;
|
||||
pmullw mm1, [rax] ;
|
||||
|
||||
punpcklbw mm3, mm0 ;
|
||||
pmullw mm3, [rax+8] ;
|
||||
|
||||
paddw mm1, mm3 ;
|
||||
paddw mm1, [GLOBAL(mmx_bi_rd)] ;
|
||||
|
||||
psraw mm1, mmx_filter_shift ;
|
||||
movq mm3, mm5 ;
|
||||
|
||||
movq mm5, mm1 ;
|
||||
pmullw mm3, [rdx] ;
|
||||
|
||||
pmullw mm1, [rdx+8] ;
|
||||
paddw mm1, mm3 ;
|
||||
|
||||
|
||||
paddw mm1, [GLOBAL(mmx_bi_rd)] ;
|
||||
psraw mm1, mmx_filter_shift ;
|
||||
|
||||
movd mm3, [rdi] ;
|
||||
punpcklbw mm3, mm0 ;
|
||||
|
||||
psubw mm1, mm3 ;
|
||||
paddw mm6, mm1 ;
|
||||
|
||||
pmaddwd mm1, mm1 ;
|
||||
paddd mm7, mm1 ;
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
add rsi, dword ptr arg(1) ;ref_pixels_per_line ;
|
||||
add rdi, dword ptr arg(3) ;src_pixels_per_line ;
|
||||
%else
|
||||
movsxd r8, dword ptr arg(1) ;ref_pixels_per_line
|
||||
movsxd r9, dword ptr arg(3) ;src_pixels_per_line
|
||||
add rsi, r8
|
||||
add rdi, r9
|
||||
%endif
|
||||
sub rcx, 1 ;
|
||||
jnz .filter_block2d_bil4x4_var_mmx_loop ;
|
||||
|
||||
|
||||
pxor mm3, mm3 ;
|
||||
pxor mm2, mm2 ;
|
||||
|
||||
punpcklwd mm2, mm6 ;
|
||||
punpckhwd mm3, mm6 ;
|
||||
|
||||
paddd mm2, mm3 ;
|
||||
movq mm6, mm2 ;
|
||||
|
||||
psrlq mm6, 32 ;
|
||||
paddd mm2, mm6 ;
|
||||
|
||||
psrad mm2, 16 ;
|
||||
movq mm4, mm7 ;
|
||||
|
||||
psrlq mm4, 32 ;
|
||||
paddd mm4, mm7 ;
|
||||
|
||||
mov rdi, arg(6) ;sum
|
||||
mov rsi, arg(7) ;sumsquared
|
||||
|
||||
movd dword ptr [rdi], mm2 ;
|
||||
movd dword ptr [rsi], mm4 ;
|
||||
|
||||
|
||||
|
||||
; begin epilog
|
||||
add rsp, 16
|
||||
pop rdi
|
||||
pop rsi
|
||||
RESTORE_GOT
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
;void vp8_filter_block2d_bil_var_mmx
|
||||
;(
|
||||
; unsigned char *ref_ptr,
|
||||
; int ref_pixels_per_line,
|
||||
; unsigned char *src_ptr,
|
||||
; int src_pixels_per_line,
|
||||
; unsigned int Height,
|
||||
; unsigned short *HFilter,
|
||||
; unsigned short *VFilter,
|
||||
; int *sum,
|
||||
; unsigned int *sumsquared
|
||||
;)
|
||||
global sym(vp8_filter_block2d_bil_var_mmx) PRIVATE
|
||||
sym(vp8_filter_block2d_bil_var_mmx):
|
||||
push rbp
|
||||
mov rbp, rsp
|
||||
SHADOW_ARGS_TO_STACK 9
|
||||
GET_GOT rbx
|
||||
push rsi
|
||||
push rdi
|
||||
sub rsp, 16
|
||||
; end prolog
|
||||
|
||||
pxor mm6, mm6 ;
|
||||
pxor mm7, mm7 ;
|
||||
mov rax, arg(5) ;HFilter ;
|
||||
|
||||
mov rdx, arg(6) ;VFilter ;
|
||||
mov rsi, arg(0) ;ref_ptr ;
|
||||
|
||||
mov rdi, arg(2) ;src_ptr ;
|
||||
movsxd rcx, dword ptr arg(4) ;Height ;
|
||||
|
||||
pxor mm0, mm0 ;
|
||||
movq mm1, [rsi] ;
|
||||
|
||||
movq mm3, [rsi+1] ;
|
||||
movq mm2, mm1 ;
|
||||
|
||||
movq mm4, mm3 ;
|
||||
punpcklbw mm1, mm0 ;
|
||||
|
||||
punpckhbw mm2, mm0 ;
|
||||
pmullw mm1, [rax] ;
|
||||
|
||||
pmullw mm2, [rax] ;
|
||||
punpcklbw mm3, mm0 ;
|
||||
|
||||
punpckhbw mm4, mm0 ;
|
||||
pmullw mm3, [rax+8] ;
|
||||
|
||||
pmullw mm4, [rax+8] ;
|
||||
paddw mm1, mm3 ;
|
||||
|
||||
paddw mm2, mm4 ;
|
||||
paddw mm1, [GLOBAL(mmx_bi_rd)] ;
|
||||
|
||||
psraw mm1, mmx_filter_shift ;
|
||||
paddw mm2, [GLOBAL(mmx_bi_rd)] ;
|
||||
|
||||
psraw mm2, mmx_filter_shift ;
|
||||
movq mm5, mm1
|
||||
|
||||
packuswb mm5, mm2 ;
|
||||
%if ABI_IS_32BIT
|
||||
add rsi, dword ptr arg(1) ;ref_pixels_per_line
|
||||
%else
|
||||
movsxd r8, dword ptr arg(1) ;ref_pixels_per_line
|
||||
add rsi, r8
|
||||
%endif
|
||||
|
||||
.filter_block2d_bil_var_mmx_loop:
|
||||
|
||||
movq mm1, [rsi] ;
|
||||
movq mm3, [rsi+1] ;
|
||||
|
||||
movq mm2, mm1 ;
|
||||
movq mm4, mm3 ;
|
||||
|
||||
punpcklbw mm1, mm0 ;
|
||||
punpckhbw mm2, mm0 ;
|
||||
|
||||
pmullw mm1, [rax] ;
|
||||
pmullw mm2, [rax] ;
|
||||
|
||||
punpcklbw mm3, mm0 ;
|
||||
punpckhbw mm4, mm0 ;
|
||||
|
||||
pmullw mm3, [rax+8] ;
|
||||
pmullw mm4, [rax+8] ;
|
||||
|
||||
paddw mm1, mm3 ;
|
||||
paddw mm2, mm4 ;
|
||||
|
||||
paddw mm1, [GLOBAL(mmx_bi_rd)] ;
|
||||
psraw mm1, mmx_filter_shift ;
|
||||
|
||||
paddw mm2, [GLOBAL(mmx_bi_rd)] ;
|
||||
psraw mm2, mmx_filter_shift ;
|
||||
|
||||
movq mm3, mm5 ;
|
||||
movq mm4, mm5 ;
|
||||
|
||||
punpcklbw mm3, mm0 ;
|
||||
punpckhbw mm4, mm0 ;
|
||||
|
||||
movq mm5, mm1 ;
|
||||
packuswb mm5, mm2 ;
|
||||
|
||||
pmullw mm3, [rdx] ;
|
||||
pmullw mm4, [rdx] ;
|
||||
|
||||
pmullw mm1, [rdx+8] ;
|
||||
pmullw mm2, [rdx+8] ;
|
||||
|
||||
paddw mm1, mm3 ;
|
||||
paddw mm2, mm4 ;
|
||||
|
||||
paddw mm1, [GLOBAL(mmx_bi_rd)] ;
|
||||
paddw mm2, [GLOBAL(mmx_bi_rd)] ;
|
||||
|
||||
psraw mm1, mmx_filter_shift ;
|
||||
psraw mm2, mmx_filter_shift ;
|
||||
|
||||
movq mm3, [rdi] ;
|
||||
movq mm4, mm3 ;
|
||||
|
||||
punpcklbw mm3, mm0 ;
|
||||
punpckhbw mm4, mm0 ;
|
||||
|
||||
psubw mm1, mm3 ;
|
||||
psubw mm2, mm4 ;
|
||||
|
||||
paddw mm6, mm1 ;
|
||||
pmaddwd mm1, mm1 ;
|
||||
|
||||
paddw mm6, mm2 ;
|
||||
pmaddwd mm2, mm2 ;
|
||||
|
||||
paddd mm7, mm1 ;
|
||||
paddd mm7, mm2 ;
|
||||
|
||||
%if ABI_IS_32BIT
|
||||
add rsi, dword ptr arg(1) ;ref_pixels_per_line ;
|
||||
add rdi, dword ptr arg(3) ;src_pixels_per_line ;
|
||||
%else
|
||||
movsxd r8, dword ptr arg(1) ;ref_pixels_per_line ;
|
||||
movsxd r9, dword ptr arg(3) ;src_pixels_per_line ;
|
||||
add rsi, r8
|
||||
add rdi, r9
|
||||
%endif
|
||||
sub rcx, 1 ;
|
||||
jnz .filter_block2d_bil_var_mmx_loop ;
|
||||
|
||||
|
||||
pxor mm3, mm3 ;
|
||||
pxor mm2, mm2 ;
|
||||
|
||||
punpcklwd mm2, mm6 ;
|
||||
punpckhwd mm3, mm6 ;
|
||||
|
||||
paddd mm2, mm3 ;
|
||||
movq mm6, mm2 ;
|
||||
|
||||
psrlq mm6, 32 ;
|
||||
paddd mm2, mm6 ;
|
||||
|
||||
psrad mm2, 16 ;
|
||||
movq mm4, mm7 ;
|
||||
|
||||
psrlq mm4, 32 ;
|
||||
paddd mm4, mm7 ;
|
||||
|
||||
mov rdi, arg(7) ;sum
|
||||
mov rsi, arg(8) ;sumsquared
|
||||
|
||||
movd dword ptr [rdi], mm2 ;
|
||||
movd dword ptr [rsi], mm4 ;
|
||||
|
||||
; begin epilog
|
||||
add rsp, 16
|
||||
pop rdi
|
||||
pop rsi
|
||||
RESTORE_GOT
|
||||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
|
||||
|
||||
SECTION_RODATA
|
||||
;short mmx_bi_rd[4] = { 64, 64, 64, 64};
|
||||
align 16
|
||||
mmx_bi_rd:
|
||||
times 4 dw 64
|
|
@ -8,6 +8,7 @@
|
|||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "vpx_config.h"
|
||||
#include "vp8/common/variance.h"
|
||||
#include "vpx_ports/mem.h"
|
||||
|
@ -34,25 +35,6 @@ extern void filter_block1d_v6_mmx
|
|||
short *filter
|
||||
);
|
||||
|
||||
extern unsigned int vp8_get_mb_ss_mmx(const short *src_ptr);
|
||||
extern unsigned int vp8_get8x8var_mmx
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *SSE,
|
||||
int *Sum
|
||||
);
|
||||
extern unsigned int vp8_get4x4var_mmx
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *SSE,
|
||||
int *Sum
|
||||
);
|
||||
extern void vp8_filter_block2d_bil4x4_var_mmx
|
||||
(
|
||||
const unsigned char *ref_ptr,
|
||||
|
@ -77,127 +59,6 @@ extern void vp8_filter_block2d_bil_var_mmx
|
|||
unsigned int *sumsquared
|
||||
);
|
||||
|
||||
|
||||
unsigned int vp8_variance4x4_mmx(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
vp8_get4x4var_mmx(src_ptr, source_stride, ref_ptr, recon_stride, &var, &avg) ;
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 4));
|
||||
|
||||
}
|
||||
|
||||
unsigned int vp8_variance8x8_mmx(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
vp8_get8x8var_mmx(src_ptr, source_stride, ref_ptr, recon_stride, &var, &avg) ;
|
||||
*sse = var;
|
||||
|
||||
return (var - (((unsigned int)avg * avg) >> 6));
|
||||
|
||||
}
|
||||
|
||||
unsigned int vp8_mse16x16_mmx(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int sse0, sse1, sse2, sse3, var;
|
||||
int sum0, sum1, sum2, sum3;
|
||||
|
||||
|
||||
vp8_get8x8var_mmx(src_ptr, source_stride, ref_ptr, recon_stride, &sse0, &sum0) ;
|
||||
vp8_get8x8var_mmx(src_ptr + 8, source_stride, ref_ptr + 8, recon_stride, &sse1, &sum1);
|
||||
vp8_get8x8var_mmx(src_ptr + 8 * source_stride, source_stride, ref_ptr + 8 * recon_stride, recon_stride, &sse2, &sum2) ;
|
||||
vp8_get8x8var_mmx(src_ptr + 8 * source_stride + 8, source_stride, ref_ptr + 8 * recon_stride + 8, recon_stride, &sse3, &sum3);
|
||||
|
||||
var = sse0 + sse1 + sse2 + sse3;
|
||||
*sse = var;
|
||||
return var;
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_variance16x16_mmx(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int sse0, sse1, sse2, sse3, var;
|
||||
int sum0, sum1, sum2, sum3, avg;
|
||||
|
||||
|
||||
vp8_get8x8var_mmx(src_ptr, source_stride, ref_ptr, recon_stride, &sse0, &sum0) ;
|
||||
vp8_get8x8var_mmx(src_ptr + 8, source_stride, ref_ptr + 8, recon_stride, &sse1, &sum1);
|
||||
vp8_get8x8var_mmx(src_ptr + 8 * source_stride, source_stride, ref_ptr + 8 * recon_stride, recon_stride, &sse2, &sum2) ;
|
||||
vp8_get8x8var_mmx(src_ptr + 8 * source_stride + 8, source_stride, ref_ptr + 8 * recon_stride + 8, recon_stride, &sse3, &sum3);
|
||||
|
||||
var = sse0 + sse1 + sse2 + sse3;
|
||||
avg = sum0 + sum1 + sum2 + sum3;
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 8));
|
||||
}
|
||||
|
||||
unsigned int vp8_variance16x8_mmx(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int sse0, sse1, var;
|
||||
int sum0, sum1, avg;
|
||||
|
||||
vp8_get8x8var_mmx(src_ptr, source_stride, ref_ptr, recon_stride, &sse0, &sum0) ;
|
||||
vp8_get8x8var_mmx(src_ptr + 8, source_stride, ref_ptr + 8, recon_stride, &sse1, &sum1);
|
||||
|
||||
var = sse0 + sse1;
|
||||
avg = sum0 + sum1;
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 7));
|
||||
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_variance8x16_mmx(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int sse0, sse1, var;
|
||||
int sum0, sum1, avg;
|
||||
|
||||
vp8_get8x8var_mmx(src_ptr, source_stride, ref_ptr, recon_stride, &sse0, &sum0) ;
|
||||
vp8_get8x8var_mmx(src_ptr + 8 * source_stride, source_stride, ref_ptr + 8 * recon_stride, recon_stride, &sse1, &sum1) ;
|
||||
|
||||
var = sse0 + sse1;
|
||||
avg = sum0 + sum1;
|
||||
*sse = var;
|
||||
|
||||
return (var - (((unsigned int)avg * avg) >> 7));
|
||||
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_sub_pixel_variance4x4_mmx
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
|
@ -286,20 +147,6 @@ unsigned int vp8_sub_pixel_variance16x16_mmx
|
|||
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(
|
||||
const unsigned char *src_ptr,
|
||||
int src_pixels_per_line,
|
||||
int xoffset,
|
||||
int yoffset,
|
||||
const unsigned char *dst_ptr,
|
||||
int dst_pixels_per_line,
|
||||
unsigned int *sse
|
||||
)
|
||||
{
|
||||
vp8_sub_pixel_variance16x16_mmx(src_ptr, src_pixels_per_line, xoffset, yoffset, dst_ptr, dst_pixels_per_line, sse);
|
||||
return *sse;
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x8_mmx
|
||||
(
|
||||
const unsigned char *src_ptr,
|
|
@ -8,6 +8,7 @@
|
|||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "vpx_config.h"
|
||||
#include "vp8/common/variance.h"
|
||||
#include "vpx_ports/mem.h"
|
||||
|
@ -30,38 +31,6 @@ extern void vp8_filter_block2d_bil4x4_var_mmx
|
|||
unsigned int *sumsquared
|
||||
);
|
||||
|
||||
extern unsigned int vp8_get4x4var_mmx
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *SSE,
|
||||
int *Sum
|
||||
);
|
||||
|
||||
unsigned int vp8_get_mb_ss_sse2
|
||||
(
|
||||
const short *src_ptr
|
||||
);
|
||||
unsigned int vp8_get16x16var_sse2
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *SSE,
|
||||
int *Sum
|
||||
);
|
||||
unsigned int vp8_get8x8var_sse2
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *SSE,
|
||||
int *Sum
|
||||
);
|
||||
void vp8_filter_block2d_bil_var_sse2
|
||||
(
|
||||
const unsigned char *ref_ptr,
|
||||
|
@ -135,115 +104,6 @@ void vp8_half_vert_variance16x_h_sse2
|
|||
unsigned int *sumsquared
|
||||
);
|
||||
|
||||
unsigned int vp8_variance4x4_wmt(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
vp8_get4x4var_mmx(src_ptr, source_stride, ref_ptr, recon_stride, &var, &avg) ;
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 4));
|
||||
|
||||
}
|
||||
|
||||
unsigned int vp8_variance8x8_wmt
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int var;
|
||||
int avg;
|
||||
|
||||
vp8_get8x8var_sse2(src_ptr, source_stride, ref_ptr, recon_stride, &var, &avg) ;
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 6));
|
||||
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_variance16x16_wmt
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int sse0;
|
||||
int sum0;
|
||||
|
||||
|
||||
vp8_get16x16var_sse2(src_ptr, source_stride, ref_ptr, recon_stride, &sse0, &sum0) ;
|
||||
*sse = sse0;
|
||||
return (sse0 - (((unsigned int)sum0 * sum0) >> 8));
|
||||
}
|
||||
unsigned int vp8_mse16x16_wmt(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
|
||||
unsigned int sse0;
|
||||
int sum0;
|
||||
vp8_get16x16var_sse2(src_ptr, source_stride, ref_ptr, recon_stride, &sse0, &sum0) ;
|
||||
*sse = sse0;
|
||||
return sse0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_variance16x8_wmt
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int sse0, sse1, var;
|
||||
int sum0, sum1, avg;
|
||||
|
||||
vp8_get8x8var_sse2(src_ptr, source_stride, ref_ptr, recon_stride, &sse0, &sum0) ;
|
||||
vp8_get8x8var_sse2(src_ptr + 8, source_stride, ref_ptr + 8, recon_stride, &sse1, &sum1);
|
||||
|
||||
var = sse0 + sse1;
|
||||
avg = sum0 + sum1;
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 7));
|
||||
|
||||
}
|
||||
|
||||
unsigned int vp8_variance8x16_wmt
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse)
|
||||
{
|
||||
unsigned int sse0, sse1, var;
|
||||
int sum0, sum1, avg;
|
||||
|
||||
vp8_get8x8var_sse2(src_ptr, source_stride, ref_ptr, recon_stride, &sse0, &sum0) ;
|
||||
vp8_get8x8var_sse2(src_ptr + 8 * source_stride, source_stride, ref_ptr + 8 * recon_stride, recon_stride, &sse1, &sum1) ;
|
||||
|
||||
var = sse0 + sse1;
|
||||
avg = sum0 + sum1;
|
||||
*sse = var;
|
||||
return (var - (((unsigned int)avg * avg) >> 7));
|
||||
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_variance4x4_wmt
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
|
@ -378,20 +238,6 @@ unsigned int vp8_sub_pixel_variance16x16_wmt
|
|||
return (xxsum0 - (((unsigned int)xsum0 * xsum0) >> 8));
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(
|
||||
const unsigned char *src_ptr,
|
||||
int src_pixels_per_line,
|
||||
int xoffset,
|
||||
int yoffset,
|
||||
const unsigned char *dst_ptr,
|
||||
int dst_pixels_per_line,
|
||||
unsigned int *sse
|
||||
)
|
||||
{
|
||||
vp8_sub_pixel_variance16x16_wmt(src_ptr, src_pixels_per_line, xoffset, yoffset, dst_ptr, dst_pixels_per_line, sse);
|
||||
return *sse;
|
||||
}
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x8_wmt
|
||||
(
|
||||
const unsigned char *src_ptr,
|
|
@ -142,7 +142,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
* Better to use the predictor as reconstruction.
|
||||
*/
|
||||
pbi->frame_corrupt_residual = 1;
|
||||
vpx_memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
|
||||
memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
|
||||
vp8_conceal_corrupt_mb(xd);
|
||||
|
||||
|
||||
|
@ -151,7 +151,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
/* force idct to be skipped for B_PRED and use the
|
||||
* prediction only for reconstruction
|
||||
* */
|
||||
vpx_memset(xd->eobs, 0, 25);
|
||||
memset(xd->eobs, 0, 25);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -184,7 +184,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
|
||||
/* clear out residual eob info */
|
||||
if(xd->mode_info_context->mbmi.mb_skip_coeff)
|
||||
vpx_memset(xd->eobs, 0, 25);
|
||||
memset(xd->eobs, 0, 25);
|
||||
|
||||
intra_prediction_down_copy(xd, xd->recon_above[0] + 16);
|
||||
|
||||
|
@ -214,7 +214,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
(b->qcoeff[0] * DQC[0],
|
||||
dst, dst_stride,
|
||||
dst, dst_stride);
|
||||
vpx_memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
|
||||
memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -251,14 +251,14 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
|
||||
vp8_short_inv_walsh4x4(&b->dqcoeff[0],
|
||||
xd->qcoeff);
|
||||
vpx_memset(b->qcoeff, 0, 16 * sizeof(b->qcoeff[0]));
|
||||
memset(b->qcoeff, 0, 16 * sizeof(b->qcoeff[0]));
|
||||
}
|
||||
else
|
||||
{
|
||||
b->dqcoeff[0] = b->qcoeff[0] * xd->dequant_y2[0];
|
||||
vp8_short_inv_walsh4x4_1(&b->dqcoeff[0],
|
||||
xd->qcoeff);
|
||||
vpx_memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
|
||||
memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
|
||||
}
|
||||
|
||||
/* override the dc dequant constant in order to preserve the
|
||||
|
@ -323,7 +323,7 @@ static void yv12_extend_frame_top_c(YV12_BUFFER_CONFIG *ybf)
|
|||
|
||||
for (i = 0; i < (int)Border; i++)
|
||||
{
|
||||
vpx_memcpy(dest_ptr1, src_ptr1, plane_stride);
|
||||
memcpy(dest_ptr1, src_ptr1, plane_stride);
|
||||
dest_ptr1 += plane_stride;
|
||||
}
|
||||
|
||||
|
@ -338,7 +338,7 @@ static void yv12_extend_frame_top_c(YV12_BUFFER_CONFIG *ybf)
|
|||
|
||||
for (i = 0; i < (int)(Border); i++)
|
||||
{
|
||||
vpx_memcpy(dest_ptr1, src_ptr1, plane_stride);
|
||||
memcpy(dest_ptr1, src_ptr1, plane_stride);
|
||||
dest_ptr1 += plane_stride;
|
||||
}
|
||||
|
||||
|
@ -351,7 +351,7 @@ static void yv12_extend_frame_top_c(YV12_BUFFER_CONFIG *ybf)
|
|||
|
||||
for (i = 0; i < (int)(Border); i++)
|
||||
{
|
||||
vpx_memcpy(dest_ptr1, src_ptr1, plane_stride);
|
||||
memcpy(dest_ptr1, src_ptr1, plane_stride);
|
||||
dest_ptr1 += plane_stride;
|
||||
}
|
||||
}
|
||||
|
@ -379,7 +379,7 @@ static void yv12_extend_frame_bottom_c(YV12_BUFFER_CONFIG *ybf)
|
|||
|
||||
for (i = 0; i < (int)Border; i++)
|
||||
{
|
||||
vpx_memcpy(dest_ptr2, src_ptr2, plane_stride);
|
||||
memcpy(dest_ptr2, src_ptr2, plane_stride);
|
||||
dest_ptr2 += plane_stride;
|
||||
}
|
||||
|
||||
|
@ -397,7 +397,7 @@ static void yv12_extend_frame_bottom_c(YV12_BUFFER_CONFIG *ybf)
|
|||
|
||||
for (i = 0; i < (int)(Border); i++)
|
||||
{
|
||||
vpx_memcpy(dest_ptr2, src_ptr2, plane_stride);
|
||||
memcpy(dest_ptr2, src_ptr2, plane_stride);
|
||||
dest_ptr2 += plane_stride;
|
||||
}
|
||||
|
||||
|
@ -411,7 +411,7 @@ static void yv12_extend_frame_bottom_c(YV12_BUFFER_CONFIG *ybf)
|
|||
|
||||
for (i = 0; i < (int)(Border); i++)
|
||||
{
|
||||
vpx_memcpy(dest_ptr2, src_ptr2, plane_stride);
|
||||
memcpy(dest_ptr2, src_ptr2, plane_stride);
|
||||
dest_ptr2 += plane_stride;
|
||||
}
|
||||
}
|
||||
|
@ -446,8 +446,8 @@ static void yv12_extend_frame_left_right_c(YV12_BUFFER_CONFIG *ybf,
|
|||
|
||||
for (i = 0; i < plane_height; i++)
|
||||
{
|
||||
vpx_memset(dest_ptr1, src_ptr1[0], Border);
|
||||
vpx_memset(dest_ptr2, src_ptr2[0], Border);
|
||||
memset(dest_ptr1, src_ptr1[0], Border);
|
||||
memset(dest_ptr2, src_ptr2[0], Border);
|
||||
src_ptr1 += plane_stride;
|
||||
src_ptr2 += plane_stride;
|
||||
dest_ptr1 += plane_stride;
|
||||
|
@ -470,8 +470,8 @@ static void yv12_extend_frame_left_right_c(YV12_BUFFER_CONFIG *ybf,
|
|||
|
||||
for (i = 0; i < plane_height; i++)
|
||||
{
|
||||
vpx_memset(dest_ptr1, src_ptr1[0], Border);
|
||||
vpx_memset(dest_ptr2, src_ptr2[0], Border);
|
||||
memset(dest_ptr1, src_ptr1[0], Border);
|
||||
memset(dest_ptr2, src_ptr2[0], Border);
|
||||
src_ptr1 += plane_stride;
|
||||
src_ptr2 += plane_stride;
|
||||
dest_ptr1 += plane_stride;
|
||||
|
@ -490,8 +490,8 @@ static void yv12_extend_frame_left_right_c(YV12_BUFFER_CONFIG *ybf,
|
|||
|
||||
for (i = 0; i < plane_height; i++)
|
||||
{
|
||||
vpx_memset(dest_ptr1, src_ptr1[0], Border);
|
||||
vpx_memset(dest_ptr2, src_ptr2[0], Border);
|
||||
memset(dest_ptr1, src_ptr1[0], Border);
|
||||
memset(dest_ptr2, src_ptr2[0], Border);
|
||||
src_ptr1 += plane_stride;
|
||||
src_ptr2 += plane_stride;
|
||||
dest_ptr1 += plane_stride;
|
||||
|
@ -568,7 +568,7 @@ static void decode_mb_rows(VP8D_COMP *pbi)
|
|||
|
||||
/* reset contexts */
|
||||
xd->above_context = pc->above_context;
|
||||
vpx_memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
xd->left_available = 0;
|
||||
|
||||
|
@ -918,19 +918,19 @@ static void init_frame(VP8D_COMP *pbi)
|
|||
if (pc->frame_type == KEY_FRAME)
|
||||
{
|
||||
/* Various keyframe initializations */
|
||||
vpx_memcpy(pc->fc.mvc, vp8_default_mv_context, sizeof(vp8_default_mv_context));
|
||||
memcpy(pc->fc.mvc, vp8_default_mv_context, sizeof(vp8_default_mv_context));
|
||||
|
||||
vp8_init_mbmode_probs(pc);
|
||||
|
||||
vp8_default_coef_probs(pc);
|
||||
|
||||
/* reset the segment feature data to 0 with delta coding (Default state). */
|
||||
vpx_memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
|
||||
memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
|
||||
xd->mb_segement_abs_delta = SEGMENT_DELTADATA;
|
||||
|
||||
/* reset the mode ref deltasa for loop filter */
|
||||
vpx_memset(xd->ref_lf_deltas, 0, sizeof(xd->ref_lf_deltas));
|
||||
vpx_memset(xd->mode_lf_deltas, 0, sizeof(xd->mode_lf_deltas));
|
||||
memset(xd->ref_lf_deltas, 0, sizeof(xd->ref_lf_deltas));
|
||||
memset(xd->mode_lf_deltas, 0, sizeof(xd->mode_lf_deltas));
|
||||
|
||||
/* All buffers are implicitly updated on key frames. */
|
||||
pc->refresh_golden_frame = 1;
|
||||
|
@ -1069,12 +1069,11 @@ int vp8_decode_frame(VP8D_COMP *pbi)
|
|||
pc->vert_scale = clear[6] >> 6;
|
||||
}
|
||||
data += 7;
|
||||
clear += 7;
|
||||
}
|
||||
else
|
||||
{
|
||||
vpx_memcpy(&xd->pre, yv12_fb_new, sizeof(YV12_BUFFER_CONFIG));
|
||||
vpx_memcpy(&xd->dst, yv12_fb_new, sizeof(YV12_BUFFER_CONFIG));
|
||||
memcpy(&xd->pre, yv12_fb_new, sizeof(YV12_BUFFER_CONFIG));
|
||||
memcpy(&xd->dst, yv12_fb_new, sizeof(YV12_BUFFER_CONFIG));
|
||||
}
|
||||
}
|
||||
if ((!pbi->decoded_key_frame && pc->frame_type != KEY_FRAME))
|
||||
|
@ -1106,7 +1105,7 @@ int vp8_decode_frame(VP8D_COMP *pbi)
|
|||
{
|
||||
xd->mb_segement_abs_delta = (unsigned char)vp8_read_bit(bc);
|
||||
|
||||
vpx_memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
|
||||
memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
|
||||
|
||||
/* For each segmentation feature (Quant and loop filter level) */
|
||||
for (i = 0; i < MB_LVL_MAX; i++)
|
||||
|
@ -1130,7 +1129,7 @@ int vp8_decode_frame(VP8D_COMP *pbi)
|
|||
if (xd->update_mb_segmentation_map)
|
||||
{
|
||||
/* Which macro block level features are enabled */
|
||||
vpx_memset(xd->mb_segment_tree_probs, 255, sizeof(xd->mb_segment_tree_probs));
|
||||
memset(xd->mb_segment_tree_probs, 255, sizeof(xd->mb_segment_tree_probs));
|
||||
|
||||
/* Read the probs used to decode the segment id for each macro block. */
|
||||
for (i = 0; i < MB_FEATURE_TREE_PROBS; i++)
|
||||
|
@ -1279,7 +1278,7 @@ int vp8_decode_frame(VP8D_COMP *pbi)
|
|||
#endif
|
||||
if (pc->refresh_entropy_probs == 0)
|
||||
{
|
||||
vpx_memcpy(&pc->lfc, &pc->fc, sizeof(pc->fc));
|
||||
memcpy(&pc->lfc, &pc->fc, sizeof(pc->fc));
|
||||
}
|
||||
|
||||
pc->refresh_last_frame = pc->frame_type == KEY_FRAME || vp8_read_bit(bc);
|
||||
|
@ -1328,7 +1327,7 @@ int vp8_decode_frame(VP8D_COMP *pbi)
|
|||
}
|
||||
|
||||
/* clear out the coeff buffer */
|
||||
vpx_memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
|
||||
memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
|
||||
|
||||
vp8_decode_mode_mvs(pbi);
|
||||
|
||||
|
@ -1342,7 +1341,7 @@ int vp8_decode_frame(VP8D_COMP *pbi)
|
|||
}
|
||||
#endif
|
||||
|
||||
vpx_memset(pc->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * pc->mb_cols);
|
||||
memset(pc->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * pc->mb_cols);
|
||||
pbi->frame_corrupt_residual = 0;
|
||||
|
||||
#if CONFIG_MULTITHREAD
|
||||
|
@ -1381,7 +1380,7 @@ int vp8_decode_frame(VP8D_COMP *pbi)
|
|||
|
||||
if (pc->refresh_entropy_probs == 0)
|
||||
{
|
||||
vpx_memcpy(&pc->fc, &pc->lfc, sizeof(pc->fc));
|
||||
memcpy(&pc->fc, &pc->lfc, sizeof(pc->fc));
|
||||
pbi->independent_partitions = prev_independent_partitions;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,8 +20,8 @@ void vp8_reset_mb_tokens_context(MACROBLOCKD *x)
|
|||
ENTROPY_CONTEXT *a_ctx = ((ENTROPY_CONTEXT *)x->above_context);
|
||||
ENTROPY_CONTEXT *l_ctx = ((ENTROPY_CONTEXT *)x->left_context);
|
||||
|
||||
vpx_memset(a_ctx, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
vpx_memset(l_ctx, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
memset(a_ctx, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
memset(l_ctx, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
|
||||
/* Clear entropy contexts for Y2 blocks */
|
||||
if (!x->mode_info_context->mbmi.is_4x4)
|
||||
|
|
|
@ -350,7 +350,7 @@ static void estimate_missing_mvs(MB_OVERLAP *overlaps,
|
|||
unsigned int first_corrupt)
|
||||
{
|
||||
int mb_row, mb_col;
|
||||
vpx_memset(overlaps, 0, sizeof(MB_OVERLAP) * mb_rows * mb_cols);
|
||||
memset(overlaps, 0, sizeof(MB_OVERLAP) * mb_rows * mb_cols);
|
||||
/* First calculate the overlaps for all blocks */
|
||||
for (mb_row = 0; mb_row < mb_rows; ++mb_row)
|
||||
{
|
||||
|
|
|
@ -58,7 +58,7 @@ static struct VP8D_COMP * create_decompressor(VP8D_CONFIG *oxcf)
|
|||
if (!pbi)
|
||||
return NULL;
|
||||
|
||||
vpx_memset(pbi, 0, sizeof(VP8D_COMP));
|
||||
memset(pbi, 0, sizeof(VP8D_COMP));
|
||||
|
||||
if (setjmp(pbi->common.error.jmp))
|
||||
{
|
||||
|
@ -259,7 +259,7 @@ static int swap_frame_buffers (VP8_COMMON *cm)
|
|||
return err;
|
||||
}
|
||||
|
||||
int check_fragments_for_errors(VP8D_COMP *pbi)
|
||||
static int check_fragments_for_errors(VP8D_COMP *pbi)
|
||||
{
|
||||
if (!pbi->ec_active &&
|
||||
pbi->fragments.count <= 1 && pbi->fragments.sizes[0] == 0)
|
||||
|
|
|
@ -60,12 +60,12 @@ static void setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd, MB_ROW_D
|
|||
|
||||
mbd->segmentation_enabled = xd->segmentation_enabled;
|
||||
mbd->mb_segement_abs_delta = xd->mb_segement_abs_delta;
|
||||
vpx_memcpy(mbd->segment_feature_data, xd->segment_feature_data, sizeof(xd->segment_feature_data));
|
||||
memcpy(mbd->segment_feature_data, xd->segment_feature_data, sizeof(xd->segment_feature_data));
|
||||
|
||||
/*signed char ref_lf_deltas[MAX_REF_LF_DELTAS];*/
|
||||
vpx_memcpy(mbd->ref_lf_deltas, xd->ref_lf_deltas, sizeof(xd->ref_lf_deltas));
|
||||
memcpy(mbd->ref_lf_deltas, xd->ref_lf_deltas, sizeof(xd->ref_lf_deltas));
|
||||
/*signed char mode_lf_deltas[MAX_MODE_LF_DELTAS];*/
|
||||
vpx_memcpy(mbd->mode_lf_deltas, xd->mode_lf_deltas, sizeof(xd->mode_lf_deltas));
|
||||
memcpy(mbd->mode_lf_deltas, xd->mode_lf_deltas, sizeof(xd->mode_lf_deltas));
|
||||
/*unsigned char mode_ref_lf_delta_enabled;
|
||||
unsigned char mode_ref_lf_delta_update;*/
|
||||
mbd->mode_ref_lf_delta_enabled = xd->mode_ref_lf_delta_enabled;
|
||||
|
@ -73,10 +73,10 @@ static void setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd, MB_ROW_D
|
|||
|
||||
mbd->current_bc = &pbi->mbc[0];
|
||||
|
||||
vpx_memcpy(mbd->dequant_y1_dc, xd->dequant_y1_dc, sizeof(xd->dequant_y1_dc));
|
||||
vpx_memcpy(mbd->dequant_y1, xd->dequant_y1, sizeof(xd->dequant_y1));
|
||||
vpx_memcpy(mbd->dequant_y2, xd->dequant_y2, sizeof(xd->dequant_y2));
|
||||
vpx_memcpy(mbd->dequant_uv, xd->dequant_uv, sizeof(xd->dequant_uv));
|
||||
memcpy(mbd->dequant_y1_dc, xd->dequant_y1_dc, sizeof(xd->dequant_y1_dc));
|
||||
memcpy(mbd->dequant_y1, xd->dequant_y1, sizeof(xd->dequant_y1));
|
||||
memcpy(mbd->dequant_y2, xd->dequant_y2, sizeof(xd->dequant_y2));
|
||||
memcpy(mbd->dequant_uv, xd->dequant_uv, sizeof(xd->dequant_uv));
|
||||
|
||||
mbd->fullpixel_mask = 0xffffffff;
|
||||
|
||||
|
@ -137,7 +137,7 @@ static void mt_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
* Better to use the predictor as reconstruction.
|
||||
*/
|
||||
pbi->frame_corrupt_residual = 1;
|
||||
vpx_memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
|
||||
memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
|
||||
vp8_conceal_corrupt_mb(xd);
|
||||
|
||||
|
||||
|
@ -146,7 +146,7 @@ static void mt_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
/* force idct to be skipped for B_PRED and use the
|
||||
* prediction only for reconstruction
|
||||
* */
|
||||
vpx_memset(xd->eobs, 0, 25);
|
||||
memset(xd->eobs, 0, 25);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -179,7 +179,7 @@ static void mt_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
|
||||
/* clear out residual eob info */
|
||||
if(xd->mode_info_context->mbmi.mb_skip_coeff)
|
||||
vpx_memset(xd->eobs, 0, 25);
|
||||
memset(xd->eobs, 0, 25);
|
||||
|
||||
intra_prediction_down_copy(xd, xd->recon_above[0] + 16);
|
||||
|
||||
|
@ -229,7 +229,7 @@ static void mt_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
{
|
||||
vp8_dc_only_idct_add(b->qcoeff[0] * DQC[0],
|
||||
dst, dst_stride, dst, dst_stride);
|
||||
vpx_memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
|
||||
memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -266,14 +266,14 @@ static void mt_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||
|
||||
vp8_short_inv_walsh4x4(&b->dqcoeff[0],
|
||||
xd->qcoeff);
|
||||
vpx_memset(b->qcoeff, 0, 16 * sizeof(b->qcoeff[0]));
|
||||
memset(b->qcoeff, 0, 16 * sizeof(b->qcoeff[0]));
|
||||
}
|
||||
else
|
||||
{
|
||||
b->dqcoeff[0] = b->qcoeff[0] * xd->dequant_y2[0];
|
||||
vp8_short_inv_walsh4x4_1(&b->dqcoeff[0],
|
||||
xd->qcoeff);
|
||||
vpx_memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
|
||||
memset(b->qcoeff, 0, 2 * sizeof(b->qcoeff[0]));
|
||||
}
|
||||
|
||||
/* override the dc dequant constant in order to preserve the
|
||||
|
@ -360,7 +360,7 @@ static void mt_decode_mb_rows(VP8D_COMP *pbi, MACROBLOCKD *xd, int start_mb_row)
|
|||
|
||||
/* reset contexts */
|
||||
xd->above_context = pc->above_context;
|
||||
vpx_memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
xd->left_available = 0;
|
||||
|
||||
|
@ -499,9 +499,9 @@ static void mt_decode_mb_rows(VP8D_COMP *pbi, MACROBLOCKD *xd, int start_mb_row)
|
|||
if( mb_row != pc->mb_rows-1 )
|
||||
{
|
||||
/* Save decoded MB last row data for next-row decoding */
|
||||
vpx_memcpy((pbi->mt_yabove_row[mb_row + 1] + 32 + mb_col*16), (xd->dst.y_buffer + 15 * recon_y_stride), 16);
|
||||
vpx_memcpy((pbi->mt_uabove_row[mb_row + 1] + 16 + mb_col*8), (xd->dst.u_buffer + 7 * recon_uv_stride), 8);
|
||||
vpx_memcpy((pbi->mt_vabove_row[mb_row + 1] + 16 + mb_col*8), (xd->dst.v_buffer + 7 * recon_uv_stride), 8);
|
||||
memcpy((pbi->mt_yabove_row[mb_row + 1] + 32 + mb_col*16), (xd->dst.y_buffer + 15 * recon_y_stride), 16);
|
||||
memcpy((pbi->mt_uabove_row[mb_row + 1] + 16 + mb_col*8), (xd->dst.u_buffer + 7 * recon_uv_stride), 8);
|
||||
memcpy((pbi->mt_vabove_row[mb_row + 1] + 16 + mb_col*8), (xd->dst.v_buffer + 7 * recon_uv_stride), 8);
|
||||
}
|
||||
|
||||
/* save left_col for next MB decoding */
|
||||
|
@ -876,23 +876,23 @@ void vp8mt_decode_mb_rows( VP8D_COMP *pbi, MACROBLOCKD *xd)
|
|||
if (filter_level)
|
||||
{
|
||||
/* Set above_row buffer to 127 for decoding first MB row */
|
||||
vpx_memset(pbi->mt_yabove_row[0] + VP8BORDERINPIXELS-1, 127, yv12_fb_new->y_width + 5);
|
||||
vpx_memset(pbi->mt_uabove_row[0] + (VP8BORDERINPIXELS>>1)-1, 127, (yv12_fb_new->y_width>>1) +5);
|
||||
vpx_memset(pbi->mt_vabove_row[0] + (VP8BORDERINPIXELS>>1)-1, 127, (yv12_fb_new->y_width>>1) +5);
|
||||
memset(pbi->mt_yabove_row[0] + VP8BORDERINPIXELS-1, 127, yv12_fb_new->y_width + 5);
|
||||
memset(pbi->mt_uabove_row[0] + (VP8BORDERINPIXELS>>1)-1, 127, (yv12_fb_new->y_width>>1) +5);
|
||||
memset(pbi->mt_vabove_row[0] + (VP8BORDERINPIXELS>>1)-1, 127, (yv12_fb_new->y_width>>1) +5);
|
||||
|
||||
for (j=1; j<pc->mb_rows; j++)
|
||||
{
|
||||
vpx_memset(pbi->mt_yabove_row[j] + VP8BORDERINPIXELS-1, (unsigned char)129, 1);
|
||||
vpx_memset(pbi->mt_uabove_row[j] + (VP8BORDERINPIXELS>>1)-1, (unsigned char)129, 1);
|
||||
vpx_memset(pbi->mt_vabove_row[j] + (VP8BORDERINPIXELS>>1)-1, (unsigned char)129, 1);
|
||||
memset(pbi->mt_yabove_row[j] + VP8BORDERINPIXELS-1, (unsigned char)129, 1);
|
||||
memset(pbi->mt_uabove_row[j] + (VP8BORDERINPIXELS>>1)-1, (unsigned char)129, 1);
|
||||
memset(pbi->mt_vabove_row[j] + (VP8BORDERINPIXELS>>1)-1, (unsigned char)129, 1);
|
||||
}
|
||||
|
||||
/* Set left_col to 129 initially */
|
||||
for (j=0; j<pc->mb_rows; j++)
|
||||
{
|
||||
vpx_memset(pbi->mt_yleft_col[j], (unsigned char)129, 16);
|
||||
vpx_memset(pbi->mt_uleft_col[j], (unsigned char)129, 8);
|
||||
vpx_memset(pbi->mt_vleft_col[j], (unsigned char)129, 8);
|
||||
memset(pbi->mt_yleft_col[j], (unsigned char)129, 16);
|
||||
memset(pbi->mt_uleft_col[j], (unsigned char)129, 8);
|
||||
memset(pbi->mt_vleft_col[j], (unsigned char)129, 8);
|
||||
}
|
||||
|
||||
/* Initialize the loop filter for this frame. */
|
||||
|
|
|
@ -1,138 +0,0 @@
|
|||
;
|
||||
; 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.
|
||||
;
|
||||
|
||||
|
||||
EXPORT |vp8_mse16x16_armv6|
|
||||
|
||||
ARM
|
||||
|
||||
AREA ||.text||, CODE, READONLY, ALIGN=2
|
||||
|
||||
; r0 unsigned char *src_ptr
|
||||
; r1 int source_stride
|
||||
; r2 unsigned char *ref_ptr
|
||||
; r3 int recon_stride
|
||||
; stack unsigned int *sse
|
||||
;
|
||||
;note: Based on vp8_variance16x16_armv6. In this function, sum is never used.
|
||||
; So, we can remove this part of calculation.
|
||||
|
||||
|vp8_mse16x16_armv6| PROC
|
||||
|
||||
push {r4-r9, lr}
|
||||
|
||||
pld [r0, r1, lsl #0]
|
||||
pld [r2, r3, lsl #0]
|
||||
|
||||
mov r12, #16 ; set loop counter to 16 (=block height)
|
||||
mov r4, #0 ; initialize sse = 0
|
||||
|
||||
loop
|
||||
; 1st 4 pixels
|
||||
ldr r5, [r0, #0x0] ; load 4 src pixels
|
||||
ldr r6, [r2, #0x0] ; load 4 ref pixels
|
||||
|
||||
mov lr, #0 ; constant zero
|
||||
|
||||
usub8 r8, r5, r6 ; calculate difference
|
||||
pld [r0, r1, lsl #1]
|
||||
sel r7, r8, lr ; select bytes with positive difference
|
||||
usub8 r9, r6, r5 ; calculate difference with reversed operands
|
||||
pld [r2, r3, lsl #1]
|
||||
sel r8, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r5, r7, lr ; calculate sum of positive differences
|
||||
usad8 r6, r8, lr ; calculate sum of negative differences
|
||||
orr r8, r8, r7 ; differences of all 4 pixels
|
||||
|
||||
ldr r5, [r0, #0x4] ; load 4 src pixels
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r6, r8 ; byte (two pixels) to halfwords
|
||||
uxtb16 r7, r8, ror #8 ; another two pixels to halfwords
|
||||
smlad r4, r6, r6, r4 ; dual signed multiply, add and accumulate (1)
|
||||
|
||||
; 2nd 4 pixels
|
||||
ldr r6, [r2, #0x4] ; load 4 ref pixels
|
||||
smlad r4, r7, r7, r4 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
usub8 r8, r5, r6 ; calculate difference
|
||||
sel r7, r8, lr ; select bytes with positive difference
|
||||
usub8 r9, r6, r5 ; calculate difference with reversed operands
|
||||
sel r8, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r5, r7, lr ; calculate sum of positive differences
|
||||
usad8 r6, r8, lr ; calculate sum of negative differences
|
||||
orr r8, r8, r7 ; differences of all 4 pixels
|
||||
ldr r5, [r0, #0x8] ; load 4 src pixels
|
||||
; calculate sse
|
||||
uxtb16 r6, r8 ; byte (two pixels) to halfwords
|
||||
uxtb16 r7, r8, ror #8 ; another two pixels to halfwords
|
||||
smlad r4, r6, r6, r4 ; dual signed multiply, add and accumulate (1)
|
||||
|
||||
; 3rd 4 pixels
|
||||
ldr r6, [r2, #0x8] ; load 4 ref pixels
|
||||
smlad r4, r7, r7, r4 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
usub8 r8, r5, r6 ; calculate difference
|
||||
sel r7, r8, lr ; select bytes with positive difference
|
||||
usub8 r9, r6, r5 ; calculate difference with reversed operands
|
||||
sel r8, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r5, r7, lr ; calculate sum of positive differences
|
||||
usad8 r6, r8, lr ; calculate sum of negative differences
|
||||
orr r8, r8, r7 ; differences of all 4 pixels
|
||||
|
||||
ldr r5, [r0, #0xc] ; load 4 src pixels
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r6, r8 ; byte (two pixels) to halfwords
|
||||
uxtb16 r7, r8, ror #8 ; another two pixels to halfwords
|
||||
smlad r4, r6, r6, r4 ; dual signed multiply, add and accumulate (1)
|
||||
|
||||
; 4th 4 pixels
|
||||
ldr r6, [r2, #0xc] ; load 4 ref pixels
|
||||
smlad r4, r7, r7, r4 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
usub8 r8, r5, r6 ; calculate difference
|
||||
add r0, r0, r1 ; set src_ptr to next row
|
||||
sel r7, r8, lr ; select bytes with positive difference
|
||||
usub8 r9, r6, r5 ; calculate difference with reversed operands
|
||||
add r2, r2, r3 ; set dst_ptr to next row
|
||||
sel r8, r9, lr ; select bytes with negative difference
|
||||
|
||||
; calculate partial sums
|
||||
usad8 r5, r7, lr ; calculate sum of positive differences
|
||||
usad8 r6, r8, lr ; calculate sum of negative differences
|
||||
orr r8, r8, r7 ; differences of all 4 pixels
|
||||
|
||||
subs r12, r12, #1 ; next row
|
||||
|
||||
; calculate sse
|
||||
uxtb16 r6, r8 ; byte (two pixels) to halfwords
|
||||
uxtb16 r7, r8, ror #8 ; another two pixels to halfwords
|
||||
smlad r4, r6, r6, r4 ; dual signed multiply, add and accumulate (1)
|
||||
smlad r4, r7, r7, r4 ; dual signed multiply, add and accumulate (2)
|
||||
|
||||
bne loop
|
||||
|
||||
; return stuff
|
||||
ldr r1, [sp, #28] ; get address of sse
|
||||
mov r0, r4 ; return sse
|
||||
str r4, [r1] ; store sse
|
||||
|
||||
pop {r4-r9, pc}
|
||||
|
||||
ENDP
|
||||
|
||||
END
|
|
@ -1,131 +0,0 @@
|
|||
/*
|
||||
* 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 <arm_neon.h>
|
||||
|
||||
unsigned int vp8_mse16x16_neon(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride,
|
||||
unsigned int *sse) {
|
||||
int i;
|
||||
int16x4_t d22s16, d23s16, d24s16, d25s16, d26s16, d27s16, d28s16, d29s16;
|
||||
int64x1_t d0s64;
|
||||
uint8x16_t q0u8, q1u8, q2u8, q3u8;
|
||||
int32x4_t q7s32, q8s32, q9s32, q10s32;
|
||||
uint16x8_t q11u16, q12u16, q13u16, q14u16;
|
||||
int64x2_t q1s64;
|
||||
|
||||
q7s32 = vdupq_n_s32(0);
|
||||
q8s32 = vdupq_n_s32(0);
|
||||
q9s32 = vdupq_n_s32(0);
|
||||
q10s32 = vdupq_n_s32(0);
|
||||
|
||||
for (i = 0; i < 8; i++) { // mse16x16_neon_loop
|
||||
q0u8 = vld1q_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
q1u8 = vld1q_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
q2u8 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
q3u8 = vld1q_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
|
||||
q11u16 = vsubl_u8(vget_low_u8(q0u8), vget_low_u8(q2u8));
|
||||
q12u16 = vsubl_u8(vget_high_u8(q0u8), vget_high_u8(q2u8));
|
||||
q13u16 = vsubl_u8(vget_low_u8(q1u8), vget_low_u8(q3u8));
|
||||
q14u16 = vsubl_u8(vget_high_u8(q1u8), vget_high_u8(q3u8));
|
||||
|
||||
d22s16 = vreinterpret_s16_u16(vget_low_u16(q11u16));
|
||||
d23s16 = vreinterpret_s16_u16(vget_high_u16(q11u16));
|
||||
q7s32 = vmlal_s16(q7s32, d22s16, d22s16);
|
||||
q8s32 = vmlal_s16(q8s32, d23s16, d23s16);
|
||||
|
||||
d24s16 = vreinterpret_s16_u16(vget_low_u16(q12u16));
|
||||
d25s16 = vreinterpret_s16_u16(vget_high_u16(q12u16));
|
||||
q9s32 = vmlal_s16(q9s32, d24s16, d24s16);
|
||||
q10s32 = vmlal_s16(q10s32, d25s16, d25s16);
|
||||
|
||||
d26s16 = vreinterpret_s16_u16(vget_low_u16(q13u16));
|
||||
d27s16 = vreinterpret_s16_u16(vget_high_u16(q13u16));
|
||||
q7s32 = vmlal_s16(q7s32, d26s16, d26s16);
|
||||
q8s32 = vmlal_s16(q8s32, d27s16, d27s16);
|
||||
|
||||
d28s16 = vreinterpret_s16_u16(vget_low_u16(q14u16));
|
||||
d29s16 = vreinterpret_s16_u16(vget_high_u16(q14u16));
|
||||
q9s32 = vmlal_s16(q9s32, d28s16, d28s16);
|
||||
q10s32 = vmlal_s16(q10s32, d29s16, d29s16);
|
||||
}
|
||||
|
||||
q7s32 = vaddq_s32(q7s32, q8s32);
|
||||
q9s32 = vaddq_s32(q9s32, q10s32);
|
||||
q10s32 = vaddq_s32(q7s32, q9s32);
|
||||
|
||||
q1s64 = vpaddlq_s32(q10s32);
|
||||
d0s64 = vadd_s64(vget_low_s64(q1s64), vget_high_s64(q1s64));
|
||||
|
||||
vst1_lane_u32((uint32_t *)sse, vreinterpret_u32_s64(d0s64), 0);
|
||||
return vget_lane_u32(vreinterpret_u32_s64(d0s64), 0);
|
||||
}
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_neon(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride) {
|
||||
int16x4_t d22s16, d24s16, d26s16, d28s16;
|
||||
int64x1_t d0s64;
|
||||
uint8x8_t d0u8, d1u8, d2u8, d3u8, d4u8, d5u8, d6u8, d7u8;
|
||||
int32x4_t q7s32, q8s32, q9s32, q10s32;
|
||||
uint16x8_t q11u16, q12u16, q13u16, q14u16;
|
||||
int64x2_t q1s64;
|
||||
|
||||
d0u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
d4u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
d1u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
d5u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
d2u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
d6u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
d3u8 = vld1_u8(src_ptr);
|
||||
src_ptr += source_stride;
|
||||
d7u8 = vld1_u8(ref_ptr);
|
||||
ref_ptr += recon_stride;
|
||||
|
||||
q11u16 = vsubl_u8(d0u8, d4u8);
|
||||
q12u16 = vsubl_u8(d1u8, d5u8);
|
||||
q13u16 = vsubl_u8(d2u8, d6u8);
|
||||
q14u16 = vsubl_u8(d3u8, d7u8);
|
||||
|
||||
d22s16 = vget_low_s16(vreinterpretq_s16_u16(q11u16));
|
||||
d24s16 = vget_low_s16(vreinterpretq_s16_u16(q12u16));
|
||||
d26s16 = vget_low_s16(vreinterpretq_s16_u16(q13u16));
|
||||
d28s16 = vget_low_s16(vreinterpretq_s16_u16(q14u16));
|
||||
|
||||
q7s32 = vmull_s16(d22s16, d22s16);
|
||||
q8s32 = vmull_s16(d24s16, d24s16);
|
||||
q9s32 = vmull_s16(d26s16, d26s16);
|
||||
q10s32 = vmull_s16(d28s16, d28s16);
|
||||
|
||||
q7s32 = vaddq_s32(q7s32, q8s32);
|
||||
q9s32 = vaddq_s32(q9s32, q10s32);
|
||||
q9s32 = vaddq_s32(q7s32, q9s32);
|
||||
|
||||
q1s64 = vpaddlq_s32(q9s32);
|
||||
d0s64 = vadd_s64(vget_low_s64(q1s64), vget_high_s64(q1s64));
|
||||
|
||||
return vget_lane_u32(vreinterpret_u32_s64(d0s64), 0);
|
||||
}
|
|
@ -1543,7 +1543,7 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned char * dest
|
|||
if (pc->refresh_entropy_probs == 0)
|
||||
{
|
||||
/* save a copy for later refresh */
|
||||
vpx_memcpy(&cpi->common.lfc, &cpi->common.fc, sizeof(cpi->common.fc));
|
||||
memcpy(&cpi->common.lfc, &cpi->common.fc, sizeof(cpi->common.fc));
|
||||
}
|
||||
|
||||
vp8_update_coef_probs(cpi);
|
||||
|
@ -1620,7 +1620,7 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned char * dest
|
|||
/* concatenate partition buffers */
|
||||
for(i = 0; i < num_part; i++)
|
||||
{
|
||||
vpx_memmove(dp, cpi->partition_d[i+1], cpi->partition_sz[i+1]);
|
||||
memmove(dp, cpi->partition_d[i+1], cpi->partition_sz[i+1]);
|
||||
cpi->partition_d[i+1] = dp;
|
||||
dp += cpi->partition_sz[i+1];
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
|
||||
#include <math.h>
|
||||
|
||||
#include "./vp8_rtcd.h"
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch)
|
||||
{
|
||||
int i;
|
||||
|
|
|
@ -415,8 +415,8 @@ int vp8_denoiser_allocate(VP8_DENOISER *denoiser, int width, int height,
|
|||
vp8_denoiser_free(denoiser);
|
||||
return 1;
|
||||
}
|
||||
vpx_memset(denoiser->yv12_running_avg[i].buffer_alloc, 0,
|
||||
denoiser->yv12_running_avg[i].frame_size);
|
||||
memset(denoiser->yv12_running_avg[i].buffer_alloc, 0,
|
||||
denoiser->yv12_running_avg[i].frame_size);
|
||||
|
||||
}
|
||||
denoiser->yv12_mc_running_avg.flags = 0;
|
||||
|
@ -428,19 +428,19 @@ int vp8_denoiser_allocate(VP8_DENOISER *denoiser, int width, int height,
|
|||
return 1;
|
||||
}
|
||||
|
||||
vpx_memset(denoiser->yv12_mc_running_avg.buffer_alloc, 0,
|
||||
denoiser->yv12_mc_running_avg.frame_size);
|
||||
memset(denoiser->yv12_mc_running_avg.buffer_alloc, 0,
|
||||
denoiser->yv12_mc_running_avg.frame_size);
|
||||
|
||||
if (vp8_yv12_alloc_frame_buffer(&denoiser->yv12_last_source, width,
|
||||
height, VP8BORDERINPIXELS) < 0) {
|
||||
vp8_denoiser_free(denoiser);
|
||||
return 1;
|
||||
}
|
||||
vpx_memset(denoiser->yv12_last_source.buffer_alloc, 0,
|
||||
denoiser->yv12_last_source.frame_size);
|
||||
memset(denoiser->yv12_last_source.buffer_alloc, 0,
|
||||
denoiser->yv12_last_source.frame_size);
|
||||
|
||||
denoiser->denoise_state = vpx_calloc((num_mb_rows * num_mb_cols), 1);
|
||||
vpx_memset(denoiser->denoise_state, 0, (num_mb_rows * num_mb_cols));
|
||||
memset(denoiser->denoise_state, 0, (num_mb_rows * num_mb_cols));
|
||||
vp8_denoiser_set_parameters(denoiser, mode);
|
||||
denoiser->nmse_source_diff = 0;
|
||||
denoiser->nmse_source_diff_count = 0;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "vpx_config.h"
|
||||
#include "vp8_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "encodemb.h"
|
||||
#include "encodemv.h"
|
||||
#include "vp8/common/common.h"
|
||||
|
@ -90,7 +91,7 @@ static unsigned int tt_activity_measure( VP8_COMP *cpi, MACROBLOCK *x )
|
|||
* lambda using a non-linear combination (e.g., the smallest, or second
|
||||
* smallest, etc.).
|
||||
*/
|
||||
act = vp8_variance16x16(x->src.y_buffer,
|
||||
act = vpx_variance16x16(x->src.y_buffer,
|
||||
x->src.y_stride, VP8_VAR_OFFS, 0, &sse);
|
||||
act = act<<4;
|
||||
|
||||
|
@ -155,8 +156,8 @@ static void calc_av_activity( VP8_COMP *cpi, int64_t activity_sum )
|
|||
cpi->common.MBs));
|
||||
|
||||
/* Copy map to sort list */
|
||||
vpx_memcpy( sortlist, cpi->mb_activity_map,
|
||||
sizeof(unsigned int) * cpi->common.MBs );
|
||||
memcpy( sortlist, cpi->mb_activity_map,
|
||||
sizeof(unsigned int) * cpi->common.MBs );
|
||||
|
||||
|
||||
/* Ripple each value down to its correct position */
|
||||
|
@ -665,8 +666,7 @@ static void init_encode_frame_mb_context(VP8_COMP *cpi)
|
|||
|
||||
x->mvc = cm->fc.mvc;
|
||||
|
||||
vpx_memset(cm->above_context, 0,
|
||||
sizeof(ENTROPY_CONTEXT_PLANES) * cm->mb_cols);
|
||||
memset(cm->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * cm->mb_cols);
|
||||
|
||||
/* Special case treatment when GF and ARF are not sensible options
|
||||
* for reference
|
||||
|
@ -744,7 +744,7 @@ void vp8_encode_frame(VP8_COMP *cpi)
|
|||
const int num_part = (1 << cm->multi_token_partition);
|
||||
#endif
|
||||
|
||||
vpx_memset(segment_counts, 0, sizeof(segment_counts));
|
||||
memset(segment_counts, 0, sizeof(segment_counts));
|
||||
totalrate = 0;
|
||||
|
||||
if (cpi->compressor_speed == 2)
|
||||
|
@ -974,7 +974,7 @@ void vp8_encode_frame(VP8_COMP *cpi)
|
|||
int i;
|
||||
|
||||
/* Set to defaults */
|
||||
vpx_memset(xd->mb_segment_tree_probs, 255 , sizeof(xd->mb_segment_tree_probs));
|
||||
memset(xd->mb_segment_tree_probs, 255 , sizeof(xd->mb_segment_tree_probs));
|
||||
|
||||
tot_count = segment_counts[0] + segment_counts[1] + segment_counts[2] + segment_counts[3];
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "vpx_config.h"
|
||||
#include "vp8_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "quantize.h"
|
||||
#include "vp8/common/reconintra4x4.h"
|
||||
#include "encodemb.h"
|
||||
|
@ -44,7 +45,7 @@ int vp8_encode_intra(VP8_COMP *cpi, MACROBLOCK *x, int use_dc_pred)
|
|||
}
|
||||
}
|
||||
|
||||
intra_pred_var = vp8_get_mb_ss(x->src_diff);
|
||||
intra_pred_var = vpx_get_mb_ss(x->src_diff);
|
||||
|
||||
return intra_pred_var;
|
||||
}
|
||||
|
|
|
@ -506,8 +506,8 @@ static void optimize_mb(MACROBLOCK *x)
|
|||
ENTROPY_CONTEXT *ta;
|
||||
ENTROPY_CONTEXT *tl;
|
||||
|
||||
vpx_memcpy(&t_above, x->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(&t_left, x->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_above, x->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_left, x->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
ta = (ENTROPY_CONTEXT *)&t_above;
|
||||
tl = (ENTROPY_CONTEXT *)&t_left;
|
||||
|
@ -555,8 +555,8 @@ void vp8_optimize_mby(MACROBLOCK *x)
|
|||
if (!x->e_mbd.left_context)
|
||||
return;
|
||||
|
||||
vpx_memcpy(&t_above, x->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(&t_left, x->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_above, x->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_left, x->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
ta = (ENTROPY_CONTEXT *)&t_above;
|
||||
tl = (ENTROPY_CONTEXT *)&t_left;
|
||||
|
@ -595,8 +595,8 @@ void vp8_optimize_mbuv(MACROBLOCK *x)
|
|||
if (!x->e_mbd.left_context)
|
||||
return;
|
||||
|
||||
vpx_memcpy(&t_above, x->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(&t_left, x->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_above, x->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_left, x->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
ta = (ENTROPY_CONTEXT *)&t_above;
|
||||
tl = (ENTROPY_CONTEXT *)&t_left;
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
|
||||
extern void vp8cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x, int ok_to_skip);
|
||||
|
||||
extern void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm);
|
||||
|
||||
static THREAD_FUNCTION thread_loopfilter(void *p_data)
|
||||
{
|
||||
VP8_COMP *cpi = (VP8_COMP *)(((LPFTHREAD_DATA *)p_data)->ptr1);
|
||||
|
@ -416,14 +414,13 @@ static void setup_mbby_copy(MACROBLOCK *mbdst, MACROBLOCK *mbsrc)
|
|||
zd->subpixel_predict16x16 = xd->subpixel_predict16x16;
|
||||
zd->segmentation_enabled = xd->segmentation_enabled;
|
||||
zd->mb_segement_abs_delta = xd->mb_segement_abs_delta;
|
||||
vpx_memcpy(zd->segment_feature_data, xd->segment_feature_data,
|
||||
sizeof(xd->segment_feature_data));
|
||||
memcpy(zd->segment_feature_data, xd->segment_feature_data,
|
||||
sizeof(xd->segment_feature_data));
|
||||
|
||||
vpx_memcpy(zd->dequant_y1_dc, xd->dequant_y1_dc,
|
||||
sizeof(xd->dequant_y1_dc));
|
||||
vpx_memcpy(zd->dequant_y1, xd->dequant_y1, sizeof(xd->dequant_y1));
|
||||
vpx_memcpy(zd->dequant_y2, xd->dequant_y2, sizeof(xd->dequant_y2));
|
||||
vpx_memcpy(zd->dequant_uv, xd->dequant_uv, sizeof(xd->dequant_uv));
|
||||
memcpy(zd->dequant_y1_dc, xd->dequant_y1_dc, sizeof(xd->dequant_y1_dc));
|
||||
memcpy(zd->dequant_y1, xd->dequant_y1, sizeof(xd->dequant_y1));
|
||||
memcpy(zd->dequant_y2, xd->dequant_y2, sizeof(xd->dequant_y2));
|
||||
memcpy(zd->dequant_uv, xd->dequant_uv, sizeof(xd->dequant_uv));
|
||||
|
||||
#if 1
|
||||
/*TODO: Remove dequant from BLOCKD. This is a temporary solution until
|
||||
|
@ -438,15 +435,14 @@ static void setup_mbby_copy(MACROBLOCK *mbdst, MACROBLOCK *mbsrc)
|
|||
#endif
|
||||
|
||||
|
||||
vpx_memcpy(z->rd_threshes, x->rd_threshes, sizeof(x->rd_threshes));
|
||||
vpx_memcpy(z->rd_thresh_mult, x->rd_thresh_mult,
|
||||
sizeof(x->rd_thresh_mult));
|
||||
memcpy(z->rd_threshes, x->rd_threshes, sizeof(x->rd_threshes));
|
||||
memcpy(z->rd_thresh_mult, x->rd_thresh_mult, sizeof(x->rd_thresh_mult));
|
||||
|
||||
z->zbin_over_quant = x->zbin_over_quant;
|
||||
z->zbin_mode_boost_enabled = x->zbin_mode_boost_enabled;
|
||||
z->zbin_mode_boost = x->zbin_mode_boost;
|
||||
|
||||
vpx_memset(z->error_bins, 0, sizeof(z->error_bins));
|
||||
memset(z->error_bins, 0, sizeof(z->error_bins));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -472,7 +468,7 @@ void vp8cx_init_mbrthread_data(VP8_COMP *cpi,
|
|||
mbd->subpixel_predict16x16 = xd->subpixel_predict16x16;
|
||||
mb->gf_active_ptr = x->gf_active_ptr;
|
||||
|
||||
vpx_memset(mbr_ei[i].segment_counts, 0, sizeof(mbr_ei[i].segment_counts));
|
||||
memset(mbr_ei[i].segment_counts, 0, sizeof(mbr_ei[i].segment_counts));
|
||||
mbr_ei[i].totalrate = 0;
|
||||
|
||||
mb->partition_info = x->pi + x->e_mbd.mode_info_stride * (i + 1);
|
||||
|
@ -547,7 +543,7 @@ int vp8cx_create_encoder_threads(VP8_COMP *cpi)
|
|||
vpx_malloc(sizeof(sem_t) * th_count));
|
||||
CHECK_MEM_ERROR(cpi->mb_row_ei,
|
||||
vpx_memalign(32, sizeof(MB_ROW_COMP) * th_count));
|
||||
vpx_memset(cpi->mb_row_ei, 0, sizeof(MB_ROW_COMP) * th_count);
|
||||
memset(cpi->mb_row_ei, 0, sizeof(MB_ROW_COMP) * th_count);
|
||||
CHECK_MEM_ERROR(cpi->en_thread_data,
|
||||
vpx_malloc(sizeof(ENCODETHREAD_DATA) * th_count));
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "./vpx_scale_rtcd.h"
|
||||
#include "block.h"
|
||||
#include "onyx_int.h"
|
||||
|
@ -34,8 +35,6 @@
|
|||
/* #define OUTPUT_FPF 1 */
|
||||
|
||||
extern void vp8cx_frame_init_quantizer(VP8_COMP *cpi);
|
||||
extern void vp8_set_mbmode_and_mvs(MACROBLOCK *x, MB_PREDICTION_MODE mb, int_mv *mv);
|
||||
extern void vp8_alloc_compressor_data(VP8_COMP *cpi);
|
||||
|
||||
#define GFQ_ADJUSTMENT vp8_gf_boost_qadjustment[Q]
|
||||
extern int vp8_kf_boost_qadjustment[QINDEX_RANGE];
|
||||
|
@ -424,14 +423,14 @@ static void zz_motion_search( VP8_COMP *cpi, MACROBLOCK * x,
|
|||
/* Set up pointers for this macro block raw buffer */
|
||||
raw_ptr = (unsigned char *)(raw_buffer->y_buffer + recon_yoffset
|
||||
+ d->offset);
|
||||
vp8_mse16x16 ( src_ptr, src_stride, raw_ptr, raw_stride,
|
||||
(unsigned int *)(raw_motion_err));
|
||||
vpx_mse16x16(src_ptr, src_stride, raw_ptr, raw_stride,
|
||||
(unsigned int *)(raw_motion_err));
|
||||
|
||||
/* Set up pointers for this macro block recon buffer */
|
||||
xd->pre.y_buffer = recon_buffer->y_buffer + recon_yoffset;
|
||||
ref_ptr = (unsigned char *)(xd->pre.y_buffer + d->offset );
|
||||
vp8_mse16x16 ( src_ptr, src_stride, ref_ptr, ref_stride,
|
||||
(unsigned int *)(best_motion_err));
|
||||
vpx_mse16x16(src_ptr, src_stride, ref_ptr, ref_stride,
|
||||
(unsigned int *)(best_motion_err));
|
||||
}
|
||||
|
||||
static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x,
|
||||
|
@ -455,7 +454,7 @@ static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x,
|
|||
int new_mv_mode_penalty = 256;
|
||||
|
||||
/* override the default variance function to use MSE */
|
||||
v_fn_ptr.vf = vp8_mse16x16;
|
||||
v_fn_ptr.vf = vpx_mse16x16;
|
||||
|
||||
/* Set up pointers for this macro block recon buffer */
|
||||
xd->pre.y_buffer = recon_buffer->y_buffer + recon_yoffset;
|
||||
|
@ -573,7 +572,7 @@ void vp8_first_pass(VP8_COMP *cpi)
|
|||
{
|
||||
int flag[2] = {1, 1};
|
||||
vp8_initialize_rd_consts(cpi, x, vp8_dc_quant(cm->base_qindex, cm->y1dc_delta_q));
|
||||
vpx_memcpy(cm->fc.mvc, vp8_default_mv_context, sizeof(vp8_default_mv_context));
|
||||
memcpy(cm->fc.mvc, vp8_default_mv_context, sizeof(vp8_default_mv_context));
|
||||
vp8_build_component_cost_table(cpi->mb.mvcost, (const MV_CONTEXT *) cm->fc.mvc, flag);
|
||||
}
|
||||
|
||||
|
@ -1329,8 +1328,6 @@ static int estimate_kf_group_q(VP8_COMP *cpi, double section_err, int section_ta
|
|||
return Q;
|
||||
}
|
||||
|
||||
extern void vp8_new_framerate(VP8_COMP *cpi, double framerate);
|
||||
|
||||
void vp8_init_second_pass(VP8_COMP *cpi)
|
||||
{
|
||||
FIRSTPASS_STATS this_frame;
|
||||
|
@ -1779,7 +1776,7 @@ static void define_gf_group(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||
|
||||
start_pos = cpi->twopass.stats_in;
|
||||
|
||||
vpx_memset(&next_frame, 0, sizeof(next_frame)); /* assure clean */
|
||||
memset(&next_frame, 0, sizeof(next_frame)); /* assure clean */
|
||||
|
||||
/* Load stats for the current frame. */
|
||||
mod_frame_err = calculate_modified_err(cpi, this_frame);
|
||||
|
@ -1875,7 +1872,7 @@ static void define_gf_group(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||
break;
|
||||
}
|
||||
|
||||
vpx_memcpy(this_frame, &next_frame, sizeof(*this_frame));
|
||||
memcpy(this_frame, &next_frame, sizeof(*this_frame));
|
||||
|
||||
old_boost_score = boost_score;
|
||||
}
|
||||
|
@ -2445,7 +2442,7 @@ void vp8_second_pass(VP8_COMP *cpi)
|
|||
if (cpi->twopass.frames_to_key == 0)
|
||||
{
|
||||
/* Define next KF group and assign bits to it */
|
||||
vpx_memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
find_next_key_frame(cpi, &this_frame_copy);
|
||||
|
||||
/* Special case: Error error_resilient_mode mode does not make much
|
||||
|
@ -2471,7 +2468,7 @@ void vp8_second_pass(VP8_COMP *cpi)
|
|||
if (cpi->frames_till_gf_update_due == 0)
|
||||
{
|
||||
/* Define next gf group and assign bits to it */
|
||||
vpx_memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
define_gf_group(cpi, &this_frame_copy);
|
||||
|
||||
/* If we are going to code an altref frame at the end of the group
|
||||
|
@ -2487,7 +2484,7 @@ void vp8_second_pass(VP8_COMP *cpi)
|
|||
* to the GF group
|
||||
*/
|
||||
int bak = cpi->per_frame_bandwidth;
|
||||
vpx_memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
assign_std_frame_bits(cpi, &this_frame_copy);
|
||||
cpi->per_frame_bandwidth = bak;
|
||||
}
|
||||
|
@ -2510,14 +2507,14 @@ void vp8_second_pass(VP8_COMP *cpi)
|
|||
if (cpi->common.frame_type != KEY_FRAME)
|
||||
{
|
||||
/* Assign bits from those allocated to the GF group */
|
||||
vpx_memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
assign_std_frame_bits(cpi, &this_frame_copy);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Assign bits from those allocated to the GF group */
|
||||
vpx_memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
memcpy(&this_frame_copy, &this_frame, sizeof(this_frame));
|
||||
assign_std_frame_bits(cpi, &this_frame_copy);
|
||||
}
|
||||
}
|
||||
|
@ -2658,7 +2655,7 @@ static int test_candidate_kf(VP8_COMP *cpi, FIRSTPASS_STATS *last_frame, FIRSTP
|
|||
double decay_accumulator = 1.0;
|
||||
double next_iiratio;
|
||||
|
||||
vpx_memcpy(&local_next_frame, next_frame, sizeof(*next_frame));
|
||||
memcpy(&local_next_frame, next_frame, sizeof(*next_frame));
|
||||
|
||||
/* Note the starting file position so we can reset to it */
|
||||
start_pos = cpi->twopass.stats_in;
|
||||
|
@ -2735,7 +2732,7 @@ static void find_next_key_frame(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||
double kf_group_coded_err = 0.0;
|
||||
double recent_loop_decay[8] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0};
|
||||
|
||||
vpx_memset(&next_frame, 0, sizeof(next_frame));
|
||||
memset(&next_frame, 0, sizeof(next_frame));
|
||||
|
||||
vp8_clear_system_state();
|
||||
start_position = cpi->twopass.stats_in;
|
||||
|
@ -2756,7 +2753,7 @@ static void find_next_key_frame(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||
cpi->twopass.frames_to_key = 1;
|
||||
|
||||
/* Take a copy of the initial frame details */
|
||||
vpx_memcpy(&first_frame, this_frame, sizeof(*this_frame));
|
||||
memcpy(&first_frame, this_frame, sizeof(*this_frame));
|
||||
|
||||
cpi->twopass.kf_group_bits = 0;
|
||||
cpi->twopass.kf_group_error_left = 0;
|
||||
|
@ -2779,7 +2776,7 @@ static void find_next_key_frame(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||
kf_group_coded_err += this_frame->coded_error;
|
||||
|
||||
/* Load the next frame's stats. */
|
||||
vpx_memcpy(&last_frame, this_frame, sizeof(*this_frame));
|
||||
memcpy(&last_frame, this_frame, sizeof(*this_frame));
|
||||
input_stats(cpi, this_frame);
|
||||
|
||||
/* Provided that we are not at the end of the file... */
|
||||
|
@ -2847,7 +2844,7 @@ static void find_next_key_frame(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||
cpi->twopass.frames_to_key /= 2;
|
||||
|
||||
/* Copy first frame details */
|
||||
vpx_memcpy(&tmp_frame, &first_frame, sizeof(first_frame));
|
||||
memcpy(&tmp_frame, &first_frame, sizeof(first_frame));
|
||||
|
||||
/* Reset to the start of the group */
|
||||
reset_fpf_position(cpi, start_position);
|
||||
|
@ -2969,7 +2966,6 @@ static void find_next_key_frame(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||
*/
|
||||
decay_accumulator = 1.0;
|
||||
boost_score = 0.0;
|
||||
loop_decay_rate = 1.00; /* Starting decay rate */
|
||||
|
||||
for (i = 0 ; i < cpi->twopass.frames_to_key ; i++)
|
||||
{
|
||||
|
@ -3213,7 +3209,7 @@ static void find_next_key_frame(VP8_COMP *cpi, FIRSTPASS_STATS *this_frame)
|
|||
int new_width = cpi->oxcf.Width;
|
||||
int new_height = cpi->oxcf.Height;
|
||||
|
||||
int projected_buffer_level = (int)cpi->buffer_level;
|
||||
int projected_buffer_level;
|
||||
int tmp_q;
|
||||
|
||||
double projected_bits_perframe;
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
*/
|
||||
|
||||
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "onyx_int.h"
|
||||
#include "mcomp.h"
|
||||
#include "vpx_mem/vpx_mem.h"
|
||||
|
@ -900,7 +902,7 @@ int vp8_hex_search
|
|||
this_offset = base_offset + (br * (pre_stride)) + bc;
|
||||
this_mv.as_mv.row = br;
|
||||
this_mv.as_mv.col = bc;
|
||||
bestsad = vfp->sdf(what, what_stride, this_offset, in_what_stride, UINT_MAX)
|
||||
bestsad = vfp->sdf(what, what_stride, this_offset, in_what_stride)
|
||||
+ mvsad_err_cost(&this_mv, &fcenter_mv, mvsadcost, sad_per_bit);
|
||||
|
||||
#if CONFIG_MULTI_RES_ENCODING
|
||||
|
@ -927,7 +929,7 @@ int vp8_hex_search
|
|||
this_mv.as_mv.row = br + hex[i].row;
|
||||
this_mv.as_mv.col = bc + hex[i].col;
|
||||
this_offset = base_offset + (this_mv.as_mv.row * in_what_stride) + this_mv.as_mv.col;
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride);
|
||||
CHECK_BETTER
|
||||
}
|
||||
}else
|
||||
|
@ -938,7 +940,7 @@ int vp8_hex_search
|
|||
this_mv.as_mv.col = bc + hex[i].col;
|
||||
CHECK_POINT
|
||||
this_offset = base_offset + (this_mv.as_mv.row * in_what_stride) + this_mv.as_mv.col;
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride);
|
||||
CHECK_BETTER
|
||||
}
|
||||
}
|
||||
|
@ -964,7 +966,7 @@ int vp8_hex_search
|
|||
this_mv.as_mv.row = br + next_chkpts[k][i].row;
|
||||
this_mv.as_mv.col = bc + next_chkpts[k][i].col;
|
||||
this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col;
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride);
|
||||
CHECK_BETTER
|
||||
}
|
||||
}else
|
||||
|
@ -975,7 +977,7 @@ int vp8_hex_search
|
|||
this_mv.as_mv.col = bc + next_chkpts[k][i].col;
|
||||
CHECK_POINT
|
||||
this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col;
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride);
|
||||
CHECK_BETTER
|
||||
}
|
||||
}
|
||||
|
@ -1006,7 +1008,7 @@ cal_neighbors:
|
|||
this_mv.as_mv.row = br + neighbors[i].row;
|
||||
this_mv.as_mv.col = bc + neighbors[i].col;
|
||||
this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col;
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride);
|
||||
CHECK_BETTER
|
||||
}
|
||||
}else
|
||||
|
@ -1017,7 +1019,7 @@ cal_neighbors:
|
|||
this_mv.as_mv.col = bc + neighbors[i].col;
|
||||
CHECK_POINT
|
||||
this_offset = base_offset + (this_mv.as_mv.row * (in_what_stride)) + this_mv.as_mv.col;
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride, bestsad);
|
||||
thissad = vfp->sdf(what, what_stride, this_offset, in_what_stride);
|
||||
CHECK_BETTER
|
||||
}
|
||||
}
|
||||
|
@ -1101,7 +1103,7 @@ int vp8_diamond_search_sad_c
|
|||
best_address = in_what;
|
||||
|
||||
/* Check the starting position */
|
||||
bestsad = fn_ptr->sdf(what, what_stride, in_what, in_what_stride, UINT_MAX)
|
||||
bestsad = fn_ptr->sdf(what, what_stride, in_what, in_what_stride)
|
||||
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
|
||||
|
||||
/* search_param determines the length of the initial step and hence
|
||||
|
@ -1126,7 +1128,7 @@ int vp8_diamond_search_sad_c
|
|||
|
||||
{
|
||||
check_here = ss[i].offset + best_address;
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad);
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride);
|
||||
|
||||
if (thissad < bestsad)
|
||||
{
|
||||
|
@ -1225,7 +1227,7 @@ int vp8_diamond_search_sadx4
|
|||
best_address = in_what;
|
||||
|
||||
/* Check the starting position */
|
||||
bestsad = fn_ptr->sdf(what, what_stride, in_what, in_what_stride, UINT_MAX)
|
||||
bestsad = fn_ptr->sdf(what, what_stride, in_what, in_what_stride)
|
||||
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
|
||||
|
||||
/* search_param determines the length of the initial step and hence the
|
||||
|
@ -1293,7 +1295,7 @@ int vp8_diamond_search_sadx4
|
|||
(this_row_offset > x->mv_row_min) && (this_row_offset < x->mv_row_max))
|
||||
{
|
||||
check_here = ss[i].offset + best_address;
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad);
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride);
|
||||
|
||||
if (thissad < bestsad)
|
||||
{
|
||||
|
@ -1376,8 +1378,7 @@ int vp8_full_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
|
|||
best_mv->as_mv.col = ref_col;
|
||||
|
||||
/* Baseline value at the centre */
|
||||
bestsad = fn_ptr->sdf(what, what_stride, bestaddress,
|
||||
in_what_stride, UINT_MAX)
|
||||
bestsad = fn_ptr->sdf(what, what_stride, bestaddress, in_what_stride)
|
||||
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
|
||||
|
||||
/* Apply further limits to prevent us looking using vectors that
|
||||
|
@ -1402,7 +1403,7 @@ int vp8_full_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
|
|||
|
||||
for (c = col_min; c < col_max; c++)
|
||||
{
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad);
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride);
|
||||
|
||||
this_mv.as_mv.col = c;
|
||||
thissad += mvsad_err_cost(&this_mv, &fcenter_mv,
|
||||
|
@ -1474,8 +1475,7 @@ int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
|
|||
best_mv->as_mv.col = ref_col;
|
||||
|
||||
/* Baseline value at the centre */
|
||||
bestsad = fn_ptr->sdf(what, what_stride, bestaddress,
|
||||
in_what_stride, UINT_MAX)
|
||||
bestsad = fn_ptr->sdf(what, what_stride, bestaddress, in_what_stride)
|
||||
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
|
||||
|
||||
/* Apply further limits to prevent us looking using vectors that stretch
|
||||
|
@ -1531,7 +1531,7 @@ int vp8_full_search_sadx3(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
|
|||
|
||||
while (c < col_max)
|
||||
{
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad);
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride);
|
||||
|
||||
if (thissad < bestsad)
|
||||
{
|
||||
|
@ -1590,7 +1590,8 @@ int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
|
|||
int col_min = ref_col - distance;
|
||||
int col_max = ref_col + distance;
|
||||
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, sad_array8, 8);
|
||||
// TODO(johannkoenig): check if this alignment is necessary.
|
||||
DECLARE_ALIGNED(16, unsigned int, sad_array8[8]);
|
||||
unsigned int sad_array[3];
|
||||
|
||||
int *mvsadcost[2];
|
||||
|
@ -1609,8 +1610,7 @@ int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
|
|||
best_mv->as_mv.col = ref_col;
|
||||
|
||||
/* Baseline value at the centre */
|
||||
bestsad = fn_ptr->sdf(what, what_stride,
|
||||
bestaddress, in_what_stride, UINT_MAX)
|
||||
bestsad = fn_ptr->sdf(what, what_stride, bestaddress, in_what_stride)
|
||||
+ mvsad_err_cost(best_mv, &fcenter_mv, mvsadcost, sad_per_bit);
|
||||
|
||||
/* Apply further limits to prevent us looking using vectors that stretch
|
||||
|
@ -1696,7 +1696,7 @@ int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv,
|
|||
|
||||
while (c < col_max)
|
||||
{
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride, bestsad);
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride);
|
||||
|
||||
if (thissad < bestsad)
|
||||
{
|
||||
|
@ -1754,8 +1754,7 @@ int vp8_refining_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv
|
|||
fcenter_mv.as_mv.row = center_mv->as_mv.row >> 3;
|
||||
fcenter_mv.as_mv.col = center_mv->as_mv.col >> 3;
|
||||
|
||||
bestsad = fn_ptr->sdf(what, what_stride, best_address,
|
||||
in_what_stride, UINT_MAX)
|
||||
bestsad = fn_ptr->sdf(what, what_stride, best_address, in_what_stride)
|
||||
+ mvsad_err_cost(ref_mv, &fcenter_mv, mvsadcost, error_per_bit);
|
||||
|
||||
for (i=0; i<search_range; i++)
|
||||
|
@ -1771,7 +1770,7 @@ int vp8_refining_search_sad_c(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *ref_mv
|
|||
(this_row_offset > x->mv_row_min) && (this_row_offset < x->mv_row_max))
|
||||
{
|
||||
check_here = (neighbors[j].row)*in_what_stride + neighbors[j].col + best_address;
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride, bestsad);
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride);
|
||||
|
||||
if (thissad < bestsad)
|
||||
{
|
||||
|
@ -1834,8 +1833,7 @@ int vp8_refining_search_sadx4(MACROBLOCK *x, BLOCK *b, BLOCKD *d,
|
|||
fcenter_mv.as_mv.row = center_mv->as_mv.row >> 3;
|
||||
fcenter_mv.as_mv.col = center_mv->as_mv.col >> 3;
|
||||
|
||||
bestsad = fn_ptr->sdf(what, what_stride, best_address,
|
||||
in_what_stride, UINT_MAX)
|
||||
bestsad = fn_ptr->sdf(what, what_stride, best_address, in_what_stride)
|
||||
+ mvsad_err_cost(ref_mv, &fcenter_mv, mvsadcost, error_per_bit);
|
||||
|
||||
for (i=0; i<search_range; i++)
|
||||
|
@ -1886,7 +1884,7 @@ int vp8_refining_search_sadx4(MACROBLOCK *x, BLOCK *b, BLOCKD *d,
|
|||
(this_row_offset > x->mv_row_min) && (this_row_offset < x->mv_row_max))
|
||||
{
|
||||
check_here = (neighbors[j].row)*in_what_stride + neighbors[j].col + best_address;
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride, bestsad);
|
||||
thissad = fn_ptr->sdf(what, what_stride, check_here , in_what_stride);
|
||||
|
||||
if (thissad < bestsad)
|
||||
{
|
||||
|
@ -1978,8 +1976,8 @@ void print_mode_context(void)
|
|||
#ifdef VP8_ENTROPY_STATS
|
||||
void init_mv_ref_counts()
|
||||
{
|
||||
vpx_memset(mv_ref_ct, 0, sizeof(mv_ref_ct));
|
||||
vpx_memset(mv_mode_cts, 0, sizeof(mv_mode_cts));
|
||||
memset(mv_ref_ct, 0, sizeof(mv_ref_ct));
|
||||
memset(mv_mode_cts, 0, sizeof(mv_mode_cts));
|
||||
}
|
||||
|
||||
void accum_mv_refs(MB_PREDICTION_MODE m, const int ct[4])
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
|
||||
#include "vp8/common/blockd.h"
|
||||
#include "modecosts.h"
|
||||
#include "onyx_int.h"
|
||||
#include "treewriter.h"
|
||||
#include "vp8/common/entropymode.h"
|
||||
|
|
|
@ -16,7 +16,9 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
void vp8_init_mode_costs(VP8_COMP *x);
|
||||
struct VP8_COMP;
|
||||
|
||||
void vp8_init_mode_costs(struct VP8_COMP *x);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "vpx_config.h"
|
||||
#include "./vpx_scale_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "vp8/common/onyxc_int.h"
|
||||
#include "vp8/common/blockd.h"
|
||||
|
@ -428,10 +429,10 @@ static void setup_features(VP8_COMP *cpi)
|
|||
|
||||
cpi->mb.e_mbd.mode_ref_lf_delta_enabled = 0;
|
||||
cpi->mb.e_mbd.mode_ref_lf_delta_update = 0;
|
||||
vpx_memset(cpi->mb.e_mbd.ref_lf_deltas, 0, sizeof(cpi->mb.e_mbd.ref_lf_deltas));
|
||||
vpx_memset(cpi->mb.e_mbd.mode_lf_deltas, 0, sizeof(cpi->mb.e_mbd.mode_lf_deltas));
|
||||
vpx_memset(cpi->mb.e_mbd.last_ref_lf_deltas, 0, sizeof(cpi->mb.e_mbd.ref_lf_deltas));
|
||||
vpx_memset(cpi->mb.e_mbd.last_mode_lf_deltas, 0, sizeof(cpi->mb.e_mbd.mode_lf_deltas));
|
||||
memset(cpi->mb.e_mbd.ref_lf_deltas, 0, sizeof(cpi->mb.e_mbd.ref_lf_deltas));
|
||||
memset(cpi->mb.e_mbd.mode_lf_deltas, 0, sizeof(cpi->mb.e_mbd.mode_lf_deltas));
|
||||
memset(cpi->mb.e_mbd.last_ref_lf_deltas, 0, sizeof(cpi->mb.e_mbd.ref_lf_deltas));
|
||||
memset(cpi->mb.e_mbd.last_mode_lf_deltas, 0, sizeof(cpi->mb.e_mbd.mode_lf_deltas));
|
||||
|
||||
set_default_lf_deltas(cpi);
|
||||
|
||||
|
@ -508,7 +509,7 @@ static void disable_segmentation(VP8_COMP *cpi)
|
|||
static void set_segmentation_map(VP8_COMP *cpi, unsigned char *segmentation_map)
|
||||
{
|
||||
/* Copy in the new segmentation map */
|
||||
vpx_memcpy(cpi->segmentation_map, segmentation_map, (cpi->common.mb_rows * cpi->common.mb_cols));
|
||||
memcpy(cpi->segmentation_map, segmentation_map, (cpi->common.mb_rows * cpi->common.mb_cols));
|
||||
|
||||
/* Signal that the map should be updated. */
|
||||
cpi->mb.e_mbd.update_mb_segmentation_map = 1;
|
||||
|
@ -530,7 +531,7 @@ static void set_segmentation_map(VP8_COMP *cpi, unsigned char *segmentation_map)
|
|||
static void set_segment_data(VP8_COMP *cpi, signed char *feature_data, unsigned char abs_delta)
|
||||
{
|
||||
cpi->mb.e_mbd.mb_segement_abs_delta = abs_delta;
|
||||
vpx_memcpy(cpi->segment_feature_data, feature_data, sizeof(cpi->segment_feature_data));
|
||||
memcpy(cpi->segment_feature_data, feature_data, sizeof(cpi->segment_feature_data));
|
||||
}
|
||||
|
||||
|
||||
|
@ -586,7 +587,8 @@ static void cyclic_background_refresh(VP8_COMP *cpi, int Q, int lf_adjustment)
|
|||
// Turn-off under certain conditions (i.e., away from key frame, and if
|
||||
// we are at good quality (low Q) and most of the blocks were skipped-encoded
|
||||
// in previous frame.
|
||||
if (Q >= 100) {
|
||||
int qp_thresh = (cpi->oxcf.screen_content_mode == 2) ? 80 : 100;
|
||||
if (Q >= qp_thresh) {
|
||||
cpi->cyclic_refresh_mode_max_mbs_perframe =
|
||||
(cpi->common.mb_rows * cpi->common.mb_cols) / 10;
|
||||
} else if (cpi->frames_since_key > 250 &&
|
||||
|
@ -602,7 +604,7 @@ static void cyclic_background_refresh(VP8_COMP *cpi, int Q, int lf_adjustment)
|
|||
|
||||
// Set every macroblock to be eligible for update.
|
||||
// For key frame this will reset seg map to 0.
|
||||
vpx_memset(cpi->segmentation_map, 0, mbs_in_frame);
|
||||
memset(cpi->segmentation_map, 0, mbs_in_frame);
|
||||
|
||||
if (cpi->common.frame_type != KEY_FRAME && block_count > 0)
|
||||
{
|
||||
|
@ -686,8 +688,8 @@ static void set_default_lf_deltas(VP8_COMP *cpi)
|
|||
cpi->mb.e_mbd.mode_ref_lf_delta_enabled = 1;
|
||||
cpi->mb.e_mbd.mode_ref_lf_delta_update = 1;
|
||||
|
||||
vpx_memset(cpi->mb.e_mbd.ref_lf_deltas, 0, sizeof(cpi->mb.e_mbd.ref_lf_deltas));
|
||||
vpx_memset(cpi->mb.e_mbd.mode_lf_deltas, 0, sizeof(cpi->mb.e_mbd.mode_lf_deltas));
|
||||
memset(cpi->mb.e_mbd.ref_lf_deltas, 0, sizeof(cpi->mb.e_mbd.ref_lf_deltas));
|
||||
memset(cpi->mb.e_mbd.mode_lf_deltas, 0, sizeof(cpi->mb.e_mbd.mode_lf_deltas));
|
||||
|
||||
/* Test of ref frame deltas */
|
||||
cpi->mb.e_mbd.ref_lf_deltas[INTRA_FRAME] = 2;
|
||||
|
@ -1087,7 +1089,7 @@ void vp8_set_speed_features(VP8_COMP *cpi)
|
|||
if (Speed >= 15)
|
||||
sf->half_pixel_search = 0;
|
||||
|
||||
vpx_memset(cpi->mb.error_bins, 0, sizeof(cpi->mb.error_bins));
|
||||
memset(cpi->mb.error_bins, 0, sizeof(cpi->mb.error_bins));
|
||||
|
||||
}; /* switch */
|
||||
|
||||
|
@ -1298,7 +1300,7 @@ void vp8_alloc_compressor_data(VP8_COMP *cpi)
|
|||
CHECK_MEM_ERROR(cpi->active_map,
|
||||
vpx_calloc(cm->mb_rows * cm->mb_cols,
|
||||
sizeof(*cpi->active_map)));
|
||||
vpx_memset(cpi->active_map , 1, (cm->mb_rows * cm->mb_cols));
|
||||
memset(cpi->active_map , 1, (cm->mb_rows * cm->mb_cols));
|
||||
|
||||
#if CONFIG_MULTITHREAD
|
||||
if (width < 640)
|
||||
|
@ -1891,7 +1893,7 @@ struct VP8_COMP* vp8_create_compressor(VP8_CONFIG *oxcf)
|
|||
|
||||
cm = &cpi->common;
|
||||
|
||||
vpx_memset(cpi, 0, sizeof(VP8_COMP));
|
||||
memset(cpi, 0, sizeof(VP8_COMP));
|
||||
|
||||
if (setjmp(cm->error.jmp))
|
||||
{
|
||||
|
@ -2010,6 +2012,8 @@ struct VP8_COMP* vp8_create_compressor(VP8_CONFIG *oxcf)
|
|||
cpi->source_alt_ref_active = 0;
|
||||
cpi->common.refresh_alt_ref_frame = 0;
|
||||
|
||||
cpi->force_maxqp = 0;
|
||||
|
||||
cpi->b_calculate_psnr = CONFIG_INTERNAL_STATS;
|
||||
#if CONFIG_INTERNAL_STATS
|
||||
cpi->b_calculate_ssimg = 0;
|
||||
|
@ -2126,55 +2130,55 @@ struct VP8_COMP* vp8_create_compressor(VP8_CONFIG *oxcf)
|
|||
}
|
||||
#endif
|
||||
|
||||
cpi->fn_ptr[BLOCK_16X16].sdf = vp8_sad16x16;
|
||||
cpi->fn_ptr[BLOCK_16X16].vf = vp8_variance16x16;
|
||||
cpi->fn_ptr[BLOCK_16X16].sdf = vpx_sad16x16;
|
||||
cpi->fn_ptr[BLOCK_16X16].vf = vpx_variance16x16;
|
||||
cpi->fn_ptr[BLOCK_16X16].svf = vp8_sub_pixel_variance16x16;
|
||||
cpi->fn_ptr[BLOCK_16X16].svf_halfpix_h = vp8_variance_halfpixvar16x16_h;
|
||||
cpi->fn_ptr[BLOCK_16X16].svf_halfpix_v = vp8_variance_halfpixvar16x16_v;
|
||||
cpi->fn_ptr[BLOCK_16X16].svf_halfpix_hv = vp8_variance_halfpixvar16x16_hv;
|
||||
cpi->fn_ptr[BLOCK_16X16].sdx3f = vp8_sad16x16x3;
|
||||
cpi->fn_ptr[BLOCK_16X16].sdx8f = vp8_sad16x16x8;
|
||||
cpi->fn_ptr[BLOCK_16X16].sdx4df = vp8_sad16x16x4d;
|
||||
cpi->fn_ptr[BLOCK_16X16].sdx3f = vpx_sad16x16x3;
|
||||
cpi->fn_ptr[BLOCK_16X16].sdx8f = vpx_sad16x16x8;
|
||||
cpi->fn_ptr[BLOCK_16X16].sdx4df = vpx_sad16x16x4d;
|
||||
|
||||
cpi->fn_ptr[BLOCK_16X8].sdf = vp8_sad16x8;
|
||||
cpi->fn_ptr[BLOCK_16X8].vf = vp8_variance16x8;
|
||||
cpi->fn_ptr[BLOCK_16X8].sdf = vpx_sad16x8;
|
||||
cpi->fn_ptr[BLOCK_16X8].vf = vpx_variance16x8;
|
||||
cpi->fn_ptr[BLOCK_16X8].svf = vp8_sub_pixel_variance16x8;
|
||||
cpi->fn_ptr[BLOCK_16X8].svf_halfpix_h = NULL;
|
||||
cpi->fn_ptr[BLOCK_16X8].svf_halfpix_v = NULL;
|
||||
cpi->fn_ptr[BLOCK_16X8].svf_halfpix_hv = NULL;
|
||||
cpi->fn_ptr[BLOCK_16X8].sdx3f = vp8_sad16x8x3;
|
||||
cpi->fn_ptr[BLOCK_16X8].sdx8f = vp8_sad16x8x8;
|
||||
cpi->fn_ptr[BLOCK_16X8].sdx4df = vp8_sad16x8x4d;
|
||||
cpi->fn_ptr[BLOCK_16X8].sdx3f = vpx_sad16x8x3;
|
||||
cpi->fn_ptr[BLOCK_16X8].sdx8f = vpx_sad16x8x8;
|
||||
cpi->fn_ptr[BLOCK_16X8].sdx4df = vpx_sad16x8x4d;
|
||||
|
||||
cpi->fn_ptr[BLOCK_8X16].sdf = vp8_sad8x16;
|
||||
cpi->fn_ptr[BLOCK_8X16].vf = vp8_variance8x16;
|
||||
cpi->fn_ptr[BLOCK_8X16].sdf = vpx_sad8x16;
|
||||
cpi->fn_ptr[BLOCK_8X16].vf = vpx_variance8x16;
|
||||
cpi->fn_ptr[BLOCK_8X16].svf = vp8_sub_pixel_variance8x16;
|
||||
cpi->fn_ptr[BLOCK_8X16].svf_halfpix_h = NULL;
|
||||
cpi->fn_ptr[BLOCK_8X16].svf_halfpix_v = NULL;
|
||||
cpi->fn_ptr[BLOCK_8X16].svf_halfpix_hv = NULL;
|
||||
cpi->fn_ptr[BLOCK_8X16].sdx3f = vp8_sad8x16x3;
|
||||
cpi->fn_ptr[BLOCK_8X16].sdx8f = vp8_sad8x16x8;
|
||||
cpi->fn_ptr[BLOCK_8X16].sdx4df = vp8_sad8x16x4d;
|
||||
cpi->fn_ptr[BLOCK_8X16].sdx3f = vpx_sad8x16x3;
|
||||
cpi->fn_ptr[BLOCK_8X16].sdx8f = vpx_sad8x16x8;
|
||||
cpi->fn_ptr[BLOCK_8X16].sdx4df = vpx_sad8x16x4d;
|
||||
|
||||
cpi->fn_ptr[BLOCK_8X8].sdf = vp8_sad8x8;
|
||||
cpi->fn_ptr[BLOCK_8X8].vf = vp8_variance8x8;
|
||||
cpi->fn_ptr[BLOCK_8X8].sdf = vpx_sad8x8;
|
||||
cpi->fn_ptr[BLOCK_8X8].vf = vpx_variance8x8;
|
||||
cpi->fn_ptr[BLOCK_8X8].svf = vp8_sub_pixel_variance8x8;
|
||||
cpi->fn_ptr[BLOCK_8X8].svf_halfpix_h = NULL;
|
||||
cpi->fn_ptr[BLOCK_8X8].svf_halfpix_v = NULL;
|
||||
cpi->fn_ptr[BLOCK_8X8].svf_halfpix_hv = NULL;
|
||||
cpi->fn_ptr[BLOCK_8X8].sdx3f = vp8_sad8x8x3;
|
||||
cpi->fn_ptr[BLOCK_8X8].sdx8f = vp8_sad8x8x8;
|
||||
cpi->fn_ptr[BLOCK_8X8].sdx4df = vp8_sad8x8x4d;
|
||||
cpi->fn_ptr[BLOCK_8X8].sdx3f = vpx_sad8x8x3;
|
||||
cpi->fn_ptr[BLOCK_8X8].sdx8f = vpx_sad8x8x8;
|
||||
cpi->fn_ptr[BLOCK_8X8].sdx4df = vpx_sad8x8x4d;
|
||||
|
||||
cpi->fn_ptr[BLOCK_4X4].sdf = vp8_sad4x4;
|
||||
cpi->fn_ptr[BLOCK_4X4].vf = vp8_variance4x4;
|
||||
cpi->fn_ptr[BLOCK_4X4].sdf = vpx_sad4x4;
|
||||
cpi->fn_ptr[BLOCK_4X4].vf = vpx_variance4x4;
|
||||
cpi->fn_ptr[BLOCK_4X4].svf = vp8_sub_pixel_variance4x4;
|
||||
cpi->fn_ptr[BLOCK_4X4].svf_halfpix_h = NULL;
|
||||
cpi->fn_ptr[BLOCK_4X4].svf_halfpix_v = NULL;
|
||||
cpi->fn_ptr[BLOCK_4X4].svf_halfpix_hv = NULL;
|
||||
cpi->fn_ptr[BLOCK_4X4].sdx3f = vp8_sad4x4x3;
|
||||
cpi->fn_ptr[BLOCK_4X4].sdx8f = vp8_sad4x4x8;
|
||||
cpi->fn_ptr[BLOCK_4X4].sdx4df = vp8_sad4x4x4d;
|
||||
cpi->fn_ptr[BLOCK_4X4].sdx3f = vpx_sad4x4x3;
|
||||
cpi->fn_ptr[BLOCK_4X4].sdx8f = vpx_sad4x4x8;
|
||||
cpi->fn_ptr[BLOCK_4X4].sdx4df = vpx_sad4x4x4d;
|
||||
|
||||
#if ARCH_X86 || ARCH_X86_64
|
||||
cpi->fn_ptr[BLOCK_16X16].copymem = vp8_copy32xn;
|
||||
|
@ -2554,7 +2558,7 @@ static uint64_t calc_plane_error(unsigned char *orig, int orig_stride,
|
|||
{
|
||||
unsigned int sse;
|
||||
|
||||
vp8_mse16x16(orig + col, orig_stride,
|
||||
vpx_mse16x16(orig + col, orig_stride,
|
||||
recon + col, recon_stride,
|
||||
&sse);
|
||||
total_sse += sse;
|
||||
|
@ -2867,7 +2871,7 @@ static void update_alt_ref_frame_stats(VP8_COMP *cpi)
|
|||
}
|
||||
|
||||
/* Update data structure that monitors level of reference to last GF */
|
||||
vpx_memset(cpi->gf_active_flags, 1, (cm->mb_rows * cm->mb_cols));
|
||||
memset(cpi->gf_active_flags, 1, (cm->mb_rows * cm->mb_cols));
|
||||
cpi->gf_active_count = cm->mb_rows * cm->mb_cols;
|
||||
|
||||
/* this frame refreshes means next frames don't unless specified by user */
|
||||
|
@ -2916,7 +2920,7 @@ static void update_golden_frame_stats(VP8_COMP *cpi)
|
|||
}
|
||||
|
||||
/* Update data structure that monitors level of reference to last GF */
|
||||
vpx_memset(cpi->gf_active_flags, 1, (cm->mb_rows * cm->mb_cols));
|
||||
memset(cpi->gf_active_flags, 1, (cm->mb_rows * cm->mb_cols));
|
||||
cpi->gf_active_count = cm->mb_rows * cm->mb_cols;
|
||||
|
||||
/* this frame refreshes means next frames don't unless specified by
|
||||
|
@ -3380,7 +3384,7 @@ static int measure_square_diff_partial(YV12_BUFFER_CONFIG *source,
|
|||
int index = block_index_row + (j >> 4);
|
||||
if (cpi->consec_zero_last[index] >= min_consec_zero_last) {
|
||||
unsigned int sse;
|
||||
Total += vp8_mse16x16(src + j,
|
||||
Total += vpx_mse16x16(src + j,
|
||||
source->y_stride,
|
||||
dst + j, dest->y_stride,
|
||||
&sse);
|
||||
|
@ -3444,7 +3448,7 @@ static void process_denoiser_mode_change(VP8_COMP *cpi) {
|
|||
int index = block_index_row + (j >> 4);
|
||||
if (cpi->consec_zero_last[index] >= min_consec_zero_last) {
|
||||
unsigned int sse;
|
||||
const unsigned int var = vp8_variance16x16(src + j,
|
||||
const unsigned int var = vpx_variance16x16(src + j,
|
||||
ystride,
|
||||
dst + j,
|
||||
ystride,
|
||||
|
@ -3454,7 +3458,7 @@ static void process_denoiser_mode_change(VP8_COMP *cpi) {
|
|||
// is small (to avoid effects from lighting change).
|
||||
if ((sse - var) < 128) {
|
||||
unsigned int sse2;
|
||||
const unsigned int act = vp8_variance16x16(src + j,
|
||||
const unsigned int act = vpx_variance16x16(src + j,
|
||||
ystride,
|
||||
const_source,
|
||||
0,
|
||||
|
@ -3830,9 +3834,9 @@ static void encode_frame_to_data_rate
|
|||
}
|
||||
|
||||
// Reset the zero_last counter to 0 on key frame.
|
||||
vpx_memset(cpi->consec_zero_last, 0, cm->mb_rows * cm->mb_cols);
|
||||
vpx_memset(cpi->consec_zero_last_mvbias, 0,
|
||||
(cpi->common.mb_rows * cpi->common.mb_cols));
|
||||
memset(cpi->consec_zero_last, 0, cm->mb_rows * cm->mb_cols);
|
||||
memset(cpi->consec_zero_last_mvbias, 0,
|
||||
(cpi->common.mb_rows * cpi->common.mb_cols));
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
@ -4183,7 +4187,10 @@ static void encode_frame_to_data_rate
|
|||
*/
|
||||
if (cpi->cyclic_refresh_mode_enabled)
|
||||
{
|
||||
if (cpi->current_layer==0)
|
||||
// Special case for screen_content_mode with golden frame updates.
|
||||
int disable_cr_gf = (cpi->oxcf.screen_content_mode == 2 &&
|
||||
cm->refresh_golden_frame);
|
||||
if (cpi->current_layer == 0 && cpi->force_maxqp == 0 && !disable_cr_gf)
|
||||
cyclic_background_refresh(cpi, Q, 0);
|
||||
else
|
||||
disable_segmentation(cpi);
|
||||
|
@ -4362,9 +4369,9 @@ static void encode_frame_to_data_rate
|
|||
disable_segmentation(cpi);
|
||||
}
|
||||
// Reset the zero_last counter to 0 on key frame.
|
||||
vpx_memset(cpi->consec_zero_last, 0, cm->mb_rows * cm->mb_cols);
|
||||
vpx_memset(cpi->consec_zero_last_mvbias, 0,
|
||||
(cpi->common.mb_rows * cpi->common.mb_cols));
|
||||
memset(cpi->consec_zero_last, 0, cm->mb_rows * cm->mb_cols);
|
||||
memset(cpi->consec_zero_last_mvbias, 0,
|
||||
(cpi->common.mb_rows * cpi->common.mb_cols));
|
||||
vp8_set_quantizer(cpi, Q);
|
||||
}
|
||||
|
||||
|
@ -4387,7 +4394,7 @@ static void encode_frame_to_data_rate
|
|||
if (cm->refresh_entropy_probs == 0)
|
||||
{
|
||||
/* save a copy for later refresh */
|
||||
vpx_memcpy(&cm->lfc, &cm->fc, sizeof(cm->fc));
|
||||
memcpy(&cm->lfc, &cm->fc, sizeof(cm->fc));
|
||||
}
|
||||
|
||||
vp8_update_coef_context(cpi);
|
||||
|
@ -4405,6 +4412,11 @@ static void encode_frame_to_data_rate
|
|||
/* transform / motion compensation build reconstruction frame */
|
||||
vp8_encode_frame(cpi);
|
||||
|
||||
if (cpi->oxcf.screen_content_mode == 2) {
|
||||
if (vp8_drop_encodedframe_overshoot(cpi, Q))
|
||||
return;
|
||||
}
|
||||
|
||||
cpi->projected_frame_size -= vp8_estimate_entropy_savings(cpi);
|
||||
cpi->projected_frame_size = (cpi->projected_frame_size > 0) ? cpi->projected_frame_size : 0;
|
||||
#endif
|
||||
|
@ -5613,19 +5625,19 @@ int vp8_get_compressed_data(VP8_COMP *cpi, unsigned int *frame_flags, unsigned l
|
|||
|
||||
if (cm->refresh_entropy_probs == 0)
|
||||
{
|
||||
vpx_memcpy(&cm->fc, &cm->lfc, sizeof(cm->fc));
|
||||
memcpy(&cm->fc, &cm->lfc, sizeof(cm->fc));
|
||||
}
|
||||
|
||||
/* Save the contexts separately for alt ref, gold and last. */
|
||||
/* (TODO jbb -> Optimize this with pointers to avoid extra copies. ) */
|
||||
if(cm->refresh_alt_ref_frame)
|
||||
vpx_memcpy(&cpi->lfc_a, &cm->fc, sizeof(cm->fc));
|
||||
memcpy(&cpi->lfc_a, &cm->fc, sizeof(cm->fc));
|
||||
|
||||
if(cm->refresh_golden_frame)
|
||||
vpx_memcpy(&cpi->lfc_g, &cm->fc, sizeof(cm->fc));
|
||||
memcpy(&cpi->lfc_g, &cm->fc, sizeof(cm->fc));
|
||||
|
||||
if(cm->refresh_last_frame)
|
||||
vpx_memcpy(&cpi->lfc_n, &cm->fc, sizeof(cm->fc));
|
||||
memcpy(&cpi->lfc_n, &cm->fc, sizeof(cm->fc));
|
||||
|
||||
/* if its a dropped frame honor the requests on subsequent frames */
|
||||
if (*size > 0)
|
||||
|
@ -5934,7 +5946,7 @@ int vp8_set_active_map(VP8_COMP *cpi, unsigned char *map, unsigned int rows, uns
|
|||
{
|
||||
if (map)
|
||||
{
|
||||
vpx_memcpy(cpi->active_map, map, rows * cols);
|
||||
memcpy(cpi->active_map, map, rows * cols);
|
||||
cpi->active_map_enabled = 1;
|
||||
}
|
||||
else
|
||||
|
@ -5981,7 +5993,8 @@ int vp8_calc_ss_err(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest)
|
|||
for (j = 0; j < source->y_width; j += 16)
|
||||
{
|
||||
unsigned int sse;
|
||||
Total += vp8_mse16x16(src + j, source->y_stride, dst + j, dest->y_stride, &sse);
|
||||
Total += vpx_mse16x16(src + j, source->y_stride,
|
||||
dst + j, dest->y_stride, &sse);
|
||||
}
|
||||
|
||||
src += 16 * source->y_stride;
|
||||
|
|
|
@ -526,6 +526,8 @@ typedef struct VP8_COMP
|
|||
// Measure of average squared difference between source and denoised signal.
|
||||
int mse_source_denoised;
|
||||
|
||||
int force_maxqp;
|
||||
|
||||
#if CONFIG_MULTITHREAD
|
||||
/* multithread data */
|
||||
int * mt_current_mb_col;
|
||||
|
@ -714,6 +716,11 @@ typedef struct VP8_COMP
|
|||
} rd_costs;
|
||||
} VP8_COMP;
|
||||
|
||||
void vp8_alloc_compressor_data(VP8_COMP *cpi);
|
||||
int vp8_reverse_trans(int x);
|
||||
void vp8_new_framerate(VP8_COMP *cpi, double framerate);
|
||||
void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm);
|
||||
|
||||
void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest,
|
||||
unsigned char *dest_end, unsigned long *size);
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include <limits.h>
|
||||
#include "vpx_config.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "onyx_int.h"
|
||||
#include "modecosts.h"
|
||||
#include "encodeintra.h"
|
||||
|
@ -29,8 +30,6 @@
|
|||
#include "denoising.h"
|
||||
#endif
|
||||
|
||||
extern int VP8_UVSSE(MACROBLOCK *x);
|
||||
|
||||
#ifdef SPEEDSTATS
|
||||
extern unsigned int cnt_pm;
|
||||
#endif
|
||||
|
@ -38,8 +37,6 @@ extern unsigned int cnt_pm;
|
|||
extern const int vp8_ref_frame_order[MAX_MODES];
|
||||
extern const MB_PREDICTION_MODE vp8_mode_order[MAX_MODES];
|
||||
|
||||
extern int vp8_cost_mv_ref(MB_PREDICTION_MODE m, const int near_mv_ref_ct[4]);
|
||||
|
||||
// Fixed point implementation of a skin color classifier. Skin color
|
||||
// is model by a Gaussian distribution in the CbCr color space.
|
||||
// See ../../test/skin_color_detector_test.cc where the reference
|
||||
|
@ -219,33 +216,6 @@ int vp8_get_inter_mbpred_error(MACROBLOCK *mb,
|
|||
|
||||
}
|
||||
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c
|
||||
(
|
||||
const unsigned char *src_ptr,
|
||||
int source_stride,
|
||||
const unsigned char *ref_ptr,
|
||||
int recon_stride
|
||||
)
|
||||
{
|
||||
int distortion = 0;
|
||||
int r, c;
|
||||
|
||||
for (r = 0; r < 4; r++)
|
||||
{
|
||||
for (c = 0; c < 4; c++)
|
||||
{
|
||||
int diff = src_ptr[c] - ref_ptr[c];
|
||||
distortion += diff * diff;
|
||||
}
|
||||
|
||||
src_ptr += source_stride;
|
||||
ref_ptr += recon_stride;
|
||||
}
|
||||
|
||||
return distortion;
|
||||
}
|
||||
|
||||
static int get_prediction_error(BLOCK *be, BLOCKD *b)
|
||||
{
|
||||
unsigned char *sptr;
|
||||
|
@ -253,7 +223,7 @@ static int get_prediction_error(BLOCK *be, BLOCKD *b)
|
|||
sptr = (*(be->base_src) + be->src);
|
||||
dptr = b->predictor;
|
||||
|
||||
return vp8_get4x4sse_cs(sptr, be->src_stride, dptr, 16);
|
||||
return vpx_get4x4sse_cs(sptr, be->src_stride, dptr, 16);
|
||||
|
||||
}
|
||||
|
||||
|
@ -862,8 +832,8 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
|
||||
mode_mv = mode_mv_sb[sign_bias];
|
||||
best_ref_mv.as_int = 0;
|
||||
vpx_memset(mode_mv_sb, 0, sizeof(mode_mv_sb));
|
||||
vpx_memset(&best_mbmode, 0, sizeof(best_mbmode));
|
||||
memset(mode_mv_sb, 0, sizeof(mode_mv_sb));
|
||||
memset(&best_mbmode, 0, sizeof(best_mbmode));
|
||||
|
||||
/* Setup search priorities */
|
||||
#if CONFIG_MULTI_RES_ENCODING
|
||||
|
@ -1041,7 +1011,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
else
|
||||
{
|
||||
rate2 += rate;
|
||||
distortion2 = vp8_variance16x16(
|
||||
distortion2 = vpx_variance16x16(
|
||||
*(b->base_src), b->src_stride,
|
||||
x->e_mbd.predictor, 16, &sse);
|
||||
this_rd = RDCOST(x->rdmult, x->rddiv, rate2, distortion2);
|
||||
|
@ -1070,7 +1040,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
xd->dst.y_stride,
|
||||
xd->predictor,
|
||||
16);
|
||||
distortion2 = vp8_variance16x16
|
||||
distortion2 = vpx_variance16x16
|
||||
(*(b->base_src), b->src_stride,
|
||||
x->e_mbd.predictor, 16, &sse);
|
||||
rate2 += x->mbmode_cost[x->e_mbd.frame_type][x->e_mbd.mode_info_context->mbmi.mode];
|
||||
|
@ -1348,8 +1318,8 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
*returndistortion = distortion2;
|
||||
best_rd_sse = sse;
|
||||
best_rd = this_rd;
|
||||
vpx_memcpy(&best_mbmode, &x->e_mbd.mode_info_context->mbmi,
|
||||
sizeof(MB_MODE_INFO));
|
||||
memcpy(&best_mbmode, &x->e_mbd.mode_info_context->mbmi,
|
||||
sizeof(MB_MODE_INFO));
|
||||
|
||||
/* Testing this mode gave rise to an improvement in best error
|
||||
* score. Lower threshold a bit for next time
|
||||
|
@ -1487,8 +1457,8 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
|
||||
if (this_rd < best_rd)
|
||||
{
|
||||
vpx_memcpy(&best_mbmode, &x->e_mbd.mode_info_context->mbmi,
|
||||
sizeof(MB_MODE_INFO));
|
||||
memcpy(&best_mbmode, &x->e_mbd.mode_info_context->mbmi,
|
||||
sizeof(MB_MODE_INFO));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1512,8 +1482,8 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
/* set to the best mb mode, this copy can be skip if x->skip since it
|
||||
* already has the right content */
|
||||
if (!x->skip)
|
||||
vpx_memcpy(&x->e_mbd.mode_info_context->mbmi, &best_mbmode,
|
||||
sizeof(MB_MODE_INFO));
|
||||
memcpy(&x->e_mbd.mode_info_context->mbmi, &best_mbmode,
|
||||
sizeof(MB_MODE_INFO));
|
||||
|
||||
if (best_mbmode.mode <= B_PRED)
|
||||
{
|
||||
|
@ -1551,7 +1521,7 @@ void vp8_pick_intra_mode(MACROBLOCK *x, int *rate_)
|
|||
xd->dst.y_stride,
|
||||
xd->predictor,
|
||||
16);
|
||||
distortion = vp8_variance16x16
|
||||
distortion = vpx_variance16x16
|
||||
(*(b->base_src), b->src_stride, xd->predictor, 16, &sse);
|
||||
rate = x->mbmode_cost[xd->frame_type][mode];
|
||||
this_rd = RDCOST(x->rdmult, x->rddiv, rate, distortion);
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
*/
|
||||
|
||||
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "./vpx_scale_rtcd.h"
|
||||
#include "vp8/common/onyxc_int.h"
|
||||
#include "onyx_int.h"
|
||||
|
@ -49,7 +50,7 @@ static void yv12_copy_partial_frame(YV12_BUFFER_CONFIG *src_ybc,
|
|||
src_y = src_ybc->y_buffer + yoffset;
|
||||
dst_y = dst_ybc->y_buffer + yoffset;
|
||||
|
||||
vpx_memcpy(dst_y, src_y, ystride * linestocopy);
|
||||
memcpy(dst_y, src_y, ystride * linestocopy);
|
||||
}
|
||||
|
||||
static int calc_partial_ssl_err(YV12_BUFFER_CONFIG *source,
|
||||
|
@ -83,7 +84,7 @@ static int calc_partial_ssl_err(YV12_BUFFER_CONFIG *source,
|
|||
for (j = 0; j < source->y_width; j += 16)
|
||||
{
|
||||
unsigned int sse;
|
||||
Total += vp8_mse16x16(src + j, source->y_stride,
|
||||
Total += vpx_mse16x16(src + j, source->y_stride,
|
||||
dst + j, dest->y_stride,
|
||||
&sse);
|
||||
}
|
||||
|
@ -142,7 +143,7 @@ void vp8cx_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi)
|
|||
int min_filter_level = get_min_filter_level(cpi, cm->base_qindex);
|
||||
int max_filter_level = get_max_filter_level(cpi, cm->base_qindex);
|
||||
int filt_val;
|
||||
int best_filt_val = cm->filter_level;
|
||||
int best_filt_val;
|
||||
YV12_BUFFER_CONFIG * saved_frame = cm->frame_to_show;
|
||||
|
||||
/* Replace unfiltered frame buffer with a new one */
|
||||
|
@ -274,8 +275,7 @@ void vp8cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi)
|
|||
|
||||
int filter_step;
|
||||
int filt_high = 0;
|
||||
/* Start search at previous frame filter level */
|
||||
int filt_mid = cm->filter_level;
|
||||
int filt_mid;
|
||||
int filt_low = 0;
|
||||
int filt_best;
|
||||
int filt_direction = 0;
|
||||
|
@ -287,7 +287,7 @@ void vp8cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi)
|
|||
|
||||
YV12_BUFFER_CONFIG * saved_frame = cm->frame_to_show;
|
||||
|
||||
vpx_memset(ss_err, 0, sizeof(ss_err));
|
||||
memset(ss_err, 0, sizeof(ss_err));
|
||||
|
||||
/* Replace unfiltered frame buffer with a new one */
|
||||
cm->frame_to_show = &cpi->pick_lf_lvl_frame;
|
||||
|
|
|
@ -65,8 +65,8 @@ void vp8_regular_quantize_b_c(BLOCK *b, BLOCKD *d)
|
|||
short *dequant_ptr = d->dequant;
|
||||
short zbin_oq_value = b->zbin_extra;
|
||||
|
||||
vpx_memset(qcoeff_ptr, 0, 32);
|
||||
vpx_memset(dqcoeff_ptr, 0, 32);
|
||||
memset(qcoeff_ptr, 0, 32);
|
||||
memset(dqcoeff_ptr, 0, 32);
|
||||
|
||||
eob = -1;
|
||||
|
||||
|
|
|
@ -296,7 +296,7 @@ void vp8_setup_key_frame(VP8_COMP *cpi)
|
|||
|
||||
vp8_default_coef_probs(& cpi->common);
|
||||
|
||||
vpx_memcpy(cpi->common.fc.mvc, vp8_default_mv_context, sizeof(vp8_default_mv_context));
|
||||
memcpy(cpi->common.fc.mvc, vp8_default_mv_context, sizeof(vp8_default_mv_context));
|
||||
{
|
||||
int flag[2] = {1, 1};
|
||||
vp8_build_component_cost_table(cpi->mb.mvcost, (const MV_CONTEXT *) cpi->common.fc.mvc, flag);
|
||||
|
@ -305,9 +305,9 @@ void vp8_setup_key_frame(VP8_COMP *cpi)
|
|||
/* Make sure we initialize separate contexts for altref,gold, and normal.
|
||||
* TODO shouldn't need 3 different copies of structure to do this!
|
||||
*/
|
||||
vpx_memcpy(&cpi->lfc_a, &cpi->common.fc, sizeof(cpi->common.fc));
|
||||
vpx_memcpy(&cpi->lfc_g, &cpi->common.fc, sizeof(cpi->common.fc));
|
||||
vpx_memcpy(&cpi->lfc_n, &cpi->common.fc, sizeof(cpi->common.fc));
|
||||
memcpy(&cpi->lfc_a, &cpi->common.fc, sizeof(cpi->common.fc));
|
||||
memcpy(&cpi->lfc_g, &cpi->common.fc, sizeof(cpi->common.fc));
|
||||
memcpy(&cpi->lfc_n, &cpi->common.fc, sizeof(cpi->common.fc));
|
||||
|
||||
cpi->common.filter_level = cpi->common.base_qindex * 3 / 8 ;
|
||||
|
||||
|
@ -1215,6 +1215,11 @@ int vp8_regulate_q(VP8_COMP *cpi, int target_bits_per_frame)
|
|||
{
|
||||
int Q = cpi->active_worst_quality;
|
||||
|
||||
if (cpi->force_maxqp == 1) {
|
||||
cpi->active_worst_quality = cpi->worst_quality;
|
||||
return cpi->worst_quality;
|
||||
}
|
||||
|
||||
/* Reset Zbin OQ value */
|
||||
cpi->mb.zbin_over_quant = 0;
|
||||
|
||||
|
@ -1559,3 +1564,46 @@ int vp8_pick_frame_size(VP8_COMP *cpi)
|
|||
}
|
||||
return 1;
|
||||
}
|
||||
// If this just encoded frame (mcomp/transform/quant, but before loopfilter and
|
||||
// pack_bitstream) has large overshoot, and was not being encoded close to the
|
||||
// max QP, then drop this frame and force next frame to be encoded at max QP.
|
||||
// Condition this on 1 pass CBR with screen content mode and frame dropper off.
|
||||
// TODO(marpan): Should do this exit condition during the encode_frame
|
||||
// (i.e., halfway during the encoding of the frame) to save cycles.
|
||||
int vp8_drop_encodedframe_overshoot(VP8_COMP *cpi, int Q) {
|
||||
if (cpi->pass == 0 &&
|
||||
cpi->oxcf.end_usage == USAGE_STREAM_FROM_SERVER &&
|
||||
cpi->drop_frames_allowed == 0 &&
|
||||
cpi->common.frame_type != KEY_FRAME) {
|
||||
// Note: the "projected_frame_size" from encode_frame() only gives estimate
|
||||
// of mode/motion vector rate (in non-rd mode): so below we only require
|
||||
// that projected_frame_size is somewhat greater than per-frame-bandwidth,
|
||||
// but add additional condition with high threshold on prediction residual.
|
||||
|
||||
// QP threshold: only allow dropping if we are not close to qp_max.
|
||||
int thresh_qp = 3 * cpi->worst_quality >> 2;
|
||||
// Rate threshold, in bytes.
|
||||
int thresh_rate = 2 * (cpi->av_per_frame_bandwidth >> 3);
|
||||
// Threshold for the average (over all macroblocks) of the pixel-sum
|
||||
// residual error over 16x16 block. Should add QP dependence on threshold?
|
||||
int thresh_pred_err_mb = (256 << 4);
|
||||
int pred_err_mb = (int)(cpi->mb.prediction_error / cpi->common.MBs);
|
||||
if (Q < thresh_qp &&
|
||||
cpi->projected_frame_size > thresh_rate &&
|
||||
pred_err_mb > thresh_pred_err_mb) {
|
||||
// Drop this frame: advance frame counters, and set force_maxqp flag.
|
||||
cpi->common.current_video_frame++;
|
||||
cpi->frames_since_key++;
|
||||
// Flag to indicate we will force next frame to be encoded at max QP.
|
||||
cpi->force_maxqp = 1;
|
||||
return 1;
|
||||
} else {
|
||||
cpi->force_maxqp = 0;
|
||||
return 0;
|
||||
}
|
||||
cpi->force_maxqp = 0;
|
||||
return 0;
|
||||
}
|
||||
cpi->force_maxqp = 0;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -30,6 +30,8 @@ extern void vp8_compute_frame_size_bounds(VP8_COMP *cpi, int *frame_under_shoot_
|
|||
/* return of 0 means drop frame */
|
||||
extern int vp8_pick_frame_size(VP8_COMP *cpi);
|
||||
|
||||
extern int vp8_drop_encodedframe_overshoot(VP8_COMP *cpi, int Q);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <assert.h>
|
||||
#include "vpx_config.h"
|
||||
#include "vp8_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "tokenize.h"
|
||||
#include "treewriter.h"
|
||||
#include "onyx_int.h"
|
||||
|
@ -507,9 +508,9 @@ int VP8_UVSSE(MACROBLOCK *x)
|
|||
}
|
||||
else
|
||||
{
|
||||
vp8_variance8x8(uptr, pre_stride,
|
||||
vpx_variance8x8(uptr, pre_stride,
|
||||
upred_ptr, uv_stride, &sse2);
|
||||
vp8_variance8x8(vptr, pre_stride,
|
||||
vpx_variance8x8(vptr, pre_stride,
|
||||
vpred_ptr, uv_stride, &sse1);
|
||||
sse2 += sse1;
|
||||
}
|
||||
|
@ -555,8 +556,8 @@ static int vp8_rdcost_mby(MACROBLOCK *mb)
|
|||
ENTROPY_CONTEXT *ta;
|
||||
ENTROPY_CONTEXT *tl;
|
||||
|
||||
vpx_memcpy(&t_above, mb->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(&t_left, mb->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_above, mb->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_left, mb->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
ta = (ENTROPY_CONTEXT *)&t_above;
|
||||
tl = (ENTROPY_CONTEXT *)&t_left;
|
||||
|
@ -650,8 +651,8 @@ static int rd_pick_intra4x4block(
|
|||
* a temp buffer that meets the stride requirements, but we are only
|
||||
* interested in the left 4x4 block
|
||||
* */
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned char, best_predictor, 16*4);
|
||||
DECLARE_ALIGNED_ARRAY(16, short, best_dqcoeff, 16);
|
||||
DECLARE_ALIGNED(16, unsigned char, best_predictor[16*4]);
|
||||
DECLARE_ALIGNED(16, short, best_dqcoeff[16]);
|
||||
int dst_stride = x->e_mbd.dst.y_stride;
|
||||
unsigned char *dst = x->e_mbd.dst.y_buffer + b->offset;
|
||||
|
||||
|
@ -691,7 +692,7 @@ static int rd_pick_intra4x4block(
|
|||
*a = tempa;
|
||||
*l = templ;
|
||||
copy_predictor(best_predictor, b->predictor);
|
||||
vpx_memcpy(best_dqcoeff, b->dqcoeff, 32);
|
||||
memcpy(best_dqcoeff, b->dqcoeff, 32);
|
||||
}
|
||||
}
|
||||
b->bmi.as_mode = *best_mode;
|
||||
|
@ -715,8 +716,8 @@ static int rd_pick_intra4x4mby_modes(MACROBLOCK *mb, int *Rate,
|
|||
ENTROPY_CONTEXT *tl;
|
||||
const int *bmode_costs;
|
||||
|
||||
vpx_memcpy(&t_above, mb->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(&t_left, mb->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_above, mb->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_left, mb->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
ta = (ENTROPY_CONTEXT *)&t_above;
|
||||
tl = (ENTROPY_CONTEXT *)&t_left;
|
||||
|
@ -820,8 +821,8 @@ static int rd_cost_mbuv(MACROBLOCK *mb)
|
|||
ENTROPY_CONTEXT *ta;
|
||||
ENTROPY_CONTEXT *tl;
|
||||
|
||||
vpx_memcpy(&t_above, mb->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(&t_left, mb->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_above, mb->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_left, mb->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
ta = (ENTROPY_CONTEXT *)&t_above;
|
||||
tl = (ENTROPY_CONTEXT *)&t_left;
|
||||
|
@ -1128,8 +1129,8 @@ static void rd_check_segment(VP8_COMP *cpi, MACROBLOCK *x,
|
|||
ENTROPY_CONTEXT *ta_b;
|
||||
ENTROPY_CONTEXT *tl_b;
|
||||
|
||||
vpx_memcpy(&t_above, x->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(&t_left, x->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_above, x->e_mbd.above_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_left, x->e_mbd.left_context, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
ta = (ENTROPY_CONTEXT *)&t_above;
|
||||
tl = (ENTROPY_CONTEXT *)&t_left;
|
||||
|
@ -1172,8 +1173,8 @@ static void rd_check_segment(VP8_COMP *cpi, MACROBLOCK *x,
|
|||
ENTROPY_CONTEXT *ta_s;
|
||||
ENTROPY_CONTEXT *tl_s;
|
||||
|
||||
vpx_memcpy(&t_above_s, &t_above, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(&t_left_s, &t_left, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_above_s, &t_above, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(&t_left_s, &t_left, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
ta_s = (ENTROPY_CONTEXT *)&t_above_s;
|
||||
tl_s = (ENTROPY_CONTEXT *)&t_left_s;
|
||||
|
@ -1329,14 +1330,14 @@ static void rd_check_segment(VP8_COMP *cpi, MACROBLOCK *x,
|
|||
mode_selected = this_mode;
|
||||
best_label_rd = this_rd;
|
||||
|
||||
vpx_memcpy(ta_b, ta_s, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(tl_b, tl_s, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(ta_b, ta_s, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(tl_b, tl_s, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
}
|
||||
} /*for each 4x4 mode*/
|
||||
|
||||
vpx_memcpy(ta, ta_b, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memcpy(tl, tl_b, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(ta, ta_b, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memcpy(tl, tl_b, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
|
||||
labels2mode(x, labels, i, mode_selected, &mode_mv[mode_selected],
|
||||
bsi->ref_mv, x->mvcost);
|
||||
|
@ -1392,7 +1393,7 @@ static int vp8_rd_pick_best_mbsegmentation(VP8_COMP *cpi, MACROBLOCK *x,
|
|||
int i;
|
||||
BEST_SEG_INFO bsi;
|
||||
|
||||
vpx_memset(&bsi, 0, sizeof(bsi));
|
||||
memset(&bsi, 0, sizeof(bsi));
|
||||
|
||||
bsi.segment_rd = best_rd;
|
||||
bsi.ref_mv = best_ref_mv;
|
||||
|
@ -1661,7 +1662,6 @@ void vp8_mv_pred
|
|||
mv.as_mv.row = mvx[vcnt/2];
|
||||
mv.as_mv.col = mvy[vcnt/2];
|
||||
|
||||
find = 1;
|
||||
/* sr is set to 0 to allow calling function to decide the search
|
||||
* range.
|
||||
*/
|
||||
|
@ -1691,16 +1691,16 @@ void vp8_cal_sad(VP8_COMP *cpi, MACROBLOCKD *xd, MACROBLOCK *x, int recon_yoffse
|
|||
}else if(xd->mb_to_top_edge==0)
|
||||
{ /* only has left MB for sad calculation. */
|
||||
near_sad[0] = near_sad[2] = INT_MAX;
|
||||
near_sad[1] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - 16,xd->dst.y_stride, UINT_MAX);
|
||||
near_sad[1] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - 16,xd->dst.y_stride);
|
||||
}else if(xd->mb_to_left_edge ==0)
|
||||
{ /* only has left MB for sad calculation. */
|
||||
near_sad[1] = near_sad[2] = INT_MAX;
|
||||
near_sad[0] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16,xd->dst.y_stride, UINT_MAX);
|
||||
near_sad[0] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16,xd->dst.y_stride);
|
||||
}else
|
||||
{
|
||||
near_sad[0] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16,xd->dst.y_stride, UINT_MAX);
|
||||
near_sad[1] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - 16,xd->dst.y_stride, UINT_MAX);
|
||||
near_sad[2] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16 -16,xd->dst.y_stride, UINT_MAX);
|
||||
near_sad[0] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16,xd->dst.y_stride);
|
||||
near_sad[1] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - 16,xd->dst.y_stride);
|
||||
near_sad[2] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, xd->dst.y_buffer - xd->dst.y_stride *16 -16,xd->dst.y_stride);
|
||||
}
|
||||
|
||||
if(cpi->common.last_frame_type != KEY_FRAME)
|
||||
|
@ -1715,14 +1715,14 @@ void vp8_cal_sad(VP8_COMP *cpi, MACROBLOCKD *xd, MACROBLOCK *x, int recon_yoffse
|
|||
if(xd->mb_to_bottom_edge==0) near_sad[7] = INT_MAX;
|
||||
|
||||
if(near_sad[4] != INT_MAX)
|
||||
near_sad[4] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer - pre_y_stride *16, pre_y_stride, UINT_MAX);
|
||||
near_sad[4] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer - pre_y_stride *16, pre_y_stride);
|
||||
if(near_sad[5] != INT_MAX)
|
||||
near_sad[5] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer - 16, pre_y_stride, UINT_MAX);
|
||||
near_sad[3] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer, pre_y_stride, UINT_MAX);
|
||||
near_sad[5] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer - 16, pre_y_stride);
|
||||
near_sad[3] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer, pre_y_stride);
|
||||
if(near_sad[6] != INT_MAX)
|
||||
near_sad[6] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer + 16, pre_y_stride, UINT_MAX);
|
||||
near_sad[6] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer + 16, pre_y_stride);
|
||||
if(near_sad[7] != INT_MAX)
|
||||
near_sad[7] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer + pre_y_stride *16, pre_y_stride, UINT_MAX);
|
||||
near_sad[7] = cpi->fn_ptr[BLOCK_16X16].sdf(src_y_ptr, b->src_stride, pre_y_buffer + pre_y_stride *16, pre_y_stride);
|
||||
}
|
||||
|
||||
if(cpi->common.last_frame_type != KEY_FRAME)
|
||||
|
@ -1784,7 +1784,7 @@ static int evaluate_inter_mode_rd(int mdcounts[4],
|
|||
if(threshold < x->encode_breakout)
|
||||
threshold = x->encode_breakout;
|
||||
|
||||
var = vp8_variance16x16
|
||||
var = vpx_variance16x16
|
||||
(*(b->base_src), b->src_stride,
|
||||
x->e_mbd.predictor, 16, &sse);
|
||||
|
||||
|
@ -1926,8 +1926,8 @@ static void update_best_mode(BEST_MODE* best_mode, int this_rd,
|
|||
(rd->distortion2-rd->distortion_uv));
|
||||
|
||||
best_mode->rd = this_rd;
|
||||
vpx_memcpy(&best_mode->mbmode, &x->e_mbd.mode_info_context->mbmi, sizeof(MB_MODE_INFO));
|
||||
vpx_memcpy(&best_mode->partition, x->partition_info, sizeof(PARTITION_INFO));
|
||||
memcpy(&best_mode->mbmode, &x->e_mbd.mode_info_context->mbmi, sizeof(MB_MODE_INFO));
|
||||
memcpy(&best_mode->partition, x->partition_info, sizeof(PARTITION_INFO));
|
||||
|
||||
if ((this_mode == B_PRED) || (this_mode == SPLITMV))
|
||||
{
|
||||
|
@ -1989,9 +1989,9 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
best_mode.rd = INT_MAX;
|
||||
best_mode.yrd = INT_MAX;
|
||||
best_mode.intra_rd = INT_MAX;
|
||||
vpx_memset(mode_mv_sb, 0, sizeof(mode_mv_sb));
|
||||
vpx_memset(&best_mode.mbmode, 0, sizeof(best_mode.mbmode));
|
||||
vpx_memset(&best_mode.bmodes, 0, sizeof(best_mode.bmodes));
|
||||
memset(mode_mv_sb, 0, sizeof(mode_mv_sb));
|
||||
memset(&best_mode.mbmode, 0, sizeof(best_mode.mbmode));
|
||||
memset(&best_mode.bmodes, 0, sizeof(best_mode.bmodes));
|
||||
|
||||
/* Setup search priorities */
|
||||
get_reference_search_order(cpi, ref_frame_map);
|
||||
|
@ -2293,7 +2293,6 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
mode_mv[NEWMV].as_int = d->bmi.mv.as_int;
|
||||
|
||||
/* Further step/diamond searches as necessary */
|
||||
n = 0;
|
||||
further_steps = (cpi->sf.max_step_search_steps - 1) - step_param;
|
||||
|
||||
n = num00;
|
||||
|
@ -2560,8 +2559,6 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
intra_rd_penalty, cpi, x);
|
||||
if (this_rd < best_mode.rd || x->skip)
|
||||
{
|
||||
/* Note index of best mode so far */
|
||||
best_mode_index = mode_index;
|
||||
*returnrate = rd.rate2;
|
||||
*returndistortion = rd.distortion2;
|
||||
update_best_mode(&best_mode, this_rd, &rd, other_cost, x);
|
||||
|
@ -2586,7 +2583,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
|
||||
|
||||
/* macroblock modes */
|
||||
vpx_memcpy(&x->e_mbd.mode_info_context->mbmi, &best_mode.mbmode, sizeof(MB_MODE_INFO));
|
||||
memcpy(&x->e_mbd.mode_info_context->mbmi, &best_mode.mbmode, sizeof(MB_MODE_INFO));
|
||||
|
||||
if (best_mode.mbmode.mode == B_PRED)
|
||||
{
|
||||
|
@ -2599,7 +2596,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
|
|||
for (i = 0; i < 16; i++)
|
||||
xd->mode_info_context->bmi[i].mv.as_int = best_mode.bmodes[i].mv.as_int;
|
||||
|
||||
vpx_memcpy(x->partition_info, &best_mode.partition, sizeof(PARTITION_INFO));
|
||||
memcpy(x->partition_info, &best_mode.partition, sizeof(PARTITION_INFO));
|
||||
|
||||
x->e_mbd.mode_info_context->mbmi.mv.as_int =
|
||||
x->partition_info->bmi[15].mv.as_int;
|
||||
|
|
|
@ -136,6 +136,9 @@ extern void vp8_mv_pred
|
|||
int near_sadidx[]
|
||||
);
|
||||
void vp8_cal_sad(VP8_COMP *cpi, MACROBLOCKD *xd, MACROBLOCK *x, int recon_yoffset, int near_sadidx[]);
|
||||
int VP8_UVSSE(MACROBLOCK *x);
|
||||
int vp8_cost_mv_ref(MB_PREDICTION_MODE m, const int near_mv_ref_ct[4]);
|
||||
void vp8_set_mbmode_and_mvs(MACROBLOCK *x, MB_PREDICTION_MODE mb, int_mv *mv);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
|
|
@ -23,7 +23,7 @@ void vp8_update_gf_useage_maps(VP8_COMP *cpi, VP8_COMMON *cm, MACROBLOCK *x)
|
|||
if ((cm->frame_type == KEY_FRAME) || (cm->refresh_golden_frame))
|
||||
{
|
||||
/* Reset Gf useage monitors */
|
||||
vpx_memset(cpi->gf_active_flags, 1, (cm->mb_rows * cm->mb_cols));
|
||||
memset(cpi->gf_active_flags, 1, (cm->mb_rows * cm->mb_cols));
|
||||
cpi->gf_active_count = cm->mb_rows * cm->mb_cols;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -238,12 +238,12 @@ static void vp8_temporal_filter_iterate_c
|
|||
int mb_rows = cpi->common.mb_rows;
|
||||
int mb_y_offset = 0;
|
||||
int mb_uv_offset = 0;
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned int, accumulator, 16*16 + 8*8 + 8*8);
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned short, count, 16*16 + 8*8 + 8*8);
|
||||
DECLARE_ALIGNED(16, unsigned int, accumulator[16*16 + 8*8 + 8*8]);
|
||||
DECLARE_ALIGNED(16, unsigned short, count[16*16 + 8*8 + 8*8]);
|
||||
MACROBLOCKD *mbd = &cpi->mb.e_mbd;
|
||||
YV12_BUFFER_CONFIG *f = cpi->frames[alt_ref_index];
|
||||
unsigned char *dst1, *dst2;
|
||||
DECLARE_ALIGNED_ARRAY(16, unsigned char, predictor, 16*16 + 8*8 + 8*8);
|
||||
DECLARE_ALIGNED(16, unsigned char, predictor[16*16 + 8*8 + 8*8]);
|
||||
|
||||
/* Save input state */
|
||||
unsigned char *y_buffer = mbd->pre.y_buffer;
|
||||
|
@ -274,8 +274,8 @@ static void vp8_temporal_filter_iterate_c
|
|||
int i, j, k;
|
||||
int stride;
|
||||
|
||||
vpx_memset(accumulator, 0, 384*sizeof(unsigned int));
|
||||
vpx_memset(count, 0, 384*sizeof(unsigned short));
|
||||
memset(accumulator, 0, 384*sizeof(unsigned int));
|
||||
memset(count, 0, 384*sizeof(unsigned short));
|
||||
|
||||
#if ALT_REF_MC_ENABLED
|
||||
cpi->mb.mv_col_min = -((mb_col * 16) + (16 - 5));
|
||||
|
@ -502,7 +502,7 @@ void vp8_temporal_filter_prepare_c
|
|||
start_frame = distance + frames_to_blur_forward;
|
||||
|
||||
/* Setup frame pointers, NULL indicates frame not included in filter */
|
||||
vpx_memset(cpi->frames, 0, max_frames*sizeof(YV12_BUFFER_CONFIG *));
|
||||
memset(cpi->frames, 0, max_frames*sizeof(YV12_BUFFER_CONFIG *));
|
||||
for (frame = 0; frame < frames_to_blur; frame++)
|
||||
{
|
||||
int which_buffer = start_frame - frame;
|
||||
|
|
|
@ -421,7 +421,7 @@ void vp8_tokenize_mb(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t)
|
|||
|
||||
void init_context_counters(void)
|
||||
{
|
||||
vpx_memset(context_counters, 0, sizeof(context_counters));
|
||||
memset(context_counters, 0, sizeof(context_counters));
|
||||
}
|
||||
|
||||
void print_context_counters()
|
||||
|
@ -596,13 +596,13 @@ void vp8_fix_contexts(MACROBLOCKD *x)
|
|||
/* Clear entropy contexts for Y2 blocks */
|
||||
if (x->mode_info_context->mbmi.mode != B_PRED && x->mode_info_context->mbmi.mode != SPLITMV)
|
||||
{
|
||||
vpx_memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
vpx_memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
|
||||
}
|
||||
else
|
||||
{
|
||||
vpx_memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
vpx_memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -35,10 +35,10 @@
|
|||
void vp8_regular_quantize_b_sse2(BLOCK *b, BLOCKD *d)
|
||||
{
|
||||
char eob = 0;
|
||||
short *zbin_boost_ptr = b->zrun_zbin_boost;
|
||||
short *zbin_boost_ptr;
|
||||
short *qcoeff_ptr = d->qcoeff;
|
||||
DECLARE_ALIGNED_ARRAY(16, short, x, 16);
|
||||
DECLARE_ALIGNED_ARRAY(16, short, y, 16);
|
||||
DECLARE_ALIGNED(16, short, x[16]);
|
||||
DECLARE_ALIGNED(16, short, y[16]);
|
||||
|
||||
__m128i sz0, x0, sz1, x1, y0, y1, x_minus_zbin0, x_minus_zbin1;
|
||||
__m128i quant_shift0 = _mm_load_si128((__m128i *)(b->quant_shift));
|
||||
|
@ -55,7 +55,7 @@ void vp8_regular_quantize_b_sse2(BLOCK *b, BLOCKD *d)
|
|||
__m128i dequant0 = _mm_load_si128((__m128i *)(d->dequant));
|
||||
__m128i dequant1 = _mm_load_si128((__m128i *)(d->dequant + 8));
|
||||
|
||||
vpx_memset(qcoeff_ptr, 0, 32);
|
||||
memset(qcoeff_ptr, 0, 32);
|
||||
|
||||
/* Duplicate to all lanes. */
|
||||
zbin_extra = _mm_shufflelo_epi16(zbin_extra, 0);
|
||||
|
|
|
@ -10,7 +10,9 @@
|
|||
|
||||
|
||||
#include "./vpx_config.h"
|
||||
#include "vp8_rtcd.h"
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "./vpx_scale_rtcd.h"
|
||||
#include "vpx/vpx_codec.h"
|
||||
#include "vpx/internal/vpx_codec_internal.h"
|
||||
#include "vpx_version.h"
|
||||
|
@ -133,7 +135,7 @@ static vpx_codec_err_t validate_config(vpx_codec_alg_priv_t *ctx,
|
|||
RANGE_CHECK(cfg, g_w, 1, 16383); /* 14 bits available */
|
||||
RANGE_CHECK(cfg, g_h, 1, 16383); /* 14 bits available */
|
||||
RANGE_CHECK(cfg, g_timebase.den, 1, 1000000000);
|
||||
RANGE_CHECK(cfg, g_timebase.num, 1, cfg->g_timebase.den);
|
||||
RANGE_CHECK(cfg, g_timebase.num, 1, 1000000000);
|
||||
RANGE_CHECK_HI(cfg, g_profile, 3);
|
||||
RANGE_CHECK_HI(cfg, rc_max_quantizer, 63);
|
||||
RANGE_CHECK_HI(cfg, rc_min_quantizer, cfg->rc_max_quantizer);
|
||||
|
@ -197,7 +199,7 @@ static vpx_codec_err_t validate_config(vpx_codec_alg_priv_t *ctx,
|
|||
RANGE_CHECK_HI(vp8_cfg, arnr_strength, 6);
|
||||
RANGE_CHECK(vp8_cfg, arnr_type, 1, 3);
|
||||
RANGE_CHECK(vp8_cfg, cq_level, 0, 63);
|
||||
RANGE_CHECK_BOOL(vp8_cfg, screen_content_mode);
|
||||
RANGE_CHECK_HI(vp8_cfg, screen_content_mode, 2);
|
||||
if (finalize && (cfg->rc_end_usage == VPX_CQ || cfg->rc_end_usage == VPX_Q))
|
||||
RANGE_CHECK(vp8_cfg, cq_level,
|
||||
cfg->rc_min_quantizer, cfg->rc_max_quantizer);
|
||||
|
@ -365,9 +367,9 @@ static vpx_codec_err_t set_vp8e_config(VP8_CONFIG *oxcf,
|
|||
if (oxcf->number_of_layers > 1)
|
||||
{
|
||||
memcpy (oxcf->target_bitrate, cfg.ts_target_bitrate,
|
||||
sizeof(cfg.ts_target_bitrate));
|
||||
sizeof(cfg.ts_target_bitrate));
|
||||
memcpy (oxcf->rate_decimator, cfg.ts_rate_decimator,
|
||||
sizeof(cfg.ts_rate_decimator));
|
||||
sizeof(cfg.ts_rate_decimator));
|
||||
memcpy (oxcf->layer_id, cfg.ts_layer_id, sizeof(cfg.ts_layer_id));
|
||||
}
|
||||
|
||||
|
@ -476,8 +478,6 @@ static vpx_codec_err_t vp8e_set_config(vpx_codec_alg_priv_t *ctx,
|
|||
return res;
|
||||
}
|
||||
|
||||
int vp8_reverse_trans(int);
|
||||
|
||||
static vpx_codec_err_t get_quantizer(vpx_codec_alg_priv_t *ctx, va_list args)
|
||||
{
|
||||
int *const arg = va_arg(args, int *);
|
||||
|
@ -649,6 +649,8 @@ static vpx_codec_err_t vp8e_init(vpx_codec_ctx_t *ctx,
|
|||
|
||||
|
||||
vp8_rtcd();
|
||||
vpx_dsp_rtcd();
|
||||
vpx_scale_rtcd();
|
||||
|
||||
if (!ctx->priv)
|
||||
{
|
||||
|
@ -858,9 +860,6 @@ static vpx_codec_err_t vp8e_encode(vpx_codec_alg_priv_t *ctx,
|
|||
{
|
||||
vpx_codec_err_t res = VPX_CODEC_OK;
|
||||
|
||||
if (!ctx->cfg.rc_target_bitrate)
|
||||
return res;
|
||||
|
||||
if (!ctx->cfg.rc_target_bitrate)
|
||||
return res;
|
||||
|
||||
|
|
|
@ -11,7 +11,9 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "vp8_rtcd.h"
|
||||
#include "./vp8_rtcd.h"
|
||||
#include "./vpx_dsp_rtcd.h"
|
||||
#include "./vpx_scale_rtcd.h"
|
||||
#include "vpx/vpx_decoder.h"
|
||||
#include "vpx/vp8dx.h"
|
||||
#include "vpx/internal/vpx_codec_internal.h"
|
||||
|
@ -106,6 +108,8 @@ static vpx_codec_err_t vp8_init(vpx_codec_ctx_t *ctx,
|
|||
(void) data;
|
||||
|
||||
vp8_rtcd();
|
||||
vpx_dsp_rtcd();
|
||||
vpx_scale_rtcd();
|
||||
|
||||
/* This function only allocates space for the vpx_codec_alg_priv_t
|
||||
* structure. More memory may be required at the time the stream
|
||||
|
@ -286,8 +290,8 @@ update_fragments(vpx_codec_alg_priv_t *ctx,
|
|||
if (ctx->fragments.count == 0)
|
||||
{
|
||||
/* New frame, reset fragment pointers and sizes */
|
||||
vpx_memset((void*)ctx->fragments.ptrs, 0, sizeof(ctx->fragments.ptrs));
|
||||
vpx_memset(ctx->fragments.sizes, 0, sizeof(ctx->fragments.sizes));
|
||||
memset((void*)ctx->fragments.ptrs, 0, sizeof(ctx->fragments.ptrs));
|
||||
memset(ctx->fragments.sizes, 0, sizeof(ctx->fragments.sizes));
|
||||
}
|
||||
if (ctx->fragments.enabled && !(data == NULL && data_sz == 0))
|
||||
{
|
||||
|
|
|
@ -33,8 +33,7 @@ RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char *src, int src_pitch,
|
|||
|
||||
void vp8_bilinear_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
void vp8_bilinear_predict4x4_armv6(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
void vp8_bilinear_predict4x4_neon(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_bilinear_predict4x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_armv6
|
||||
|
||||
void vp8_bilinear_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
void vp8_bilinear_predict8x4_armv6(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
@ -118,13 +117,6 @@ RTCD_EXTERN void (*vp8_fast_quantize_b)(struct block *, struct blockd *);
|
|||
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
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_neon(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
RTCD_EXTERN unsigned int (*vp8_get4x4sse_cs)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
#define vp8_get_mb_ss vp8_get_mb_ss_c
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
void vp8_intra4x4_predict_armv6(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_armv6
|
||||
|
@ -175,83 +167,12 @@ int vp8_mbblock_error_c(struct macroblock *mb, int dc);
|
|||
int vp8_mbuverror_c(struct macroblock *mb);
|
||||
#define vp8_mbuverror vp8_mbuverror_c
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_armv6(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_neon(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_mse16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
int vp8_refining_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_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
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_armv6(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_neon(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad16x16x3 vp8_sad16x16x3_c
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad16x16x4d vp8_sad16x16x4d_c
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad16x16x8 vp8_sad16x16x8_c
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_neon(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad16x8x3 vp8_sad16x8x3_c
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad16x8x4d vp8_sad16x8x4d_c
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad16x8x8 vp8_sad16x8x8_c
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_neon(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad4x4)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad4x4x3 vp8_sad4x4x3_c
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad4x4x4d vp8_sad4x4x4d_c
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad4x4x8 vp8_sad4x4x8_c
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_neon(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad8x16x3 vp8_sad8x16x3_c
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad8x16x4d vp8_sad8x16x4d_c
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad8x16x8 vp8_sad8x16x8_c
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_neon(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad8x8x3 vp8_sad8x8x3_c
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad8x8x4d vp8_sad8x8x4d_c
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad8x8x8 vp8_sad8x8x8_c
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_armv6(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_neon(short *input, short *output, int pitch);
|
||||
|
@ -299,9 +220,6 @@ void vp8_sixtap_predict8x8_armv6(unsigned char *src, int src_pitch, int xofst, i
|
|||
void vp8_sixtap_predict8x8_neon(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
#define vp8_sub_pixel_mse16x16 vp8_sub_pixel_mse16x16_c
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_armv6(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_neon(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -318,8 +236,7 @@ unsigned int vp8_sub_pixel_variance8x16_c(const unsigned char *src_ptr, int so
|
|||
|
||||
unsigned int vp8_sub_pixel_variance8x8_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance8x8_armv6(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance8x8_neon(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_sub_pixel_variance8x8)(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
#define vp8_sub_pixel_variance8x8 vp8_sub_pixel_variance8x8_armv6
|
||||
|
||||
void vp8_subtract_b_c(struct block *be, struct blockd *bd, int pitch);
|
||||
void vp8_subtract_b_neon(struct block *be, struct blockd *bd, int pitch);
|
||||
|
@ -333,27 +250,6 @@ void vp8_subtract_mby_c(short *diff, unsigned char *src, int src_stride, unsigne
|
|||
void vp8_subtract_mby_neon(short *diff, unsigned char *src, int src_stride, unsigned char *pred, int pred_stride);
|
||||
RTCD_EXTERN void (*vp8_subtract_mby)(short *diff, unsigned char *src, int src_stride, unsigned char *pred, int pred_stride);
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_armv6(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_neon(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_neon(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance4x4 vp8_variance4x4_c
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_neon(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_armv6(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_neon(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_armv6(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_neon(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -383,8 +279,6 @@ static void setup_rtcd_internal(void)
|
|||
|
||||
vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_armv6;
|
||||
if (flags & HAS_NEON) vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_neon;
|
||||
vp8_bilinear_predict4x4 = vp8_bilinear_predict4x4_armv6;
|
||||
if (flags & HAS_NEON) vp8_bilinear_predict4x4 = vp8_bilinear_predict4x4_neon;
|
||||
vp8_bilinear_predict8x4 = vp8_bilinear_predict8x4_armv6;
|
||||
if (flags & HAS_NEON) vp8_bilinear_predict8x4 = vp8_bilinear_predict8x4_neon;
|
||||
vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_armv6;
|
||||
|
@ -415,8 +309,6 @@ static void setup_rtcd_internal(void)
|
|||
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_get4x4sse_cs = vp8_get4x4sse_cs_c;
|
||||
if (flags & HAS_NEON) vp8_get4x4sse_cs = vp8_get4x4sse_cs_neon;
|
||||
vp8_loop_filter_bh = vp8_loop_filter_bh_armv6;
|
||||
if (flags & HAS_NEON) vp8_loop_filter_bh = vp8_loop_filter_bh_neon;
|
||||
vp8_loop_filter_bv = vp8_loop_filter_bv_armv6;
|
||||
|
@ -433,18 +325,6 @@ static void setup_rtcd_internal(void)
|
|||
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_armv6;
|
||||
if (flags & HAS_NEON) vp8_loop_filter_simple_mbv = vp8_loop_filter_mbvs_neon;
|
||||
vp8_mse16x16 = vp8_mse16x16_armv6;
|
||||
if (flags & HAS_NEON) vp8_mse16x16 = vp8_mse16x16_neon;
|
||||
vp8_sad16x16 = vp8_sad16x16_armv6;
|
||||
if (flags & HAS_NEON) vp8_sad16x16 = vp8_sad16x16_neon;
|
||||
vp8_sad16x8 = vp8_sad16x8_c;
|
||||
if (flags & HAS_NEON) vp8_sad16x8 = vp8_sad16x8_neon;
|
||||
vp8_sad4x4 = vp8_sad4x4_c;
|
||||
if (flags & HAS_NEON) vp8_sad4x4 = vp8_sad4x4_neon;
|
||||
vp8_sad8x16 = vp8_sad8x16_c;
|
||||
if (flags & HAS_NEON) vp8_sad8x16 = vp8_sad8x16_neon;
|
||||
vp8_sad8x8 = vp8_sad8x8_c;
|
||||
if (flags & HAS_NEON) vp8_sad8x8 = vp8_sad8x8_neon;
|
||||
vp8_short_fdct4x4 = vp8_short_fdct4x4_armv6;
|
||||
if (flags & HAS_NEON) vp8_short_fdct4x4 = vp8_short_fdct4x4_neon;
|
||||
vp8_short_fdct8x4 = vp8_short_fdct8x4_armv6;
|
||||
|
@ -463,22 +343,12 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_NEON) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_neon;
|
||||
vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_armv6;
|
||||
if (flags & HAS_NEON) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_neon;
|
||||
vp8_sub_pixel_variance8x8 = vp8_sub_pixel_variance8x8_armv6;
|
||||
if (flags & HAS_NEON) vp8_sub_pixel_variance8x8 = vp8_sub_pixel_variance8x8_neon;
|
||||
vp8_subtract_b = vp8_subtract_b_c;
|
||||
if (flags & HAS_NEON) vp8_subtract_b = vp8_subtract_b_neon;
|
||||
vp8_subtract_mbuv = vp8_subtract_mbuv_c;
|
||||
if (flags & HAS_NEON) vp8_subtract_mbuv = vp8_subtract_mbuv_neon;
|
||||
vp8_subtract_mby = vp8_subtract_mby_c;
|
||||
if (flags & HAS_NEON) vp8_subtract_mby = vp8_subtract_mby_neon;
|
||||
vp8_variance16x16 = vp8_variance16x16_armv6;
|
||||
if (flags & HAS_NEON) vp8_variance16x16 = vp8_variance16x16_neon;
|
||||
vp8_variance16x8 = vp8_variance16x8_c;
|
||||
if (flags & HAS_NEON) vp8_variance16x8 = vp8_variance16x8_neon;
|
||||
vp8_variance8x16 = vp8_variance8x16_c;
|
||||
if (flags & HAS_NEON) vp8_variance8x16 = vp8_variance8x16_neon;
|
||||
vp8_variance8x8 = vp8_variance8x8_armv6;
|
||||
if (flags & HAS_NEON) vp8_variance8x8 = vp8_variance8x8_neon;
|
||||
vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_armv6;
|
||||
if (flags & HAS_NEON) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_neon;
|
||||
vp8_variance_halfpixvar16x16_hv = vp8_variance_halfpixvar16x16_hv_armv6;
|
||||
|
|
|
@ -89,12 +89,6 @@ void vp8_fast_quantize_b_c(struct block *, struct blockd *);
|
|||
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
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
#define vp8_get4x4sse_cs vp8_get4x4sse_cs_c
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
#define vp8_get_mb_ss vp8_get_mb_ss_c
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -128,75 +122,12 @@ int vp8_mbblock_error_c(struct macroblock *mb, int dc);
|
|||
int vp8_mbuverror_c(struct macroblock *mb);
|
||||
#define vp8_mbuverror vp8_mbuverror_c
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_mse16x16 vp8_mse16x16_c
|
||||
|
||||
int vp8_refining_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_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
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad16x16 vp8_sad16x16_c
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad16x16x3 vp8_sad16x16x3_c
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad16x16x4d vp8_sad16x16x4d_c
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad16x16x8 vp8_sad16x16x8_c
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad16x8 vp8_sad16x8_c
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad16x8x3 vp8_sad16x8x3_c
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad16x8x4d vp8_sad16x8x4d_c
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad16x8x8 vp8_sad16x8x8_c
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad4x4 vp8_sad4x4_c
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad4x4x3 vp8_sad4x4x3_c
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad4x4x4d vp8_sad4x4x4d_c
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad4x4x8 vp8_sad4x4x8_c
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x16 vp8_sad8x16_c
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad8x16x3 vp8_sad8x16x3_c
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad8x16x4d vp8_sad8x16x4d_c
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad8x16x8 vp8_sad8x16x8_c
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x8 vp8_sad8x8_c
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad8x8x3 vp8_sad8x8x3_c
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
#define vp8_sad8x8x4d vp8_sad8x8x4d_c
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
#define vp8_sad8x8x8 vp8_sad8x8x8_c
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
#define vp8_short_fdct4x4 vp8_short_fdct4x4_c
|
||||
|
||||
|
@ -227,9 +158,6 @@ void vp8_sixtap_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int y
|
|||
void vp8_sixtap_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
#define vp8_sub_pixel_mse16x16 vp8_sub_pixel_mse16x16_c
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
#define vp8_sub_pixel_variance16x16 vp8_sub_pixel_variance16x16_c
|
||||
|
||||
|
@ -257,21 +185,6 @@ void vp8_subtract_mby_c(short *diff, unsigned char *src, int src_stride, unsigne
|
|||
void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
#define vp8_temporal_filter_apply vp8_temporal_filter_apply_c
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x16 vp8_variance16x16_c
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x8 vp8_variance16x8_c
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance4x4 vp8_variance4x4_c
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x16 vp8_variance8x16_c
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x8 vp8_variance8x8_c
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance_halfpixvar16x16_h vp8_variance_halfpixvar16x16_h_c
|
||||
|
||||
|
|
|
@ -74,10 +74,10 @@ void vp8_clear_system_state_c();
|
|||
void vpx_reset_mmx_state();
|
||||
RTCD_EXTERN void (*vp8_clear_system_state)();
|
||||
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
|
@ -147,15 +147,6 @@ int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *
|
|||
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);
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
RTCD_EXTERN unsigned int (*vp8_get4x4sse_cs)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
unsigned int vp8_get_mb_ss_mmx(const short *);
|
||||
unsigned int vp8_get_mb_ss_sse2(const short *);
|
||||
RTCD_EXTERN unsigned int (*vp8_get_mb_ss)(const short *);
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -218,11 +209,6 @@ int vp8_mbuverror_mmx(struct macroblock *mb);
|
|||
int vp8_mbuverror_xmm(struct macroblock *mb);
|
||||
RTCD_EXTERN int (*vp8_mbuverror)(struct macroblock *mb);
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_mse16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
void vp8_plane_add_noise_c(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_mmx(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_wmt(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
|
@ -241,94 +227,6 @@ 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 *);
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad4x4)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad4x4x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
|
||||
|
@ -378,11 +276,6 @@ void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, in
|
|||
void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_sub_pixel_mse16x16)(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -429,31 +322,6 @@ void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, uns
|
|||
void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
RTCD_EXTERN void (*vp8_temporal_filter_apply)(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance4x4)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -540,11 +408,6 @@ static void setup_rtcd_internal(void)
|
|||
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_get4x4sse_cs = vp8_get4x4sse_cs_c;
|
||||
if (flags & HAS_MMX) vp8_get4x4sse_cs = vp8_get4x4sse_cs_mmx;
|
||||
vp8_get_mb_ss = vp8_get_mb_ss_c;
|
||||
if (flags & HAS_MMX) vp8_get_mb_ss = vp8_get_mb_ss_mmx;
|
||||
if (flags & HAS_SSE2) vp8_get_mb_ss = vp8_get_mb_ss_sse2;
|
||||
vp8_loop_filter_bh = vp8_loop_filter_bh_c;
|
||||
if (flags & HAS_MMX) vp8_loop_filter_bh = vp8_loop_filter_bh_mmx;
|
||||
if (flags & HAS_SSE2) vp8_loop_filter_bh = vp8_loop_filter_bh_sse2;
|
||||
|
@ -580,9 +443,6 @@ static void setup_rtcd_internal(void)
|
|||
vp8_mbuverror = vp8_mbuverror_c;
|
||||
if (flags & HAS_MMX) vp8_mbuverror = vp8_mbuverror_mmx;
|
||||
if (flags & HAS_SSE2) vp8_mbuverror = vp8_mbuverror_xmm;
|
||||
vp8_mse16x16 = vp8_mse16x16_c;
|
||||
if (flags & HAS_MMX) vp8_mse16x16 = vp8_mse16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_mse16x16 = vp8_mse16x16_wmt;
|
||||
vp8_plane_add_noise = vp8_plane_add_noise_c;
|
||||
if (flags & HAS_MMX) vp8_plane_add_noise = vp8_plane_add_noise_mmx;
|
||||
if (flags & HAS_SSE2) vp8_plane_add_noise = vp8_plane_add_noise_wmt;
|
||||
|
@ -593,54 +453,6 @@ static void setup_rtcd_internal(void)
|
|||
vp8_regular_quantize_b = vp8_regular_quantize_b_c;
|
||||
if (flags & HAS_SSE2) 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_sad16x16 = vp8_sad16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sad16x16 = vp8_sad16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad16x16 = vp8_sad16x16_wmt;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16 = vp8_sad16x16_sse3;
|
||||
vp8_sad16x16x3 = vp8_sad16x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x3 = vp8_sad16x16x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x16x3 = vp8_sad16x16x3_ssse3;
|
||||
vp8_sad16x16x4d = vp8_sad16x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x4d = vp8_sad16x16x4d_sse3;
|
||||
vp8_sad16x16x8 = vp8_sad16x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x16x8 = vp8_sad16x16x8_sse4;
|
||||
vp8_sad16x8 = vp8_sad16x8_c;
|
||||
if (flags & HAS_MMX) vp8_sad16x8 = vp8_sad16x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad16x8 = vp8_sad16x8_wmt;
|
||||
vp8_sad16x8x3 = vp8_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x3 = vp8_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x8x3 = vp8_sad16x8x3_ssse3;
|
||||
vp8_sad16x8x4d = vp8_sad16x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x4d = vp8_sad16x8x4d_sse3;
|
||||
vp8_sad16x8x8 = vp8_sad16x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x8x8 = vp8_sad16x8x8_sse4;
|
||||
vp8_sad4x4 = vp8_sad4x4_c;
|
||||
if (flags & HAS_MMX) vp8_sad4x4 = vp8_sad4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad4x4 = vp8_sad4x4_wmt;
|
||||
vp8_sad4x4x3 = vp8_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x3 = vp8_sad4x4x3_sse3;
|
||||
vp8_sad4x4x4d = vp8_sad4x4x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x4d = vp8_sad4x4x4d_sse3;
|
||||
vp8_sad4x4x8 = vp8_sad4x4x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad4x4x8 = vp8_sad4x4x8_sse4;
|
||||
vp8_sad8x16 = vp8_sad8x16_c;
|
||||
if (flags & HAS_MMX) vp8_sad8x16 = vp8_sad8x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad8x16 = vp8_sad8x16_wmt;
|
||||
vp8_sad8x16x3 = vp8_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x3 = vp8_sad8x16x3_sse3;
|
||||
vp8_sad8x16x4d = vp8_sad8x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x4d = vp8_sad8x16x4d_sse3;
|
||||
vp8_sad8x16x8 = vp8_sad8x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x16x8 = vp8_sad8x16x8_sse4;
|
||||
vp8_sad8x8 = vp8_sad8x8_c;
|
||||
if (flags & HAS_MMX) vp8_sad8x8 = vp8_sad8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad8x8 = vp8_sad8x8_wmt;
|
||||
vp8_sad8x8x3 = vp8_sad8x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x3 = vp8_sad8x8x3_sse3;
|
||||
vp8_sad8x8x4d = vp8_sad8x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x4d = vp8_sad8x8x4d_sse3;
|
||||
vp8_sad8x8x8 = vp8_sad8x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x8x8 = vp8_sad8x8x8_sse4;
|
||||
vp8_short_fdct4x4 = vp8_short_fdct4x4_c;
|
||||
if (flags & HAS_MMX) vp8_short_fdct4x4 = vp8_short_fdct4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_short_fdct4x4 = vp8_short_fdct4x4_sse2;
|
||||
|
@ -669,9 +481,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_MMX) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
|
||||
if (flags & HAS_SSSE3) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
|
||||
vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_wmt;
|
||||
vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_wmt;
|
||||
|
@ -700,21 +509,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) vp8_subtract_mby = vp8_subtract_mby_sse2;
|
||||
vp8_temporal_filter_apply = vp8_temporal_filter_apply_c;
|
||||
if (flags & HAS_SSE2) vp8_temporal_filter_apply = vp8_temporal_filter_apply_sse2;
|
||||
vp8_variance16x16 = vp8_variance16x16_c;
|
||||
if (flags & HAS_MMX) vp8_variance16x16 = vp8_variance16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance16x16 = vp8_variance16x16_wmt;
|
||||
vp8_variance16x8 = vp8_variance16x8_c;
|
||||
if (flags & HAS_MMX) vp8_variance16x8 = vp8_variance16x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance16x8 = vp8_variance16x8_wmt;
|
||||
vp8_variance4x4 = vp8_variance4x4_c;
|
||||
if (flags & HAS_MMX) vp8_variance4x4 = vp8_variance4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance4x4 = vp8_variance4x4_wmt;
|
||||
vp8_variance8x16 = vp8_variance8x16_c;
|
||||
if (flags & HAS_MMX) vp8_variance8x16 = vp8_variance8x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance8x16 = vp8_variance8x16_wmt;
|
||||
vp8_variance8x8 = vp8_variance8x8_c;
|
||||
if (flags & HAS_MMX) vp8_variance8x8 = vp8_variance8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance8x8 = vp8_variance8x8_wmt;
|
||||
vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_c;
|
||||
if (flags & HAS_MMX) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_wmt;
|
||||
|
|
|
@ -74,10 +74,10 @@ void vp8_clear_system_state_c();
|
|||
void vpx_reset_mmx_state();
|
||||
RTCD_EXTERN void (*vp8_clear_system_state)();
|
||||
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
|
@ -147,15 +147,6 @@ int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *
|
|||
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);
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
RTCD_EXTERN unsigned int (*vp8_get4x4sse_cs)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
unsigned int vp8_get_mb_ss_mmx(const short *);
|
||||
unsigned int vp8_get_mb_ss_sse2(const short *);
|
||||
RTCD_EXTERN unsigned int (*vp8_get_mb_ss)(const short *);
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -218,11 +209,6 @@ int vp8_mbuverror_mmx(struct macroblock *mb);
|
|||
int vp8_mbuverror_xmm(struct macroblock *mb);
|
||||
RTCD_EXTERN int (*vp8_mbuverror)(struct macroblock *mb);
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_mse16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
void vp8_plane_add_noise_c(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_mmx(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_wmt(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
|
@ -241,94 +227,6 @@ 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 *);
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad4x4)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad4x4x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
|
||||
|
@ -378,11 +276,6 @@ void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, in
|
|||
void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_sub_pixel_mse16x16)(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -429,31 +322,6 @@ void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, uns
|
|||
void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
RTCD_EXTERN void (*vp8_temporal_filter_apply)(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance4x4)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -540,11 +408,6 @@ static void setup_rtcd_internal(void)
|
|||
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_get4x4sse_cs = vp8_get4x4sse_cs_c;
|
||||
if (flags & HAS_MMX) vp8_get4x4sse_cs = vp8_get4x4sse_cs_mmx;
|
||||
vp8_get_mb_ss = vp8_get_mb_ss_c;
|
||||
if (flags & HAS_MMX) vp8_get_mb_ss = vp8_get_mb_ss_mmx;
|
||||
if (flags & HAS_SSE2) vp8_get_mb_ss = vp8_get_mb_ss_sse2;
|
||||
vp8_loop_filter_bh = vp8_loop_filter_bh_c;
|
||||
if (flags & HAS_MMX) vp8_loop_filter_bh = vp8_loop_filter_bh_mmx;
|
||||
if (flags & HAS_SSE2) vp8_loop_filter_bh = vp8_loop_filter_bh_sse2;
|
||||
|
@ -580,9 +443,6 @@ static void setup_rtcd_internal(void)
|
|||
vp8_mbuverror = vp8_mbuverror_c;
|
||||
if (flags & HAS_MMX) vp8_mbuverror = vp8_mbuverror_mmx;
|
||||
if (flags & HAS_SSE2) vp8_mbuverror = vp8_mbuverror_xmm;
|
||||
vp8_mse16x16 = vp8_mse16x16_c;
|
||||
if (flags & HAS_MMX) vp8_mse16x16 = vp8_mse16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_mse16x16 = vp8_mse16x16_wmt;
|
||||
vp8_plane_add_noise = vp8_plane_add_noise_c;
|
||||
if (flags & HAS_MMX) vp8_plane_add_noise = vp8_plane_add_noise_mmx;
|
||||
if (flags & HAS_SSE2) vp8_plane_add_noise = vp8_plane_add_noise_wmt;
|
||||
|
@ -593,54 +453,6 @@ static void setup_rtcd_internal(void)
|
|||
vp8_regular_quantize_b = vp8_regular_quantize_b_c;
|
||||
if (flags & HAS_SSE2) 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_sad16x16 = vp8_sad16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sad16x16 = vp8_sad16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad16x16 = vp8_sad16x16_wmt;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16 = vp8_sad16x16_sse3;
|
||||
vp8_sad16x16x3 = vp8_sad16x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x3 = vp8_sad16x16x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x16x3 = vp8_sad16x16x3_ssse3;
|
||||
vp8_sad16x16x4d = vp8_sad16x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x4d = vp8_sad16x16x4d_sse3;
|
||||
vp8_sad16x16x8 = vp8_sad16x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x16x8 = vp8_sad16x16x8_sse4;
|
||||
vp8_sad16x8 = vp8_sad16x8_c;
|
||||
if (flags & HAS_MMX) vp8_sad16x8 = vp8_sad16x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad16x8 = vp8_sad16x8_wmt;
|
||||
vp8_sad16x8x3 = vp8_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x3 = vp8_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x8x3 = vp8_sad16x8x3_ssse3;
|
||||
vp8_sad16x8x4d = vp8_sad16x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x4d = vp8_sad16x8x4d_sse3;
|
||||
vp8_sad16x8x8 = vp8_sad16x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x8x8 = vp8_sad16x8x8_sse4;
|
||||
vp8_sad4x4 = vp8_sad4x4_c;
|
||||
if (flags & HAS_MMX) vp8_sad4x4 = vp8_sad4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad4x4 = vp8_sad4x4_wmt;
|
||||
vp8_sad4x4x3 = vp8_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x3 = vp8_sad4x4x3_sse3;
|
||||
vp8_sad4x4x4d = vp8_sad4x4x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x4d = vp8_sad4x4x4d_sse3;
|
||||
vp8_sad4x4x8 = vp8_sad4x4x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad4x4x8 = vp8_sad4x4x8_sse4;
|
||||
vp8_sad8x16 = vp8_sad8x16_c;
|
||||
if (flags & HAS_MMX) vp8_sad8x16 = vp8_sad8x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad8x16 = vp8_sad8x16_wmt;
|
||||
vp8_sad8x16x3 = vp8_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x3 = vp8_sad8x16x3_sse3;
|
||||
vp8_sad8x16x4d = vp8_sad8x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x4d = vp8_sad8x16x4d_sse3;
|
||||
vp8_sad8x16x8 = vp8_sad8x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x16x8 = vp8_sad8x16x8_sse4;
|
||||
vp8_sad8x8 = vp8_sad8x8_c;
|
||||
if (flags & HAS_MMX) vp8_sad8x8 = vp8_sad8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad8x8 = vp8_sad8x8_wmt;
|
||||
vp8_sad8x8x3 = vp8_sad8x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x3 = vp8_sad8x8x3_sse3;
|
||||
vp8_sad8x8x4d = vp8_sad8x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x4d = vp8_sad8x8x4d_sse3;
|
||||
vp8_sad8x8x8 = vp8_sad8x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x8x8 = vp8_sad8x8x8_sse4;
|
||||
vp8_short_fdct4x4 = vp8_short_fdct4x4_c;
|
||||
if (flags & HAS_MMX) vp8_short_fdct4x4 = vp8_short_fdct4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_short_fdct4x4 = vp8_short_fdct4x4_sse2;
|
||||
|
@ -669,9 +481,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_MMX) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
|
||||
if (flags & HAS_SSSE3) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
|
||||
vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_wmt;
|
||||
vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_wmt;
|
||||
|
@ -700,21 +509,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) vp8_subtract_mby = vp8_subtract_mby_sse2;
|
||||
vp8_temporal_filter_apply = vp8_temporal_filter_apply_c;
|
||||
if (flags & HAS_SSE2) vp8_temporal_filter_apply = vp8_temporal_filter_apply_sse2;
|
||||
vp8_variance16x16 = vp8_variance16x16_c;
|
||||
if (flags & HAS_MMX) vp8_variance16x16 = vp8_variance16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance16x16 = vp8_variance16x16_wmt;
|
||||
vp8_variance16x8 = vp8_variance16x8_c;
|
||||
if (flags & HAS_MMX) vp8_variance16x8 = vp8_variance16x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance16x8 = vp8_variance16x8_wmt;
|
||||
vp8_variance4x4 = vp8_variance4x4_c;
|
||||
if (flags & HAS_MMX) vp8_variance4x4 = vp8_variance4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance4x4 = vp8_variance4x4_wmt;
|
||||
vp8_variance8x16 = vp8_variance8x16_c;
|
||||
if (flags & HAS_MMX) vp8_variance8x16 = vp8_variance8x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance8x16 = vp8_variance8x16_wmt;
|
||||
vp8_variance8x8 = vp8_variance8x8_c;
|
||||
if (flags & HAS_MMX) vp8_variance8x8 = vp8_variance8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance8x8 = vp8_variance8x8_wmt;
|
||||
vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_c;
|
||||
if (flags & HAS_MMX) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_wmt;
|
||||
|
|
|
@ -74,10 +74,10 @@ void vp8_clear_system_state_c();
|
|||
void vpx_reset_mmx_state();
|
||||
RTCD_EXTERN void (*vp8_clear_system_state)();
|
||||
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
|
@ -147,15 +147,6 @@ int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *
|
|||
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);
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
RTCD_EXTERN unsigned int (*vp8_get4x4sse_cs)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
unsigned int vp8_get_mb_ss_mmx(const short *);
|
||||
unsigned int vp8_get_mb_ss_sse2(const short *);
|
||||
RTCD_EXTERN unsigned int (*vp8_get_mb_ss)(const short *);
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -218,11 +209,6 @@ int vp8_mbuverror_mmx(struct macroblock *mb);
|
|||
int vp8_mbuverror_xmm(struct macroblock *mb);
|
||||
RTCD_EXTERN int (*vp8_mbuverror)(struct macroblock *mb);
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_mse16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
void vp8_plane_add_noise_c(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_mmx(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_wmt(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
|
@ -241,94 +227,6 @@ 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 *);
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad4x4)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad4x4x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
|
||||
|
@ -378,11 +276,6 @@ void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, in
|
|||
void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_sub_pixel_mse16x16)(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -429,31 +322,6 @@ void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, uns
|
|||
void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
RTCD_EXTERN void (*vp8_temporal_filter_apply)(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance4x4)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -540,11 +408,6 @@ static void setup_rtcd_internal(void)
|
|||
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_get4x4sse_cs = vp8_get4x4sse_cs_c;
|
||||
if (flags & HAS_MMX) vp8_get4x4sse_cs = vp8_get4x4sse_cs_mmx;
|
||||
vp8_get_mb_ss = vp8_get_mb_ss_c;
|
||||
if (flags & HAS_MMX) vp8_get_mb_ss = vp8_get_mb_ss_mmx;
|
||||
if (flags & HAS_SSE2) vp8_get_mb_ss = vp8_get_mb_ss_sse2;
|
||||
vp8_loop_filter_bh = vp8_loop_filter_bh_c;
|
||||
if (flags & HAS_MMX) vp8_loop_filter_bh = vp8_loop_filter_bh_mmx;
|
||||
if (flags & HAS_SSE2) vp8_loop_filter_bh = vp8_loop_filter_bh_sse2;
|
||||
|
@ -580,9 +443,6 @@ static void setup_rtcd_internal(void)
|
|||
vp8_mbuverror = vp8_mbuverror_c;
|
||||
if (flags & HAS_MMX) vp8_mbuverror = vp8_mbuverror_mmx;
|
||||
if (flags & HAS_SSE2) vp8_mbuverror = vp8_mbuverror_xmm;
|
||||
vp8_mse16x16 = vp8_mse16x16_c;
|
||||
if (flags & HAS_MMX) vp8_mse16x16 = vp8_mse16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_mse16x16 = vp8_mse16x16_wmt;
|
||||
vp8_plane_add_noise = vp8_plane_add_noise_c;
|
||||
if (flags & HAS_MMX) vp8_plane_add_noise = vp8_plane_add_noise_mmx;
|
||||
if (flags & HAS_SSE2) vp8_plane_add_noise = vp8_plane_add_noise_wmt;
|
||||
|
@ -593,54 +453,6 @@ static void setup_rtcd_internal(void)
|
|||
vp8_regular_quantize_b = vp8_regular_quantize_b_c;
|
||||
if (flags & HAS_SSE2) 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_sad16x16 = vp8_sad16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sad16x16 = vp8_sad16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad16x16 = vp8_sad16x16_wmt;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16 = vp8_sad16x16_sse3;
|
||||
vp8_sad16x16x3 = vp8_sad16x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x3 = vp8_sad16x16x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x16x3 = vp8_sad16x16x3_ssse3;
|
||||
vp8_sad16x16x4d = vp8_sad16x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x4d = vp8_sad16x16x4d_sse3;
|
||||
vp8_sad16x16x8 = vp8_sad16x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x16x8 = vp8_sad16x16x8_sse4;
|
||||
vp8_sad16x8 = vp8_sad16x8_c;
|
||||
if (flags & HAS_MMX) vp8_sad16x8 = vp8_sad16x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad16x8 = vp8_sad16x8_wmt;
|
||||
vp8_sad16x8x3 = vp8_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x3 = vp8_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x8x3 = vp8_sad16x8x3_ssse3;
|
||||
vp8_sad16x8x4d = vp8_sad16x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x4d = vp8_sad16x8x4d_sse3;
|
||||
vp8_sad16x8x8 = vp8_sad16x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x8x8 = vp8_sad16x8x8_sse4;
|
||||
vp8_sad4x4 = vp8_sad4x4_c;
|
||||
if (flags & HAS_MMX) vp8_sad4x4 = vp8_sad4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad4x4 = vp8_sad4x4_wmt;
|
||||
vp8_sad4x4x3 = vp8_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x3 = vp8_sad4x4x3_sse3;
|
||||
vp8_sad4x4x4d = vp8_sad4x4x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x4d = vp8_sad4x4x4d_sse3;
|
||||
vp8_sad4x4x8 = vp8_sad4x4x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad4x4x8 = vp8_sad4x4x8_sse4;
|
||||
vp8_sad8x16 = vp8_sad8x16_c;
|
||||
if (flags & HAS_MMX) vp8_sad8x16 = vp8_sad8x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad8x16 = vp8_sad8x16_wmt;
|
||||
vp8_sad8x16x3 = vp8_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x3 = vp8_sad8x16x3_sse3;
|
||||
vp8_sad8x16x4d = vp8_sad8x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x4d = vp8_sad8x16x4d_sse3;
|
||||
vp8_sad8x16x8 = vp8_sad8x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x16x8 = vp8_sad8x16x8_sse4;
|
||||
vp8_sad8x8 = vp8_sad8x8_c;
|
||||
if (flags & HAS_MMX) vp8_sad8x8 = vp8_sad8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad8x8 = vp8_sad8x8_wmt;
|
||||
vp8_sad8x8x3 = vp8_sad8x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x3 = vp8_sad8x8x3_sse3;
|
||||
vp8_sad8x8x4d = vp8_sad8x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x4d = vp8_sad8x8x4d_sse3;
|
||||
vp8_sad8x8x8 = vp8_sad8x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x8x8 = vp8_sad8x8x8_sse4;
|
||||
vp8_short_fdct4x4 = vp8_short_fdct4x4_c;
|
||||
if (flags & HAS_MMX) vp8_short_fdct4x4 = vp8_short_fdct4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_short_fdct4x4 = vp8_short_fdct4x4_sse2;
|
||||
|
@ -669,9 +481,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_MMX) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
|
||||
if (flags & HAS_SSSE3) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
|
||||
vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_wmt;
|
||||
vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_wmt;
|
||||
|
@ -700,21 +509,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) vp8_subtract_mby = vp8_subtract_mby_sse2;
|
||||
vp8_temporal_filter_apply = vp8_temporal_filter_apply_c;
|
||||
if (flags & HAS_SSE2) vp8_temporal_filter_apply = vp8_temporal_filter_apply_sse2;
|
||||
vp8_variance16x16 = vp8_variance16x16_c;
|
||||
if (flags & HAS_MMX) vp8_variance16x16 = vp8_variance16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance16x16 = vp8_variance16x16_wmt;
|
||||
vp8_variance16x8 = vp8_variance16x8_c;
|
||||
if (flags & HAS_MMX) vp8_variance16x8 = vp8_variance16x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance16x8 = vp8_variance16x8_wmt;
|
||||
vp8_variance4x4 = vp8_variance4x4_c;
|
||||
if (flags & HAS_MMX) vp8_variance4x4 = vp8_variance4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance4x4 = vp8_variance4x4_wmt;
|
||||
vp8_variance8x16 = vp8_variance8x16_c;
|
||||
if (flags & HAS_MMX) vp8_variance8x16 = vp8_variance8x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance8x16 = vp8_variance8x16_wmt;
|
||||
vp8_variance8x8 = vp8_variance8x8_c;
|
||||
if (flags & HAS_MMX) vp8_variance8x8 = vp8_variance8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance8x8 = vp8_variance8x8_wmt;
|
||||
vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_c;
|
||||
if (flags & HAS_MMX) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_wmt;
|
||||
|
|
|
@ -74,10 +74,10 @@ void vp8_clear_system_state_c();
|
|||
void vpx_reset_mmx_state();
|
||||
RTCD_EXTERN void (*vp8_clear_system_state)();
|
||||
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
|
@ -147,15 +147,6 @@ int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *
|
|||
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);
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
RTCD_EXTERN unsigned int (*vp8_get4x4sse_cs)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
unsigned int vp8_get_mb_ss_mmx(const short *);
|
||||
unsigned int vp8_get_mb_ss_sse2(const short *);
|
||||
RTCD_EXTERN unsigned int (*vp8_get_mb_ss)(const short *);
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -218,11 +209,6 @@ int vp8_mbuverror_mmx(struct macroblock *mb);
|
|||
int vp8_mbuverror_xmm(struct macroblock *mb);
|
||||
RTCD_EXTERN int (*vp8_mbuverror)(struct macroblock *mb);
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_mse16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
void vp8_plane_add_noise_c(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_mmx(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_wmt(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
|
@ -241,94 +227,6 @@ 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 *);
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad4x4)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad4x4x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
|
||||
|
@ -378,11 +276,6 @@ void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, in
|
|||
void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_sub_pixel_mse16x16)(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -429,31 +322,6 @@ void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, uns
|
|||
void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
RTCD_EXTERN void (*vp8_temporal_filter_apply)(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance16x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance4x4)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x16)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
RTCD_EXTERN unsigned int (*vp8_variance8x8)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -540,11 +408,6 @@ static void setup_rtcd_internal(void)
|
|||
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_get4x4sse_cs = vp8_get4x4sse_cs_c;
|
||||
if (flags & HAS_MMX) vp8_get4x4sse_cs = vp8_get4x4sse_cs_mmx;
|
||||
vp8_get_mb_ss = vp8_get_mb_ss_c;
|
||||
if (flags & HAS_MMX) vp8_get_mb_ss = vp8_get_mb_ss_mmx;
|
||||
if (flags & HAS_SSE2) vp8_get_mb_ss = vp8_get_mb_ss_sse2;
|
||||
vp8_loop_filter_bh = vp8_loop_filter_bh_c;
|
||||
if (flags & HAS_MMX) vp8_loop_filter_bh = vp8_loop_filter_bh_mmx;
|
||||
if (flags & HAS_SSE2) vp8_loop_filter_bh = vp8_loop_filter_bh_sse2;
|
||||
|
@ -580,9 +443,6 @@ static void setup_rtcd_internal(void)
|
|||
vp8_mbuverror = vp8_mbuverror_c;
|
||||
if (flags & HAS_MMX) vp8_mbuverror = vp8_mbuverror_mmx;
|
||||
if (flags & HAS_SSE2) vp8_mbuverror = vp8_mbuverror_xmm;
|
||||
vp8_mse16x16 = vp8_mse16x16_c;
|
||||
if (flags & HAS_MMX) vp8_mse16x16 = vp8_mse16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_mse16x16 = vp8_mse16x16_wmt;
|
||||
vp8_plane_add_noise = vp8_plane_add_noise_c;
|
||||
if (flags & HAS_MMX) vp8_plane_add_noise = vp8_plane_add_noise_mmx;
|
||||
if (flags & HAS_SSE2) vp8_plane_add_noise = vp8_plane_add_noise_wmt;
|
||||
|
@ -593,54 +453,6 @@ static void setup_rtcd_internal(void)
|
|||
vp8_regular_quantize_b = vp8_regular_quantize_b_c;
|
||||
if (flags & HAS_SSE2) 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_sad16x16 = vp8_sad16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sad16x16 = vp8_sad16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad16x16 = vp8_sad16x16_wmt;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16 = vp8_sad16x16_sse3;
|
||||
vp8_sad16x16x3 = vp8_sad16x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x3 = vp8_sad16x16x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x16x3 = vp8_sad16x16x3_ssse3;
|
||||
vp8_sad16x16x4d = vp8_sad16x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x4d = vp8_sad16x16x4d_sse3;
|
||||
vp8_sad16x16x8 = vp8_sad16x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x16x8 = vp8_sad16x16x8_sse4;
|
||||
vp8_sad16x8 = vp8_sad16x8_c;
|
||||
if (flags & HAS_MMX) vp8_sad16x8 = vp8_sad16x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad16x8 = vp8_sad16x8_wmt;
|
||||
vp8_sad16x8x3 = vp8_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x3 = vp8_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x8x3 = vp8_sad16x8x3_ssse3;
|
||||
vp8_sad16x8x4d = vp8_sad16x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x4d = vp8_sad16x8x4d_sse3;
|
||||
vp8_sad16x8x8 = vp8_sad16x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x8x8 = vp8_sad16x8x8_sse4;
|
||||
vp8_sad4x4 = vp8_sad4x4_c;
|
||||
if (flags & HAS_MMX) vp8_sad4x4 = vp8_sad4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad4x4 = vp8_sad4x4_wmt;
|
||||
vp8_sad4x4x3 = vp8_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x3 = vp8_sad4x4x3_sse3;
|
||||
vp8_sad4x4x4d = vp8_sad4x4x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x4d = vp8_sad4x4x4d_sse3;
|
||||
vp8_sad4x4x8 = vp8_sad4x4x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad4x4x8 = vp8_sad4x4x8_sse4;
|
||||
vp8_sad8x16 = vp8_sad8x16_c;
|
||||
if (flags & HAS_MMX) vp8_sad8x16 = vp8_sad8x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad8x16 = vp8_sad8x16_wmt;
|
||||
vp8_sad8x16x3 = vp8_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x3 = vp8_sad8x16x3_sse3;
|
||||
vp8_sad8x16x4d = vp8_sad8x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x4d = vp8_sad8x16x4d_sse3;
|
||||
vp8_sad8x16x8 = vp8_sad8x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x16x8 = vp8_sad8x16x8_sse4;
|
||||
vp8_sad8x8 = vp8_sad8x8_c;
|
||||
if (flags & HAS_MMX) vp8_sad8x8 = vp8_sad8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sad8x8 = vp8_sad8x8_wmt;
|
||||
vp8_sad8x8x3 = vp8_sad8x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x3 = vp8_sad8x8x3_sse3;
|
||||
vp8_sad8x8x4d = vp8_sad8x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x4d = vp8_sad8x8x4d_sse3;
|
||||
vp8_sad8x8x8 = vp8_sad8x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x8x8 = vp8_sad8x8x8_sse4;
|
||||
vp8_short_fdct4x4 = vp8_short_fdct4x4_c;
|
||||
if (flags & HAS_MMX) vp8_short_fdct4x4 = vp8_short_fdct4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_short_fdct4x4 = vp8_short_fdct4x4_sse2;
|
||||
|
@ -669,9 +481,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_MMX) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
|
||||
if (flags & HAS_SSSE3) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
|
||||
vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sub_pixel_mse16x16 = vp8_sub_pixel_mse16x16_wmt;
|
||||
vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_c;
|
||||
if (flags & HAS_MMX) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_wmt;
|
||||
|
@ -700,21 +509,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) vp8_subtract_mby = vp8_subtract_mby_sse2;
|
||||
vp8_temporal_filter_apply = vp8_temporal_filter_apply_c;
|
||||
if (flags & HAS_SSE2) vp8_temporal_filter_apply = vp8_temporal_filter_apply_sse2;
|
||||
vp8_variance16x16 = vp8_variance16x16_c;
|
||||
if (flags & HAS_MMX) vp8_variance16x16 = vp8_variance16x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance16x16 = vp8_variance16x16_wmt;
|
||||
vp8_variance16x8 = vp8_variance16x8_c;
|
||||
if (flags & HAS_MMX) vp8_variance16x8 = vp8_variance16x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance16x8 = vp8_variance16x8_wmt;
|
||||
vp8_variance4x4 = vp8_variance4x4_c;
|
||||
if (flags & HAS_MMX) vp8_variance4x4 = vp8_variance4x4_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance4x4 = vp8_variance4x4_wmt;
|
||||
vp8_variance8x16 = vp8_variance8x16_c;
|
||||
if (flags & HAS_MMX) vp8_variance8x16 = vp8_variance8x16_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance8x16 = vp8_variance8x16_wmt;
|
||||
vp8_variance8x8 = vp8_variance8x8_c;
|
||||
if (flags & HAS_MMX) vp8_variance8x8 = vp8_variance8x8_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance8x8 = vp8_variance8x8_wmt;
|
||||
vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_c;
|
||||
if (flags & HAS_MMX) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_mmx;
|
||||
if (flags & HAS_SSE2) vp8_variance_halfpixvar16x16_h = vp8_variance_halfpixvar16x16_h_wmt;
|
||||
|
|
|
@ -74,10 +74,10 @@ void vp8_clear_system_state_c();
|
|||
void vpx_reset_mmx_state();
|
||||
#define vp8_clear_system_state vpx_reset_mmx_state
|
||||
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
|
@ -147,15 +147,6 @@ int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *
|
|||
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);
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
#define vp8_get4x4sse_cs vp8_get4x4sse_cs_mmx
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
unsigned int vp8_get_mb_ss_mmx(const short *);
|
||||
unsigned int vp8_get_mb_ss_sse2(const short *);
|
||||
#define vp8_get_mb_ss vp8_get_mb_ss_sse2
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -218,11 +209,6 @@ int vp8_mbuverror_mmx(struct macroblock *mb);
|
|||
int vp8_mbuverror_xmm(struct macroblock *mb);
|
||||
#define vp8_mbuverror vp8_mbuverror_xmm
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_mse16x16 vp8_mse16x16_wmt
|
||||
|
||||
void vp8_plane_add_noise_c(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_mmx(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_wmt(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
|
@ -241,94 +227,6 @@ 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 *);
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad16x8 vp8_sad16x8_wmt
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad4x4 vp8_sad4x4_wmt
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad4x4x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x16 vp8_sad8x16_wmt
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x8 vp8_sad8x8_wmt
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
|
||||
|
@ -378,11 +276,6 @@ void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, in
|
|||
void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
#define vp8_sub_pixel_mse16x16 vp8_sub_pixel_mse16x16_wmt
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -429,31 +322,6 @@ void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, uns
|
|||
void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
#define vp8_temporal_filter_apply vp8_temporal_filter_apply_sse2
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x16 vp8_variance16x16_wmt
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x8 vp8_variance16x8_wmt
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance4x4 vp8_variance4x4_wmt
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x16 vp8_variance8x16_wmt
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x8 vp8_variance8x8_wmt
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -500,40 +368,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE3) vp8_refining_search_sad = vp8_refining_search_sadx4;
|
||||
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_sad16x16 = vp8_sad16x16_wmt;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16 = vp8_sad16x16_sse3;
|
||||
vp8_sad16x16x3 = vp8_sad16x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x3 = vp8_sad16x16x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x16x3 = vp8_sad16x16x3_ssse3;
|
||||
vp8_sad16x16x4d = vp8_sad16x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x4d = vp8_sad16x16x4d_sse3;
|
||||
vp8_sad16x16x8 = vp8_sad16x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x16x8 = vp8_sad16x16x8_sse4;
|
||||
vp8_sad16x8x3 = vp8_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x3 = vp8_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x8x3 = vp8_sad16x8x3_ssse3;
|
||||
vp8_sad16x8x4d = vp8_sad16x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x4d = vp8_sad16x8x4d_sse3;
|
||||
vp8_sad16x8x8 = vp8_sad16x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x8x8 = vp8_sad16x8x8_sse4;
|
||||
vp8_sad4x4x3 = vp8_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x3 = vp8_sad4x4x3_sse3;
|
||||
vp8_sad4x4x4d = vp8_sad4x4x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x4d = vp8_sad4x4x4d_sse3;
|
||||
vp8_sad4x4x8 = vp8_sad4x4x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad4x4x8 = vp8_sad4x4x8_sse4;
|
||||
vp8_sad8x16x3 = vp8_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x3 = vp8_sad8x16x3_sse3;
|
||||
vp8_sad8x16x4d = vp8_sad8x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x4d = vp8_sad8x16x4d_sse3;
|
||||
vp8_sad8x16x8 = vp8_sad8x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x16x8 = vp8_sad8x16x8_sse4;
|
||||
vp8_sad8x8x3 = vp8_sad8x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x3 = vp8_sad8x8x3_sse3;
|
||||
vp8_sad8x8x4d = vp8_sad8x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x4d = vp8_sad8x8x4d_sse3;
|
||||
vp8_sad8x8x8 = vp8_sad8x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x8x8 = vp8_sad8x8x8_sse4;
|
||||
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;
|
||||
|
|
|
@ -74,10 +74,10 @@ void vp8_clear_system_state_c();
|
|||
void vpx_reset_mmx_state();
|
||||
#define vp8_clear_system_state vpx_reset_mmx_state
|
||||
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
|
@ -147,15 +147,6 @@ int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *
|
|||
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);
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
#define vp8_get4x4sse_cs vp8_get4x4sse_cs_mmx
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
unsigned int vp8_get_mb_ss_mmx(const short *);
|
||||
unsigned int vp8_get_mb_ss_sse2(const short *);
|
||||
#define vp8_get_mb_ss vp8_get_mb_ss_sse2
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -218,11 +209,6 @@ int vp8_mbuverror_mmx(struct macroblock *mb);
|
|||
int vp8_mbuverror_xmm(struct macroblock *mb);
|
||||
#define vp8_mbuverror vp8_mbuverror_xmm
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_mse16x16 vp8_mse16x16_wmt
|
||||
|
||||
void vp8_plane_add_noise_c(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_mmx(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_wmt(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
|
@ -241,94 +227,6 @@ 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 *);
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad16x8 vp8_sad16x8_wmt
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad4x4 vp8_sad4x4_wmt
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad4x4x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x16 vp8_sad8x16_wmt
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x8 vp8_sad8x8_wmt
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
|
||||
|
@ -378,11 +276,6 @@ void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, in
|
|||
void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
#define vp8_sub_pixel_mse16x16 vp8_sub_pixel_mse16x16_wmt
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -429,31 +322,6 @@ void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, uns
|
|||
void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
#define vp8_temporal_filter_apply vp8_temporal_filter_apply_sse2
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x16 vp8_variance16x16_wmt
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x8 vp8_variance16x8_wmt
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance4x4 vp8_variance4x4_wmt
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x16 vp8_variance8x16_wmt
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x8 vp8_variance8x8_wmt
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -500,40 +368,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE3) vp8_refining_search_sad = vp8_refining_search_sadx4;
|
||||
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_sad16x16 = vp8_sad16x16_wmt;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16 = vp8_sad16x16_sse3;
|
||||
vp8_sad16x16x3 = vp8_sad16x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x3 = vp8_sad16x16x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x16x3 = vp8_sad16x16x3_ssse3;
|
||||
vp8_sad16x16x4d = vp8_sad16x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x4d = vp8_sad16x16x4d_sse3;
|
||||
vp8_sad16x16x8 = vp8_sad16x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x16x8 = vp8_sad16x16x8_sse4;
|
||||
vp8_sad16x8x3 = vp8_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x3 = vp8_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x8x3 = vp8_sad16x8x3_ssse3;
|
||||
vp8_sad16x8x4d = vp8_sad16x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x4d = vp8_sad16x8x4d_sse3;
|
||||
vp8_sad16x8x8 = vp8_sad16x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x8x8 = vp8_sad16x8x8_sse4;
|
||||
vp8_sad4x4x3 = vp8_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x3 = vp8_sad4x4x3_sse3;
|
||||
vp8_sad4x4x4d = vp8_sad4x4x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x4d = vp8_sad4x4x4d_sse3;
|
||||
vp8_sad4x4x8 = vp8_sad4x4x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad4x4x8 = vp8_sad4x4x8_sse4;
|
||||
vp8_sad8x16x3 = vp8_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x3 = vp8_sad8x16x3_sse3;
|
||||
vp8_sad8x16x4d = vp8_sad8x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x4d = vp8_sad8x16x4d_sse3;
|
||||
vp8_sad8x16x8 = vp8_sad8x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x16x8 = vp8_sad8x16x8_sse4;
|
||||
vp8_sad8x8x3 = vp8_sad8x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x3 = vp8_sad8x8x3_sse3;
|
||||
vp8_sad8x8x4d = vp8_sad8x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x4d = vp8_sad8x8x4d_sse3;
|
||||
vp8_sad8x8x8 = vp8_sad8x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x8x8 = vp8_sad8x8x8_sse4;
|
||||
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;
|
||||
|
|
|
@ -74,10 +74,10 @@ void vp8_clear_system_state_c();
|
|||
void vpx_reset_mmx_state();
|
||||
#define vp8_clear_system_state vpx_reset_mmx_state
|
||||
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
|
@ -147,15 +147,6 @@ int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *
|
|||
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);
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
#define vp8_get4x4sse_cs vp8_get4x4sse_cs_mmx
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
unsigned int vp8_get_mb_ss_mmx(const short *);
|
||||
unsigned int vp8_get_mb_ss_sse2(const short *);
|
||||
#define vp8_get_mb_ss vp8_get_mb_ss_sse2
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -218,11 +209,6 @@ int vp8_mbuverror_mmx(struct macroblock *mb);
|
|||
int vp8_mbuverror_xmm(struct macroblock *mb);
|
||||
#define vp8_mbuverror vp8_mbuverror_xmm
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_mse16x16 vp8_mse16x16_wmt
|
||||
|
||||
void vp8_plane_add_noise_c(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_mmx(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_wmt(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
|
@ -241,94 +227,6 @@ 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 *);
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad16x8 vp8_sad16x8_wmt
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad4x4 vp8_sad4x4_wmt
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad4x4x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x16 vp8_sad8x16_wmt
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x8 vp8_sad8x8_wmt
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
|
||||
|
@ -378,11 +276,6 @@ void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, in
|
|||
void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
#define vp8_sub_pixel_mse16x16 vp8_sub_pixel_mse16x16_wmt
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -429,31 +322,6 @@ void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, uns
|
|||
void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
#define vp8_temporal_filter_apply vp8_temporal_filter_apply_sse2
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x16 vp8_variance16x16_wmt
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x8 vp8_variance16x8_wmt
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance4x4 vp8_variance4x4_wmt
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x16 vp8_variance8x16_wmt
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x8 vp8_variance8x8_wmt
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -500,40 +368,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE3) vp8_refining_search_sad = vp8_refining_search_sadx4;
|
||||
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_sad16x16 = vp8_sad16x16_wmt;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16 = vp8_sad16x16_sse3;
|
||||
vp8_sad16x16x3 = vp8_sad16x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x3 = vp8_sad16x16x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x16x3 = vp8_sad16x16x3_ssse3;
|
||||
vp8_sad16x16x4d = vp8_sad16x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x4d = vp8_sad16x16x4d_sse3;
|
||||
vp8_sad16x16x8 = vp8_sad16x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x16x8 = vp8_sad16x16x8_sse4;
|
||||
vp8_sad16x8x3 = vp8_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x3 = vp8_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x8x3 = vp8_sad16x8x3_ssse3;
|
||||
vp8_sad16x8x4d = vp8_sad16x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x4d = vp8_sad16x8x4d_sse3;
|
||||
vp8_sad16x8x8 = vp8_sad16x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x8x8 = vp8_sad16x8x8_sse4;
|
||||
vp8_sad4x4x3 = vp8_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x3 = vp8_sad4x4x3_sse3;
|
||||
vp8_sad4x4x4d = vp8_sad4x4x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x4d = vp8_sad4x4x4d_sse3;
|
||||
vp8_sad4x4x8 = vp8_sad4x4x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad4x4x8 = vp8_sad4x4x8_sse4;
|
||||
vp8_sad8x16x3 = vp8_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x3 = vp8_sad8x16x3_sse3;
|
||||
vp8_sad8x16x4d = vp8_sad8x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x4d = vp8_sad8x16x4d_sse3;
|
||||
vp8_sad8x16x8 = vp8_sad8x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x16x8 = vp8_sad8x16x8_sse4;
|
||||
vp8_sad8x8x3 = vp8_sad8x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x3 = vp8_sad8x8x3_sse3;
|
||||
vp8_sad8x8x4d = vp8_sad8x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x4d = vp8_sad8x8x4d_sse3;
|
||||
vp8_sad8x8x8 = vp8_sad8x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x8x8 = vp8_sad8x8x8_sse4;
|
||||
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;
|
||||
|
|
|
@ -74,10 +74,10 @@ void vp8_clear_system_state_c();
|
|||
void vpx_reset_mmx_state();
|
||||
#define vp8_clear_system_state vpx_reset_mmx_state
|
||||
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n);
|
||||
void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
void vp8_copy_mem16x16_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
|
@ -147,15 +147,6 @@ int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *
|
|||
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);
|
||||
|
||||
unsigned int vp8_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
unsigned int vp8_get4x4sse_cs_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
#define vp8_get4x4sse_cs vp8_get4x4sse_cs_mmx
|
||||
|
||||
unsigned int vp8_get_mb_ss_c(const short *);
|
||||
unsigned int vp8_get_mb_ss_mmx(const short *);
|
||||
unsigned int vp8_get_mb_ss_sse2(const short *);
|
||||
#define vp8_get_mb_ss vp8_get_mb_ss_sse2
|
||||
|
||||
void vp8_intra4x4_predict_c(unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left);
|
||||
#define vp8_intra4x4_predict vp8_intra4x4_predict_c
|
||||
|
||||
|
@ -218,11 +209,6 @@ int vp8_mbuverror_mmx(struct macroblock *mb);
|
|||
int vp8_mbuverror_xmm(struct macroblock *mb);
|
||||
#define vp8_mbuverror vp8_mbuverror_xmm
|
||||
|
||||
unsigned int vp8_mse16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_mse16x16 vp8_mse16x16_wmt
|
||||
|
||||
void vp8_plane_add_noise_c(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_mmx(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
void vp8_plane_add_noise_wmt(unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch);
|
||||
|
@ -241,94 +227,6 @@ 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 *);
|
||||
|
||||
unsigned int vp8_sad16x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x16_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
RTCD_EXTERN unsigned int (*vp8_sad16x16)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
|
||||
void vp8_sad16x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad16x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad16x8 vp8_sad16x8_wmt
|
||||
|
||||
void vp8_sad16x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x3_ssse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad16x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad16x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad16x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad16x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad4x4_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad4x4_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad4x4 vp8_sad4x4_wmt
|
||||
|
||||
void vp8_sad4x4x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad4x4x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad4x4x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad4x4x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad4x4x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x16_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x16_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x16 vp8_sad8x16_wmt
|
||||
|
||||
void vp8_sad8x16x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x16x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x16x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x16x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x16x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
unsigned int vp8_sad8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_mmx(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
unsigned int vp8_sad8x8_wmt(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad);
|
||||
#define vp8_sad8x8 vp8_sad8x8_wmt
|
||||
|
||||
void vp8_sad8x8x3_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x3_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x3)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x4d_c(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
void vp8_sad8x8x4d_sse3(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x4d)(const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array);
|
||||
|
||||
void vp8_sad8x8x8_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
void vp8_sad8x8x8_sse4(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
RTCD_EXTERN void (*vp8_sad8x8x8)(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array);
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch);
|
||||
void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
|
||||
|
@ -378,11 +276,6 @@ void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, in
|
|||
void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
|
||||
unsigned int vp8_sub_pixel_mse16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_mse16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
#define vp8_sub_pixel_mse16x16 vp8_sub_pixel_mse16x16_wmt
|
||||
|
||||
unsigned int vp8_sub_pixel_variance16x16_c(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
unsigned int vp8_sub_pixel_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse);
|
||||
|
@ -429,31 +322,6 @@ void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, uns
|
|||
void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
#define vp8_temporal_filter_apply vp8_temporal_filter_apply_sse2
|
||||
|
||||
unsigned int vp8_variance16x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x16 vp8_variance16x16_wmt
|
||||
|
||||
unsigned int vp8_variance16x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance16x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance16x8 vp8_variance16x8_wmt
|
||||
|
||||
unsigned int vp8_variance4x4_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance4x4_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance4x4 vp8_variance4x4_wmt
|
||||
|
||||
unsigned int vp8_variance8x16_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x16_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x16 vp8_variance8x16_wmt
|
||||
|
||||
unsigned int vp8_variance8x8_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance8x8_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vp8_variance8x8 vp8_variance8x8_wmt
|
||||
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_mmx(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
unsigned int vp8_variance_halfpixvar16x16_h_wmt(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
|
@ -500,40 +368,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE3) vp8_refining_search_sad = vp8_refining_search_sadx4;
|
||||
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_sad16x16 = vp8_sad16x16_wmt;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16 = vp8_sad16x16_sse3;
|
||||
vp8_sad16x16x3 = vp8_sad16x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x3 = vp8_sad16x16x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x16x3 = vp8_sad16x16x3_ssse3;
|
||||
vp8_sad16x16x4d = vp8_sad16x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x16x4d = vp8_sad16x16x4d_sse3;
|
||||
vp8_sad16x16x8 = vp8_sad16x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x16x8 = vp8_sad16x16x8_sse4;
|
||||
vp8_sad16x8x3 = vp8_sad16x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x3 = vp8_sad16x8x3_sse3;
|
||||
if (flags & HAS_SSSE3) vp8_sad16x8x3 = vp8_sad16x8x3_ssse3;
|
||||
vp8_sad16x8x4d = vp8_sad16x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad16x8x4d = vp8_sad16x8x4d_sse3;
|
||||
vp8_sad16x8x8 = vp8_sad16x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad16x8x8 = vp8_sad16x8x8_sse4;
|
||||
vp8_sad4x4x3 = vp8_sad4x4x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x3 = vp8_sad4x4x3_sse3;
|
||||
vp8_sad4x4x4d = vp8_sad4x4x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad4x4x4d = vp8_sad4x4x4d_sse3;
|
||||
vp8_sad4x4x8 = vp8_sad4x4x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad4x4x8 = vp8_sad4x4x8_sse4;
|
||||
vp8_sad8x16x3 = vp8_sad8x16x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x3 = vp8_sad8x16x3_sse3;
|
||||
vp8_sad8x16x4d = vp8_sad8x16x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x16x4d = vp8_sad8x16x4d_sse3;
|
||||
vp8_sad8x16x8 = vp8_sad8x16x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x16x8 = vp8_sad8x16x8_sse4;
|
||||
vp8_sad8x8x3 = vp8_sad8x8x3_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x3 = vp8_sad8x8x3_sse3;
|
||||
vp8_sad8x8x4d = vp8_sad8x8x4d_c;
|
||||
if (flags & HAS_SSE3) vp8_sad8x8x4d = vp8_sad8x8x4d_sse3;
|
||||
vp8_sad8x8x8 = vp8_sad8x8x8_c;
|
||||
if (flags & HAS_SSE4_1) vp8_sad8x8x8 = vp8_sad8x8x8_sse4;
|
||||
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;
|
||||
|
|
|
@ -20,7 +20,7 @@ void vp9_convolve8_neon(const uint8_t *src, ptrdiff_t src_stride,
|
|||
/* Given our constraints: w <= 64, h <= 64, taps == 8 we can reduce the
|
||||
* maximum buffer size to 64 * 64 + 7 (+ 1 to make it divisible by 4).
|
||||
*/
|
||||
DECLARE_ALIGNED_ARRAY(8, uint8_t, temp, 64 * 72);
|
||||
DECLARE_ALIGNED(8, uint8_t, temp[64 * 72]);
|
||||
|
||||
// Account for the vertical phase needing 3 lines prior and 4 lines post
|
||||
int intermediate_height = h + 7;
|
||||
|
@ -56,7 +56,7 @@ void vp9_convolve8_avg_neon(const uint8_t *src, ptrdiff_t src_stride,
|
|||
const int16_t *filter_x, int x_step_q4,
|
||||
const int16_t *filter_y, int y_step_q4,
|
||||
int w, int h) {
|
||||
DECLARE_ALIGNED_ARRAY(8, uint8_t, temp, 64 * 72);
|
||||
DECLARE_ALIGNED(8, uint8_t, temp[64 * 72]);
|
||||
int intermediate_height = h + 7;
|
||||
|
||||
if (x_step_q4 != 16 || y_step_q4 != 16) {
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
*/
|
||||
|
||||
#include <arm_neon.h>
|
||||
|
||||
#include "vpx_ports/mem.h"
|
||||
#include "vp9/common/vp9_idct.h"
|
||||
|
||||
void vp9_idct16x16_1_add_neon(
|
||||
|
|
|
@ -9,10 +9,12 @@
|
|||
*/
|
||||
|
||||
#include <arm_neon.h>
|
||||
#include "vp9/common/vp9_idct.h"
|
||||
|
||||
#include "./vpx_config.h"
|
||||
|
||||
#include "vpx_ports/mem.h"
|
||||
#include "vp9/common/vp9_idct.h"
|
||||
|
||||
static INLINE void LD_16x8(
|
||||
uint8_t *d,
|
||||
int d_stride,
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
*/
|
||||
|
||||
#include <arm_neon.h>
|
||||
|
||||
#include "vpx_ports/mem.h"
|
||||
#include "vp9/common/vp9_idct.h"
|
||||
|
||||
void vp9_idct4x4_1_add_neon(
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
*/
|
||||
|
||||
#include <arm_neon.h>
|
||||
|
||||
#include "vpx_ports/mem.h"
|
||||
#include "vp9/common/vp9_idct.h"
|
||||
|
||||
void vp9_idct8x8_1_add_neon(
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -298,8 +298,7 @@ loop_h
|
|||
|vp9_tm_predictor_4x4_neon| PROC
|
||||
; Load ytop_left = above[-1];
|
||||
sub r12, r2, #1
|
||||
ldrb r12, [r12]
|
||||
vdup.u8 d0, r12
|
||||
vld1.u8 {d0[]}, [r12]
|
||||
|
||||
; Load above 4 pixels
|
||||
vld1.32 {d2[0]}, [r2]
|
||||
|
@ -309,10 +308,10 @@ loop_h
|
|||
|
||||
; Load left row by row and compute left + (above - ytop_left)
|
||||
; 1st row and 2nd row
|
||||
ldrb r12, [r3], #1
|
||||
ldrb r2, [r3], #1
|
||||
vdup.u16 q1, r12
|
||||
vdup.u16 q2, r2
|
||||
vld1.u8 {d2[]}, [r3]!
|
||||
vld1.u8 {d4[]}, [r3]!
|
||||
vmovl.u8 q1, d2
|
||||
vmovl.u8 q2, d4
|
||||
vadd.s16 q1, q1, q3
|
||||
vadd.s16 q2, q2, q3
|
||||
vqmovun.s16 d0, q1
|
||||
|
@ -321,10 +320,10 @@ loop_h
|
|||
vst1.32 {d1[0]}, [r0], r1
|
||||
|
||||
; 3rd row and 4th row
|
||||
ldrb r12, [r3], #1
|
||||
ldrb r2, [r3], #1
|
||||
vdup.u16 q1, r12
|
||||
vdup.u16 q2, r2
|
||||
vld1.u8 {d2[]}, [r3]!
|
||||
vld1.u8 {d4[]}, [r3]
|
||||
vmovl.u8 q1, d2
|
||||
vmovl.u8 q2, d4
|
||||
vadd.s16 q1, q1, q3
|
||||
vadd.s16 q2, q2, q3
|
||||
vqmovun.s16 d0, q1
|
||||
|
@ -345,8 +344,7 @@ loop_h
|
|||
|vp9_tm_predictor_8x8_neon| PROC
|
||||
; Load ytop_left = above[-1];
|
||||
sub r12, r2, #1
|
||||
ldrb r12, [r12]
|
||||
vdup.u8 d0, r12
|
||||
vld1.8 {d0[]}, [r12]
|
||||
|
||||
; preload 8 left
|
||||
vld1.8 {d30}, [r3]
|
||||
|
@ -418,8 +416,7 @@ loop_h
|
|||
|vp9_tm_predictor_16x16_neon| PROC
|
||||
; Load ytop_left = above[-1];
|
||||
sub r12, r2, #1
|
||||
ldrb r12, [r12]
|
||||
vdup.u8 q0, r12
|
||||
vld1.8 {d0[]}, [r12]
|
||||
|
||||
; Load above 8 pixels
|
||||
vld1.8 {q1}, [r2]
|
||||
|
@ -429,7 +426,7 @@ loop_h
|
|||
|
||||
; Compute above - ytop_left
|
||||
vsubl.u8 q2, d2, d0
|
||||
vsubl.u8 q3, d3, d1
|
||||
vsubl.u8 q3, d3, d0
|
||||
|
||||
vmovl.u8 q10, d18
|
||||
|
||||
|
@ -512,8 +509,7 @@ loop_16x16_neon
|
|||
|vp9_tm_predictor_32x32_neon| PROC
|
||||
; Load ytop_left = above[-1];
|
||||
sub r12, r2, #1
|
||||
ldrb r12, [r12]
|
||||
vdup.u8 q0, r12
|
||||
vld1.8 {d0[]}, [r12]
|
||||
|
||||
; Load above 32 pixels
|
||||
vld1.8 {q1}, [r2]!
|
||||
|
@ -524,9 +520,9 @@ loop_16x16_neon
|
|||
|
||||
; Compute above - ytop_left
|
||||
vsubl.u8 q8, d2, d0
|
||||
vsubl.u8 q9, d3, d1
|
||||
vsubl.u8 q9, d3, d0
|
||||
vsubl.u8 q10, d4, d0
|
||||
vsubl.u8 q11, d5, d1
|
||||
vsubl.u8 q11, d5, d0
|
||||
|
||||
vmovl.u8 q3, d26
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include "./vpx_config.h"
|
||||
#include "vpx_mem/vpx_mem.h"
|
||||
|
||||
#include "vp9/common/vp9_alloccommon.h"
|
||||
#include "vp9/common/vp9_blockd.h"
|
||||
#include "vp9/common/vp9_entropymode.h"
|
||||
#include "vp9/common/vp9_entropymv.h"
|
||||
|
@ -56,6 +57,7 @@ static int alloc_seg_map(VP9_COMMON *cm, int seg_map_size) {
|
|||
if (cm->seg_map_array[i] == NULL)
|
||||
return 1;
|
||||
}
|
||||
cm->seg_map_alloc_size = seg_map_size;
|
||||
|
||||
// Init the index.
|
||||
cm->seg_map_idx = 0;
|
||||
|
@ -83,8 +85,7 @@ static void free_seg_map(VP9_COMMON *cm) {
|
|||
}
|
||||
}
|
||||
|
||||
void vp9_free_ref_frame_buffers(VP9_COMMON *cm) {
|
||||
BufferPool *const pool = cm->buffer_pool;
|
||||
void vp9_free_ref_frame_buffers(BufferPool *pool) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < FRAME_BUFFERS; ++i) {
|
||||
|
@ -97,10 +98,14 @@ void vp9_free_ref_frame_buffers(VP9_COMMON *cm) {
|
|||
pool->frame_bufs[i].mvs = NULL;
|
||||
vp9_free_frame_buffer(&pool->frame_bufs[i].buf);
|
||||
}
|
||||
}
|
||||
|
||||
void vp9_free_postproc_buffers(VP9_COMMON *cm) {
|
||||
#if CONFIG_VP9_POSTPROC
|
||||
vp9_free_frame_buffer(&cm->post_proc_buffer);
|
||||
vp9_free_frame_buffer(&cm->post_proc_buffer_int);
|
||||
#else
|
||||
(void)cm;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -114,25 +119,36 @@ void vp9_free_context_buffers(VP9_COMMON *cm) {
|
|||
}
|
||||
|
||||
int vp9_alloc_context_buffers(VP9_COMMON *cm, int width, int height) {
|
||||
vp9_free_context_buffers(cm);
|
||||
int new_mi_size;
|
||||
|
||||
vp9_set_mb_mi(cm, width, height);
|
||||
if (cm->alloc_mi(cm, cm->mi_stride * calc_mi_size(cm->mi_rows)))
|
||||
goto fail;
|
||||
new_mi_size = cm->mi_stride * calc_mi_size(cm->mi_rows);
|
||||
if (cm->mi_alloc_size < new_mi_size) {
|
||||
cm->free_mi(cm);
|
||||
if (cm->alloc_mi(cm, new_mi_size))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
// Create the segmentation map structure and set to 0.
|
||||
free_seg_map(cm);
|
||||
if (alloc_seg_map(cm, cm->mi_rows * cm->mi_cols))
|
||||
goto fail;
|
||||
if (cm->seg_map_alloc_size < cm->mi_rows * cm->mi_cols) {
|
||||
// Create the segmentation map structure and set to 0.
|
||||
free_seg_map(cm);
|
||||
if (alloc_seg_map(cm, cm->mi_rows * cm->mi_cols))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
cm->above_context = (ENTROPY_CONTEXT *)vpx_calloc(
|
||||
2 * mi_cols_aligned_to_sb(cm->mi_cols) * MAX_MB_PLANE,
|
||||
sizeof(*cm->above_context));
|
||||
if (!cm->above_context) goto fail;
|
||||
if (cm->above_context_alloc_cols < cm->mi_cols) {
|
||||
vpx_free(cm->above_context);
|
||||
cm->above_context = (ENTROPY_CONTEXT *)vpx_calloc(
|
||||
2 * mi_cols_aligned_to_sb(cm->mi_cols) * MAX_MB_PLANE,
|
||||
sizeof(*cm->above_context));
|
||||
if (!cm->above_context) goto fail;
|
||||
|
||||
cm->above_seg_context = (PARTITION_CONTEXT *)vpx_calloc(
|
||||
mi_cols_aligned_to_sb(cm->mi_cols), sizeof(*cm->above_seg_context));
|
||||
if (!cm->above_seg_context) goto fail;
|
||||
vpx_free(cm->above_seg_context);
|
||||
cm->above_seg_context = (PARTITION_CONTEXT *)vpx_calloc(
|
||||
mi_cols_aligned_to_sb(cm->mi_cols), sizeof(*cm->above_seg_context));
|
||||
if (!cm->above_seg_context) goto fail;
|
||||
cm->above_context_alloc_cols = cm->mi_cols;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -142,7 +158,6 @@ int vp9_alloc_context_buffers(VP9_COMMON *cm, int width, int height) {
|
|||
}
|
||||
|
||||
void vp9_remove_common(VP9_COMMON *cm) {
|
||||
vp9_free_ref_frame_buffers(cm);
|
||||
vp9_free_context_buffers(cm);
|
||||
|
||||
vpx_free(cm->fc);
|
||||
|
@ -154,7 +169,7 @@ void vp9_remove_common(VP9_COMMON *cm) {
|
|||
void vp9_init_context_buffers(VP9_COMMON *cm) {
|
||||
cm->setup_mi(cm);
|
||||
if (cm->last_frame_seg_map && !cm->frame_parallel_decode)
|
||||
vpx_memset(cm->last_frame_seg_map, 0, cm->mi_rows * cm->mi_cols);
|
||||
memset(cm->last_frame_seg_map, 0, cm->mi_rows * cm->mi_cols);
|
||||
}
|
||||
|
||||
void vp9_swap_current_and_last_seg_map(VP9_COMMON *cm) {
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче