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
23e85be5
Commit
23e85be5
authored
Mar 09, 2013
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
h264: add a parameter to the CHROMA444 macro.
This way it does not look like a constant.
parent
e962bd08
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
18 additions
and
18 deletions
+18
-18
h264.c
libavcodec/h264.c
+8
-8
h264.h
libavcodec/h264.h
+1
-1
h264_cabac.c
libavcodec/h264_cabac.c
+3
-3
h264_cavlc.c
libavcodec/h264_cavlc.c
+1
-1
h264_loopfilter.c
libavcodec/h264_loopfilter.c
+4
-4
h264_mvpred.h
libavcodec/h264_mvpred.h
+1
-1
No files found.
libavcodec/h264.c
View file @
23e85be5
...
...
@@ -2041,7 +2041,7 @@ static av_always_inline void backup_mb_border(H264Context *h, uint8_t *src_y,
uint8_t
*
top_border
;
int
top_idx
=
1
;
const
int
pixel_shift
=
h
->
pixel_shift
;
int
chroma444
=
CHROMA444
;
int
chroma444
=
CHROMA444
(
h
)
;
int
chroma422
=
CHROMA422
(
h
);
src_y
-=
linesize
;
...
...
@@ -2438,7 +2438,7 @@ void ff_h264_hl_decode_mb(H264Context *h)
const
int
mb_type
=
h
->
cur_pic
.
mb_type
[
mb_xy
];
int
is_complex
=
CONFIG_SMALL
||
h
->
is_complex
||
IS_INTRA_PCM
(
mb_type
)
||
h
->
qscale
==
0
;
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
)
)
{
if
(
is_complex
||
h
->
pixel_shift
)
hl_decode_mb_444_complex
(
h
);
else
...
...
@@ -2926,7 +2926,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h)
{
switch
(
h
->
sps
.
bit_depth_luma
)
{
case
9
:
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
)
)
{
if
(
h
->
avctx
->
colorspace
==
AVCOL_SPC_RGB
)
{
return
AV_PIX_FMT_GBRP9
;
}
else
...
...
@@ -2937,7 +2937,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h)
return
AV_PIX_FMT_YUV420P9
;
break
;
case
10
:
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
)
)
{
if
(
h
->
avctx
->
colorspace
==
AVCOL_SPC_RGB
)
{
return
AV_PIX_FMT_GBRP10
;
}
else
...
...
@@ -2948,7 +2948,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h)
return
AV_PIX_FMT_YUV420P10
;
break
;
case
8
:
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
)
)
{
if
(
h
->
avctx
->
colorspace
==
AVCOL_SPC_RGB
)
{
return
AV_PIX_FMT_GBRP
;
}
else
...
...
@@ -3190,7 +3190,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0)
h
->
chroma_y_shift
=
h
->
sps
.
chroma_format_idc
<=
1
;
// 400 uses yuv420p
h
->
width
=
16
*
h
->
mb_width
-
(
2
>>
CHROMA444
)
*
FFMIN
(
h
->
sps
.
crop_right
,
(
8
<<
CHROMA444
)
-
1
);
h
->
width
=
16
*
h
->
mb_width
-
(
2
>>
CHROMA444
(
h
))
*
FFMIN
(
h
->
sps
.
crop_right
,
(
8
<<
CHROMA444
(
h
)
)
-
1
);
if
(
h
->
sps
.
frame_mbs_only_flag
)
h
->
height
=
16
*
h
->
mb_height
-
(
1
<<
h
->
chroma_y_shift
)
*
FFMIN
(
h
->
sps
.
crop_bottom
,
(
16
>>
h
->
chroma_y_shift
)
-
1
);
else
...
...
@@ -4001,10 +4001,10 @@ static void loop_filter(H264Context *h, int start_x, int end_x)
dest_y
=
h
->
cur_pic
.
f
.
data
[
0
]
+
((
mb_x
<<
pixel_shift
)
+
mb_y
*
h
->
linesize
)
*
16
;
dest_cb
=
h
->
cur_pic
.
f
.
data
[
1
]
+
(
mb_x
<<
pixel_shift
)
*
(
8
<<
CHROMA444
)
+
(
mb_x
<<
pixel_shift
)
*
(
8
<<
CHROMA444
(
h
)
)
+
mb_y
*
h
->
uvlinesize
*
block_h
;
dest_cr
=
h
->
cur_pic
.
f
.
data
[
2
]
+
(
mb_x
<<
pixel_shift
)
*
(
8
<<
CHROMA444
)
+
(
mb_x
<<
pixel_shift
)
*
(
8
<<
CHROMA444
(
h
)
)
+
mb_y
*
h
->
uvlinesize
*
block_h
;
// FIXME simplify above
...
...
libavcodec/h264.h
View file @
23e85be5
...
...
@@ -86,7 +86,7 @@
#endif
#define CHROMA422(h) (h->sps.chroma_format_idc == 2)
#define CHROMA444 (h->sps.chroma_format_idc == 3)
#define CHROMA444
(h)
(h->sps.chroma_format_idc == 3)
#define EXTENDED_SAR 255
...
...
libavcodec/h264_cabac.c
View file @
23e85be5
...
...
@@ -1812,7 +1812,7 @@ static av_always_inline void decode_cabac_residual_nondc(H264Context *h,
int
max_coeff
)
{
/* read coded block flag */
if
(
(
cat
!=
5
||
CHROMA444
)
&&
get_cabac
(
&
h
->
cabac
,
&
h
->
cabac_state
[
get_cabac_cbf_ctx
(
h
,
cat
,
n
,
max_coeff
,
0
)
]
)
==
0
)
{
if
(
(
cat
!=
5
||
CHROMA444
(
h
)
)
&&
get_cabac
(
&
h
->
cabac
,
&
h
->
cabac_state
[
get_cabac_cbf_ctx
(
h
,
cat
,
n
,
max_coeff
,
0
)
]
)
==
0
)
{
if
(
max_coeff
==
64
)
{
fill_rectangle
(
&
h
->
non_zero_count_cache
[
scan8
[
n
]],
2
,
2
,
8
,
0
,
1
);
}
else
{
...
...
@@ -2289,7 +2289,7 @@ decode_intra_mb:
/* It would be better to do this in fill_decode_caches, but we don't know
* the transform mode of the current macroblock there. */
if
(
CHROMA444
&&
IS_8x8DCT
(
mb_type
)){
if
(
CHROMA444
(
h
)
&&
IS_8x8DCT
(
mb_type
)){
int
i
;
uint8_t
*
nnz_cache
=
h
->
non_zero_count_cache
;
for
(
i
=
0
;
i
<
2
;
i
++
){
...
...
@@ -2354,7 +2354,7 @@ decode_intra_mb:
h
->
last_qscale_diff
=
0
;
decode_cabac_luma_residual
(
h
,
scan
,
scan8x8
,
pixel_shift
,
mb_type
,
cbp
,
0
);
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
))
{
decode_cabac_luma_residual
(
h
,
scan
,
scan8x8
,
pixel_shift
,
mb_type
,
cbp
,
1
);
decode_cabac_luma_residual
(
h
,
scan
,
scan8x8
,
pixel_shift
,
mb_type
,
cbp
,
2
);
}
else
if
(
CHROMA422
(
h
))
{
...
...
libavcodec/h264_cavlc.c
View file @
23e85be5
...
...
@@ -1106,7 +1106,7 @@ decode_intra_mb:
return
-
1
;
}
h
->
cbp_table
[
mb_xy
]
|=
ret
<<
12
;
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
))
{
if
(
decode_luma_residual
(
h
,
gb
,
scan
,
scan8x8
,
pixel_shift
,
mb_type
,
cbp
,
1
)
<
0
){
return
-
1
;
}
...
...
libavcodec/h264_loopfilter.c
View file @
23e85be5
...
...
@@ -245,7 +245,7 @@ static av_always_inline void h264_filter_mb_fast_internal(H264Context *h,
int
pixel_shift
)
{
int
chroma
=
!
(
CONFIG_GRAY
&&
(
h
->
flags
&
CODEC_FLAG_GRAY
));
int
chroma444
=
CHROMA444
;
int
chroma444
=
CHROMA444
(
h
)
;
int
chroma422
=
CHROMA422
(
h
);
int
mb_xy
=
h
->
mb_xy
;
...
...
@@ -466,7 +466,7 @@ static int check_mv(H264Context *h, long b_idx, long bn_idx, int mvy_limit){
static
av_always_inline
void
filter_mb_dir
(
H264Context
*
h
,
int
mb_x
,
int
mb_y
,
uint8_t
*
img_y
,
uint8_t
*
img_cb
,
uint8_t
*
img_cr
,
unsigned
int
linesize
,
unsigned
int
uvlinesize
,
int
mb_xy
,
int
mb_type
,
int
mvy_limit
,
int
first_vertical_edge_done
,
int
a
,
int
b
,
int
chroma
,
int
dir
)
{
int
edge
;
int
chroma_qp_avg
[
2
];
int
chroma444
=
CHROMA444
;
int
chroma444
=
CHROMA444
(
h
)
;
int
chroma422
=
CHROMA422
(
h
);
const
int
mbm_xy
=
dir
==
0
?
mb_xy
-
1
:
h
->
top_mb_xy
;
const
int
mbm_type
=
dir
==
0
?
h
->
left_type
[
LTOP
]
:
h
->
top_type
;
...
...
@@ -779,7 +779,7 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint
filter_mb_mbaff_edgev
(
h
,
img_y
,
linesize
,
bS
,
1
,
qp
[
0
],
a
,
b
,
1
);
filter_mb_mbaff_edgev
(
h
,
img_y
+
8
*
linesize
,
linesize
,
bS
+
4
,
1
,
qp
[
1
],
a
,
b
,
1
);
if
(
chroma
){
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
)
)
{
filter_mb_mbaff_edgev
(
h
,
img_cb
,
uvlinesize
,
bS
,
1
,
bqp
[
0
],
a
,
b
,
1
);
filter_mb_mbaff_edgev
(
h
,
img_cb
+
8
*
uvlinesize
,
uvlinesize
,
bS
+
4
,
1
,
bqp
[
1
],
a
,
b
,
1
);
filter_mb_mbaff_edgev
(
h
,
img_cr
,
uvlinesize
,
bS
,
1
,
rqp
[
0
],
a
,
b
,
1
);
...
...
@@ -800,7 +800,7 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint
filter_mb_mbaff_edgev
(
h
,
img_y
,
2
*
linesize
,
bS
,
2
,
qp
[
0
],
a
,
b
,
1
);
filter_mb_mbaff_edgev
(
h
,
img_y
+
linesize
,
2
*
linesize
,
bS
+
1
,
2
,
qp
[
1
],
a
,
b
,
1
);
if
(
chroma
){
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
)
)
{
filter_mb_mbaff_edgev
(
h
,
img_cb
,
2
*
uvlinesize
,
bS
,
2
,
bqp
[
0
],
a
,
b
,
1
);
filter_mb_mbaff_edgev
(
h
,
img_cb
+
uvlinesize
,
2
*
uvlinesize
,
bS
+
1
,
2
,
bqp
[
1
],
a
,
b
,
1
);
filter_mb_mbaff_edgev
(
h
,
img_cr
,
2
*
uvlinesize
,
bS
,
2
,
rqp
[
0
],
a
,
b
,
1
);
...
...
libavcodec/h264_mvpred.h
View file @
23e85be5
...
...
@@ -556,7 +556,7 @@ static void fill_decode_caches(H264Context *h, int mb_type)
nnz
=
h
->
non_zero_count
[
left_xy
[
LEFT
(
i
)]];
nnz_cache
[
3
+
8
*
1
+
2
*
8
*
i
]
=
nnz
[
left_block
[
8
+
0
+
2
*
i
]];
nnz_cache
[
3
+
8
*
2
+
2
*
8
*
i
]
=
nnz
[
left_block
[
8
+
1
+
2
*
i
]];
if
(
CHROMA444
)
{
if
(
CHROMA444
(
h
)
)
{
nnz_cache
[
3
+
8
*
6
+
2
*
8
*
i
]
=
nnz
[
left_block
[
8
+
0
+
2
*
i
]
+
4
*
4
];
nnz_cache
[
3
+
8
*
7
+
2
*
8
*
i
]
=
nnz
[
left_block
[
8
+
1
+
2
*
i
]
+
4
*
4
];
nnz_cache
[
3
+
8
*
11
+
2
*
8
*
i
]
=
nnz
[
left_block
[
8
+
0
+
2
*
i
]
+
8
*
4
];
...
...
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