Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
cac54404
Commit
cac54404
authored
Jan 26, 2011
by
Yunqing Wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove copies of same functions
Reduce the code size. Change-Id: I2e1998557a3c8776e262c442fd758c25e17aff7a
parent
dcaaadd8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
100 deletions
+48
-100
vp8/common/findnearmv.c
vp8/common/findnearmv.c
+3
-39
vp8/common/findnearmv.h
vp8/common/findnearmv.h
+35
-4
vp8/encoder/onyx_int.h
vp8/encoder/onyx_int.h
+1
-6
vp8/encoder/rdopt.c
vp8/encoder/rdopt.c
+9
-51
No files found.
vp8/common/findnearmv.c
View file @
cac54404
...
...
@@ -16,42 +16,6 @@
/* Predict motion vectors using those from already-decoded nearby blocks.
Note that we only consider one 4x4 subblock from each candidate 16x16
macroblock. */
typedef
union
{
unsigned
int
as_int
;
MV
as_mv
;
}
int_mv
;
/* facilitates rapid equality tests */
static
void
mv_bias
(
const
MODE_INFO
*
x
,
int
refframe
,
int_mv
*
mvp
,
const
int
*
ref_frame_sign_bias
)
{
MV
xmv
;
xmv
=
x
->
mbmi
.
mv
.
as_mv
;
if
(
ref_frame_sign_bias
[
x
->
mbmi
.
ref_frame
]
!=
ref_frame_sign_bias
[
refframe
])
{
xmv
.
row
*=
-
1
;
xmv
.
col
*=
-
1
;
}
mvp
->
as_mv
=
xmv
;
}
void
vp8_clamp_mv
(
MV
*
mv
,
const
MACROBLOCKD
*
xd
)
{
if
(
mv
->
col
<
(
xd
->
mb_to_left_edge
-
LEFT_TOP_MARGIN
))
mv
->
col
=
xd
->
mb_to_left_edge
-
LEFT_TOP_MARGIN
;
else
if
(
mv
->
col
>
xd
->
mb_to_right_edge
+
RIGHT_BOTTOM_MARGIN
)
mv
->
col
=
xd
->
mb_to_right_edge
+
RIGHT_BOTTOM_MARGIN
;
if
(
mv
->
row
<
(
xd
->
mb_to_top_edge
-
LEFT_TOP_MARGIN
))
mv
->
row
=
xd
->
mb_to_top_edge
-
LEFT_TOP_MARGIN
;
else
if
(
mv
->
row
>
xd
->
mb_to_bottom_edge
+
RIGHT_BOTTOM_MARGIN
)
mv
->
row
=
xd
->
mb_to_bottom_edge
+
RIGHT_BOTTOM_MARGIN
;
}
void
vp8_find_near_mvs
(
MACROBLOCKD
*
xd
,
...
...
@@ -82,7 +46,7 @@ void vp8_find_near_mvs
if
(
above
->
mbmi
.
mv
.
as_int
)
{
(
++
mv
)
->
as_int
=
above
->
mbmi
.
mv
.
as_int
;
mv_bias
(
above
,
refframe
,
mv
,
ref_frame_sign_bias
);
mv_bias
(
ref_frame_sign_bias
[
above
->
mbmi
.
ref_frame
]
,
refframe
,
mv
,
ref_frame_sign_bias
);
++
cntx
;
}
...
...
@@ -97,7 +61,7 @@ void vp8_find_near_mvs
int_mv
this_mv
;
this_mv
.
as_int
=
left
->
mbmi
.
mv
.
as_int
;
mv_bias
(
left
,
refframe
,
&
this_mv
,
ref_frame_sign_bias
);
mv_bias
(
ref_frame_sign_bias
[
left
->
mbmi
.
ref_frame
]
,
refframe
,
&
this_mv
,
ref_frame_sign_bias
);
if
(
this_mv
.
as_int
!=
mv
->
as_int
)
{
...
...
@@ -119,7 +83,7 @@ void vp8_find_near_mvs
int_mv
this_mv
;
this_mv
.
as_int
=
aboveleft
->
mbmi
.
mv
.
as_int
;
mv_bias
(
aboveleft
,
refframe
,
&
this_mv
,
ref_frame_sign_bias
);
mv_bias
(
ref_frame_sign_bias
[
aboveleft
->
mbmi
.
ref_frame
]
,
refframe
,
&
this_mv
,
ref_frame_sign_bias
);
if
(
this_mv
.
as_int
!=
mv
->
as_int
)
{
...
...
vp8/common/findnearmv.h
View file @
cac54404
...
...
@@ -17,6 +17,41 @@
#include "modecont.h"
#include "treecoder.h"
typedef
union
{
unsigned
int
as_int
;
MV
as_mv
;
}
int_mv
;
/* facilitates rapid equality tests */
static
void
mv_bias
(
int
refmb_ref_frame_sign_bias
,
int
refframe
,
int_mv
*
mvp
,
const
int
*
ref_frame_sign_bias
)
{
MV
xmv
;
xmv
=
mvp
->
as_mv
;
if
(
refmb_ref_frame_sign_bias
!=
ref_frame_sign_bias
[
refframe
])
{
xmv
.
row
*=
-
1
;
xmv
.
col
*=
-
1
;
}
mvp
->
as_mv
=
xmv
;
}
#define LEFT_TOP_MARGIN (16 << 3)
#define RIGHT_BOTTOM_MARGIN (16 << 3)
static
void
vp8_clamp_mv
(
MV
*
mv
,
const
MACROBLOCKD
*
xd
)
{
if
(
mv
->
col
<
(
xd
->
mb_to_left_edge
-
LEFT_TOP_MARGIN
))
mv
->
col
=
xd
->
mb_to_left_edge
-
LEFT_TOP_MARGIN
;
else
if
(
mv
->
col
>
xd
->
mb_to_right_edge
+
RIGHT_BOTTOM_MARGIN
)
mv
->
col
=
xd
->
mb_to_right_edge
+
RIGHT_BOTTOM_MARGIN
;
if
(
mv
->
row
<
(
xd
->
mb_to_top_edge
-
LEFT_TOP_MARGIN
))
mv
->
row
=
xd
->
mb_to_top_edge
-
LEFT_TOP_MARGIN
;
else
if
(
mv
->
row
>
xd
->
mb_to_bottom_edge
+
RIGHT_BOTTOM_MARGIN
)
mv
->
row
=
xd
->
mb_to_bottom_edge
+
RIGHT_BOTTOM_MARGIN
;
}
void
vp8_find_near_mvs
(
MACROBLOCKD
*
xd
,
...
...
@@ -35,8 +70,4 @@ const B_MODE_INFO *vp8_left_bmi(const MODE_INFO *cur_mb, int b);
const
B_MODE_INFO
*
vp8_above_bmi
(
const
MODE_INFO
*
cur_mb
,
int
b
,
int
mi_stride
);
#define LEFT_TOP_MARGIN (16 << 3)
#define RIGHT_BOTTOM_MARGIN (16 << 3)
#endif
vp8/encoder/onyx_int.h
View file @
cac54404
...
...
@@ -28,6 +28,7 @@
#include "vpx/internal/vpx_codec_internal.h"
#include "mcomp.h"
#include "temporal_filter.h"
#include "findnearmv.h"
//#define SPEEDSTATS 1
#define MIN_GF_INTERVAL 4
...
...
@@ -245,12 +246,6 @@ enum
BLOCK_MAX_SEGMENTS
};
typedef
union
{
unsigned
int
as_int
;
MV
as_mv
;
}
int_mv
;
/* facilitates rapid equality tests */
typedef
struct
{
...
...
vp8/encoder/rdopt.c
View file @
cac54404
...
...
@@ -1421,48 +1421,6 @@ static int vp8_rd_pick_best_mbsegmentation(VP8_COMP *cpi, MACROBLOCK *x,
return
bsi
.
segment_rd
;
}
static
void
mv_bias
(
const
MODE_INFO
*
x
,
int
refframe
,
int_mv
*
mvp
,
const
int
*
ref_frame_sign_bias
)
{
MV
xmv
;
xmv
=
x
->
mbmi
.
mv
.
as_mv
;
if
(
ref_frame_sign_bias
[
x
->
mbmi
.
ref_frame
]
!=
ref_frame_sign_bias
[
refframe
])
{
xmv
.
row
*=
-
1
;
xmv
.
col
*=
-
1
;
}
mvp
->
as_mv
=
xmv
;
}
static
void
lf_mv_bias
(
const
int
lf_ref_frame_sign_bias
,
int
refframe
,
int_mv
*
mvp
,
const
int
*
ref_frame_sign_bias
)
{
MV
xmv
;
xmv
=
mvp
->
as_mv
;
if
(
lf_ref_frame_sign_bias
!=
ref_frame_sign_bias
[
refframe
])
{
xmv
.
row
*=
-
1
;
xmv
.
col
*=
-
1
;
}
mvp
->
as_mv
=
xmv
;
}
static
void
vp8_clamp_mv
(
MV
*
mv
,
const
MACROBLOCKD
*
xd
)
{
if
(
mv
->
col
<
(
xd
->
mb_to_left_edge
-
LEFT_TOP_MARGIN
))
mv
->
col
=
xd
->
mb_to_left_edge
-
LEFT_TOP_MARGIN
;
else
if
(
mv
->
col
>
xd
->
mb_to_right_edge
+
RIGHT_BOTTOM_MARGIN
)
mv
->
col
=
xd
->
mb_to_right_edge
+
RIGHT_BOTTOM_MARGIN
;
if
(
mv
->
row
<
(
xd
->
mb_to_top_edge
-
LEFT_TOP_MARGIN
))
mv
->
row
=
xd
->
mb_to_top_edge
-
LEFT_TOP_MARGIN
;
else
if
(
mv
->
row
>
xd
->
mb_to_bottom_edge
+
RIGHT_BOTTOM_MARGIN
)
mv
->
row
=
xd
->
mb_to_bottom_edge
+
RIGHT_BOTTOM_MARGIN
;
}
static
void
swap
(
int
*
x
,
int
*
y
)
{
int
tmp
;
...
...
@@ -1546,7 +1504,7 @@ static void quicksortsad(int arr[],int idx[], int left, int right)
}
//The improved MV prediction
static
void
vp8_mv_pred
void
vp8_mv_pred
(
VP8_COMP
*
cpi
,
MACROBLOCKD
*
xd
,
...
...
@@ -1583,21 +1541,21 @@ static void vp8_mv_pred
if
(
above
->
mbmi
.
ref_frame
!=
INTRA_FRAME
)
{
near_mvs
[
vcnt
].
as_int
=
above
->
mbmi
.
mv
.
as_int
;
mv_bias
(
above
,
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
mv_bias
(
ref_frame_sign_bias
[
above
->
mbmi
.
ref_frame
]
,
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
near_ref
[
vcnt
]
=
above
->
mbmi
.
ref_frame
;
}
vcnt
++
;
if
(
left
->
mbmi
.
ref_frame
!=
INTRA_FRAME
)
{
near_mvs
[
vcnt
].
as_int
=
left
->
mbmi
.
mv
.
as_int
;
mv_bias
(
left
,
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
mv_bias
(
ref_frame_sign_bias
[
left
->
mbmi
.
ref_frame
]
,
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
near_ref
[
vcnt
]
=
left
->
mbmi
.
ref_frame
;
}
vcnt
++
;
if
(
aboveleft
->
mbmi
.
ref_frame
!=
INTRA_FRAME
)
{
near_mvs
[
vcnt
].
as_int
=
aboveleft
->
mbmi
.
mv
.
as_int
;
mv_bias
(
aboveleft
,
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
mv_bias
(
ref_frame_sign_bias
[
aboveleft
->
mbmi
.
ref_frame
]
,
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
near_ref
[
vcnt
]
=
aboveleft
->
mbmi
.
ref_frame
;
}
vcnt
++
;
...
...
@@ -1611,7 +1569,7 @@ static void vp8_mv_pred
if
(
cpi
->
lf_ref_frame
[
mb_offset
]
!=
INTRA_FRAME
)
{
near_mvs
[
vcnt
].
as_int
=
cpi
->
lfmv
[
mb_offset
].
as_int
;
lf_
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
near_ref
[
vcnt
]
=
cpi
->
lf_ref_frame
[
mb_offset
];
}
vcnt
++
;
...
...
@@ -1620,7 +1578,7 @@ static void vp8_mv_pred
if
(
cpi
->
lf_ref_frame
[
mb_offset
-
xd
->
mode_info_stride
-
1
]
!=
INTRA_FRAME
)
{
near_mvs
[
vcnt
].
as_int
=
cpi
->
lfmv
[
mb_offset
-
xd
->
mode_info_stride
-
1
].
as_int
;
lf_
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
-
xd
->
mode_info_stride
-
1
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
-
xd
->
mode_info_stride
-
1
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
near_ref
[
vcnt
]
=
cpi
->
lf_ref_frame
[
mb_offset
-
xd
->
mode_info_stride
-
1
];
}
vcnt
++
;
...
...
@@ -1629,7 +1587,7 @@ static void vp8_mv_pred
if
(
cpi
->
lf_ref_frame
[
mb_offset
-
1
]
!=
INTRA_FRAME
)
{
near_mvs
[
vcnt
].
as_int
=
cpi
->
lfmv
[
mb_offset
-
1
].
as_int
;
lf_
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
-
1
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
-
1
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
near_ref
[
vcnt
]
=
cpi
->
lf_ref_frame
[
mb_offset
-
1
];
}
vcnt
++
;
...
...
@@ -1638,7 +1596,7 @@ static void vp8_mv_pred
if
(
cpi
->
lf_ref_frame
[
mb_offset
+
1
]
!=
INTRA_FRAME
)
{
near_mvs
[
vcnt
].
as_int
=
cpi
->
lfmv
[
mb_offset
+
1
].
as_int
;
lf_
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
+
1
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
+
1
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
near_ref
[
vcnt
]
=
cpi
->
lf_ref_frame
[
mb_offset
+
1
];
}
vcnt
++
;
...
...
@@ -1647,7 +1605,7 @@ static void vp8_mv_pred
if
(
cpi
->
lf_ref_frame
[
mb_offset
+
xd
->
mode_info_stride
+
1
]
!=
INTRA_FRAME
)
{
near_mvs
[
vcnt
].
as_int
=
cpi
->
lfmv
[
mb_offset
+
xd
->
mode_info_stride
+
1
].
as_int
;
lf_
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
+
xd
->
mode_info_stride
+
1
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
mv_bias
(
cpi
->
lf_ref_frame_sign_bias
[
mb_offset
+
xd
->
mode_info_stride
+
1
],
refframe
,
&
near_mvs
[
vcnt
],
ref_frame_sign_bias
);
near_ref
[
vcnt
]
=
cpi
->
lf_ref_frame
[
mb_offset
+
xd
->
mode_info_stride
+
1
];
}
vcnt
++
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment