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
3b9ec31e
Commit
3b9ec31e
authored
May 31, 2013
by
Dmitry Kovalev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replacing memcpy with struct assignment.
Change-Id: Ib557cc6351404b9e178e95a545883eb3666f11f0
parent
317d832d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
48 deletions
+34
-48
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_encodeframe.c
+5
-11
vp9/encoder/vp9_firstpass.c
vp9/encoder/vp9_firstpass.c
+10
-12
vp9/encoder/vp9_rdopt.c
vp9/encoder/vp9_rdopt.c
+19
-25
No files found.
vp9/encoder/vp9_encodeframe.c
View file @
3b9ec31e
...
...
@@ -356,8 +356,7 @@ static void update_state(VP9_COMP *cpi,
if
((
xd
->
mb_to_right_edge
>>
(
3
+
LOG2_MI_SIZE
))
+
bw
>
x_idx
&&
(
xd
->
mb_to_bottom_edge
>>
(
3
+
LOG2_MI_SIZE
))
+
bh
>
y
)
{
MODE_INFO
*
mi_addr
=
xd
->
mode_info_context
+
x_idx
+
y
*
mis
;
vpx_memcpy
(
mi_addr
,
mi
,
sizeof
(
MODE_INFO
));
*
mi_addr
=
*
mi
;
}
}
}
...
...
@@ -367,15 +366,10 @@ static void update_state(VP9_COMP *cpi,
ctx
->
txfm_rd_diff
[
ALLOW_32X32
]
=
ctx
->
txfm_rd_diff
[
ALLOW_16X16
];
}
if
(
mbmi
->
ref_frame
!=
INTRA_FRAME
&&
mbmi
->
sb_type
<
BLOCK_SIZE_SB8X8
)
{
vpx_memcpy
(
x
->
partition_info
,
&
ctx
->
partition_info
,
sizeof
(
PARTITION_INFO
));
mbmi
->
mv
[
0
].
as_int
=
x
->
partition_info
->
bmi
[
3
].
mv
.
as_int
;
mbmi
->
mv
[
1
].
as_int
=
x
->
partition_info
->
bmi
[
3
].
second_mv
.
as_int
;
if
(
mbmi
->
ref_frame
!=
INTRA_FRAME
&&
mbmi
->
sb_type
<
BLOCK_SIZE_SB8X8
)
{
*
x
->
partition_info
=
ctx
->
partition_info
;
mbmi
->
mv
[
0
].
as_int
=
x
->
partition_info
->
bmi
[
3
].
mv
.
as_int
;
mbmi
->
mv
[
1
].
as_int
=
x
->
partition_info
->
bmi
[
3
].
second_mv
.
as_int
;
}
x
->
skip
=
ctx
->
skip
;
...
...
vp9/encoder/vp9_firstpass.c
View file @
3b9ec31e
...
...
@@ -746,9 +746,7 @@ void vp9_first_pass(VP9_COMP *cpi) {
-
cpi
->
source
->
ts_start
);
// don't want to do output stats with a stack variable!
memcpy
(
&
cpi
->
twopass
.
this_frame_stats
,
&
fps
,
sizeof
(
FIRSTPASS_STATS
));
cpi
->
twopass
.
this_frame_stats
=
fps
;
output_stats
(
cpi
,
cpi
->
output_pkt_list
,
&
cpi
->
twopass
.
this_frame_stats
);
accumulate_stats
(
&
cpi
->
twopass
.
total_stats
,
&
fps
);
}
...
...
@@ -1673,7 +1671,7 @@ static void define_gf_group(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
break
;
}
vpx_memcpy
(
this_frame
,
&
next_frame
,
sizeof
(
*
this_frame
))
;
*
this_frame
=
next_frame
;
old_boost_score
=
boost_score
;
}
...
...
@@ -2107,14 +2105,14 @@ void vp9_second_pass(VP9_COMP *cpi) {
// keyframe and section processing !
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
))
;
this_frame_copy
=
this_frame
;
find_next_key_frame
(
cpi
,
&
this_frame_copy
);
}
// Is this a GF / ARF (Note that a KF is always also a GF)
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
))
;
this_frame_copy
=
this_frame
;
#if CONFIG_MULTIPLE_ARF
if
(
cpi
->
multi_arf_enabled
)
{
...
...
@@ -2136,14 +2134,14 @@ void vp9_second_pass(VP9_COMP *cpi) {
// Assign a standard frames worth of bits from those allocated
// to the GF group
int
bak
=
cpi
->
per_frame_bandwidth
;
vpx_memcpy
(
&
this_frame_copy
,
&
this_frame
,
sizeof
(
this_frame
))
;
this_frame_copy
=
this_frame
;
assign_std_frame_bits
(
cpi
,
&
this_frame_copy
);
cpi
->
per_frame_bandwidth
=
bak
;
}
}
else
{
// Otherwise this is an ordinary frame
// Assign bits from those allocated to the GF group
vpx_memcpy
(
&
this_frame_copy
,
&
this_frame
,
sizeof
(
this_frame
))
;
this_frame_copy
=
this_frame
;
assign_std_frame_bits
(
cpi
,
&
this_frame_copy
);
}
...
...
@@ -2201,7 +2199,7 @@ static int test_candidate_kf(VP9_COMP *cpi,
double
decay_accumulator
=
1
.
0
;
double
next_iiratio
;
vpx_memcpy
(
&
local_next_frame
,
next_frame
,
sizeof
(
*
next_frame
))
;
local_next_frame
=
*
next_frame
;
// Note the starting file position so we can reset to it
start_pos
=
cpi
->
twopass
.
stats_in
;
...
...
@@ -2294,7 +2292,7 @@ static void find_next_key_frame(VP9_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
))
;
first_frame
=
*
this_frame
;
cpi
->
twopass
.
kf_group_bits
=
0
;
// Total bits available to kf group
cpi
->
twopass
.
kf_group_error_left
=
0
;
// Group modified error score.
...
...
@@ -2313,7 +2311,7 @@ static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
kf_group_coded_err
+=
this_frame
->
coded_error
;
// load a the next frame's stats
vpx_memcpy
(
&
last_frame
,
this_frame
,
sizeof
(
*
this_frame
))
;
last_frame
=
*
this_frame
;
input_stats
(
cpi
,
this_frame
);
// Provided that we are not at the end of the file...
...
...
@@ -2366,7 +2364,7 @@ static void find_next_key_frame(VP9_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
))
;
tmp_frame
=
first_frame
;
// Reset to the start of the group
reset_fpf_position
(
cpi
,
start_position
);
...
...
vp9/encoder/vp9_rdopt.c
View file @
3b9ec31e
...
...
@@ -1719,11 +1719,11 @@ static void store_coding_context(MACROBLOCK *x, PICK_MODE_CONTEXT *ctx,
// restored if we decide to encode this way
ctx
->
skip
=
x
->
skip
;
ctx
->
best_mode_index
=
mode_index
;
vpx_memcpy
(
&
ctx
->
mic
,
xd
->
mode_info_context
,
sizeof
(
MODE_INFO
));
ctx
->
mic
=
*
xd
->
mode_info_context
;
if
(
partition
)
vpx_memcpy
(
&
ctx
->
partition_info
,
partition
,
sizeof
(
PARTITION_INFO
));
ctx
->
partition_info
=
*
partition
;
ctx
->
best_ref_mv
.
as_int
=
ref_mv
->
as_int
;
ctx
->
second_best_ref_mv
.
as_int
=
second_ref_mv
->
as_int
;
...
...
@@ -2443,7 +2443,7 @@ void vp9_rd_pick_intra_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
xd
->
mode_info_context
->
mbmi
.
mode
=
mode
;
}
vpx_memcpy
(
&
ctx
->
mic
,
xd
->
mode_info_context
,
sizeof
(
MODE_INFO
))
;
ctx
->
mic
=
*
xd
->
mode_info_context
;
}
int64_t
vp9_rd_pick_inter_mode_sb
(
VP9_COMP
*
cpi
,
MACROBLOCK
*
x
,
...
...
@@ -2811,12 +2811,10 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
tmp_best_ratey
=
rate_y
;
tmp_best_distortion
=
distortion
;
tmp_best_skippable
=
skippable
;
vpx_memcpy
(
&
tmp_best_mbmode
,
mbmi
,
sizeof
(
MB_MODE_INFO
));
vpx_memcpy
(
&
tmp_best_partition
,
x
->
partition_info
,
sizeof
(
PARTITION_INFO
));
for
(
i
=
0
;
i
<
4
;
i
++
)
{
tmp_best_mbmode
=
*
mbmi
;
tmp_best_partition
=
*
x
->
partition_info
;
for
(
i
=
0
;
i
<
4
;
i
++
)
tmp_best_bmodes
[
i
]
=
xd
->
mode_info_context
->
bmi
[
i
];
}
pred_exists
=
1
;
}
}
// switchable_filter_index loop
...
...
@@ -2844,12 +2842,10 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
rate_y
=
tmp_best_ratey
;
distortion
=
tmp_best_distortion
;
skippable
=
tmp_best_skippable
;
vpx_memcpy
(
mbmi
,
&
tmp_best_mbmode
,
sizeof
(
MB_MODE_INFO
));
vpx_memcpy
(
x
->
partition_info
,
&
tmp_best_partition
,
sizeof
(
PARTITION_INFO
));
for
(
i
=
0
;
i
<
4
;
i
++
)
{
*
mbmi
=
tmp_best_mbmode
;
*
x
->
partition_info
=
tmp_best_partition
;
for
(
i
=
0
;
i
<
4
;
i
++
)
xd
->
mode_info_context
->
bmi
[
i
]
=
tmp_best_bmodes
[
i
];
}
}
rate2
+=
rate
;
...
...
@@ -3003,14 +2999,12 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
*
returnrate
=
rate2
;
*
returndistortion
=
distortion2
;
best_rd
=
this_rd
;
vpx_memcpy
(
&
best_mbmode
,
mbmi
,
sizeof
(
MB_MODE_INFO
))
;
vpx_memcpy
(
&
best_partition
,
x
->
partition_info
,
sizeof
(
PARTITION_INFO
))
;
best_mbmode
=
*
mbmi
;
best_partition
=
*
x
->
partition_info
;
if
(
this_mode
==
I4X4_PRED
||
this_mode
==
SPLITMV
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
if
(
this_mode
==
I4X4_PRED
||
this_mode
==
SPLITMV
)
for
(
i
=
0
;
i
<
4
;
i
++
)
best_bmodes
[
i
]
=
xd
->
mode_info_context
->
bmi
[
i
];
}
}
}
#if 0
// Testing this mode gave rise to an improvement in best error score.
...
...
@@ -3167,12 +3161,11 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
}
// macroblock modes
vpx_memcpy
(
mbmi
,
&
best_mbmode
,
sizeof
(
MB_MODE_INFO
))
;
*
mbmi
=
best_mbmode
;
if
(
best_mbmode
.
ref_frame
==
INTRA_FRAME
&&
best_mbmode
.
sb_type
<
BLOCK_SIZE_SB8X8
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
xd
->
mode_info_context
->
bmi
[
i
].
as_mode
=
best_bmodes
[
i
].
as_mode
;
}
}
if
(
best_mbmode
.
ref_frame
!=
INTRA_FRAME
&&
...
...
@@ -3180,12 +3173,13 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
for
(
i
=
0
;
i
<
4
;
i
++
)
xd
->
mode_info_context
->
bmi
[
i
].
as_mv
[
0
].
as_int
=
best_bmodes
[
i
].
as_mv
[
0
].
as_int
;
if
(
mbmi
->
second_ref_frame
>
0
)
for
(
i
=
0
;
i
<
4
;
i
++
)
xd
->
mode_info_context
->
bmi
[
i
].
as_mv
[
1
].
as_int
=
best_bmodes
[
i
].
as_mv
[
1
].
as_int
;
vpx_memcpy
(
x
->
partition_info
,
&
best_partition
,
sizeof
(
PARTITION_INFO
))
;
*
x
->
partition_info
=
best_partition
;
mbmi
->
mv
[
0
].
as_int
=
x
->
partition_info
->
bmi
[
3
].
mv
.
as_int
;
mbmi
->
mv
[
1
].
as_int
=
x
->
partition_info
->
bmi
[
3
].
second_mv
.
as_int
;
...
...
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