Merge "remove postproc invokes" into experimental
diff --git a/build/make/Makefile b/build/make/Makefile
index b5d0d52..92113cc 100644
--- a/build/make/Makefile
+++ b/build/make/Makefile
@@ -103,60 +103,55 @@
.PHONY: testdata
testdata::
-xform_obj_prefix:=.objs/$(TOOLCHAIN)/
-xform_obj_path=$(if $(1),$(addprefix $(xform_obj_prefix),$(subst /,_,$(1))),$(xform_obj_prefix))
-xform_obj_path_o_d=$(call xform_obj_path,$(1)).o $(call xform_obj_path,$(1)).d
-define obj_rules_template
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.c.d: $(1)%.c
- $(if $(quiet),@echo " [DEP] $$@")
- $(qexec)mkdir -p $$(dir $$@)
- $(qexec)$(CC) $$(INTERNAL_CFLAGS) $$(CFLAGS) -M $$< | $(fmt_deps) > $$@
+$(BUILD_PFX)%.c.d: %.c
+ $(if $(quiet),@echo " [DEP] $@")
+ $(qexec)mkdir -p $(dir $@)
+ $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -M $< | $(fmt_deps) > $@
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.c.o: $(1)%.c
- $(if $(quiet),@echo " [CC] $$@")
- $(qexec)$(CC) $$(INTERNAL_CFLAGS) $$(CFLAGS) -c -o $$@ $$<
+$(BUILD_PFX)%.c.o: %.c
+ $(if $(quiet),@echo " [CC] $@")
+ $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -c -o $@ $<
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.cc.d: $(1)%.cc
- $(if $(quiet),@echo " [DEP] $$@")
- $(qexec)mkdir -p $$(dir $$@)
- $(qexec)$(CXX) $$(INTERNAL_CFLAGS) $$(CXXFLAGS) -M $$< | $(fmt_deps) > $$@
+$(BUILD_PFX)%.cc.d: %.cc
+ $(if $(quiet),@echo " [DEP] $@")
+ $(qexec)mkdir -p $(dir $@)
+ $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -M $< | $(fmt_deps) > $@
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.cc.o: $(1)%.cc
- $(if $(quiet),@echo " [CXX] $$@")
- $(qexec)$(CXX) $$(INTERNAL_CFLAGS) $$(CXXFLAGS) -c -o $$@ $$<
+$(BUILD_PFX)%.cc.o: %.cc
+ $(if $(quiet),@echo " [CXX] $@")
+ $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -c -o $@ $<
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.asm.d: $(1)%.asm
- $(if $(quiet),@echo " [DEP] $$@")
- $(qexec)mkdir -p $$(dir $$@)
+$(BUILD_PFX)%.asm.d: %.asm
+ $(if $(quiet),@echo " [DEP] $@")
+ $(qexec)mkdir -p $(dir $@)
$(qexec)$(SRC_PATH_BARE)/build/make/gen_asm_deps.sh \
- --build-pfx=$(BUILD_PFX) --depfile=$$@ $$(ASFLAGS) $$< > $$@
+ --build-pfx=$(BUILD_PFX) --depfile=$@ $(ASFLAGS) $< > $@
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.asm.o: $(1)%.asm
- $(if $(quiet),@echo " [AS] $$@")
- $(qexec)$(AS) $$(ASFLAGS) -o $$@ $$<
+$(BUILD_PFX)%.asm.o: %.asm
+ $(if $(quiet),@echo " [AS] $@")
+ $(qexec)$(AS) $(ASFLAGS) -o $@ $<
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.s.d: $(1)%.s
- $(if $(quiet),@echo " [DEP] $$@")
- $(qexec)mkdir -p $$(dir $$@)
+$(BUILD_PFX)%.s.d: %.s
+ $(if $(quiet),@echo " [DEP] $@")
+ $(qexec)mkdir -p $(dir $@)
$(qexec)$(SRC_PATH_BARE)/build/make/gen_asm_deps.sh \
- --build-pfx=$(BUILD_PFX) --depfile=$$@ $$(ASFLAGS) $$< > $$@
+ --build-pfx=$(BUILD_PFX) --depfile=$@ $(ASFLAGS) $< > $@
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.s.o: $(1)%.s
- $(if $(quiet),@echo " [AS] $$@")
- $(qexec)$(AS) $$(ASFLAGS) -o $$@ $$<
+$(BUILD_PFX)%.s.o: %.s
+ $(if $(quiet),@echo " [AS] $@")
+ $(qexec)$(AS) $(ASFLAGS) -o $@ $<
.PRECIOUS: %.c.S
%.c.S: CFLAGS += -DINLINE_ASM
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.c.S: $(1)%.c
- $(if $(quiet),@echo " [GEN] $$@")
- $(qexec)$(CC) -S $$(CFLAGS) -o $$@ $$<
+$(BUILD_PFX)%.c.S: %.c
+ $(if $(quiet),@echo " [GEN] $@")
+ $(qexec)$(CC) -S $(CFLAGS) -o $@ $<
.PRECIOUS: %.asm.s
-$(BUILD_PFX)$(call xform_obj_path,$(1))%.asm.s: $(1)%.asm
- $(if $(quiet),@echo " [ASM CONVERSION] $$@")
- $(qexec)mkdir -p $$(dir $$@)
- $(qexec)$(ASM_CONVERSION) <$$< >$$@
-endef
+$(BUILD_PFX)%.asm.s: %.asm
+ $(if $(quiet),@echo " [ASM CONVERSION] $@")
+ $(qexec)mkdir -p $(dir $@)
+ $(qexec)$(ASM_CONVERSION) <$< >$@
# If we're in debug mode, pretend we don't have GNU strip, to fall back to
# the copy implementation
@@ -198,7 +193,7 @@
find_file1=$(word 1,$(wildcard $(subst //,/,$(addsuffix /$(1),$(2)))))
find_file=$(foreach f,$(1),$(call find_file1,$(strip $(f)),$(strip $(2))) )
obj_pats=.c=.c.o $(AS_SFX)=$(AS_SFX).o .cc=.cc.o
-objs=$(addprefix $(BUILD_PFX),$(call xform_obj_path,$(foreach p,$(obj_pats),$(filter %.o,$(1:$(p))) )))
+objs=$(addprefix $(BUILD_PFX),$(foreach p,$(obj_pats),$(filter %.o,$(1:$(p))) ))
install_map_templates=$(eval $(call install_map_template,$(1),$(2)))
@@ -306,10 +301,6 @@
#
# Configuration dependent rules
#
-SRC_DIRS:=$(patsubst %/,%,$(sort $(dir $(SRCS))))
-$(foreach d,$(SRC_DIRS), $(eval $(call obj_rules_template,$(d)/)))
-$(eval $(call obj_rules_template)) # for ./
-
$(call pairmap,install_map_templates,$(INSTALL_MAPS))
DOCS=$(call cond_enabled,CONFIG_INSTALL_DOCS,DOCS)
diff --git a/examples.mk b/examples.mk
index e799a2b..f1cc42b 100644
--- a/examples.mk
+++ b/examples.mk
@@ -288,6 +288,3 @@
DOCS-yes += examples.doxy samples.dox $(ALL_EXAMPLES:.c=.dox)
examples.doxy: samples.dox $(ALL_EXAMPLES:.c=.dox)
@echo "INPUT += $^" > $@
-
-## Update the global src list
-SRCS += $(ALL_SRCS)
diff --git a/libs.mk b/libs.mk
index 64a636d..58151a6 100644
--- a/libs.mk
+++ b/libs.mk
@@ -24,20 +24,20 @@
ifeq ($(filter icc gcc,$(TGT_CC)), $(TGT_CC))
OFFSET_PATTERN:='^[a-zA-Z0-9_]* EQU'
define asm_offsets_template
-$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(call xform_obj_path,$(2)).S
+$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(2).S
@echo " [CREATE] $$@"
$$(qexec)LC_ALL=C grep $$(OFFSET_PATTERN) $$< | tr -d '$$$$\#' $$(ADS2GAS) > $$@
-$$(BUILD_PFX)$(call xform_obj_path,$(2)).S: $(2)
-CLEAN-OBJS += $$(BUILD_PFX)$(1) $(call xform_obj_path,$(2)).S
+$$(BUILD_PFX)$(2).S: $(2)
+CLEAN-OBJS += $$(BUILD_PFX)$(1) $(2).S
endef
else
ifeq ($(filter rvct,$(TGT_CC)), $(TGT_CC))
define asm_offsets_template
$$(BUILD_PFX)$(1): obj_int_extract
-$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(call xform_obj_path,$(2)).o
+$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(2).o
@echo " [CREATE] $$@"
$$(qexec)./obj_int_extract rvds $$< $$(ADS2GAS) > $$@
-OBJS-yes += $$(BUILD_PFX)$(call xform_obj_path,$(2)).o
+OBJS-yes += $$(BUILD_PFX)$(2).o
CLEAN-OBJS += $$(BUILD_PFX)$(1)
$$(filter %$$(ASM).o,$$(OBJS-yes)): $$(BUILD_PFX)$(1)
endef
@@ -389,9 +389,6 @@
include $(SRC_PATH_BARE)/test/test.mk
LIBVPX_TEST_SRCS=$(addprefix test/,$(call enabled,LIBVPX_TEST_SRCS))
-ifeq ($(CONFIG_VP8_DECODER),yes)
-LIBVPX_TEST_SRCS += md5_utils.h md5_utils.c
-endif
LIBVPX_TEST_BINS=./test_libvpx
LIBVPX_TEST_DATA=$(addprefix $(LIBVPX_TEST_DATA_PATH)/,\
$(call enabled,LIBVPX_TEST_DATA))
diff --git a/test/test.mk b/test/test.mk
index bc1eea7..4fb464e 100644
--- a/test/test.mk
+++ b/test/test.mk
@@ -21,6 +21,7 @@
LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += keyframe_test.cc
LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += resize_test.cc
+LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += ../md5_utils.h ../md5_utils.c
LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += decode_test_driver.cc
LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += decode_test_driver.h
LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += ivf_video_source.h
diff --git a/vp8/vp8cx.mk b/vp8/vp8cx.mk
index 6d09921..4ff3ef2 100644
--- a/vp8/vp8cx.mk
+++ b/vp8/vp8cx.mk
@@ -101,7 +101,7 @@
ifeq ($(CONFIG_TEMPORAL_DENOISING),yes)
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/denoising_sse2.c
ifeq ($(HAVE_SSE2),yes)
-$(call xform_obj_path_o_d,vp8/encoder/x86/denoising_sse2.c): CFLAGS += -msse2
+vp8/encoder/x86/denoising_sse2.c.o: CFLAGS += -msse2
endif
endif
diff --git a/vp9/common/vp9_entropymode.c b/vp9/common/vp9_entropymode.c
index 69acbab..0eb21ca 100644
--- a/vp9/common/vp9_entropymode.c
+++ b/vp9/common/vp9_entropymode.c
@@ -448,14 +448,6 @@
void vp9_init_mode_contexts(VP9_COMMON *pc) {
vpx_memset(pc->fc.mv_ref_ct, 0, sizeof(pc->fc.mv_ref_ct));
-
- vpx_memcpy(pc->fc.mode_context,
- vp9_default_mode_contexts,
- sizeof(pc->fc.mode_context));
- vpx_memcpy(pc->fc.mode_context_a,
- vp9_default_mode_contexts_a,
- sizeof(pc->fc.mode_context_a));
-
}
void vp9_accum_mv_refs(VP9_COMMON *pc,
@@ -494,11 +486,8 @@
int (*mv_ref_ct)[4][2];
int (*mode_context)[4];
- if (pc->refresh_alt_ref_frame) {
- mode_context = pc->fc.mode_context_a;
- } else {
- mode_context = pc->fc.mode_context;
- }
+ mode_context = pc->fc.vp9_mode_contexts;
+
mv_ref_ct = pc->fc.mv_ref_ct;
for (j = 0; j < INTER_MODE_CONTEXTS; j++) {
diff --git a/vp9/common/vp9_onyxc_int.h b/vp9/common/vp9_onyxc_int.h
index 2e0dcc0..bef4b41 100644
--- a/vp9/common/vp9_onyxc_int.h
+++ b/vp9/common/vp9_onyxc_int.h
@@ -119,8 +119,6 @@
vp9_prob pre_interintra_prob;
#endif
- int mode_context[INTER_MODE_CONTEXTS][4];
- int mode_context_a[INTER_MODE_CONTEXTS][4];
int vp9_mode_contexts[INTER_MODE_CONTEXTS][4];
int mv_ref_ct[INTER_MODE_CONTEXTS][4][2];
} FRAME_CONTEXT;
diff --git a/vp9/common/vp9_seg_common.c b/vp9/common/vp9_seg_common.c
index 6ac27e3..46a6ee4 100644
--- a/vp9/common/vp9_seg_common.c
+++ b/vp9/common/vp9_seg_common.c
@@ -8,11 +8,13 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include <assert.h>
+#include "vp9/common/vp9_blockd.h"
#include "vp9/common/vp9_seg_common.h"
static const int segfeaturedata_signed[SEG_LVL_MAX] = { 1, 1, 0, 0, 0, 0 };
-static const int seg_feature_data_bits[SEG_LVL_MAX] =
- { QINDEX_BITS, 6, 4, 5, 8, 2 };
+static const int seg_feature_data_max[SEG_LVL_MAX] =
+ { MAXQ, 63, 0xf, MB_MODE_COUNT - 1, 255, TX_SIZE_MAX - 1};
// These functions provide access to new segment level features.
// Eventually these function may be "optimized out" but for the moment,
@@ -45,8 +47,8 @@
xd->segment_feature_mask[segment_id] &= ~(1 << feature_id);
}
-int vp9_seg_feature_data_bits(SEG_LVL_FEATURES feature_id) {
- return seg_feature_data_bits[feature_id];
+int vp9_seg_feature_data_max(SEG_LVL_FEATURES feature_id) {
+ return seg_feature_data_max[feature_id];
}
int vp9_is_segfeature_signed(SEG_LVL_FEATURES feature_id) {
@@ -63,6 +65,12 @@
int segment_id,
SEG_LVL_FEATURES feature_id,
int seg_data) {
+ assert(seg_data <= seg_feature_data_max[feature_id]);
+ if (seg_data < 0) {
+ assert(segfeaturedata_signed[feature_id]);
+ assert(-seg_data <= seg_feature_data_max[feature_id]);
+ }
+
xd->segment_feature_data[segment_id][feature_id] = seg_data;
}
diff --git a/vp9/common/vp9_seg_common.h b/vp9/common/vp9_seg_common.h
index fb0570c..20959a7 100644
--- a/vp9/common/vp9_seg_common.h
+++ b/vp9/common/vp9_seg_common.h
@@ -29,7 +29,7 @@
int segment_id,
SEG_LVL_FEATURES feature_id);
-int vp9_seg_feature_data_bits(SEG_LVL_FEATURES feature_id);
+int vp9_seg_feature_data_max(SEG_LVL_FEATURES feature_id);
int vp9_is_segfeature_signed(SEG_LVL_FEATURES feature_id);
diff --git a/vp9/decoder/vp9_dboolhuff.c b/vp9/decoder/vp9_dboolhuff.c
index dc3878e..885ec0d 100644
--- a/vp9/decoder/vp9_dboolhuff.c
+++ b/vp9/decoder/vp9_dboolhuff.c
@@ -98,3 +98,15 @@
}
return word;
}
+
+int vp9_decode_unsigned_max(BOOL_DECODER *br, int max) {
+ int data = 0, bit = 0, lmax = max;
+
+ while (lmax) {
+ data |= decode_bool(br, 128) << bit++;
+ lmax >>= 1;
+ }
+ if (data > max)
+ return max;
+ return data;
+}
diff --git a/vp9/decoder/vp9_dboolhuff.h b/vp9/decoder/vp9_dboolhuff.h
index d46d81b..6529170 100644
--- a/vp9/decoder/vp9_dboolhuff.h
+++ b/vp9/decoder/vp9_dboolhuff.h
@@ -150,4 +150,6 @@
return 0;
}
+extern int vp9_decode_unsigned_max(BOOL_DECODER *br, int max);
+
#endif
diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c
index c083323..2adbb90 100644
--- a/vp9/decoder/vp9_decodframe.c
+++ b/vp9/decoder/vp9_decodframe.c
@@ -505,6 +505,8 @@
vp9_dequant_idct_add(b->qcoeff, b->dequant, b->predictor,
*(b->base_dst) + b->dst, 16, b->dst_stride);
}
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
}
if (!xd->mode_info_context->mbmi.mb_skip_coeff)
vp9_decode_mb_tokens_4x4_uv(pbi, xd, bc);
@@ -861,12 +863,17 @@
pc->ref_frame_sign_bias[ALTREF_FRAME] = 0;
vp9_init_mode_contexts(&pbi->common);
+ vpx_memcpy(pbi->common.fc.vp9_mode_contexts,
+ vp9_default_mode_contexts,
+ sizeof(vp9_default_mode_contexts));
+
vpx_memcpy(&pc->lfc, &pc->fc, sizeof(pc->fc));
vpx_memcpy(&pc->lfc_a, &pc->fc, sizeof(pc->fc));
- vpx_memcpy(pbi->common.fc.vp9_mode_contexts,
- pbi->common.fc.mode_context,
- sizeof(pbi->common.fc.mode_context));
+ vpx_memcpy(pbi->common.lfc.vp9_mode_contexts,
+ vp9_default_mode_contexts_a,
+ sizeof(vp9_default_mode_contexts_a));
+
vpx_memset(pc->prev_mip, 0,
(pc->mb_cols + 1) * (pc->mb_rows + 1)* sizeof(MODE_INFO));
vpx_memset(pc->mip, 0,
@@ -1134,13 +1141,13 @@
// Update the feature data and mask
vp9_enable_segfeature(xd, i, j);
- data = (signed char)vp9_read_literal(
- &header_bc, vp9_seg_feature_data_bits(j));
+ data = vp9_decode_unsigned_max(&header_bc,
+ vp9_seg_feature_data_max(j));
// Is the segment data signed..
if (vp9_is_segfeature_signed(j)) {
if (vp9_read_bit(&header_bc))
- data = - data;
+ data = -data;
}
} else
data = 0;
@@ -1251,14 +1258,8 @@
if (pc->refresh_alt_ref_frame) {
vpx_memcpy(&pc->fc, &pc->lfc_a, sizeof(pc->fc));
- vpx_memcpy(pc->fc.vp9_mode_contexts,
- pc->fc.mode_context_a,
- sizeof(pc->fc.vp9_mode_contexts));
} else {
vpx_memcpy(&pc->fc, &pc->lfc, sizeof(pc->fc));
- vpx_memcpy(pc->fc.vp9_mode_contexts,
- pc->fc.mode_context,
- sizeof(pc->fc.vp9_mode_contexts));
}
/* Buffer to buffer copy flags. */
diff --git a/vp9/decoder/vp9_detokenize.c b/vp9/decoder/vp9_detokenize.c
index 8c469c4..c55e362 100644
--- a/vp9/decoder/vp9_detokenize.c
+++ b/vp9/decoder/vp9_detokenize.c
@@ -70,6 +70,8 @@
} else {
vpx_memset(xd->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) - 1);
vpx_memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) - 1);
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
}
}
@@ -321,6 +323,8 @@
eobtotal += c - 4;
type = PLANE_TYPE_Y_NO_DC;
} else {
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
type = PLANE_TYPE_Y_WITH_DC;
}
@@ -431,6 +435,8 @@
eobtotal += vp9_decode_coefs_4x4(dx, xd, bc, PLANE_TYPE_Y2, 24) - 16;
type = PLANE_TYPE_Y_NO_DC;
} else {
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
type = PLANE_TYPE_Y_WITH_DC;
}
diff --git a/vp9/encoder/vp9_bitstream.c b/vp9/encoder/vp9_bitstream.c
index ae8a7c6..73c1167 100644
--- a/vp9/encoder/vp9_bitstream.c
+++ b/vp9/encoder/vp9_bitstream.c
@@ -1911,19 +1911,19 @@
// Encode the relevant feature data
if (Data < 0) {
Data = - Data;
- vp9_write_literal(&header_bc, Data,
- vp9_seg_feature_data_bits(j));
+ vp9_encode_unsigned_max(&header_bc, Data,
+ vp9_seg_feature_data_max(j));
vp9_write_bit(&header_bc, 1);
} else {
- vp9_write_literal(&header_bc, Data,
- vp9_seg_feature_data_bits(j));
+ vp9_encode_unsigned_max(&header_bc, Data,
+ vp9_seg_feature_data_max(j));
vp9_write_bit(&header_bc, 0);
}
}
// Unsigned data element so no sign bit needed
else
- vp9_write_literal(&header_bc, Data,
- vp9_seg_feature_data_bits(j));
+ vp9_encode_unsigned_max(&header_bc, Data,
+ vp9_seg_feature_data_max(j));
} else
vp9_write_bit(&header_bc, 0);
}
diff --git a/vp9/encoder/vp9_boolhuff.c b/vp9/encoder/vp9_boolhuff.c
index 7619dfa..2689ab6 100644
--- a/vp9/encoder/vp9_boolhuff.c
+++ b/vp9/encoder/vp9_boolhuff.c
@@ -8,7 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-
+#include <assert.h>
#include "vp9_boolhuff.h"
#if defined(SECTIONBITS_OUTPUT)
@@ -64,6 +64,15 @@
encode_bool(br, (1 & (data >> bit)), 0x80);
}
+void vp9_encode_unsigned_max(BOOL_CODER *br, int data, int max) {
+ assert(data <= max);
+ while (max) {
+ encode_bool(br, data & 1, 128);
+ data >>= 1;
+ max >>= 1;
+ }
+}
+
int vp9_recenter_nonneg(int v, int m) {
if (v > (m << 1)) return v;
else if (v >= m) return ((v - m) << 1);
diff --git a/vp9/encoder/vp9_boolhuff.h b/vp9/encoder/vp9_boolhuff.h
index 2fad86b..1958a41 100644
--- a/vp9/encoder/vp9_boolhuff.h
+++ b/vp9/encoder/vp9_boolhuff.h
@@ -37,6 +37,7 @@
extern void vp9_start_encode(BOOL_CODER *bc, unsigned char *buffer);
extern void vp9_encode_value(BOOL_CODER *br, int data, int bits);
+extern void vp9_encode_unsigned_max(BOOL_CODER *br, int data, int max);
extern void vp9_stop_encode(BOOL_CODER *bc);
extern const unsigned int vp9_prob_cost[256];
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c
index 3766dd1..31fc126 100644
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -3747,7 +3747,6 @@
cpi->NMVcount.joints[2], cpi->NMVcount.joints[3]);
*/
vp9_adapt_nmv_probs(&cpi->common, cpi->mb.e_mbd.allow_high_precision_mv);
- vp9_update_mode_context(&cpi->common);
}
#if CONFIG_COMP_INTERINTRA_PRED
if (cm->frame_type != KEY_FRAME)
diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h
index 4c4c226..79b35b4 100644
--- a/vp9/encoder/vp9_onyx_int.h
+++ b/vp9/encoder/vp9_onyx_int.h
@@ -126,8 +126,7 @@
#endif
int mv_ref_ct[INTER_MODE_CONTEXTS][4][2];
- int mode_context[INTER_MODE_CONTEXTS][4];
- int mode_context_a[INTER_MODE_CONTEXTS][4];
+ int vp9_mode_contexts[INTER_MODE_CONTEXTS][4];
} CODING_CONTEXT;
diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c
index ab9dc71..0ceb4f6 100644
--- a/vp9/encoder/vp9_ratectrl.c
+++ b/vp9/encoder/vp9_ratectrl.c
@@ -17,6 +17,7 @@
#include "math.h"
#include "vp9/common/vp9_alloccommon.h"
+#include "vp9/common/vp9_modecont.h"
#include "vp9/common/vp9_common.h"
#include "vp9_ratectrl.h"
#include "vp9/common/vp9_entropymode.h"
@@ -135,8 +136,7 @@
vp9_copy(cc->nmvcosts, cpi->mb.nmvcosts);
vp9_copy(cc->nmvcosts_hp, cpi->mb.nmvcosts_hp);
- vp9_copy(cc->mode_context, cm->fc.mode_context);
- vp9_copy(cc->mode_context_a, cm->fc.mode_context_a);
+ vp9_copy(cc->vp9_mode_contexts, cm->fc.vp9_mode_contexts);
vp9_copy(cc->ymode_prob, cm->fc.ymode_prob);
#if CONFIG_SUPERBLOCKS
@@ -194,8 +194,7 @@
vp9_copy(cpi->mb.nmvcosts, cc->nmvcosts);
vp9_copy(cpi->mb.nmvcosts_hp, cc->nmvcosts_hp);
- vp9_copy(cm->fc.mode_context, cc->mode_context);
- vp9_copy(cm->fc.mode_context_a, cc->mode_context_a);
+ vp9_copy(cm->fc.vp9_mode_contexts, cc->vp9_mode_contexts);
vp9_copy(cm->fc.ymode_prob, cc->ymode_prob);
#if CONFIG_SUPERBLOCKS
@@ -262,9 +261,16 @@
cpi->common.refresh_alt_ref_frame = TRUE;
vp9_init_mode_contexts(&cpi->common);
+ vpx_memcpy(cpi->common.fc.vp9_mode_contexts,
+ vp9_default_mode_contexts,
+ sizeof(vp9_default_mode_contexts));
vpx_memcpy(&cpi->common.lfc, &cpi->common.fc, sizeof(cpi->common.fc));
vpx_memcpy(&cpi->common.lfc_a, &cpi->common.fc, sizeof(cpi->common.fc));
+ vpx_memcpy(cpi->common.lfc.vp9_mode_contexts,
+ vp9_default_mode_contexts_a,
+ sizeof(vp9_default_mode_contexts_a));
+
vpx_memset(cm->prev_mip, 0,
(cm->mb_cols + 1) * (cm->mb_rows + 1)* sizeof(MODE_INFO));
vpx_memset(cm->mip, 0,
@@ -279,16 +285,10 @@
vpx_memcpy(&cpi->common.fc,
&cpi->common.lfc_a,
sizeof(cpi->common.fc));
- vpx_memcpy(cpi->common.fc.vp9_mode_contexts,
- cpi->common.fc.mode_context_a,
- sizeof(cpi->common.fc.vp9_mode_contexts));
} else {
vpx_memcpy(&cpi->common.fc,
&cpi->common.lfc,
sizeof(cpi->common.fc));
- vpx_memcpy(cpi->common.fc.vp9_mode_contexts,
- cpi->common.fc.mode_context,
- sizeof(cpi->common.fc.vp9_mode_contexts));
}
}
diff --git a/vp9/encoder/vp9_tokenize.c b/vp9/encoder/vp9_tokenize.c
index c080408..1713cdb 100644
--- a/vp9/encoder/vp9_tokenize.c
+++ b/vp9/encoder/vp9_tokenize.c
@@ -358,8 +358,11 @@
}
plane_type = PLANE_TYPE_Y_NO_DC;
- } else
+ } else {
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
plane_type = PLANE_TYPE_Y_WITH_DC;
+ }
if (tx_size == TX_16X16) {
tokenize_b(cpi, xd, xd->block, t, PLANE_TYPE_Y_WITH_DC,
@@ -743,6 +746,8 @@
TX_8X8, dry_run);
plane_type = PLANE_TYPE_Y_NO_DC;
} else {
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
plane_type = PLANE_TYPE_Y_WITH_DC;
}
@@ -796,6 +801,8 @@
L + vp9_block2left[24], TX_4X4, dry_run);
plane_type = PLANE_TYPE_Y_NO_DC;
} else {
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
plane_type = PLANE_TYPE_Y_WITH_DC;
}
@@ -825,6 +832,8 @@
for (b = 16; b < 24; b++)
stuff_b(cpi, xd, xd->block + b, t, PLANE_TYPE_UV, A + vp9_block2above[b],
L + vp9_block2left[b], TX_4X4, dry_run);
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
}
void vp9_stuff_mb(VP9_COMP *cpi, MACROBLOCKD *xd, TOKENEXTRA **t, int dry_run) {
@@ -861,5 +870,7 @@
} else {
vpx_memset(xd->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) - 1);
vpx_memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) - 1);
+ xd->above_context->y2 = 1;
+ xd->left_context->y2 = 1;
}
}
diff --git a/vp9/vp9_common.mk b/vp9/vp9_common.mk
index 0868be7..7b241ad 100644
--- a/vp9/vp9_common.mk
+++ b/vp9/vp9_common.mk
@@ -114,15 +114,15 @@
VP9_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/vp9_filter_sse4.c
ifeq ($(HAVE_SSE4_1),yes)
-$(call xform_obj_path_o_d,vp9/common/x86/vp9_filter_sse4.c): CFLAGS += -msse4
+vp9/common/x86/vp9_filter_sse4.c.o: CFLAGS += -msse4
endif
VP9_COMMON_SRCS-$(HAVE_SSE2) += common/x86/vp9_filter_sse2.c
VP9_COMMON_SRCS-$(HAVE_SSE2) += common/x86/vp9_sadmxn_x86.c
ifeq ($(HAVE_SSE2),yes)
-$(call xform_obj_path_o_d,vp9/common/x86/vp9_filter_sse2.c): CFLAGS += -msse2
-$(call xform_obj_path_o_d,vp9/common/x86/vp9_loopfilter_x86.c): CFLAGS += -msse2
-$(call xform_obj_path_o_d,vp9/common/x86/vp9_sadmxn_x86.c): CFLAGS += -msse2
+vp9/common/x86/vp9_filter_sse2.c.o: CFLAGS += -msse2
+vp9/common/x86/vp9_loopfilter_x86.c.o: CFLAGS += -msse2
+vp9/common/x86/vp9_sadmxn_x86.c.o: CFLAGS += -msse2
endif
VP9_COMMON_SRCS-$(ARCH_ARM) += common/arm/vp9_arm_systemdependent.c