Merge branch 'master' into experimental
Conflicts: vp9/vp9_common.mk Change-Id: I2cd5ab47dc31c4210cefc23a282102123d5e2221
This commit is contained in:
@@ -67,10 +67,10 @@ enum mkv {
|
||||
BlockGroup = 0xA0,
|
||||
Block = 0xA1,
|
||||
/* BlockVirtual = 0xA2, */
|
||||
/* BlockAdditions = 0x75A1, */
|
||||
/* BlockMore = 0xA6, */
|
||||
/* BlockAddID = 0xEE, */
|
||||
/* BlockAdditional = 0xA5, */
|
||||
BlockAdditions = 0x75A1,
|
||||
BlockMore = 0xA6,
|
||||
BlockAddID = 0xEE,
|
||||
BlockAdditional = 0xA5,
|
||||
BlockDuration = 0x9B,
|
||||
/* ReferencePriority = 0xFA, */
|
||||
ReferenceBlock = 0xFB,
|
||||
@@ -100,7 +100,7 @@ enum mkv {
|
||||
DefaultDuration = 0x23E383,
|
||||
/* TrackTimecodeScale = 0x23314F, */
|
||||
/* TrackOffset = 0x537F, */
|
||||
/* MaxBlockAdditionID = 0x55EE, */
|
||||
MaxBlockAdditionID = 0x55EE,
|
||||
Name = 0x536E,
|
||||
Language = 0x22B59C,
|
||||
CodecID = 0x86,
|
||||
@@ -120,6 +120,7 @@ enum mkv {
|
||||
Video = 0xE0,
|
||||
FlagInterlaced = 0x9A,
|
||||
StereoMode = 0x53B8,
|
||||
AlphaMode = 0x53C0,
|
||||
PixelWidth = 0xB0,
|
||||
PixelHeight = 0xBA,
|
||||
PixelCropBottom = 0x54AA,
|
||||
|
@@ -82,6 +82,7 @@ static int get_cpu_count()
|
||||
}
|
||||
#endif
|
||||
|
||||
void vp8_clear_system_state_c() {};
|
||||
|
||||
void vp8_machine_specific_config(VP8_COMMON *ctx)
|
||||
{
|
||||
|
@@ -18,6 +18,13 @@ EOF
|
||||
}
|
||||
forward_decls vp8_common_forward_decls
|
||||
|
||||
#
|
||||
# system state
|
||||
#
|
||||
prototype void vp8_clear_system_state ""
|
||||
specialize vp8_clear_system_state mmx
|
||||
vp8_clear_system_state_mmx=vpx_reset_mmx_state
|
||||
|
||||
#
|
||||
# Dequant
|
||||
#
|
||||
|
@@ -10,12 +10,6 @@
|
||||
|
||||
|
||||
#include "vpx_config.h"
|
||||
#if ARCH_X86 || ARCH_X86_64
|
||||
void vpx_reset_mmx_state(void);
|
||||
#define vp8_clear_system_state() vpx_reset_mmx_state()
|
||||
#else
|
||||
#define vp8_clear_system_state()
|
||||
#endif
|
||||
|
||||
struct VP8Common;
|
||||
void vp8_machine_specific_config(struct VP8Common *);
|
||||
|
74
vp9/common/x86/vp9_loopfilter_intrin_mmx.c
Normal file
74
vp9/common/x86/vp9_loopfilter_intrin_mmx.c
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* 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 "vp9/common/vp9_loopfilter.h"
|
||||
|
||||
prototype_loopfilter(vp9_loop_filter_vertical_edge_mmx);
|
||||
prototype_loopfilter(vp9_loop_filter_horizontal_edge_mmx);
|
||||
|
||||
/* Horizontal MB filtering */
|
||||
void vp9_loop_filter_mbh_mmx(unsigned char *y_ptr,
|
||||
unsigned char *u_ptr, unsigned char *v_ptr,
|
||||
int y_stride, int uv_stride,
|
||||
struct loop_filter_info *lfi) {
|
||||
}
|
||||
|
||||
/* Vertical MB Filtering */
|
||||
void vp9_loop_filter_mbv_mmx(unsigned char *y_ptr,
|
||||
unsigned char *u_ptr, unsigned char *v_ptr,
|
||||
int y_stride, int uv_stride,
|
||||
struct loop_filter_info *lfi) {
|
||||
}
|
||||
|
||||
/* Horizontal B Filtering */
|
||||
void vp9_loop_filter_bh_mmx(unsigned char *y_ptr,
|
||||
unsigned char *u_ptr, unsigned char *v_ptr,
|
||||
int y_stride, int uv_stride,
|
||||
struct loop_filter_info *lfi) {
|
||||
|
||||
}
|
||||
|
||||
void vp9_loop_filter_bhs_mmx(unsigned char *y_ptr, int y_stride,
|
||||
const unsigned char *blimit) {
|
||||
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 4 * y_stride,
|
||||
y_stride, blimit);
|
||||
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 8 * y_stride,
|
||||
y_stride, blimit);
|
||||
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 12 * y_stride,
|
||||
y_stride, blimit);
|
||||
}
|
||||
|
||||
/* Vertical B Filtering */
|
||||
void vp9_loop_filter_bv_mmx(unsigned char *y_ptr,
|
||||
unsigned char *u_ptr, unsigned char *v_ptr,
|
||||
int y_stride, int uv_stride,
|
||||
struct loop_filter_info *lfi) {
|
||||
vp9_loop_filter_vertical_edge_mmx(y_ptr + 4, y_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 2);
|
||||
vp9_loop_filter_vertical_edge_mmx(y_ptr + 8, y_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 2);
|
||||
vp9_loop_filter_vertical_edge_mmx(y_ptr + 12, y_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 2);
|
||||
|
||||
if (u_ptr)
|
||||
vp9_loop_filter_vertical_edge_mmx(u_ptr + 4, uv_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 1);
|
||||
|
||||
if (v_ptr)
|
||||
vp9_loop_filter_vertical_edge_mmx(v_ptr + 4, uv_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 1);
|
||||
}
|
||||
|
||||
void vp9_loop_filter_bvs_mmx(unsigned char *y_ptr, int y_stride,
|
||||
const unsigned char *blimit) {
|
||||
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 4, y_stride, blimit);
|
||||
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 8, y_stride, blimit);
|
||||
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 12, y_stride, blimit);
|
||||
}
|
@@ -8,84 +8,16 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include <emmintrin.h> // SSE2
|
||||
#include "vpx_config.h"
|
||||
#include <emmintrin.h> /* SSE2 */
|
||||
#include "vp9/common/vp9_loopfilter.h"
|
||||
#include "vpx_ports/emmintrin_compat.h"
|
||||
|
||||
prototype_loopfilter(vp9_loop_filter_vertical_edge_mmx);
|
||||
prototype_loopfilter(vp9_loop_filter_horizontal_edge_mmx);
|
||||
|
||||
prototype_loopfilter(vp9_loop_filter_vertical_edge_sse2);
|
||||
prototype_loopfilter(vp9_loop_filter_horizontal_edge_sse2);
|
||||
|
||||
extern loop_filter_uvfunction vp9_loop_filter_horizontal_edge_uv_sse2;
|
||||
extern loop_filter_uvfunction vp9_loop_filter_vertical_edge_uv_sse2;
|
||||
|
||||
#if HAVE_MMX
|
||||
/* Horizontal MB filtering */
|
||||
void vp9_loop_filter_mbh_mmx(unsigned char *y_ptr,
|
||||
unsigned char *u_ptr, unsigned char *v_ptr,
|
||||
int y_stride, int uv_stride,
|
||||
struct loop_filter_info *lfi) {
|
||||
}
|
||||
|
||||
/* Vertical MB Filtering */
|
||||
void vp9_loop_filter_mbv_mmx(unsigned char *y_ptr,
|
||||
unsigned char *u_ptr, unsigned char *v_ptr,
|
||||
int y_stride, int uv_stride,
|
||||
struct loop_filter_info *lfi) {
|
||||
}
|
||||
|
||||
/* Horizontal B Filtering */
|
||||
void vp9_loop_filter_bh_mmx(unsigned char *y_ptr,
|
||||
unsigned char *u_ptr, unsigned char *v_ptr,
|
||||
int y_stride, int uv_stride,
|
||||
struct loop_filter_info *lfi) {
|
||||
|
||||
}
|
||||
|
||||
void vp9_loop_filter_bhs_mmx(unsigned char *y_ptr, int y_stride,
|
||||
const unsigned char *blimit) {
|
||||
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 4 * y_stride,
|
||||
y_stride, blimit);
|
||||
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 8 * y_stride,
|
||||
y_stride, blimit);
|
||||
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 12 * y_stride,
|
||||
y_stride, blimit);
|
||||
}
|
||||
|
||||
/* Vertical B Filtering */
|
||||
void vp9_loop_filter_bv_mmx(unsigned char *y_ptr,
|
||||
unsigned char *u_ptr, unsigned char *v_ptr,
|
||||
int y_stride, int uv_stride,
|
||||
struct loop_filter_info *lfi) {
|
||||
vp9_loop_filter_vertical_edge_mmx(y_ptr + 4, y_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 2);
|
||||
vp9_loop_filter_vertical_edge_mmx(y_ptr + 8, y_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 2);
|
||||
vp9_loop_filter_vertical_edge_mmx(y_ptr + 12, y_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 2);
|
||||
|
||||
if (u_ptr)
|
||||
vp9_loop_filter_vertical_edge_mmx(u_ptr + 4, uv_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 1);
|
||||
|
||||
if (v_ptr)
|
||||
vp9_loop_filter_vertical_edge_mmx(v_ptr + 4, uv_stride,
|
||||
lfi->blim, lfi->lim, lfi->hev_thr, 1);
|
||||
}
|
||||
|
||||
void vp9_loop_filter_bvs_mmx(unsigned char *y_ptr, int y_stride,
|
||||
const unsigned char *blimit) {
|
||||
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 4, y_stride, blimit);
|
||||
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 8, y_stride, blimit);
|
||||
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 12, y_stride, blimit);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_SSE2
|
||||
|
||||
void vp9_mb_lpf_horizontal_edge_w_sse2(unsigned char *s,
|
||||
int p,
|
||||
const unsigned char *_blimit,
|
||||
@@ -1217,5 +1149,3 @@ void vp9_loop_filter_bvs_sse2(unsigned char *y_ptr, int y_stride,
|
||||
vp9_loop_filter_simple_vertical_edge_sse2(y_ptr + 8, y_stride, blimit);
|
||||
vp9_loop_filter_simple_vertical_edge_sse2(y_ptr + 12, y_stride, blimit);
|
||||
}
|
||||
|
||||
#endif
|
@@ -8,13 +8,10 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include <emmintrin.h> // SSE2
|
||||
#include "./vpx_config.h"
|
||||
#include "./vp9_rtcd.h"
|
||||
#include <emmintrin.h> /* SSE2 */
|
||||
#include "vpx/vpx_integer.h"
|
||||
#include "vpx_ports/emmintrin_compat.h"
|
||||
|
||||
#if HAVE_SSE2
|
||||
unsigned int vp9_sad16x3_sse2(
|
||||
const unsigned char *src_ptr,
|
||||
int src_stride,
|
||||
@@ -96,5 +93,3 @@ unsigned int vp9_sad3x16_sse2(
|
||||
sad = _mm_add_epi16(sad, _mm_srli_si128(sad, 8));
|
||||
return _mm_cvtsi128_si32(sad);
|
||||
}
|
||||
|
||||
#endif
|
@@ -86,7 +86,8 @@ VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_idct_x86.h
|
||||
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_loopfilter_x86.h
|
||||
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_postproc_x86.h
|
||||
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_asm_stubs.c
|
||||
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_loopfilter_x86.c
|
||||
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_loopfilter_intrin_mmx.c
|
||||
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_loopfilter_intrin_sse2.c
|
||||
VP9_COMMON_SRCS-$(CONFIG_POSTPROC) += common/vp9_postproc.h
|
||||
VP9_COMMON_SRCS-$(CONFIG_POSTPROC) += common/vp9_postproc.c
|
||||
VP9_COMMON_SRCS-$(HAVE_MMX) += common/x86/vp9_iwalsh_mmx.asm
|
||||
@@ -112,14 +113,14 @@ VP9_COMMON_SRCS-$(HAVE_SSE3) += common/x86/vp9_mask_sse3.asm
|
||||
endif
|
||||
|
||||
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_idct_x86.c
|
||||
VP9_COMMON_SRCS-$(HAVE_SSE2) += common/x86/vp9_sadmxn_x86.c
|
||||
VP9_COMMON_SRCS-$(HAVE_SSE2) += common/x86/vp9_sadmxn_sse2.c
|
||||
ifeq ($(HAVE_SSE2),yes)
|
||||
vp9/common/x86/vp9_idct_x86.c.o: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_loopfilter_x86.c.o: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_sadmxn_x86.c.o: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_loopfilter_intrin_sse2.c.o: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_sadmxn_sse2.c.o: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_idct_x86.c.d: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_loopfilter_x86.c.d: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_sadmxn_x86.c.d: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_loopfilter_intrin_sse2.c.d: CFLAGS += -msse2
|
||||
vp9/common/x86/vp9_sadmxn_sse2.c.d: CFLAGS += -msse2
|
||||
endif
|
||||
|
||||
$(eval $(call asm_offsets_template,\
|
||||
|
Reference in New Issue
Block a user