Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Guillaume Martres
aom-rav1e
Commits
769c74c0
Commit
769c74c0
authored
Mar 21, 2011
by
John Koleszar
Committed by
Code Review
Mar 21, 2011
Browse files
Merge "Increase static linkage, remove unused functions"
parents
18555734
429dc676
Changes
34
Hide whitespace changes
Inline
Side-by-side
vp8/common/alloccommon.c
View file @
769c74c0
...
...
@@ -20,7 +20,7 @@
extern
void
vp8_init_scan_order_mask
();
void
vp8_
update_mode_info_border
(
MODE_INFO
*
mi
,
int
rows
,
int
cols
)
static
void
update_mode_info_border
(
MODE_INFO
*
mi
,
int
rows
,
int
cols
)
{
int
i
;
vpx_memset
(
mi
-
cols
-
2
,
0
,
sizeof
(
MODE_INFO
)
*
(
cols
+
1
));
...
...
@@ -119,7 +119,7 @@ int vp8_alloc_frame_buffers(VP8_COMMON *oci, int width, int height)
return
1
;
}
vp8_
update_mode_info_border
(
oci
->
mi
,
oci
->
mb_rows
,
oci
->
mb_cols
);
update_mode_info_border
(
oci
->
mi
,
oci
->
mb_rows
,
oci
->
mb_cols
);
return
0
;
}
...
...
vp8/common/filter.c
View file @
769c74c0
...
...
@@ -38,7 +38,7 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters[8][6]) =
{
0
,
-
1
,
12
,
123
,
-
6
,
0
},
};
void
vp8_
filter_block2d_first_pass
static
void
filter_block2d_first_pass
(
unsigned
char
*
src_ptr
,
int
*
output_ptr
,
...
...
@@ -82,7 +82,7 @@ void vp8_filter_block2d_first_pass
}
}
void
vp8_
filter_block2d_second_pass
static
void
filter_block2d_second_pass
(
int
*
src_ptr
,
unsigned
char
*
output_ptr
,
...
...
@@ -129,7 +129,7 @@ void vp8_filter_block2d_second_pass
}
void
vp8_
filter_block2d
static
void
filter_block2d
(
unsigned
char
*
src_ptr
,
unsigned
char
*
output_ptr
,
...
...
@@ -142,39 +142,13 @@ void vp8_filter_block2d
int
FData
[
9
*
4
];
/* Temp data buffer used in filtering */
/* First filter 1-D horizontally... */
vp8_
filter_block2d_first_pass
(
src_ptr
-
(
2
*
src_pixels_per_line
),
FData
,
src_pixels_per_line
,
1
,
9
,
4
,
HFilter
);
filter_block2d_first_pass
(
src_ptr
-
(
2
*
src_pixels_per_line
),
FData
,
src_pixels_per_line
,
1
,
9
,
4
,
HFilter
);
/* then filter verticaly... */
vp8_
filter_block2d_second_pass
(
FData
+
8
,
output_ptr
,
output_pitch
,
4
,
4
,
4
,
4
,
VFilter
);
filter_block2d_second_pass
(
FData
+
8
,
output_ptr
,
output_pitch
,
4
,
4
,
4
,
4
,
VFilter
);
}
void
vp8_block_variation_c
(
unsigned
char
*
src_ptr
,
int
src_pixels_per_line
,
int
*
HVar
,
int
*
VVar
)
{
int
i
,
j
;
unsigned
char
*
Ptr
=
src_ptr
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
j
=
0
;
j
<
4
;
j
++
)
{
*
HVar
+=
abs
((
int
)
Ptr
[
j
]
-
(
int
)
Ptr
[
j
+
1
]);
*
VVar
+=
abs
((
int
)
Ptr
[
j
]
-
(
int
)
Ptr
[
j
+
src_pixels_per_line
]);
}
Ptr
+=
src_pixels_per_line
;
}
}
void
vp8_sixtap_predict_c
(
unsigned
char
*
src_ptr
,
...
...
@@ -191,7 +165,7 @@ void vp8_sixtap_predict_c
HFilter
=
vp8_sub_pel_filters
[
xoffset
];
/* 6 tap */
VFilter
=
vp8_sub_pel_filters
[
yoffset
];
/* 6 tap */
vp8_
filter_block2d
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
);
filter_block2d
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
);
}
void
vp8_sixtap_predict8x8_c
(
...
...
@@ -211,11 +185,11 @@ void vp8_sixtap_predict8x8_c
VFilter
=
vp8_sub_pel_filters
[
yoffset
];
/* 6 tap */
/* First filter 1-D horizontally... */
vp8_
filter_block2d_first_pass
(
src_ptr
-
(
2
*
src_pixels_per_line
),
FData
,
src_pixels_per_line
,
1
,
13
,
8
,
HFilter
);
filter_block2d_first_pass
(
src_ptr
-
(
2
*
src_pixels_per_line
),
FData
,
src_pixels_per_line
,
1
,
13
,
8
,
HFilter
);
/* then filter verticaly... */
vp8_
filter_block2d_second_pass
(
FData
+
16
,
dst_ptr
,
dst_pitch
,
8
,
8
,
8
,
8
,
VFilter
);
filter_block2d_second_pass
(
FData
+
16
,
dst_ptr
,
dst_pitch
,
8
,
8
,
8
,
8
,
VFilter
);
}
...
...
@@ -237,11 +211,11 @@ void vp8_sixtap_predict8x4_c
VFilter
=
vp8_sub_pel_filters
[
yoffset
];
/* 6 tap */
/* First filter 1-D horizontally... */
vp8_
filter_block2d_first_pass
(
src_ptr
-
(
2
*
src_pixels_per_line
),
FData
,
src_pixels_per_line
,
1
,
9
,
8
,
HFilter
);
filter_block2d_first_pass
(
src_ptr
-
(
2
*
src_pixels_per_line
),
FData
,
src_pixels_per_line
,
1
,
9
,
8
,
HFilter
);
/* then filter verticaly... */
vp8_
filter_block2d_second_pass
(
FData
+
16
,
dst_ptr
,
dst_pitch
,
8
,
8
,
4
,
8
,
VFilter
);
filter_block2d_second_pass
(
FData
+
16
,
dst_ptr
,
dst_pitch
,
8
,
8
,
4
,
8
,
VFilter
);
}
...
...
@@ -264,10 +238,10 @@ void vp8_sixtap_predict16x16_c
VFilter
=
vp8_sub_pel_filters
[
yoffset
];
/* 6 tap */
/* First filter 1-D horizontally... */
vp8_
filter_block2d_first_pass
(
src_ptr
-
(
2
*
src_pixels_per_line
),
FData
,
src_pixels_per_line
,
1
,
21
,
16
,
HFilter
);
filter_block2d_first_pass
(
src_ptr
-
(
2
*
src_pixels_per_line
),
FData
,
src_pixels_per_line
,
1
,
21
,
16
,
HFilter
);
/* then filter verticaly... */
vp8_
filter_block2d_second_pass
(
FData
+
32
,
dst_ptr
,
dst_pitch
,
16
,
16
,
16
,
16
,
VFilter
);
filter_block2d_second_pass
(
FData
+
32
,
dst_ptr
,
dst_pitch
,
16
,
16
,
16
,
16
,
VFilter
);
}
...
...
@@ -294,7 +268,7 @@ void vp8_sixtap_predict16x16_c
* Two filter taps should sum to VP8_FILTER_WEIGHT.
*
****************************************************************************/
void
vp8_
filter_block2d_bil_first_pass
static
void
filter_block2d_bil_first_pass
(
unsigned
char
*
src_ptr
,
unsigned
short
*
dst_ptr
,
...
...
@@ -345,7 +319,7 @@ void vp8_filter_block2d_bil_first_pass
* Two filter taps should sum to VP8_FILTER_WEIGHT.
*
****************************************************************************/
void
vp8_
filter_block2d_bil_second_pass
static
void
filter_block2d_bil_second_pass
(
unsigned
short
*
src_ptr
,
unsigned
char
*
dst_ptr
,
...
...
@@ -399,7 +373,7 @@ void vp8_filter_block2d_bil_second_pass
* SPECIAL NOTES : The largest block size can be handled here is 16x16
*
****************************************************************************/
void
vp8_
filter_block2d_bil
static
void
filter_block2d_bil
(
unsigned
char
*
src_ptr
,
unsigned
char
*
dst_ptr
,
...
...
@@ -415,10 +389,10 @@ void vp8_filter_block2d_bil
unsigned
short
FData
[
17
*
16
];
/* Temp data buffer used in filtering */
/* First filter 1-D horizontally... */
vp8_
filter_block2d_bil_first_pass
(
src_ptr
,
FData
,
src_pitch
,
Height
+
1
,
Width
,
HFilter
);
filter_block2d_bil_first_pass
(
src_ptr
,
FData
,
src_pitch
,
Height
+
1
,
Width
,
HFilter
);
/* then 1-D vertically... */
vp8_
filter_block2d_bil_second_pass
(
FData
,
dst_ptr
,
dst_pitch
,
Height
,
Width
,
VFilter
);
filter_block2d_bil_second_pass
(
FData
,
dst_ptr
,
dst_pitch
,
Height
,
Width
,
VFilter
);
}
...
...
@@ -444,19 +418,19 @@ void vp8_bilinear_predict4x4_c
unsigned char temp2[16];
bilinear_predict4x4_mmx(src_ptr, src_pixels_per_line, xoffset, yoffset, temp1, 4);
vp8_
filter_block2d_bil(src_ptr, temp2, src_pixels_per_line, 4, HFilter, VFilter, 4, 4);
filter_block2d_bil(src_ptr, temp2, src_pixels_per_line, 4, HFilter, VFilter, 4, 4);
for (i = 0; i < 16; i++)
{
if (temp1[i] != temp2[i])
{
bilinear_predict4x4_mmx(src_ptr, src_pixels_per_line, xoffset, yoffset, temp1, 4);
vp8_
filter_block2d_bil(src_ptr, temp2, src_pixels_per_line, 4, HFilter, VFilter, 4, 4);
filter_block2d_bil(src_ptr, temp2, src_pixels_per_line, 4, HFilter, VFilter, 4, 4);
}
}
}
#endif
vp8_
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
4
,
4
);
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
4
,
4
);
}
...
...
@@ -476,7 +450,7 @@ void vp8_bilinear_predict8x8_c
HFilter
=
vp8_bilinear_filters
[
xoffset
];
VFilter
=
vp8_bilinear_filters
[
yoffset
];
vp8_
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
8
,
8
);
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
8
,
8
);
}
...
...
@@ -496,7 +470,7 @@ void vp8_bilinear_predict8x4_c
HFilter
=
vp8_bilinear_filters
[
xoffset
];
VFilter
=
vp8_bilinear_filters
[
yoffset
];
vp8_
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
8
,
4
);
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
8
,
4
);
}
...
...
@@ -516,5 +490,5 @@ void vp8_bilinear_predict16x16_c
HFilter
=
vp8_bilinear_filters
[
xoffset
];
VFilter
=
vp8_bilinear_filters
[
yoffset
];
vp8_
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
16
,
16
);
filter_block2d_bil
(
src_ptr
,
dst_ptr
,
src_pixels_per_line
,
dst_pitch
,
HFilter
,
VFilter
,
16
,
16
);
}
vp8/common/findnearmv.c
View file @
769c74c0
...
...
@@ -11,6 +11,13 @@
#include
"findnearmv.h"
const
unsigned
char
vp8_mbsplit_offset
[
4
][
16
]
=
{
{
0
,
8
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
2
,
8
,
10
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
}
};
/* Predict motion vectors using those from already-decoded nearby blocks.
Note that we only consider one 4x4 subblock from each candidate 16x16
macroblock. */
...
...
vp8/common/findnearmv.h
View file @
769c74c0
...
...
@@ -70,4 +70,6 @@ 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
);
extern
const
unsigned
char
vp8_mbsplit_offset
[
4
][
16
];
#endif
vp8/common/mbpitch.c
View file @
769c74c0
...
...
@@ -17,7 +17,7 @@ typedef enum
DEST
=
1
}
BLOCKSET
;
void
vp8_
setup_block
static
void
setup_block
(
BLOCKD
*
b
,
int
mv_stride
,
...
...
@@ -43,7 +43,8 @@ void vp8_setup_block
}
void
vp8_setup_macroblock
(
MACROBLOCKD
*
x
,
BLOCKSET
bs
)
static
void
setup_macroblock
(
MACROBLOCKD
*
x
,
BLOCKSET
bs
)
{
int
block
;
...
...
@@ -64,16 +65,16 @@ void vp8_setup_macroblock(MACROBLOCKD *x, BLOCKSET bs)
for
(
block
=
0
;
block
<
16
;
block
++
)
/* y blocks */
{
vp8_
setup_block
(
&
x
->
block
[
block
],
x
->
dst
.
y_stride
,
y
,
x
->
dst
.
y_stride
,
setup_block
(
&
x
->
block
[
block
],
x
->
dst
.
y_stride
,
y
,
x
->
dst
.
y_stride
,
(
block
>>
2
)
*
4
*
x
->
dst
.
y_stride
+
(
block
&
3
)
*
4
,
bs
);
}
for
(
block
=
16
;
block
<
20
;
block
++
)
/* U and V blocks */
{
vp8_
setup_block
(
&
x
->
block
[
block
],
x
->
dst
.
uv_stride
,
u
,
x
->
dst
.
uv_stride
,
setup_block
(
&
x
->
block
[
block
],
x
->
dst
.
uv_stride
,
u
,
x
->
dst
.
uv_stride
,
((
block
-
16
)
>>
1
)
*
4
*
x
->
dst
.
uv_stride
+
(
block
&
1
)
*
4
,
bs
);
vp8_
setup_block
(
&
x
->
block
[
block
+
4
],
x
->
dst
.
uv_stride
,
v
,
x
->
dst
.
uv_stride
,
setup_block
(
&
x
->
block
[
block
+
4
],
x
->
dst
.
uv_stride
,
v
,
x
->
dst
.
uv_stride
,
((
block
-
16
)
>>
1
)
*
4
*
x
->
dst
.
uv_stride
+
(
block
&
1
)
*
4
,
bs
);
}
}
...
...
@@ -124,6 +125,6 @@ void vp8_build_block_doffsets(MACROBLOCKD *x)
{
/* handle the destination pitch features */
vp8_
setup_macroblock
(
x
,
DEST
);
vp8_
setup_macroblock
(
x
,
PRED
);
setup_macroblock
(
x
,
DEST
);
setup_macroblock
(
x
,
PRED
);
}
vp8/common/postproc.c
View file @
769c74c0
...
...
@@ -211,7 +211,7 @@ void vp8_post_proc_down_and_across_c
}
}
int
vp8_
q2mbl
(
int
x
)
static
int
q2mbl
(
int
x
)
{
if
(
x
<
20
)
x
=
20
;
...
...
@@ -314,8 +314,8 @@ static void vp8_deblock_and_de_macro_block(YV12_BUFFER_CONFIG *source,
(
void
)
flag
;
POSTPROC_INVOKE
(
rtcd
,
downacross
)(
source
->
y_buffer
,
post
->
y_buffer
,
source
->
y_stride
,
post
->
y_stride
,
source
->
y_height
,
source
->
y_width
,
ppl
);
POSTPROC_INVOKE
(
rtcd
,
across
)(
post
->
y_buffer
,
post
->
y_stride
,
post
->
y_height
,
post
->
y_width
,
vp8_
q2mbl
(
q
));
POSTPROC_INVOKE
(
rtcd
,
down
)(
post
->
y_buffer
,
post
->
y_stride
,
post
->
y_height
,
post
->
y_width
,
vp8_
q2mbl
(
q
));
POSTPROC_INVOKE
(
rtcd
,
across
)(
post
->
y_buffer
,
post
->
y_stride
,
post
->
y_height
,
post
->
y_width
,
q2mbl
(
q
));
POSTPROC_INVOKE
(
rtcd
,
down
)(
post
->
y_buffer
,
post
->
y_stride
,
post
->
y_height
,
post
->
y_width
,
q2mbl
(
q
));
POSTPROC_INVOKE
(
rtcd
,
downacross
)(
source
->
u_buffer
,
post
->
u_buffer
,
source
->
uv_stride
,
post
->
uv_stride
,
source
->
uv_height
,
source
->
uv_width
,
ppl
);
POSTPROC_INVOKE
(
rtcd
,
downacross
)(
source
->
v_buffer
,
post
->
v_buffer
,
source
->
uv_stride
,
post
->
uv_stride
,
source
->
uv_height
,
source
->
uv_width
,
ppl
);
...
...
vp8/common/reconinter.c
View file @
769c74c0
...
...
@@ -168,7 +168,7 @@ void vp8_build_inter_predictors_b(BLOCKD *d, int pitch, vp8_subpix_fn_t sppf)
}
}
void
vp8_
build_inter_predictors4b
(
MACROBLOCKD
*
x
,
BLOCKD
*
d
,
int
pitch
)
static
void
build_inter_predictors4b
(
MACROBLOCKD
*
x
,
BLOCKD
*
d
,
int
pitch
)
{
unsigned
char
*
ptr_base
;
unsigned
char
*
ptr
;
...
...
@@ -187,7 +187,7 @@ void vp8_build_inter_predictors4b(MACROBLOCKD *x, BLOCKD *d, int pitch)
}
}
void
vp8_
build_inter_predictors2b
(
MACROBLOCKD
*
x
,
BLOCKD
*
d
,
int
pitch
)
static
void
build_inter_predictors2b
(
MACROBLOCKD
*
x
,
BLOCKD
*
d
,
int
pitch
)
{
unsigned
char
*
ptr_base
;
unsigned
char
*
ptr
;
...
...
@@ -246,7 +246,7 @@ void vp8_build_inter_predictors_mbuv(MACROBLOCKD *x)
BLOCKD
*
d1
=
&
x
->
block
[
i
+
1
];
if
(
d0
->
bmi
.
mv
.
as_int
==
d1
->
bmi
.
mv
.
as_int
)
vp8_
build_inter_predictors2b
(
x
,
d0
,
8
);
build_inter_predictors2b
(
x
,
d0
,
8
);
else
{
vp8_build_inter_predictors_b
(
d0
,
8
,
x
->
subpixel_predict
);
...
...
@@ -291,7 +291,7 @@ void vp8_build_inter_predictors_mby(MACROBLOCKD *x)
for
(
i
=
0
;
i
<
4
;
i
++
)
{
BLOCKD
*
d
=
&
x
->
block
[
bbb
[
i
]];
vp8_
build_inter_predictors4b
(
x
,
d
,
16
);
build_inter_predictors4b
(
x
,
d
,
16
);
}
}
...
...
@@ -303,7 +303,7 @@ void vp8_build_inter_predictors_mby(MACROBLOCKD *x)
BLOCKD
*
d1
=
&
x
->
block
[
i
+
1
];
if
(
d0
->
bmi
.
mv
.
as_int
==
d1
->
bmi
.
mv
.
as_int
)
vp8_
build_inter_predictors2b
(
x
,
d0
,
16
);
build_inter_predictors2b
(
x
,
d0
,
16
);
else
{
vp8_build_inter_predictors_b
(
d0
,
16
,
x
->
subpixel_predict
);
...
...
@@ -372,7 +372,7 @@ void vp8_build_inter_predictors_mb(MACROBLOCKD *x)
for
(
i
=
0
;
i
<
4
;
i
++
)
{
BLOCKD
*
d
=
&
x
->
block
[
bbb
[
i
]];
vp8_
build_inter_predictors4b
(
x
,
d
,
16
);
build_inter_predictors4b
(
x
,
d
,
16
);
}
}
else
...
...
@@ -383,7 +383,7 @@ void vp8_build_inter_predictors_mb(MACROBLOCKD *x)
BLOCKD
*
d1
=
&
x
->
block
[
i
+
1
];
if
(
d0
->
bmi
.
mv
.
as_int
==
d1
->
bmi
.
mv
.
as_int
)
vp8_
build_inter_predictors2b
(
x
,
d0
,
16
);
build_inter_predictors2b
(
x
,
d0
,
16
);
else
{
vp8_build_inter_predictors_b
(
d0
,
16
,
x
->
subpixel_predict
);
...
...
@@ -400,7 +400,7 @@ void vp8_build_inter_predictors_mb(MACROBLOCKD *x)
BLOCKD
*
d1
=
&
x
->
block
[
i
+
1
];
if
(
d0
->
bmi
.
mv
.
as_int
==
d1
->
bmi
.
mv
.
as_int
)
vp8_
build_inter_predictors2b
(
x
,
d0
,
8
);
build_inter_predictors2b
(
x
,
d0
,
8
);
else
{
vp8_build_inter_predictors_b
(
d0
,
8
,
x
->
subpixel_predict
);
...
...
@@ -600,7 +600,7 @@ void vp8_build_inter_predictors_mb_s(MACROBLOCKD *x)
for
(
i
=
0
;
i
<
4
;
i
++
)
{
BLOCKD
*
d
=
&
x
->
block
[
bbb
[
i
]];
/*
vp8_
build_inter_predictors4b(x, d, 16);*/
/*build_inter_predictors4b(x, d, 16);*/
{
unsigned
char
*
ptr_base
;
...
...
@@ -630,7 +630,7 @@ void vp8_build_inter_predictors_mb_s(MACROBLOCKD *x)
if
(
d0
->
bmi
.
mv
.
as_int
==
d1
->
bmi
.
mv
.
as_int
)
{
/*
vp8_
build_inter_predictors2b(x, d0, 16);*/
/*build_inter_predictors2b(x, d0, 16);*/
unsigned
char
*
ptr_base
;
unsigned
char
*
ptr
;
unsigned
char
*
pred_ptr
=
d0
->
predictor
;
...
...
@@ -662,7 +662,7 @@ void vp8_build_inter_predictors_mb_s(MACROBLOCKD *x)
if
(
d0
->
bmi
.
mv
.
as_int
==
d1
->
bmi
.
mv
.
as_int
)
{
/*
vp8_
build_inter_predictors2b(x, d0, 8);*/
/*build_inter_predictors2b(x, d0, 8);*/
unsigned
char
*
ptr_base
;
unsigned
char
*
ptr
;
unsigned
char
*
pred_ptr
=
d0
->
predictor
;
...
...
vp8/common/x86/subpixel_mmx.asm
View file @
769c74c0
...
...
@@ -113,97 +113,6 @@ nextrow:
ret
;
; THIS FUNCTION APPEARS TO BE UNUSED
;
;void vp8_filter_block1d_v6_mmx
;(
; short *src_ptr,
; unsigned char *output_ptr,
; unsigned int pixels_per_line,
; unsigned int pixel_step,
; unsigned int output_height,
; unsigned int output_width,
; short * vp8_filter
;)
global
sym
(
vp8_filter_block1d_v6_mmx
)
sym
(
vp8_filter_block1d_v6_mmx
):
push
rbp
mov
rbp
,
rsp
SHADOW_ARGS_TO_STACK
7
GET_GOT
rbx
push
rsi
push
rdi
; end prolog
movq
mm5
,
[
GLOBAL
(
rd
)]
push
rbx
mov
rbx
,
arg
(
6
)
;vp8_filter
movq
mm1
,
[
rbx
+
16
]
; do both the negative taps first!!!
movq
mm2
,
[
rbx
+
32
]
;
movq
mm6
,
[
rbx
+
48
]
;
movq
mm7
,
[
rbx
+
64
]
;
movsxd
rdx
,
dword
ptr
arg
(
2
)
;pixels_per_line
mov
rdi
,
arg
(
1
)
;output_ptr
mov
rsi
,
arg
(
0
)
;src_ptr
sub
rsi
,
rdx
sub
rsi
,
rdx
movsxd
rcx
,
DWORD
PTR
arg
(
4
)
;output_height
movsxd
rax
,
DWORD
PTR
arg
(
5
)
;output_width ; destination pitch?
pxor
mm0
,
mm0
; mm0 = 00000000
nextrow_v:
movq
mm3
,
[
rsi
+
rdx
]
; mm3 = p0..p8 = row -1
pmullw
mm3
,
mm1
; mm3 *= kernel 1 modifiers.
movq
mm4
,
[
rsi
+
4
*
rdx
]
; mm4 = p0..p3 = row 2
pmullw
mm4
,
mm7
; mm4 *= kernel 4 modifiers.
paddsw
mm3
,
mm4
; mm3 += mm4
movq
mm4
,
[
rsi
+
2
*
rdx
]
; mm4 = p0..p3 = row 0
pmullw
mm4
,
mm2
; mm4 *= kernel 2 modifiers.
paddsw
mm3
,
mm4
; mm3 += mm4
movq
mm4
,
[
rsi
]
; mm4 = p0..p3 = row -2
pmullw
mm4
,
[
rbx
]
; mm4 *= kernel 0 modifiers.
paddsw
mm3
,
mm4
; mm3 += mm4
add
rsi
,
rdx
; move source forward 1 line to avoid 3 * pitch
movq
mm4
,
[
rsi
+
2
*
rdx
]
; mm4 = p0..p3 = row 1
pmullw
mm4
,
mm6
; mm4 *= kernel 3 modifiers.
paddsw
mm3
,
mm4
; mm3 += mm4
movq
mm4
,
[
rsi
+
4
*
rdx
]
; mm4 = p0..p3 = row 3
pmullw
mm4
,
[
rbx
+
80
]
; mm4 *= kernel 3 modifiers.
paddsw
mm3
,
mm4
; mm3 += mm4
paddsw
mm3
,
mm5
; mm3 += round value
psraw
mm3
,
VP8_FILTER_SHIFT
; mm3 /= 128
packuswb
mm3
,
mm0
; pack and saturate
movd
[
rdi
],
mm3
; store the results in the destination
add
rdi
,
rax
;
dec
rcx
; decrement count
jnz
nextrow_v
; next row
pop
rbx
; begin epilog
pop
rdi
pop
rsi
REST
ORE_GOT
UNSHADOW_ARGS
pop
rbp
ret
;void vp8_filter_block1dc_v6_mmx
;(
; short *src_ptr,
...
...
vp8/decoder/decodemv.c
View file @
769c74c0
...
...
@@ -228,15 +228,8 @@ unsigned int vp8_mv_cont_count[5][4] =
};
#endif
unsigned
char
vp8_mbsplit_offset
[
4
][
16
]
=
{
{
0
,
8
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
2
,
8
,
10
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
}
};
unsigned
char
vp8_mbsplit_fill_count
[
4
]
=
{
8
,
8
,
4
,
1
};
unsigned
char
vp8_mbsplit_fill_offset
[
4
][
16
]
=
{
static
const
unsigned
char
mbsplit_fill_count
[
4
]
=
{
8
,
8
,
4
,
1
};
static
const
unsigned
char
mbsplit_fill_offset
[
4
][
16
]
=
{
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
},
{
0
,
1
,
4
,
5
,
8
,
9
,
12
,
13
,
2
,
3
,
6
,
7
,
10
,
11
,
14
,
15
},
{
0
,
1
,
4
,
5
,
2
,
3
,
6
,
7
,
8
,
9
,
12
,
13
,
10
,
11
,
14
,
15
},
...
...
@@ -246,7 +239,7 @@ unsigned char vp8_mbsplit_fill_offset[4][16] = {
void
vp8_
mb_mode_mv_init
(
VP8D_COMP
*
pbi
)
static
void
mb_mode_mv_init
(
VP8D_COMP
*
pbi
)
{
vp8_reader
*
const
bc
=
&
pbi
->
bc
;
MV_CONTEXT
*
const
mvc
=
pbi
->
common
.
fc
.
mvc
;
...
...
@@ -287,7 +280,7 @@ void vp8_mb_mode_mv_init(VP8D_COMP *pbi)
}
}
void
vp8_
read_mb_modes_mv
(
VP8D_COMP
*
pbi
,
MODE_INFO
*
mi
,
MB_MODE_INFO
*
mbmi
,
static
void
read_mb_modes_mv
(
VP8D_COMP
*
pbi
,
MODE_INFO
*
mi
,
MB_MODE_INFO
*
mbmi
,
int
mb_row
,
int
mb_col
)
{
const
MV
Zero
=
{
0
,
0
};
...
...
@@ -405,10 +398,10 @@ void vp8_read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
/* Fill (uniform) modes, mvs of jth subset.
Must do it here because ensuing subsets can
refer back to us via "left" or "above". */
unsigned
char
*
fill_offset
;
unsigned
int
fill_count
=
vp8_
mbsplit_fill_count
[
s
];
const
unsigned
char
*
fill_offset
;
unsigned
int
fill_count
=
mbsplit_fill_count
[
s
];
fill_offset
=
&
vp8_
mbsplit_fill_offset
[
s
][(
unsigned
char
)
j
*
vp8_
mbsplit_fill_count
[
s
]];
fill_offset
=
&
mbsplit_fill_offset
[
s
][(
unsigned
char
)
j
*
mbsplit_fill_count
[
s
]];
do
{
mi
->
bmi
[
*
fill_offset
]
=
bmi
;
...
...
@@ -525,7 +518,7 @@ void vp8_decode_mode_mvs(VP8D_COMP *pbi)
MODE_INFO
*
mi
=
pbi
->
common
.
mi
;
int
mb_row
=
-
1
;
vp8_
mb_mode_mv_init
(
pbi
);
mb_mode_mv_init
(
pbi
);
while
(
++
mb_row
<
pbi
->
common
.
mb_rows
)
{
...
...
@@ -543,11 +536,11 @@ void vp8_decode_mode_mvs(VP8D_COMP *pbi)
while
(
++
mb_col
<
pbi
->
common
.
mb_cols
)
{
/*
vp8_
read_mb_modes_mv(pbi, xd->mode_info_context, &xd->mode_info_context->mbmi, mb_row, mb_col);*/
/*read_mb_modes_mv(pbi, xd->mode_info_context, &xd->mode_info_context->mbmi, mb_row, mb_col);*/
if
(
pbi
->
common
.
frame_type
==
KEY_FRAME
)
vp8_kfread_modes
(
pbi
,
mi
,
mb_row
,
mb_col
);
else
vp8_
read_mb_modes_mv
(
pbi
,
mi
,
&
mi
->
mbmi
,
mb_row
,
mb_col
);
read_mb_modes_mv
(
pbi
,
mi
,
&
mi
->
mbmi
,
mb_row
,
mb_col
);
mi
++
;
/* next macroblock */
}
...
...
vp8/decoder/decodframe.c
View file @
769c74c0
...
...
@@ -175,7 +175,7 @@ void clamp_mvs(MACROBLOCKD *xd)
}
void
vp8_
decode_macroblock
(
VP8D_COMP
*
pbi
,
MACROBLOCKD
*
xd
)
static
void
decode_macroblock
(
VP8D_COMP
*
pbi
,
MACROBLOCKD
*
xd
)
{
int
eobtotal
=
0
;
int
i
,
do_clamp
=
xd
->
mode_info_context
->
mbmi
.
need_to_clamp_mvs
;
...
...
@@ -320,10 +320,8 @@ FILE *vpxlog = 0;
void
vp8_decode_mb_row
(
VP8D_COMP
*
pbi
,
VP8_COMMON
*
pc
,
int
mb_row
,
MACROBLOCKD
*
xd
)
static
void
decode_mb_row
(
VP8D_COMP
*
pbi
,
VP8_COMMON
*
pc
,
int
mb_row
,
MACROBLOCKD
*
xd
)
{
int
i
;
...
...
@@ -395,7 +393,7 @@ void vp8_decode_mb_row(VP8D_COMP *pbi,
else
pbi->debugoutput =0;
*/
vp8_
decode_macroblock
(
pbi
,
xd
);
decode_macroblock
(
pbi
,
xd
);
/* check if the boolean decoder has suffered an error */
xd
->
corrupted
|=
vp8dx_bool_error
(
xd
->
current_bc
);
...
...
@@ -901,7 +899,7 @@ int vp8_decode_frame(VP8D_COMP *pbi)
ibc
=
0
;
}
vp8_
decode_mb_row
(
pbi
,
pc
,
mb_row
,
xd
);
decode_mb_row
(
pbi
,
pc
,
mb_row
,
xd
);
}
}