Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
229d263c
Commit
229d263c
authored
Oct 12, 2011
by
Ronald S. Bultje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support for lossless and inter H264 4:2:2.
parent
76741b0e
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
103 additions
and
17 deletions
+103
-17
h264.c
libavcodec/h264.c
+55
-11
h264pred.c
libavcodec/h264pred.c
+9
-4
h264pred_template.c
libavcodec/h264pred_template.c
+38
-1
h264dsp_mmx.c
libavcodec/x86/h264dsp_mmx.c
+1
-1
No files found.
libavcodec/h264.c
View file @
229d263c
...
...
@@ -457,6 +457,7 @@ static inline void mc_dir_part(H264Context *h, Picture *pic, int n, int square,
const
int
full_my
=
my
>>
2
;
const
int
pic_width
=
16
*
s
->
mb_width
;
const
int
pic_height
=
16
*
s
->
mb_height
>>
MB_FIELD
;
int
ysh
;
if
(
mx
&
7
)
extra_width
-=
3
;
if
(
my
&
7
)
extra_height
-=
3
;
...
...
@@ -465,7 +466,8 @@ static inline void mc_dir_part(H264Context *h, Picture *pic, int n, int square,
||
full_my
<
0
-
extra_height
||
full_mx
+
16
/*FIXME*/
>
pic_width
+
extra_width
||
full_my
+
16
/*FIXME*/
>
pic_height
+
extra_height
){
s
->
dsp
.
emulated_edge_mc
(
s
->
edge_emu_buffer
,
src_y
-
(
2
<<
pixel_shift
)
-
2
*
h
->
mb_linesize
,
h
->
mb_linesize
,
16
+
5
,
16
+
5
/*FIXME*/
,
full_mx
-
2
,
full_my
-
2
,
pic_width
,
pic_height
);
s
->
dsp
.
emulated_edge_mc
(
s
->
edge_emu_buffer
,
src_y
-
(
2
<<
pixel_shift
)
-
2
*
h
->
mb_linesize
,
h
->
mb_linesize
,
16
+
5
,
16
+
5
/*FIXME*/
,
full_mx
-
2
,
full_my
-
2
,
pic_width
,
pic_height
);
src_y
=
s
->
edge_emu_buffer
+
(
2
<<
pixel_shift
)
+
2
*
h
->
mb_linesize
;
emu
=
1
;
}
...
...
@@ -502,25 +504,27 @@ static inline void mc_dir_part(H264Context *h, Picture *pic, int n, int square,
return
;
}
if
(
MB_FIELD
){
ysh
=
3
-
!!
(
CHROMA422
);
if
(
!
CHROMA422
&&
MB_FIELD
){
// chroma offset when predicting from a field of opposite parity
my
+=
2
*
((
s
->
mb_y
&
1
)
-
(
pic
->
f
.
reference
-
1
));
emu
|=
(
my
>>
3
)
<
0
||
(
my
>>
3
)
+
8
>=
(
pic_height
>>
1
);
}
src_cb
=
pic
->
f
.
data
[
1
]
+
((
mx
>>
3
)
<<
pixel_shift
)
+
(
my
>>
3
)
*
h
->
mb_uvlinesize
;
src_cr
=
pic
->
f
.
data
[
2
]
+
((
mx
>>
3
)
<<
pixel_shift
)
+
(
my
>>
3
)
*
h
->
mb_uvlinesize
;
src_cb
=
pic
->
f
.
data
[
1
]
+
((
mx
>>
3
)
<<
pixel_shift
)
+
(
my
>>
ysh
)
*
h
->
mb_uvlinesize
;
src_cr
=
pic
->
f
.
data
[
2
]
+
((
mx
>>
3
)
<<
pixel_shift
)
+
(
my
>>
ysh
)
*
h
->
mb_uvlinesize
;
if
(
emu
){
s
->
dsp
.
emulated_edge_mc
(
s
->
edge_emu_buffer
,
src_cb
,
h
->
mb_uvlinesize
,
9
,
9
/*FIXME*/
,
(
mx
>>
3
),
(
my
>>
3
),
pic_width
>>
1
,
pic_height
>>
1
);
s
->
dsp
.
emulated_edge_mc
(
s
->
edge_emu_buffer
,
src_cb
,
h
->
mb_uvlinesize
,
9
,
(
16
>>!
(
CHROMA422
))
+
1
,
(
mx
>>
3
),
(
my
>>
ysh
),
pic_width
>>
1
,
pic_height
>>!
(
CHROMA422
)
);
src_cb
=
s
->
edge_emu_buffer
;
}
chroma_op
(
dest_cb
,
src_cb
,
h
->
mb_uvlinesize
,
chroma_height
,
mx
&
7
,
my
&
7
);
chroma_op
(
dest_cb
,
src_cb
,
h
->
mb_uvlinesize
,
chroma_height
<<
!!
(
CHROMA422
),
mx
&
7
,
(
my
<<
!!
(
CHROMA422
))
&
7
);
if
(
emu
){
s
->
dsp
.
emulated_edge_mc
(
s
->
edge_emu_buffer
,
src_cr
,
h
->
mb_uvlinesize
,
9
,
9
/*FIXME*/
,
(
mx
>>
3
),
(
my
>>
3
),
pic_width
>>
1
,
pic_height
>>
1
);
s
->
dsp
.
emulated_edge_mc
(
s
->
edge_emu_buffer
,
src_cr
,
h
->
mb_uvlinesize
,
9
,
(
16
>>!
(
CHROMA422
))
+
1
,
(
mx
>>
3
),
(
my
>>
ysh
),
pic_width
>>
1
,
pic_height
>>!
(
CHROMA422
)
);
src_cr
=
s
->
edge_emu_buffer
;
}
chroma_op
(
dest_cr
,
src_cr
,
h
->
mb_uvlinesize
,
chroma_height
,
mx
&
7
,
my
&
7
);
chroma_op
(
dest_cr
,
src_cr
,
h
->
mb_uvlinesize
,
chroma_height
<<
!!
(
CHROMA422
),
mx
&
7
,
(
my
<<
!!
(
CHROMA422
))
&
7
);
}
static
inline
void
mc_part_std
(
H264Context
*
h
,
int
n
,
int
square
,
int
chroma_height
,
int
delta
,
...
...
@@ -537,6 +541,9 @@ static inline void mc_part_std(H264Context *h, int n, int square, int chroma_hei
if
(
chroma444
){
dest_cb
+=
(
2
*
x_offset
<<
pixel_shift
)
+
2
*
y_offset
*
h
->
mb_linesize
;
dest_cr
+=
(
2
*
x_offset
<<
pixel_shift
)
+
2
*
y_offset
*
h
->
mb_linesize
;
}
else
if
(
CHROMA422
)
{
dest_cb
+=
(
x_offset
<<
pixel_shift
)
+
2
*
y_offset
*
h
->
mb_uvlinesize
;
dest_cr
+=
(
x_offset
<<
pixel_shift
)
+
2
*
y_offset
*
h
->
mb_uvlinesize
;
}
else
{
dest_cb
+=
(
x_offset
<<
pixel_shift
)
+
y_offset
*
h
->
mb_uvlinesize
;
dest_cr
+=
(
x_offset
<<
pixel_shift
)
+
y_offset
*
h
->
mb_uvlinesize
;
...
...
@@ -577,6 +584,9 @@ static inline void mc_part_weighted(H264Context *h, int n, int square, int chrom
chroma_weight_op
=
luma_weight_op
;
dest_cb
+=
(
2
*
x_offset
<<
pixel_shift
)
+
2
*
y_offset
*
h
->
mb_linesize
;
dest_cr
+=
(
2
*
x_offset
<<
pixel_shift
)
+
2
*
y_offset
*
h
->
mb_linesize
;
}
else
if
(
CHROMA422
)
{
dest_cb
+=
(
x_offset
<<
pixel_shift
)
+
2
*
y_offset
*
h
->
mb_uvlinesize
;
dest_cr
+=
(
x_offset
<<
pixel_shift
)
+
2
*
y_offset
*
h
->
mb_uvlinesize
;
}
else
{
dest_cb
+=
(
x_offset
<<
pixel_shift
)
+
y_offset
*
h
->
mb_uvlinesize
;
dest_cr
+=
(
x_offset
<<
pixel_shift
)
+
y_offset
*
h
->
mb_uvlinesize
;
...
...
@@ -606,6 +616,14 @@ static inline void mc_part_weighted(H264Context *h, int n, int square, int chrom
luma_weight_avg
(
dest_y
,
tmp_y
,
h
->
mb_linesize
,
5
,
weight0
,
weight1
,
0
);
chroma_weight_avg
(
dest_cb
,
tmp_cb
,
h
->
mb_uvlinesize
,
5
,
weight0
,
weight1
,
0
);
chroma_weight_avg
(
dest_cr
,
tmp_cr
,
h
->
mb_uvlinesize
,
5
,
weight0
,
weight1
,
0
);
if
(
CHROMA422
)
{
chroma_weight_avg
(
dest_cb
+
chroma_height
*
h
->
mb_uvlinesize
,
tmp_cb
+
chroma_height
*
h
->
mb_uvlinesize
,
h
->
mb_uvlinesize
,
5
,
weight0
,
weight1
,
0
);
chroma_weight_avg
(
dest_cr
+
chroma_height
*
h
->
mb_uvlinesize
,
tmp_cr
+
chroma_height
*
h
->
mb_uvlinesize
,
h
->
mb_uvlinesize
,
5
,
weight0
,
weight1
,
0
);
}
}
else
{
luma_weight_avg
(
dest_y
,
tmp_y
,
h
->
mb_linesize
,
h
->
luma_log2_weight_denom
,
h
->
luma_weight
[
refn0
][
0
][
0
]
,
h
->
luma_weight
[
refn1
][
1
][
0
],
...
...
@@ -616,6 +634,18 @@ static inline void mc_part_weighted(H264Context *h, int n, int square, int chrom
chroma_weight_avg
(
dest_cr
,
tmp_cr
,
h
->
mb_uvlinesize
,
h
->
chroma_log2_weight_denom
,
h
->
chroma_weight
[
refn0
][
0
][
1
][
0
]
,
h
->
chroma_weight
[
refn1
][
1
][
1
][
0
],
h
->
chroma_weight
[
refn0
][
0
][
1
][
1
]
+
h
->
chroma_weight
[
refn1
][
1
][
1
][
1
]);
if
(
CHROMA422
)
{
chroma_weight_avg
(
dest_cb
+
chroma_height
*
h
->
mb_uvlinesize
,
tmp_cb
+
chroma_height
*
h
->
mb_uvlinesize
,
h
->
mb_uvlinesize
,
h
->
chroma_log2_weight_denom
,
h
->
chroma_weight
[
refn0
][
0
][
0
][
0
]
,
h
->
chroma_weight
[
refn1
][
1
][
0
][
0
],
h
->
chroma_weight
[
refn0
][
0
][
0
][
1
]
+
h
->
chroma_weight
[
refn1
][
1
][
0
][
1
]);
chroma_weight_avg
(
dest_cr
+
chroma_height
*
h
->
mb_uvlinesize
,
tmp_cr
+
chroma_height
*
h
->
mb_uvlinesize
,
h
->
mb_uvlinesize
,
h
->
chroma_log2_weight_denom
,
h
->
chroma_weight
[
refn0
][
0
][
1
][
0
]
,
h
->
chroma_weight
[
refn1
][
1
][
1
][
0
],
h
->
chroma_weight
[
refn0
][
0
][
1
][
1
]
+
h
->
chroma_weight
[
refn1
][
1
][
1
][
1
]);
}
}
}
else
{
int
list
=
list1
?
1
:
0
;
...
...
@@ -632,6 +662,14 @@ static inline void mc_part_weighted(H264Context *h, int n, int square, int chrom
h
->
chroma_weight
[
refn
][
list
][
0
][
0
],
h
->
chroma_weight
[
refn
][
list
][
0
][
1
]);
chroma_weight_op
(
dest_cr
,
h
->
mb_uvlinesize
,
h
->
chroma_log2_weight_denom
,
h
->
chroma_weight
[
refn
][
list
][
1
][
0
],
h
->
chroma_weight
[
refn
][
list
][
1
][
1
]);
if
(
CHROMA422
)
{
chroma_weight_op
(
dest_cb
+
chroma_height
*
h
->
mb_uvlinesize
,
h
->
mb_uvlinesize
,
h
->
chroma_log2_weight_denom
,
h
->
chroma_weight
[
refn
][
list
][
0
][
0
],
h
->
chroma_weight
[
refn
][
list
][
0
][
1
]);
chroma_weight_op
(
dest_cr
+
chroma_height
*
h
->
mb_uvlinesize
,
h
->
mb_uvlinesize
,
h
->
chroma_log2_weight_denom
,
h
->
chroma_weight
[
refn
][
list
][
1
][
0
],
h
->
chroma_weight
[
refn
][
list
][
1
][
1
]);
}
}
}
}
...
...
@@ -1851,13 +1889,13 @@ static av_always_inline void hl_decode_mb_internal(H264Context *h, int simple, i
}
if
(
simple
||
!
CONFIG_GRAY
||
!
(
s
->
flags
&
CODEC_FLAG_GRAY
)){
if
(
!
h
->
sps
.
chroma_format_idc
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
block_h
;
i
++
)
{
uint16_t
*
tmp_cb
=
(
uint16_t
*
)(
dest_cb
+
i
*
uvlinesize
);
for
(
j
=
0
;
j
<
8
;
j
++
)
{
tmp_cb
[
j
]
=
1
<<
(
bit_depth
-
1
);
}
}
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
block_h
;
i
++
)
{
uint16_t
*
tmp_cr
=
(
uint16_t
*
)(
dest_cr
+
i
*
uvlinesize
);
for
(
j
=
0
;
j
<
8
;
j
++
)
{
tmp_cr
[
j
]
=
1
<<
(
bit_depth
-
1
);
...
...
@@ -1882,7 +1920,7 @@ static av_always_inline void hl_decode_mb_internal(H264Context *h, int simple, i
}
if
(
simple
||
!
CONFIG_GRAY
||
!
(
s
->
flags
&
CODEC_FLAG_GRAY
)){
if
(
!
h
->
sps
.
chroma_format_idc
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
block_h
;
i
++
)
{
memset
(
dest_cb
+
i
*
uvlinesize
,
128
,
8
);
memset
(
dest_cr
+
i
*
uvlinesize
,
128
,
8
);
}
...
...
@@ -1931,6 +1969,12 @@ static av_always_inline void hl_decode_mb_internal(H264Context *h, int simple, i
if
(
h
->
non_zero_count_cache
[
scan8
[
i
]
]
||
dctcoef_get
(
h
->
mb
,
pixel_shift
,
i
*
16
))
idct_add
(
dest
[
j
-
1
]
+
block_offset
[
i
],
h
->
mb
+
(
i
*
16
<<
pixel_shift
),
uvlinesize
);
}
if
(
CHROMA422
)
{
for
(
i
=
j
*
16
+
4
;
i
<
j
*
16
+
8
;
i
++
){
if
(
h
->
non_zero_count_cache
[
scan8
[
i
]
]
||
dctcoef_get
(
h
->
mb
,
pixel_shift
,
i
*
16
))
idct_add
(
dest
[
j
-
1
]
+
block_offset
[
i
+
4
],
h
->
mb
+
(
i
*
16
<<
pixel_shift
),
uvlinesize
);
}
}
}
}
}
else
{
...
...
libavcodec/h264pred.c
View file @
229d263c
...
...
@@ -462,10 +462,10 @@ void ff_h264_pred_init(H264PredContext *h, int codec_id, const int bit_depth, co
h->pred8x8[DC_PRED8x8 ]= FUNCC(pred8x16_dc , depth);\
h->pred8x8[LEFT_DC_PRED8x8]= FUNCC(pred8x16_left_dc , depth);\
h->pred8x8[TOP_DC_PRED8x8 ]= FUNCC(pred8x16_top_dc , depth);\
h->pred8x8[ALZHEIMER_DC_L0T_PRED8x8 ]= FUNC(pred8x
8
_mad_cow_dc_l0t, depth);\
h->pred8x8[ALZHEIMER_DC_0LT_PRED8x8 ]= FUNC(pred8x
8
_mad_cow_dc_0lt, depth);\
h->pred8x8[ALZHEIMER_DC_L00_PRED8x8 ]= FUNC(pred8x
8
_mad_cow_dc_l00, depth);\
h->pred8x8[ALZHEIMER_DC_0L0_PRED8x8 ]= FUNC(pred8x
8
_mad_cow_dc_0l0, depth);\
h->pred8x8[ALZHEIMER_DC_L0T_PRED8x8 ]= FUNC(pred8x
16
_mad_cow_dc_l0t, depth);\
h->pred8x8[ALZHEIMER_DC_0LT_PRED8x8 ]= FUNC(pred8x
16
_mad_cow_dc_0lt, depth);\
h->pred8x8[ALZHEIMER_DC_L00_PRED8x8 ]= FUNC(pred8x
16
_mad_cow_dc_l00, depth);\
h->pred8x8[ALZHEIMER_DC_0L0_PRED8x8 ]= FUNC(pred8x
16
_mad_cow_dc_0l0, depth);\
}\
}else{\
h->pred8x8[DC_PRED8x8 ]= FUNCD(pred8x8_dc_rv40);\
...
...
@@ -510,8 +510,13 @@ void ff_h264_pred_init(H264PredContext *h, int codec_id, const int bit_depth, co
h->pred4x4_add [ HOR_PRED ]= FUNCC(pred4x4_horizontal_add , depth);\
h->pred8x8l_add [VERT_PRED ]= FUNCC(pred8x8l_vertical_add , depth);\
h->pred8x8l_add [ HOR_PRED ]= FUNCC(pred8x8l_horizontal_add , depth);\
if (chroma_format_idc == 1) {\
h->pred8x8_add [VERT_PRED8x8]= FUNCC(pred8x8_vertical_add , depth);\
h->pred8x8_add [ HOR_PRED8x8]= FUNCC(pred8x8_horizontal_add , depth);\
} else {\
h->pred8x8_add [VERT_PRED8x8]= FUNCC(pred8x16_vertical_add , depth);\
h->pred8x8_add [ HOR_PRED8x8]= FUNCC(pred8x16_horizontal_add , depth);\
}\
h->pred16x16_add[VERT_PRED8x8]= FUNCC(pred16x16_vertical_add , depth);\
h->pred16x16_add[ HOR_PRED8x8]= FUNCC(pred16x16_horizontal_add , depth);\
...
...
libavcodec/h264pred_template.c
View file @
229d263c
...
...
@@ -657,29 +657,50 @@ static void FUNCC(pred8x16_dc)(uint8_t *_src, int stride){
}
}
//the following 4 function should not be optimized!
static
void
FUNC
(
pred8x8_mad_cow_dc_l0t
)(
uint8_t
*
src
,
int
stride
){
FUNCC
(
pred8x8_top_dc
)(
src
,
stride
);
FUNCC
(
pred4x4_dc
)(
src
,
NULL
,
stride
);
}
static
void
FUNC
(
pred8x16_mad_cow_dc_l0t
)(
uint8_t
*
src
,
int
stride
){
FUNCC
(
pred8x16_top_dc
)(
src
,
stride
);
FUNCC
(
pred4x4_dc
)(
src
,
NULL
,
stride
);
}
static
void
FUNC
(
pred8x8_mad_cow_dc_0lt
)(
uint8_t
*
src
,
int
stride
){
FUNCC
(
pred8x8_dc
)(
src
,
stride
);
FUNCC
(
pred4x4_top_dc
)(
src
,
NULL
,
stride
);
}
static
void
FUNC
(
pred8x16_mad_cow_dc_0lt
)(
uint8_t
*
src
,
int
stride
){
FUNCC
(
pred8x16_dc
)(
src
,
stride
);
FUNCC
(
pred4x4_top_dc
)(
src
,
NULL
,
stride
);
}
static
void
FUNC
(
pred8x8_mad_cow_dc_l00
)(
uint8_t
*
src
,
int
stride
){
FUNCC
(
pred8x8_left_dc
)(
src
,
stride
);
FUNCC
(
pred4x4_128_dc
)(
src
+
4
*
stride
,
NULL
,
stride
);
FUNCC
(
pred4x4_128_dc
)(
src
+
4
*
stride
+
4
*
sizeof
(
pixel
),
NULL
,
stride
);
}
static
void
FUNC
(
pred8x16_mad_cow_dc_l00
)(
uint8_t
*
src
,
int
stride
){
FUNCC
(
pred8x16_left_dc
)(
src
,
stride
);
FUNCC
(
pred4x4_128_dc
)(
src
+
4
*
stride
,
NULL
,
stride
);
FUNCC
(
pred4x4_128_dc
)(
src
+
4
*
stride
+
4
*
sizeof
(
pixel
),
NULL
,
stride
);
}
static
void
FUNC
(
pred8x8_mad_cow_dc_0l0
)(
uint8_t
*
src
,
int
stride
){
FUNCC
(
pred8x8_left_dc
)(
src
,
stride
);
FUNCC
(
pred4x4_128_dc
)(
src
,
NULL
,
stride
);
FUNCC
(
pred4x4_128_dc
)(
src
+
4
*
sizeof
(
pixel
),
NULL
,
stride
);
}
static
void
FUNC
(
pred8x16_mad_cow_dc_0l0
)(
uint8_t
*
src
,
int
stride
){
FUNCC
(
pred8x16_left_dc
)(
src
,
stride
);
FUNCC
(
pred4x4_128_dc
)(
src
,
NULL
,
stride
);
FUNCC
(
pred4x4_128_dc
)(
src
+
4
*
sizeof
(
pixel
),
NULL
,
stride
);
}
static
void
FUNCC
(
pred8x8_plane
)(
uint8_t
*
_src
,
int
_stride
){
int
j
,
k
;
int
a
;
...
...
@@ -1126,8 +1147,24 @@ static void FUNCC(pred8x8_vertical_add)(uint8_t *pix, const int *block_offset, c
FUNCC
(
pred4x4_vertical_add
)(
pix
+
block_offset
[
i
],
block
+
i
*
16
*
sizeof
(
pixel
),
stride
);
}
static
void
FUNCC
(
pred8x16_vertical_add
)(
uint8_t
*
pix
,
const
int
*
block_offset
,
const
DCTELEM
*
block
,
int
stride
){
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
FUNCC
(
pred4x4_vertical_add
)(
pix
+
block_offset
[
i
],
block
+
i
*
16
*
sizeof
(
pixel
),
stride
);
for
(
i
=
4
;
i
<
8
;
i
++
)
FUNCC
(
pred4x4_vertical_add
)(
pix
+
block_offset
[
i
+
4
],
block
+
i
*
16
*
sizeof
(
pixel
),
stride
);
}
static
void
FUNCC
(
pred8x8_horizontal_add
)(
uint8_t
*
pix
,
const
int
*
block_offset
,
const
DCTELEM
*
block
,
int
stride
){
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
FUNCC
(
pred4x4_horizontal_add
)(
pix
+
block_offset
[
i
],
block
+
i
*
16
*
sizeof
(
pixel
),
stride
);
}
static
void
FUNCC
(
pred8x16_horizontal_add
)(
uint8_t
*
pix
,
const
int
*
block_offset
,
const
DCTELEM
*
block
,
int
stride
){
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
FUNCC
(
pred4x4_horizontal_add
)(
pix
+
block_offset
[
i
],
block
+
i
*
16
*
sizeof
(
pixel
),
stride
);
for
(
i
=
4
;
i
<
8
;
i
++
)
FUNCC
(
pred4x4_horizontal_add
)(
pix
+
block_offset
[
i
+
4
],
block
+
i
*
16
*
sizeof
(
pixel
),
stride
);
}
libavcodec/x86/h264dsp_mmx.c
View file @
229d263c
...
...
@@ -354,7 +354,7 @@ void ff_h264dsp_init_x86(H264DSPContext *c, const int bit_depth, const int chrom
{
int
mm_flags
=
av_get_cpu_flags
();
if
(
mm_flags
&
AV_CPU_FLAG_MMX2
)
{
if
(
chroma_format_idc
==
1
&&
mm_flags
&
AV_CPU_FLAG_MMX2
)
{
c
->
h264_loop_filter_strength
=
h264_loop_filter_strength_mmx2
;
}
...
...
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