Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
82313eaa
Commit
82313eaa
authored
Mar 09, 2013
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
h264: add a parameter to the MB_MBAFF macro.
This way it does not look like a constant.
parent
48d0fd2d
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
18 additions
and
18 deletions
+18
-18
h264.c
libavcodec/h264.c
+8
-8
h264.h
libavcodec/h264.h
+2
-2
h264_cabac.c
libavcodec/h264_cabac.c
+4
-4
h264_cavlc.c
libavcodec/h264_cavlc.c
+4
-4
No files found.
libavcodec/h264.c
View file @
82313eaa
...
...
@@ -748,7 +748,7 @@ static void await_references(H264Context *h)
int
ref_field_picture
=
ref_pic
->
field_picture
;
int
pic_height
=
16
*
h
->
mb_height
>>
ref_field_picture
;
row
<<=
MB_MBAFF
;
row
<<=
MB_MBAFF
(
h
)
;
nrefs
[
list
]
--
;
if
(
!
FIELD_PICTURE
&&
ref_field_picture
)
{
// frame referencing two fields
...
...
@@ -2050,7 +2050,7 @@ static av_always_inline void backup_mb_border(H264Context *h, uint8_t *src_y,
if
(
!
simple
&&
FRAME_MBAFF
)
{
if
(
h
->
mb_y
&
1
)
{
if
(
!
MB_MBAFF
)
{
if
(
!
MB_MBAFF
(
h
)
)
{
top_border
=
h
->
top_borders
[
0
][
h
->
mb_x
];
AV_COPY128
(
top_border
,
src_y
+
15
*
linesize
);
if
(
pixel_shift
)
...
...
@@ -2085,7 +2085,7 @@ static av_always_inline void backup_mb_border(H264Context *h, uint8_t *src_y,
}
}
}
}
else
if
(
MB_MBAFF
)
{
}
else
if
(
MB_MBAFF
(
h
)
)
{
top_idx
=
0
;
}
else
return
;
...
...
@@ -2143,10 +2143,10 @@ static av_always_inline void xchg_mb_border(H264Context *h, uint8_t *src_y,
if
(
!
simple
&&
FRAME_MBAFF
)
{
if
(
h
->
mb_y
&
1
)
{
if
(
!
MB_MBAFF
)
if
(
!
MB_MBAFF
(
h
)
)
return
;
}
else
{
top_idx
=
MB_MBAFF
?
0
:
1
;
top_idx
=
MB_MBAFF
(
h
)
?
0
:
1
;
}
}
...
...
@@ -3759,7 +3759,7 @@ static av_always_inline void fill_filter_caches_inter(H264Context *h,
if
(
USES_LIST
(
top_type
,
list
))
{
const
int
b_xy
=
h
->
mb2b_xy
[
top_xy
]
+
3
*
b_stride
;
const
int
b8_xy
=
4
*
top_xy
+
2
;
int
(
*
ref2frm
)[
64
]
=
h
->
ref2frm
[
h
->
slice_table
[
top_xy
]
&
(
MAX_SLICES
-
1
)][
0
]
+
(
MB_MBAFF
?
20
:
2
);
int
(
*
ref2frm
)[
64
]
=
h
->
ref2frm
[
h
->
slice_table
[
top_xy
]
&
(
MAX_SLICES
-
1
)][
0
]
+
(
MB_MBAFF
(
h
)
?
20
:
2
);
AV_COPY128
(
mv_dst
-
1
*
8
,
h
->
cur_pic
.
motion_val
[
list
][
b_xy
+
0
]);
ref_cache
[
0
-
1
*
8
]
=
ref_cache
[
1
-
1
*
8
]
=
ref2frm
[
list
][
h
->
cur_pic
.
ref_index
[
list
][
b8_xy
+
0
]];
...
...
@@ -3774,7 +3774,7 @@ static av_always_inline void fill_filter_caches_inter(H264Context *h,
if
(
USES_LIST
(
left_type
[
LTOP
],
list
))
{
const
int
b_xy
=
h
->
mb2b_xy
[
left_xy
[
LTOP
]]
+
3
;
const
int
b8_xy
=
4
*
left_xy
[
LTOP
]
+
1
;
int
(
*
ref2frm
)[
64
]
=
h
->
ref2frm
[
h
->
slice_table
[
left_xy
[
LTOP
]]
&
(
MAX_SLICES
-
1
)][
0
]
+
(
MB_MBAFF
?
20
:
2
);
int
(
*
ref2frm
)[
64
]
=
h
->
ref2frm
[
h
->
slice_table
[
left_xy
[
LTOP
]]
&
(
MAX_SLICES
-
1
)][
0
]
+
(
MB_MBAFF
(
h
)
?
20
:
2
);
AV_COPY32
(
mv_dst
-
1
+
0
,
h
->
cur_pic
.
motion_val
[
list
][
b_xy
+
b_stride
*
0
]);
AV_COPY32
(
mv_dst
-
1
+
8
,
h
->
cur_pic
.
motion_val
[
list
][
b_xy
+
b_stride
*
1
]);
AV_COPY32
(
mv_dst
-
1
+
16
,
h
->
cur_pic
.
motion_val
[
list
][
b_xy
+
b_stride
*
2
]);
...
...
@@ -3807,7 +3807,7 @@ static av_always_inline void fill_filter_caches_inter(H264Context *h,
{
int8_t
*
ref
=
&
h
->
cur_pic
.
ref_index
[
list
][
4
*
mb_xy
];
int
(
*
ref2frm
)[
64
]
=
h
->
ref2frm
[
h
->
slice_num
&
(
MAX_SLICES
-
1
)][
0
]
+
(
MB_MBAFF
?
20
:
2
);
int
(
*
ref2frm
)[
64
]
=
h
->
ref2frm
[
h
->
slice_num
&
(
MAX_SLICES
-
1
)][
0
]
+
(
MB_MBAFF
(
h
)
?
20
:
2
);
uint32_t
ref01
=
(
pack16to32
(
ref2frm
[
list
][
ref
[
0
]],
ref2frm
[
list
][
ref
[
1
]])
&
0x00FF00FF
)
*
0x0101
;
uint32_t
ref23
=
(
pack16to32
(
ref2frm
[
list
][
ref
[
2
]],
ref2frm
[
list
][
ref
[
3
]])
&
0x00FF00FF
)
*
0x0101
;
AV_WN32A
(
&
ref_cache
[
0
*
8
],
ref01
);
...
...
libavcodec/h264.h
View file @
82313eaa
...
...
@@ -59,7 +59,7 @@
#define MAX_SLICES 16
#ifdef ALLOW_INTERLACE
#define MB_MBAFF h->mb_mbaff
#define MB_MBAFF
(h)
h->mb_mbaff
#define MB_FIELD h->mb_field_decoding_flag
#define FRAME_MBAFF h->mb_aff_frame
#define FIELD_PICTURE (h->picture_structure != PICT_FRAME)
...
...
@@ -68,7 +68,7 @@
#define LBOT 1
#define LEFT(i) (i)
#else
#define MB_MBAFF 0
#define MB_MBAFF
(h)
0
#define MB_FIELD 0
#define FRAME_MBAFF 0
#define FIELD_PICTURE 0
...
...
libavcodec/h264_cabac.c
View file @
82313eaa
...
...
@@ -2088,7 +2088,7 @@ decode_intra_mb:
for
(
i
=
0
;
i
<
4
;
i
++
)
{
if
(
IS_DIRECT
(
h
->
sub_mb_type
[
i
]))
continue
;
if
(
IS_DIR
(
h
->
sub_mb_type
[
i
],
0
,
list
)){
int
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
;
int
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
(
h
)
;
if
(
rc
>
1
)
{
ref
[
list
][
i
]
=
decode_cabac_mb_ref
(
h
,
list
,
4
*
i
);
if
(
ref
[
list
][
i
]
>=
(
unsigned
)
rc
)
{
...
...
@@ -2174,7 +2174,7 @@ decode_intra_mb:
if
(
IS_16X16
(
mb_type
)){
for
(
list
=
0
;
list
<
h
->
list_count
;
list
++
){
if
(
IS_DIR
(
mb_type
,
0
,
list
)){
int
ref
,
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
;
int
ref
,
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
(
h
)
;
if
(
rc
>
1
)
{
ref
=
decode_cabac_mb_ref
(
h
,
list
,
0
);
if
(
ref
>=
(
unsigned
)
rc
)
{
...
...
@@ -2202,7 +2202,7 @@ decode_intra_mb:
for
(
list
=
0
;
list
<
h
->
list_count
;
list
++
){
for
(
i
=
0
;
i
<
2
;
i
++
){
if
(
IS_DIR
(
mb_type
,
i
,
list
)){
int
ref
,
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
;
int
ref
,
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
(
h
)
;
if
(
rc
>
1
)
{
ref
=
decode_cabac_mb_ref
(
h
,
list
,
8
*
i
);
if
(
ref
>=
(
unsigned
)
rc
)
{
...
...
@@ -2237,7 +2237,7 @@ decode_intra_mb:
for
(
list
=
0
;
list
<
h
->
list_count
;
list
++
){
for
(
i
=
0
;
i
<
2
;
i
++
){
if
(
IS_DIR
(
mb_type
,
i
,
list
)){
//FIXME optimize
int
ref
,
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
;
int
ref
,
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
(
h
)
;
if
(
rc
>
1
)
{
ref
=
decode_cabac_mb_ref
(
h
,
list
,
4
*
i
);
if
(
ref
>=
(
unsigned
)
rc
)
{
...
...
libavcodec/h264_cavlc.c
View file @
82313eaa
...
...
@@ -856,7 +856,7 @@ decode_intra_mb:
}
for
(
list
=
0
;
list
<
h
->
list_count
;
list
++
){
int
ref_count
=
IS_REF0
(
mb_type
)
?
1
:
h
->
ref_count
[
list
]
<<
MB_MBAFF
;
int
ref_count
=
IS_REF0
(
mb_type
)
?
1
:
h
->
ref_count
[
list
]
<<
MB_MBAFF
(
h
)
;
for
(
i
=
0
;
i
<
4
;
i
++
){
if
(
IS_DIRECT
(
h
->
sub_mb_type
[
i
]))
continue
;
if
(
IS_DIR
(
h
->
sub_mb_type
[
i
],
0
,
list
)){
...
...
@@ -936,7 +936,7 @@ decode_intra_mb:
for
(
list
=
0
;
list
<
h
->
list_count
;
list
++
){
unsigned
int
val
;
if
(
IS_DIR
(
mb_type
,
0
,
list
)){
int
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
;
int
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
(
h
)
;
if
(
rc
==
1
)
{
val
=
0
;
}
else
if
(
rc
==
2
)
{
...
...
@@ -967,7 +967,7 @@ decode_intra_mb:
for
(
i
=
0
;
i
<
2
;
i
++
){
unsigned
int
val
;
if
(
IS_DIR
(
mb_type
,
i
,
list
)){
int
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
;
int
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
(
h
)
;
if
(
rc
==
1
)
{
val
=
0
;
}
else
if
(
rc
==
2
)
{
...
...
@@ -1005,7 +1005,7 @@ decode_intra_mb:
for
(
i
=
0
;
i
<
2
;
i
++
){
unsigned
int
val
;
if
(
IS_DIR
(
mb_type
,
i
,
list
)){
//FIXME optimize
int
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
;
int
rc
=
h
->
ref_count
[
list
]
<<
MB_MBAFF
(
h
)
;
if
(
rc
==
1
)
{
val
=
0
;
}
else
if
(
rc
==
2
)
{
...
...
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