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
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