Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
aom-rav1e
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xiph.Org
aom-rav1e
Commits
29e4d7e8
Commit
29e4d7e8
authored
Feb 09, 2012
by
Ronald S. Bultje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge dualpred (compound prediction) experiment.
Change-Id: Ieaaa07c50eae41118596197f6a4d848135946e41
parent
d90f0eb4
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
8 additions
and
190 deletions
+8
-190
configure
configure
+0
-1
vp8/common/alloccommon.c
vp8/common/alloccommon.c
+0
-2
vp8/common/blockd.h
vp8/common/blockd.h
+2
-10
vp8/common/filter.c
vp8/common/filter.c
+0
-14
vp8/common/generic/systemdependent.c
vp8/common/generic/systemdependent.c
+0
-6
vp8/common/onyxc_int.h
vp8/common/onyxc_int.h
+0
-8
vp8/common/recon.h
vp8/common/recon.h
+0
-4
vp8/common/reconinter.c
vp8/common/reconinter.c
+1
-8
vp8/common/subpixel.h
vp8/common/subpixel.h
+0
-9
vp8/decoder/decodemv.c
vp8/decoder/decodemv.c
+0
-6
vp8/decoder/decodframe.c
vp8/decoder/decodframe.c
+1
-10
vp8/decoder/threading.c
vp8/decoder/threading.c
+0
-2
vp8/encoder/bitstream.c
vp8/encoder/bitstream.c
+2
-16
vp8/encoder/encodeframe.c
vp8/encoder/encodeframe.c
+2
-12
vp8/encoder/ethreading.c
vp8/encoder/ethreading.c
+0
-4
vp8/encoder/onyx_if.c
vp8/encoder/onyx_if.c
+0
-28
vp8/encoder/onyx_int.h
vp8/encoder/onyx_int.h
+0
-8
vp8/encoder/pickinter.c
vp8/encoder/pickinter.c
+0
-2
vp8/encoder/rdopt.c
vp8/encoder/rdopt.c
+0
-40
No files found.
configure
View file @
29e4d7e8
...
...
@@ -217,7 +217,6 @@ HAVE_LIST="
unistd_h
"
EXPERIMENT_LIST
=
"
dualpred
extend_qrange
segmentation
segfeatures
...
...
vp8/common/alloccommon.c
View file @
29e4d7e8
...
...
@@ -212,9 +212,7 @@ void vp8_create_common(VP8_COMMON *oci)
vp8_default_bmode_probs
(
oci
->
fc
.
bmode_prob
);
oci
->
mb_no_coeff_skip
=
1
;
#if CONFIG_DUALPRED
oci
->
dual_pred_mode
=
HYBRID_PREDICTION
;
#endif
/* CONFIG_DUALPRED */
oci
->
no_lpf
=
0
;
oci
->
filter_type
=
NORMAL_LOOPFILTER
;
oci
->
use_bilinear_mc_filter
=
0
;
...
...
vp8/common/blockd.h
View file @
29e4d7e8
...
...
@@ -176,15 +176,11 @@ typedef enum
typedef
struct
{
MB_PREDICTION_MODE
mode
,
uv_mode
;
MV_REFERENCE_FRAME
ref_frame
;
MV_REFERENCE_FRAME
ref_frame
,
second_ref_frame
;
#if CONFIG_T8X8
TX_SIZE
txfm_size
;
#endif
int_mv
mv
;
#if CONFIG_DUALPRED
MV_REFERENCE_FRAME
second_ref_frame
;
int_mv
second_mv
;
#endif
int_mv
mv
,
second_mv
;
unsigned
char
partitioning
;
unsigned
char
mb_skip_coeff
;
/* does this mb has coefficients at all, 1=no coefficients, 0=need decode tokens */
unsigned
char
need_to_clamp_mvs
;
...
...
@@ -242,11 +238,9 @@ typedef struct MacroBlockD
int
fullpixel_mask
;
YV12_BUFFER_CONFIG
pre
;
/* Filtered copy of previous frame reconstruction */
#if CONFIG_DUALPRED
struct
{
uint8_t
*
y_buffer
,
*
u_buffer
,
*
v_buffer
;
}
second_pre
;
#endif
/* CONFIG_DUALPRED */
YV12_BUFFER_CONFIG
dst
;
MODE_INFO
*
prev_mode_info_context
;
...
...
@@ -310,10 +304,8 @@ typedef struct MacroBlockD
vp8_subpix_fn_t
subpixel_predict8x4
;
vp8_subpix_fn_t
subpixel_predict8x8
;
vp8_subpix_fn_t
subpixel_predict16x16
;
#if CONFIG_DUALPRED
vp8_subpix_fn_t
subpixel_predict_avg8x8
;
vp8_subpix_fn_t
subpixel_predict_avg16x16
;
#endif
/* CONFIG_DUALPRED */
void
*
current_bc
;
...
...
vp8/common/filter.c
View file @
29e4d7e8
...
...
@@ -221,7 +221,6 @@ static void filter_block2d_second_pass
}
}
#if CONFIG_DUALPRED
/*
* The only functional difference between filter_block2d_second_pass()
* and this function is that filter_block2d_second_pass() does a sixtap
...
...
@@ -299,7 +298,6 @@ static void filter_block2d_second_pass_avg
output_ptr
+=
output_pitch
;
}
}
#endif
/* CONFIG_DUALPRED */
static
void
filter_block2d
(
...
...
@@ -368,7 +366,6 @@ void vp8_sixtap_predict8x8_c
}
#if CONFIG_DUALPRED
void
vp8_sixtap_predict_avg8x8_c
(
unsigned
char
*
src_ptr
,
...
...
@@ -394,7 +391,6 @@ void vp8_sixtap_predict_avg8x8_c
/* then filter verticaly... */
filter_block2d_second_pass_avg
(
FData
+
8
*
(
INTERP_EXTEND
-
1
),
dst_ptr
,
dst_pitch
,
8
,
8
,
8
,
8
,
VFilter
);
}
#endif
/* CONFIG_DUALPRED */
void
vp8_sixtap_predict8x4_c
(
...
...
@@ -452,7 +448,6 @@ void vp8_sixtap_predict16x16_c
}
#if CONFIG_DUALPRED
void
vp8_sixtap_predict_avg16x16_c
(
unsigned
char
*
src_ptr
,
...
...
@@ -479,7 +474,6 @@ void vp8_sixtap_predict_avg16x16_c
filter_block2d_second_pass_avg
(
FData
+
16
*
(
INTERP_EXTEND
-
1
),
dst_ptr
,
dst_pitch
,
16
,
16
,
16
,
16
,
VFilter
);
}
#endif
/* CONFIG_DUALPRED */
/****************************************************************************
*
...
...
@@ -584,7 +578,6 @@ static void filter_block2d_bil_second_pass
}
}
#if CONFIG_DUALPRED
/*
* As before for filter_block2d_second_pass_avg(), the functional difference
* between filter_block2d_bil_second_pass() and filter_block2d_bil_second_pass_avg()
...
...
@@ -623,7 +616,6 @@ static void filter_block2d_bil_second_pass_avg
dst_ptr
+=
dst_pitch
;
}
}
#endif
/* CONFIG_DUALPRED */
/****************************************************************************
*
...
...
@@ -670,7 +662,6 @@ static void filter_block2d_bil
filter_block2d_bil_second_pass
(
FData
,
dst_ptr
,
dst_pitch
,
Height
,
Width
,
VFilter
);
}
#if CONFIG_DUALPRED
static
void
filter_block2d_bil_avg
(
unsigned
char
*
src_ptr
,
...
...
@@ -691,7 +682,6 @@ static void filter_block2d_bil_avg
/* then 1-D vertically... */
filter_block2d_bil_second_pass_avg
(
FData
,
dst_ptr
,
dst_pitch
,
Height
,
Width
,
VFilter
);
}
#endif
/* CONFIG_DUALPRED */
void
vp8_bilinear_predict4x4_c
(
...
...
@@ -751,7 +741,6 @@ void vp8_bilinear_predict8x8_c
}
#if CONFIG_DUALPRED
void
vp8_bilinear_predict_avg8x8_c
(
unsigned
char
*
src_ptr
,
...
...
@@ -771,7 +760,6 @@ void vp8_bilinear_predict_avg8x8_c
filter_block2d_bil_avg
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
8
,
8
);
}
#endif
/* CONFIG_DUALPRED */
void
vp8_bilinear_predict8x4_c
(
...
...
@@ -812,7 +800,6 @@ void vp8_bilinear_predict16x16_c
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
16
,
16
);
}
#if CONFIG_DUALPRED
void
vp8_bilinear_predict_avg16x16_c
(
unsigned
char
*
src_ptr
,
...
...
@@ -832,4 +819,3 @@ void vp8_bilinear_predict_avg16x16_c
filter_block2d_bil_avg
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
16
,
16
);
}
#endif
/* CONFIG_DUALPRED */
vp8/common/generic/systemdependent.c
View file @
29e4d7e8
...
...
@@ -84,10 +84,8 @@ void vp8_machine_specific_config(VP8_COMMON *ctx)
#endif
rtcd
->
recon
.
copy16x16
=
vp8_copy_mem16x16_c
;
rtcd
->
recon
.
copy8x8
=
vp8_copy_mem8x8_c
;
#if CONFIG_DUALPRED
rtcd
->
recon
.
avg16x16
=
vp8_avg_mem16x16_c
;
rtcd
->
recon
.
avg8x8
=
vp8_avg_mem8x8_c
;
#endif
/* CONFIG_DUALPRED */
rtcd
->
recon
.
copy8x4
=
vp8_copy_mem8x4_c
;
rtcd
->
recon
.
recon
=
vp8_recon_b_c
;
rtcd
->
recon
.
recon_uv
=
vp8_recon_uv_b_c
;
...
...
@@ -112,18 +110,14 @@ void vp8_machine_specific_config(VP8_COMMON *ctx)
rtcd
->
subpix
.
sixtap16x16
=
vp8_sixtap_predict16x16_c
;
rtcd
->
subpix
.
sixtap8x8
=
vp8_sixtap_predict8x8_c
;
#if CONFIG_DUALPRED
rtcd
->
subpix
.
sixtap_avg16x16
=
vp8_sixtap_predict_avg16x16_c
;
rtcd
->
subpix
.
sixtap_avg8x8
=
vp8_sixtap_predict_avg8x8_c
;
#endif
/* CONFIG_DUALPRED */
rtcd
->
subpix
.
sixtap8x4
=
vp8_sixtap_predict8x4_c
;
rtcd
->
subpix
.
sixtap4x4
=
vp8_sixtap_predict_c
;
rtcd
->
subpix
.
bilinear16x16
=
vp8_bilinear_predict16x16_c
;
rtcd
->
subpix
.
bilinear8x8
=
vp8_bilinear_predict8x8_c
;
#if CONFIG_DUALPRED
rtcd
->
subpix
.
bilinear_avg16x16
=
vp8_bilinear_predict_avg16x16_c
;
rtcd
->
subpix
.
bilinear_avg8x8
=
vp8_bilinear_predict_avg8x8_c
;
#endif
/* CONFIG_DUALPRED */
rtcd
->
subpix
.
bilinear8x4
=
vp8_bilinear_predict8x4_c
;
rtcd
->
subpix
.
bilinear4x4
=
vp8_bilinear_predict4x4_c
;
...
...
vp8/common/onyxc_int.h
View file @
29e4d7e8
...
...
@@ -42,9 +42,7 @@ void vp8_initialize_common(void);
#define MAX_PARTITIONS 9
#if CONFIG_DUALPRED
#define DUAL_PRED_CONTEXTS 2
#endif
/* CONFIG_DUALPRED */
typedef
struct
frame_contexts
{
...
...
@@ -84,7 +82,6 @@ typedef enum
BILINEAR
=
1
}
INTERPOLATIONFILTERTYPE
;
#if CONFIG_DUALPRED
typedef
enum
{
SINGLE_PREDICTION_ONLY
=
0
,
...
...
@@ -92,7 +89,6 @@ typedef enum
HYBRID_PREDICTION
=
2
,
NB_PREDICTION_TYPES
=
3
,
}
DUALPREDMODE_TYPE
;
#endif
/* CONFIG_DUALPRED */
typedef
struct
VP8_COMMON_RTCD
{
...
...
@@ -151,9 +147,7 @@ typedef struct VP8Common
/* profile settings */
int
experimental
;
int
mb_no_coeff_skip
;
#if CONFIG_DUALPRED
DUALPREDMODE_TYPE
dual_pred_mode
;
#endif
/* CONFIG_DUALPRED */
int
no_lpf
;
int
use_bilinear_mc_filter
;
int
full_pixel
;
...
...
@@ -237,9 +231,7 @@ typedef struct VP8Common
vp8_prob
ref_pred_probs
[
PREDICTION_PROBS
];
vp8_prob
mod_refprobs
[
MAX_REF_FRAMES
][
PREDICTION_PROBS
];
#if CONFIG_DUALPRED
vp8_prob
prob_dualpred
[
DUAL_PRED_CONTEXTS
];
#endif
/* CONFIG_DUALPRED */
FRAME_CONTEXT
lfc_a
;
/* last alt ref entropy */
FRAME_CONTEXT
lfc
;
/* last frame entropy */
...
...
vp8/common/recon.h
View file @
29e4d7e8
...
...
@@ -49,7 +49,6 @@ extern prototype_copy_block(vp8_recon_copy16x16);
#endif
extern
prototype_copy_block
(
vp8_recon_copy8x8
);
#if CONFIG_DUALPRED
#ifndef vp8_recon_avg16x16
#define vp8_recon_avg16x16 vp8_avg_mem16x16_c
#endif
...
...
@@ -59,7 +58,6 @@ extern prototype_copy_block(vp8_recon_avg16x16);
#define vp8_recon_avg8x8 vp8_avg_mem8x8_c
#endif
extern
prototype_copy_block
(
vp8_recon_avg8x8
);
#endif
/* CONFIG_DUALPRED */
#ifndef vp8_recon_copy8x4
#define vp8_recon_copy8x4 vp8_copy_mem8x4_c
...
...
@@ -160,10 +158,8 @@ typedef struct vp8_recon_rtcd_vtable
{
vp8_copy_block_fn_t
copy16x16
;
vp8_copy_block_fn_t
copy8x8
;
#if CONFIG_DUALPRED
vp8_copy_block_fn_t
avg16x16
;
vp8_copy_block_fn_t
avg8x8
;
#endif
/* CONFIG_DUALPRED */
vp8_copy_block_fn_t
copy8x4
;
vp8_recon_fn_t
recon
;
vp8_recon_fn_t
recon_uv
;
...
...
vp8/common/reconinter.c
View file @
29e4d7e8
...
...
@@ -62,7 +62,6 @@ void vp8_copy_mem16x16_c(
}
#if CONFIG_DUALPRED
void
vp8_avg_mem16x16_c
(
unsigned
char
*
src
,
int
src_stride
,
...
...
@@ -84,7 +83,6 @@ void vp8_avg_mem16x16_c(
dst
+=
dst_stride
;
}
}
#endif
/* CONFIG_DUALPRED */
void
vp8_copy_mem8x8_c
(
unsigned
char
*
src
,
...
...
@@ -116,7 +114,6 @@ void vp8_copy_mem8x8_c(
}
#if CONFIG_DUALPRED
void
vp8_avg_mem8x8_c
(
unsigned
char
*
src
,
int
src_stride
,
...
...
@@ -138,7 +135,6 @@ void vp8_avg_mem8x8_c(
dst
+=
dst_stride
;
}
}
#endif
/* CONFIG_DUALPRED */
void
vp8_copy_mem8x4_c
(
unsigned
char
*
src
,
...
...
@@ -478,7 +474,6 @@ void vp8_build_inter16x16_predictors_mb(MACROBLOCKD *x,
}
#if CONFIG_DUALPRED
/*
* This function should be called after an initial call to
* vp8_build_inter16x16_predictors_mb() or _mby()/_mbuv().
...
...
@@ -544,7 +539,6 @@ void vp8_build_2nd_inter16x16_predictors_mb(MACROBLOCKD *x,
RECON_INVOKE
(
&
x
->
rtcd
->
recon
,
avg8x8
)(
vptr
,
pre_stride
,
dst_v
,
dst_uvstride
);
}
}
#endif
/* CONFIG_DUALPRED */
static
void
build_inter4x4_predictors_mb
(
MACROBLOCKD
*
x
)
{
...
...
@@ -665,7 +659,7 @@ void vp8_build_inter_predictors_mb(MACROBLOCKD *x)
{
vp8_build_inter16x16_predictors_mb
(
x
,
x
->
predictor
,
&
x
->
predictor
[
256
],
&
x
->
predictor
[
320
],
16
,
8
);
#if CONFIG_DUALPRED
if
(
x
->
mode_info_context
->
mbmi
.
second_ref_frame
)
{
/* 256 = offset of U plane in Y+U+V buffer;
...
...
@@ -675,7 +669,6 @@ void vp8_build_inter_predictors_mb(MACROBLOCKD *x)
&
x
->
predictor
[
256
],
&
x
->
predictor
[
320
],
16
,
8
);
}
#endif
/* CONFIG_DUALPRED */
}
else
{
...
...
vp8/common/subpixel.h
View file @
29e4d7e8
...
...
@@ -34,7 +34,6 @@ extern prototype_subpixel_predict(vp8_subpix_sixtap16x16);
#endif
extern
prototype_subpixel_predict
(
vp8_subpix_sixtap8x8
);
#if CONFIG_DUALPRED
#ifndef vp8_subpix_sixtap_avg16x16
#define vp8_subpix_sixtap_avg16x16 vp8_sixtap_predict_avg16x16_c
#endif
...
...
@@ -44,8 +43,6 @@ extern prototype_subpixel_predict(vp8_subpix_sixtap_avg16x16);
#define vp8_subpix_sixtap_avg8x8 vp8_sixtap_predict_avg8x8_c
#endif
extern
prototype_subpixel_predict
(
vp8_subpix_sixtap_avg8x8
);
#endif
/* CONFIG_DUALPRED */
#ifndef vp8_subpix_sixtap8x4
#define vp8_subpix_sixtap8x4 vp8_sixtap_predict8x4_c
#endif
...
...
@@ -66,7 +63,6 @@ extern prototype_subpixel_predict(vp8_subpix_bilinear16x16);
#endif
extern
prototype_subpixel_predict
(
vp8_subpix_bilinear8x8
);
#if CONFIG_DUALPRED
#ifndef vp8_subpix_bilinear_avg16x16
#define vp8_subpix_bilinear_avg16x16 vp8_bilinear_predict_avg16x16_c
#endif
...
...
@@ -76,7 +72,6 @@ extern prototype_subpixel_predict(vp8_subpix_bilinear_avg16x16);
#define vp8_subpix_bilinear_avg8x8 vp8_bilinear_predict_avg8x8_c
#endif
extern
prototype_subpixel_predict
(
vp8_subpix_bilinear_avg8x8
);
#endif
/* CONFIG_DUALPRED */
#ifndef vp8_subpix_bilinear8x4
#define vp8_subpix_bilinear8x4 vp8_bilinear_predict8x4_c
...
...
@@ -93,18 +88,14 @@ typedef struct
{
vp8_subpix_fn_t
sixtap16x16
;
vp8_subpix_fn_t
sixtap8x8
;
#if CONFIG_DUALPRED
vp8_subpix_fn_t
sixtap_avg16x16
;
vp8_subpix_fn_t
sixtap_avg8x8
;
#endif
/* CONFIG_DUALPRED */
vp8_subpix_fn_t
sixtap8x4
;
vp8_subpix_fn_t
sixtap4x4
;
vp8_subpix_fn_t
bilinear16x16
;
vp8_subpix_fn_t
bilinear8x8
;
#if CONFIG_DUALPRED
vp8_subpix_fn_t
bilinear_avg16x16
;
vp8_subpix_fn_t
bilinear_avg8x8
;
#endif
/* CONFIG_DUALPRED */
vp8_subpix_fn_t
bilinear8x4
;
vp8_subpix_fn_t
bilinear4x4
;
}
vp8_subpix_rtcd_vtable_t
;
...
...
vp8/decoder/decodemv.c
View file @
29e4d7e8
...
...
@@ -416,7 +416,6 @@ static void mb_mode_mv_init(VP8D_COMP *pbi)
// frame prediction fails.
compute_mod_refprobs
(
cm
);
#if CONFIG_DUALPRED
pbi
->
common
.
dual_pred_mode
=
vp8_read
(
bc
,
128
);
if
(
cm
->
dual_pred_mode
)
cm
->
dual_pred_mode
+=
vp8_read
(
bc
,
128
);
...
...
@@ -426,7 +425,6 @@ static void mb_mode_mv_init(VP8D_COMP *pbi)
for
(
i
=
0
;
i
<
DUAL_PRED_CONTEXTS
;
i
++
)
cm
->
prob_dualpred
[
i
]
=
(
vp8_prob
)
vp8_read_literal
(
bc
,
8
);
}
#endif
/* CONFIG_DUALPRED */
if
(
vp8_read_bit
(
bc
))
{
...
...
@@ -541,9 +539,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
mb_to_top_edge
-=
LEFT_TOP_MARGIN
;
mb_to_bottom_edge
+=
RIGHT_BOTTOM_MARGIN
;
mbmi
->
need_to_clamp_mvs
=
0
;
#if CONFIG_DUALPRED
mbmi
->
second_ref_frame
=
0
;
#endif
/* CONFIG_DUALPRED */
/* Distance of Mb to the various image edges.
* These specified to 8th pel as they are always compared to MV values that are in 1/8th pel units
*/
...
...
@@ -732,7 +728,6 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
propagate_mv:
/* same MV throughout */
#if CONFIG_DUALPRED
if
(
cm
->
dual_pred_mode
==
DUAL_PREDICTION_ONLY
||
(
cm
->
dual_pred_mode
==
HYBRID_PREDICTION
&&
vp8_read
(
bc
,
get_pred_prob
(
cm
,
xd
,
PRED_DUAL
)))
)
...
...
@@ -776,7 +771,6 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
break
;
}
}
#endif
/* CONFIG_DUALPRED */
#if CONFIG_ERROR_CONCEALMENT
if
(
pbi
->
ec_enabled
)
...
...
vp8/decoder/decodframe.c
View file @
29e4d7e8
...
...
@@ -134,14 +134,13 @@ static void skip_recon_mb(VP8D_COMP *pbi, MACROBLOCKD *xd)
vp8_build_inter16x16_predictors_mb
(
xd
,
xd
->
dst
.
y_buffer
,
xd
->
dst
.
u_buffer
,
xd
->
dst
.
v_buffer
,
xd
->
dst
.
y_stride
,
xd
->
dst
.
uv_stride
);
#if CONFIG_DUALPRED
if
(
xd
->
mode_info_context
->
mbmi
.
second_ref_frame
)
{
vp8_build_2nd_inter16x16_predictors_mb
(
xd
,
xd
->
dst
.
y_buffer
,
xd
->
dst
.
u_buffer
,
xd
->
dst
.
v_buffer
,
xd
->
dst
.
y_stride
,
xd
->
dst
.
uv_stride
);
}
#endif
/* CONFIG_DUALPRED */
}
#ifdef DEC_DEBUG
if
(
dec_debug
)
{
...
...
@@ -571,7 +570,6 @@ decode_sb_row(VP8D_COMP *pbi, VP8_COMMON *pc, int mbrow, MACROBLOCKD *xd)
xd
->
pre
.
u_buffer
=
pc
->
yv12_fb
[
ref_fb_idx
].
u_buffer
+
recon_uvoffset
;
xd
->
pre
.
v_buffer
=
pc
->
yv12_fb
[
ref_fb_idx
].
v_buffer
+
recon_uvoffset
;
#if CONFIG_DUALPRED
if
(
xd
->
mode_info_context
->
mbmi
.
second_ref_frame
)
{
int
second_ref_fb_idx
;
...
...
@@ -592,7 +590,6 @@ decode_sb_row(VP8D_COMP *pbi, VP8_COMMON *pc, int mbrow, MACROBLOCKD *xd)
xd
->
second_pre
.
v_buffer
=
pc
->
yv12_fb
[
second_ref_fb_idx
].
v_buffer
+
recon_uvoffset
;
}
#endif
/* CONFIG_DUALPRED */
if
(
xd
->
mode_info_context
->
mbmi
.
ref_frame
!=
INTRA_FRAME
)
{
...
...
@@ -697,7 +694,6 @@ decode_mb_row(VP8D_COMP *pbi, VP8_COMMON *pc, int mb_row, MACROBLOCKD *xd)
xd
->
pre
.
u_buffer
=
pc
->
yv12_fb
[
ref_fb_idx
].
u_buffer
+
recon_uvoffset
;
xd
->
pre
.
v_buffer
=
pc
->
yv12_fb
[
ref_fb_idx
].
v_buffer
+
recon_uvoffset
;
#if CONFIG_DUALPRED
if
(
xd
->
mode_info_context
->
mbmi
.
second_ref_frame
)
{
int
second_ref_fb_idx
;
...
...
@@ -714,7 +710,6 @@ decode_mb_row(VP8D_COMP *pbi, VP8_COMMON *pc, int mb_row, MACROBLOCKD *xd)
xd
->
second_pre
.
u_buffer
=
pc
->
yv12_fb
[
second_ref_fb_idx
].
u_buffer
+
recon_uvoffset
;
xd
->
second_pre
.
v_buffer
=
pc
->
yv12_fb
[
second_ref_fb_idx
].
v_buffer
+
recon_uvoffset
;
}
#endif
/* CONFIG_DUALPRED */
if
(
xd
->
mode_info_context
->
mbmi
.
ref_frame
!=
INTRA_FRAME
)
{
...
...
@@ -964,10 +959,8 @@ static void init_frame(VP8D_COMP *pbi)
xd
->
subpixel_predict8x4
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
sixtap8x4
);
xd
->
subpixel_predict8x8
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
sixtap8x8
);
xd
->
subpixel_predict16x16
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
sixtap16x16
);
#if CONFIG_DUALPRED
xd
->
subpixel_predict_avg8x8
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
sixtap_avg8x8
);
xd
->
subpixel_predict_avg16x16
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
sixtap_avg16x16
);
#endif
/* CONFIG_DUALPRED */
}
else
{
...
...
@@ -975,10 +968,8 @@ static void init_frame(VP8D_COMP *pbi)
xd
->
subpixel_predict8x4
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
bilinear8x4
);
xd
->
subpixel_predict8x8
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
bilinear8x8
);
xd
->
subpixel_predict16x16
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
bilinear16x16
);
#if CONFIG_DUALPRED
xd
->
subpixel_predict_avg8x8
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
bilinear_avg8x8
);
xd
->
subpixel_predict_avg16x16
=
SUBPIX_INVOKE
(
RTCD_VTABLE
(
subpix
),
bilinear_avg16x16
);
#endif
/* CONFIG_DUALPRED */
}
if
(
pbi
->
decoded_key_frame
&&
pbi
->
ec_enabled
&&
!
pbi
->
ec_active
)
...
...
vp8/decoder/threading.c
View file @
29e4d7e8
...
...
@@ -49,10 +49,8 @@ static void setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd, MB_ROW_D
mbd
->
subpixel_predict8x4
=
xd
->
subpixel_predict8x4
;
mbd
->
subpixel_predict8x8
=
xd
->
subpixel_predict8x8
;
mbd
->
subpixel_predict16x16
=
xd
->
subpixel_predict16x16
;
#if CONFIG_DUALPRED
mbd
->
subpixel_predict_avg8x8
=
xd
->
subpixel_predict_avg8x8
;
mbd
->
subpixel_predict_avg16x16
=
xd
->
subpixel_predict_avg16x16
;
#endif
/* CONFIG_DUALPRED */
mbd
->
mode_info_context
=
pc
->
mi
+
pc
->
mode_info_stride
*
(
i
+
1
);
mbd
->
mode_info_stride
=
pc
->
mode_info_stride
;
...
...
vp8/encoder/bitstream.c
View file @
29e4d7e8
...
...
@@ -967,9 +967,7 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
const
MV_CONTEXT
*
mvc
=
pc
->
fc
.
mvc
;
MACROBLOCKD
*
xd
=
&
cpi
->
mb
.
e_mbd
;
#if CONFIG_DUALPRED
int
i
;
#endif
int
pred_context
;
MODE_INFO
*
m
=
pc
->
mi
;
...
...
@@ -1022,7 +1020,6 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
vp8_write_literal
(
w
,
pc
->
prob_last_coded
,
8
);
vp8_write_literal
(
w
,
pc
->
prob_gf_coded
,
8
);
#if CONFIG_DUALPRED
if
(
cpi
->
common
.
dual_pred_mode
==
HYBRID_PREDICTION
)
{
vp8_write
(
w
,
1
,
128
);
...
...
@@ -1052,7 +1049,6 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
vp8_write
(
w
,
1
,
128
);
vp8_write
(
w
,
0
,
128
);
}
#endif
/* CONFIG_DUALPRED */
update_mbintra_mode_probs
(
cpi
);
...
...
@@ -1220,7 +1216,7 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
#endif
write_mv
(
w
,
&
mi
->
mv
.
as_mv
,
&
best_mv
,
mvc
);
#if CONFIG_DUALPRED
if
(
cpi
->
common
.
dual_pred_mode
==
HYBRID_PREDICTION
)
{
vp8_write
(
w
,
...
...
@@ -1239,7 +1235,6 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
cpi
->
common
.
ref_frame_sign_bias
);
write_mv
(
w
,
&
mi
->
second_mv
.
as_mv
,
&
best_mv
,
mvc
);
}
#endif
/* CONFIG_DUALPRED */
break
;
case
SPLITMV
:
...
...
@@ -1288,14 +1283,12 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
}
break
;
default:
#if CONFIG_DUALPRED
if
(
cpi
->
common
.
dual_pred_mode
==
HYBRID_PREDICTION
)
{
vp8_write
(
w
,
mi
->
second_ref_frame
!=
INTRA_FRAME
,
get_pred_prob
(
pc
,
xd
,
PRED_DUAL
)
);
}
#endif
/* CONFIG_DUALPRED */
break
;
}
}
...
...
@@ -1326,9 +1319,7 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
const
MV_CONTEXT
*
mvc
=
pc
->
fc
.
mvc
;
MACROBLOCKD
*
xd
=
&
cpi
->
mb
.
e_mbd
;
#if CONFIG_DUALPRED
int
i
;
#endif
int
pred_context
;
...
...
@@ -1378,7 +1369,6 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
vp8_write_literal
(
w
,
pc
->
prob_last_coded
,
8
);
vp8_write_literal
(
w
,
pc
->
prob_gf_coded
,
8
);
#if CONFIG_DUALPRED
if
(
cpi
->
common
.
dual_pred_mode
==
HYBRID_PREDICTION
)
{
vp8_write
(
w
,
1
,
128
);
...
...
@@ -1408,7 +1398,6 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
vp8_write
(
w
,
1
,
128
);
vp8_write
(
w
,
0
,
128
);
}
#endif
/* CONFIG_DUALPRED */
update_mbintra_mode_probs
(
cpi
);
...
...
@@ -1556,7 +1545,7 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
#endif
write_mv
(
w
,
&
mi
->
mv
.
as_mv
,
&
best_mv
,
mvc
);
#if CONFIG_DUALPRED
if
(
cpi
->
common
.
dual_pred_mode
==
HYBRID_PREDICTION
)
{
vp8_write
(
w
,
mi
->
second_ref_frame
!=
INTRA_FRAME
,
...
...
@@ -1574,7 +1563,6 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
cpi
->
common
.
ref_frame_sign_bias
);
write_mv
(
w
,
&
mi
->
second_mv
.
as_mv
,
&
best_mv
,
mvc
);
}
#endif
/* CONFIG_DUALPRED */
break
;
case
SPLITMV
:
{
...
...
@@ -1622,13 +1610,11 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
}
break
;
default:
#if CONFIG_DUALPRED
if
(
cpi
->
common
.
dual_pred_mode
==
HYBRID_PREDICTION
)
{
vp8_write
(
w
,
mi
->
second_ref_frame
!=
INTRA_FRAME
,
get_pred_prob
(
pc
,
xd
,
PRED_DUAL
)
);
}
#endif
/* CONFIG_DUALPRED */
break
;
}
}
...
...
vp8/encoder/encodeframe.c
View file @
29e4d7e8
...
...
@@ -1214,12 +1214,10 @@ static void encode_frame_internal(VP8_COMP *cpi)
&
cpi
->
common
.
rtcd
.
subpix
,
sixtap8x8
);
xd
->
subpixel_predict16x16
=
SUBPIX_INVOKE
(
&
cpi
->
common
.
rtcd
.
subpix
,
sixtap16x16
);
#if CONFIG_DUALPRED
xd
->
subpixel_predict_avg8x8
=
SUBPIX_INVOKE
(
&
cpi
->
common
.
rtcd
.
subpix
,
sixtap_avg8x8
);
xd
->
subpixel_predict_avg16x16
=
SUBPIX_INVOKE
(
&
cpi
->
common
.
rtcd
.
subpix
,
sixtap_avg16x16
);
#endif
/* CONFIG_DUALPRED */
}
else
{
...
...
@@ -1231,12 +1229,10 @@ static void encode_frame_internal(VP8_COMP *cpi)
&
cpi
->
common
.
rtcd
.
subpix
,
bilinear8x8
);
xd
->
subpixel_predict16x16
=
SUBPIX_INVOKE
(
&
cpi
->
common
.
rtcd
.
subpix
,
bilinear16x16
);
#if CONFIG_DUALPRED
xd
->
subpixel_predict_avg8x8
=
SUBPIX_INVOKE
(
&
cpi
->
common
.
rtcd
.
subpix
,
bilinear_avg8x8
);
xd
->
subpixel_predict_avg16x16
=
SUBPIX_INVOKE
(
&
cpi
->
common
.
rtcd
.
subpix
,
bilinear_avg16x16
);
#endif
/* CONFIG_DUALPRED */
}
// Reset frame count of inter 0,0 motion vector usage.
...
...
@@ -1276,11 +1272,10 @@ static void encode_frame_internal(VP8_COMP *cpi)
// re-initencode frame context.
init_encode_frame_mb_context
(
cpi
);
#if CONFIG_DUALPRED
cpi
->
rd_single_diff
=
cpi
->
rd_dual_diff
=
cpi
->
rd_hybrid_diff
=
0
;
vpx_memset
(
cpi
->
single_pred_count
,
0
,
sizeof
(
cpi
->
single_pred_count
));
vpx_memset
(
cpi
->
dual_pred_count
,
0
,
sizeof
(
cpi
->
dual_pred_count
));
#endif
/* CONFIG_DUALPRED */
{
struct
vpx_usec_timer
emr_timer
;
...
...
@@ -1438,7 +1433,6 @@ static void encode_frame_internal(VP8_COMP *cpi)
void
vp8_encode_frame
(
VP8_COMP
*
cpi
)
{
#if CONFIG_DUALPRED
if
(
cpi
->
sf
.
RD
)
{
int
frame_type
,
pred_type
;
...
...
@@ -1561,7 +1555,6 @@ void vp8_encode_frame(VP8_COMP *cpi)
}
}
else
#endif
/* CONFIG_DUALPRED */
{
encode_frame_internal
(
cpi
);
}
...
...
@@ -1807,7 +1800,7 @@ int vp8cx_encode_inter_macroblock
}
vp8_rd_pick_inter_mode
(
cpi
,
x
,
recon_yoffset
,
recon_uvoffset
,
&
rate
,