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
1a6948fa
Commit
1a6948fa
authored
Nov 02, 2013
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libavcodec/hevc: reduce bracket differences to
064698d3
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
ce7f1c76
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
74 additions
and
92 deletions
+74
-92
hevc.c
libavcodec/hevc.c
+19
-19
hevc_cabac.c
libavcodec/hevc_cabac.c
+11
-12
hevc_filter.c
libavcodec/hevc_filter.c
+13
-13
hevc_mvs.c
libavcodec/hevc_mvs.c
+6
-7
hevc_parser.c
libavcodec/hevc_parser.c
+3
-4
hevc_refs.c
libavcodec/hevc_refs.c
+4
-4
hevc_sei.c
libavcodec/hevc_sei.c
+2
-3
hevcdsp_template.c
libavcodec/hevcdsp_template.c
+14
-26
hevcpred_template.c
libavcodec/hevcpred_template.c
+2
-4
No files found.
libavcodec/hevc.c
View file @
1a6948fa
...
...
@@ -443,7 +443,7 @@ static int hls_slice_header(HEVCContext *s)
}
numbits
=
av_ceil_log2
(
s
->
sps
->
nb_st_rps
);
rps_idx
=
(
numbits
>
0
)
?
get_bits
(
gb
,
numbits
)
:
0
;
rps_idx
=
numbits
>
0
?
get_bits
(
gb
,
numbits
)
:
0
;
sh
->
short_term_rps
=
&
s
->
sps
->
st_rps
[
rps_idx
];
}
...
...
@@ -768,7 +768,7 @@ static void hls_transform_unit(HEVCContext *s, int x0, int y0,
s
->
hpc
.
intra_pred
(
s
,
x0
,
y0
,
log2_trafo_size
-
1
,
1
);
s
->
hpc
.
intra_pred
(
s
,
x0
,
y0
,
log2_trafo_size
-
1
,
2
);
}
else
if
(
blk_idx
==
3
)
{
trafo_size
=
trafo_size
<<
(
s
->
sps
->
hshift
[
1
])
;
trafo_size
=
trafo_size
<<
s
->
sps
->
hshift
[
1
]
;
ff_hevc_set_neighbour_available
(
s
,
xBase
,
yBase
,
trafo_size
,
trafo_size
);
s
->
hpc
.
intra_pred
(
s
,
xBase
,
yBase
,
log2_trafo_size
,
1
);
...
...
@@ -867,10 +867,10 @@ static void hls_transform_tree(HEVCContext *s, int x0, int y0,
lc
->
tt
.
cbf_luma
=
1
;
lc
->
tt
.
inter_split_flag
=
(
s
->
sps
->
max_transform_hierarchy_depth_inter
==
0
&&
lc
->
tt
.
inter_split_flag
=
s
->
sps
->
max_transform_hierarchy_depth_inter
==
0
&&
lc
->
cu
.
pred_mode
==
MODE_INTER
&&
lc
->
cu
.
part_mode
!=
PART_2Nx2N
&&
trafo_depth
==
0
)
;
trafo_depth
==
0
;
if
(
log2_trafo_size
<=
s
->
sps
->
log2_max_trafo_size
&&
log2_trafo_size
>
s
->
sps
->
log2_min_tb_size
&&
...
...
@@ -878,9 +878,9 @@ static void hls_transform_tree(HEVCContext *s, int x0, int y0,
!
(
lc
->
cu
.
intra_split_flag
&&
trafo_depth
==
0
))
{
split_transform_flag
=
ff_hevc_split_transform_flag_decode
(
s
,
log2_trafo_size
);
}
else
{
split_transform_flag
=
(
log2_trafo_size
>
s
->
sps
->
log2_max_trafo_size
||
(
lc
->
cu
.
intra_split_flag
&&
(
trafo_depth
==
0
)
)
||
lc
->
tt
.
inter_split_flag
)
;
split_transform_flag
=
log2_trafo_size
>
s
->
sps
->
log2_max_trafo_size
||
(
lc
->
cu
.
intra_split_flag
&&
trafo_depth
==
0
)
||
lc
->
tt
.
inter_split_flag
;
}
if
(
log2_trafo_size
>
2
)
{
...
...
@@ -1686,8 +1686,8 @@ static int hls_coding_quadtree(HEVCContext *s, int x0, int y0,
int
ret
;
lc
->
ct
.
depth
=
cb_depth
;
if
(
(
x0
+
cb_size
<=
s
->
sps
->
width
)
&&
(
y0
+
cb_size
<=
s
->
sps
->
height
)
&&
if
(
x0
+
cb_size
<=
s
->
sps
->
width
&&
y0
+
cb_size
<=
s
->
sps
->
height
&&
log2_cb_size
>
s
->
sps
->
log2_min_cb_size
)
{
SAMPLE
(
s
->
split_cu_flag
,
x0
,
y0
)
=
ff_hevc_split_coding_unit_flag_decode
(
s
,
cb_depth
,
x0
,
y0
);
...
...
@@ -1777,14 +1777,14 @@ static void hls_decode_neighbour(HEVCContext *s, int x_ctb, int y_ctb,
lc
->
end_of_tiles_y
=
FFMIN
(
y_ctb
+
ctb_size
,
s
->
sps
->
height
);
if
(
s
->
pps
->
tiles_enabled_flag
)
{
tile_left_boundary
=
((
x_ctb
>
0
)
&&
(
s
->
pps
->
tile_id
[
ctb_addr_ts
]
==
s
->
pps
->
tile_id
[
s
->
pps
->
ctb_addr_rs_to_ts
[
ctb_addr_rs
-
1
]]))
;
slice_left_boundary
=
((
x_ctb
>
0
)
&&
(
s
->
tab_slice_address
[
ctb_addr_rs
]
==
s
->
tab_slice_address
[
ctb_addr_rs
-
1
]))
;
tile_up_boundary
=
((
y_ctb
>
0
)
&&
(
s
->
pps
->
tile_id
[
ctb_addr_ts
]
==
s
->
pps
->
tile_id
[
s
->
pps
->
ctb_addr_rs_to_ts
[
ctb_addr_rs
-
s
->
sps
->
ctb_width
]]))
;
slice_up_boundary
=
((
y_ctb
>
0
)
&&
(
s
->
tab_slice_address
[
ctb_addr_rs
]
==
s
->
tab_slice_address
[
ctb_addr_rs
-
s
->
sps
->
ctb_width
]))
;
tile_left_boundary
=
x_ctb
>
0
&&
s
->
pps
->
tile_id
[
ctb_addr_ts
]
==
s
->
pps
->
tile_id
[
s
->
pps
->
ctb_addr_rs_to_ts
[
ctb_addr_rs
-
1
]]
;
slice_left_boundary
=
x_ctb
>
0
&&
s
->
tab_slice_address
[
ctb_addr_rs
]
==
s
->
tab_slice_address
[
ctb_addr_rs
-
1
]
;
tile_up_boundary
=
y_ctb
>
0
&&
s
->
pps
->
tile_id
[
ctb_addr_ts
]
==
s
->
pps
->
tile_id
[
s
->
pps
->
ctb_addr_rs_to_ts
[
ctb_addr_rs
-
s
->
sps
->
ctb_width
]]
;
slice_up_boundary
=
y_ctb
>
0
&&
s
->
tab_slice_address
[
ctb_addr_rs
]
==
s
->
tab_slice_address
[
ctb_addr_rs
-
s
->
sps
->
ctb_width
]
;
}
else
{
tile_left_boundary
=
tile_up_boundary
=
1
;
...
...
@@ -1811,8 +1811,8 @@ static int hls_decode_entry(AVCodecContext *avctxt, void *isFilterThread)
while
(
more_data
&&
ctb_addr_ts
<
s
->
sps
->
ctb_size
)
{
int
ctb_addr_rs
=
s
->
pps
->
ctb_addr_ts_to_rs
[
ctb_addr_ts
];
x_ctb
=
(
ctb_addr_rs
%
((
s
->
sps
->
width
+
(
ctb_size
-
1
)
)
>>
s
->
sps
->
log2_ctb_size
))
<<
s
->
sps
->
log2_ctb_size
;
y_ctb
=
(
ctb_addr_rs
/
((
s
->
sps
->
width
+
(
ctb_size
-
1
)
)
>>
s
->
sps
->
log2_ctb_size
))
<<
s
->
sps
->
log2_ctb_size
;
x_ctb
=
(
ctb_addr_rs
%
((
s
->
sps
->
width
+
ctb_size
-
1
)
>>
s
->
sps
->
log2_ctb_size
))
<<
s
->
sps
->
log2_ctb_size
;
y_ctb
=
(
ctb_addr_rs
/
((
s
->
sps
->
width
+
ctb_size
-
1
)
>>
s
->
sps
->
log2_ctb_size
))
<<
s
->
sps
->
log2_ctb_size
;
hls_decode_neighbour
(
s
,
x_ctb
,
y_ctb
,
ctb_addr_ts
);
ff_hevc_cabac_init
(
s
,
ctb_addr_ts
);
...
...
libavcodec/hevc_cabac.c
View file @
1a6948fa
...
...
@@ -498,9 +498,9 @@ static const uint8_t diag_scan8x8_inv[8][8] = {
void
ff_hevc_save_states
(
HEVCContext
*
s
,
int
ctb_addr_ts
)
{
if
(
s
->
pps
->
entropy_coding_sync_enabled_flag
&&
(
(
ctb_addr_ts
%
s
->
sps
->
ctb_width
)
==
2
||
(
ctb_addr_ts
%
s
->
sps
->
ctb_width
==
2
||
(
s
->
sps
->
ctb_width
==
2
&&
(
ctb_addr_ts
%
s
->
sps
->
ctb_width
)
==
0
)))
{
ctb_addr_ts
%
s
->
sps
->
ctb_width
==
0
)))
{
memcpy
(
s
->
cabac_state
,
s
->
HEVClc
->
cabac_state
,
HEVC_CONTEXTS
);
}
}
...
...
@@ -550,14 +550,14 @@ void ff_hevc_cabac_init(HEVCContext *s, int ctb_addr_ts)
{
if
(
ctb_addr_ts
==
s
->
pps
->
ctb_addr_rs_to_ts
[
s
->
sh
.
slice_ctb_addr_rs
])
{
cabac_init_decoder
(
s
);
if
(
(
s
->
sh
.
dependent_slice_segment_flag
==
0
)
||
if
(
s
->
sh
.
dependent_slice_segment_flag
==
0
||
(
s
->
pps
->
tiles_enabled_flag
&&
(
s
->
pps
->
tile_id
[
ctb_addr_ts
]
!=
s
->
pps
->
tile_id
[
ctb_addr_ts
-
1
])
))
s
->
pps
->
tile_id
[
ctb_addr_ts
]
!=
s
->
pps
->
tile_id
[
ctb_addr_ts
-
1
]
))
cabac_init_state
(
s
);
if
(
!
s
->
sh
.
first_slice_in_pic_flag
&&
s
->
pps
->
entropy_coding_sync_enabled_flag
)
{
if
(
(
ctb_addr_ts
%
s
->
sps
->
ctb_width
)
==
0
)
{
if
(
ctb_addr_ts
%
s
->
sps
->
ctb_width
==
0
)
{
if
(
s
->
sps
->
ctb_width
==
1
)
cabac_init_state
(
s
);
else
if
(
s
->
sh
.
dependent_slice_segment_flag
==
1
)
...
...
@@ -566,7 +566,7 @@ void ff_hevc_cabac_init(HEVCContext *s, int ctb_addr_ts)
}
}
else
{
if
(
s
->
pps
->
tiles_enabled_flag
&&
(
s
->
pps
->
tile_id
[
ctb_addr_ts
]
!=
s
->
pps
->
tile_id
[
ctb_addr_ts
-
1
])
)
{
s
->
pps
->
tile_id
[
ctb_addr_ts
]
!=
s
->
pps
->
tile_id
[
ctb_addr_ts
-
1
]
)
{
if
(
s
->
threads_number
==
1
)
cabac_reinit
(
s
->
HEVClc
);
else
...
...
@@ -574,7 +574,7 @@ void ff_hevc_cabac_init(HEVCContext *s, int ctb_addr_ts)
cabac_init_state
(
s
);
}
if
(
s
->
pps
->
entropy_coding_sync_enabled_flag
)
{
if
(
(
ctb_addr_ts
%
s
->
sps
->
ctb_width
)
==
0
)
{
if
(
ctb_addr_ts
%
s
->
sps
->
ctb_width
==
0
)
{
get_cabac_terminate
(
&
s
->
HEVClc
->
cc
);
if
(
s
->
threads_number
==
1
)
cabac_reinit
(
s
->
HEVClc
);
...
...
@@ -634,7 +634,7 @@ int ff_hevc_sao_offset_sign_decode(HEVCContext *s)
int
ff_hevc_sao_eo_class_decode
(
HEVCContext
*
s
)
{
int
ret
=
(
get_cabac_bypass
(
&
s
->
HEVClc
->
cc
)
<<
1
)
;
int
ret
=
get_cabac_bypass
(
&
s
->
HEVClc
->
cc
)
<<
1
;
ret
|=
get_cabac_bypass
(
&
s
->
HEVClc
->
cc
);
return
ret
;
}
...
...
@@ -789,7 +789,7 @@ int ff_hevc_intra_chroma_pred_mode_decode(HEVCContext *s)
if
(
!
GET_CABAC
(
elem_offset
[
INTRA_CHROMA_PRED_MODE
]))
return
4
;
ret
=
(
get_cabac_bypass
(
&
s
->
HEVClc
->
cc
)
<<
1
)
;
ret
=
get_cabac_bypass
(
&
s
->
HEVClc
->
cc
)
<<
1
;
ret
|=
get_cabac_bypass
(
&
s
->
HEVClc
->
cc
);
return
ret
;
}
...
...
@@ -990,11 +990,10 @@ static av_always_inline int significant_coeff_flag_decode(HEVCContext *s, int c_
}
}
if
(
c_idx
==
0
)
{
if
(
c_idx
==
0
)
inc
=
sig_ctx
;
}
else
{
else
inc
=
sig_ctx
+
27
;
}
return
GET_CABAC
(
elem_offset
[
SIGNIFICANT_COEFF_FLAG
]
+
inc
);
}
...
...
libavcodec/hevc_filter.c
View file @
1a6948fa
...
...
@@ -220,8 +220,8 @@ static void sao_filter_CTB(HEVCContext *s, int x, int y)
sao
[
0
]
=
&
CTB
(
s
->
sao
,
x_ctb
,
y_ctb
);
edges
[
0
]
=
x_ctb
==
0
;
edges
[
1
]
=
y_ctb
==
0
;
edges
[
2
]
=
x_ctb
==
(
s
->
sps
->
ctb_width
-
1
)
;
edges
[
3
]
=
y_ctb
==
(
s
->
sps
->
ctb_height
-
1
)
;
edges
[
2
]
=
x_ctb
==
s
->
sps
->
ctb_width
-
1
;
edges
[
3
]
=
y_ctb
==
s
->
sps
->
ctb_height
-
1
;
lfase
[
0
]
=
CTB
(
s
->
filter_slice_edges
,
x_ctb
,
y_ctb
);
classes
[
0
]
=
0
;
...
...
@@ -333,7 +333,7 @@ static int get_pcm(HEVCContext *s, int x, int y)
return
s
->
is_pcm
[
y_pu
*
s
->
sps
->
min_pu_width
+
x_pu
];
}
#define TC_CALC(qp, bs) tctable[av_clip((qp) + DEFAULT_INTRA_TC_OFFSET * ((bs) - 1) + (
(tc_offset >> 1)
<< 1), 0, MAX_QP + DEFAULT_INTRA_TC_OFFSET)]
#define TC_CALC(qp, bs) tctable[av_clip((qp) + DEFAULT_INTRA_TC_OFFSET * ((bs) - 1) + (
tc_offset >> 1
<< 1), 0, MAX_QP + DEFAULT_INTRA_TC_OFFSET)]
static
void
deblocking_filter_CTB
(
HEVCContext
*
s
,
int
x0
,
int
y0
)
{
...
...
@@ -383,8 +383,8 @@ static void deblocking_filter_CTB(HEVCContext *s, int x0, int y0)
const
int
qp0
=
(
get_qPy
(
s
,
x
-
1
,
y
)
+
get_qPy
(
s
,
x
,
y
)
+
1
)
>>
1
;
const
int
qp1
=
(
get_qPy
(
s
,
x
-
1
,
y
+
4
)
+
get_qPy
(
s
,
x
,
y
+
4
)
+
1
)
>>
1
;
beta
[
0
]
=
betatable
[
av_clip
(
qp0
+
(
(
beta_offset
>>
1
)
<<
1
),
0
,
MAX_QP
)];
beta
[
1
]
=
betatable
[
av_clip
(
qp1
+
(
(
beta_offset
>>
1
)
<<
1
),
0
,
MAX_QP
)];
beta
[
0
]
=
betatable
[
av_clip
(
qp0
+
(
beta_offset
>>
1
<<
1
),
0
,
MAX_QP
)];
beta
[
1
]
=
betatable
[
av_clip
(
qp1
+
(
beta_offset
>>
1
<<
1
),
0
,
MAX_QP
)];
tc
[
0
]
=
bs0
?
TC_CALC
(
qp0
,
bs0
)
:
0
;
tc
[
1
]
=
bs1
?
TC_CALC
(
qp1
,
bs1
)
:
0
;
src
=
&
s
->
frame
->
data
[
LUMA
][
y
*
s
->
frame
->
linesize
[
LUMA
]
+
(
x
<<
s
->
sps
->
pixel_shift
)];
...
...
@@ -416,7 +416,7 @@ static void deblocking_filter_CTB(HEVCContext *s, int x0, int y0)
c_tc
[
0
]
=
(
bs0
==
2
)
?
chroma_tc
(
s
,
qp0
,
chroma
,
tc_offset
)
:
0
;
c_tc
[
1
]
=
(
bs1
==
2
)
?
chroma_tc
(
s
,
qp1
,
chroma
,
tc_offset
)
:
0
;
src
=
&
s
->
frame
->
data
[
chroma
][
(
y
/
2
)
*
s
->
frame
->
linesize
[
chroma
]
+
((
x
/
2
)
<<
s
->
sps
->
pixel_shift
)];
src
=
&
s
->
frame
->
data
[
chroma
][
y
/
2
*
s
->
frame
->
linesize
[
chroma
]
+
((
x
/
2
)
<<
s
->
sps
->
pixel_shift
)];
if
(
pcmf
)
{
no_p
[
0
]
=
get_pcm
(
s
,
x
-
1
,
y
);
no_p
[
1
]
=
get_pcm
(
s
,
x
-
1
,
y
+
8
);
...
...
@@ -448,8 +448,8 @@ static void deblocking_filter_CTB(HEVCContext *s, int x0, int y0)
tc_offset
=
x
>=
x0
?
cur_tc_offset
:
left_tc_offset
;
beta_offset
=
x
>=
x0
?
cur_beta_offset
:
left_beta_offset
;
beta
[
0
]
=
betatable
[
av_clip
(
qp0
+
(
(
beta_offset
>>
1
)
<<
1
),
0
,
MAX_QP
)];
beta
[
1
]
=
betatable
[
av_clip
(
qp1
+
(
(
beta_offset
>>
1
)
<<
1
),
0
,
MAX_QP
)];
beta
[
0
]
=
betatable
[
av_clip
(
qp0
+
(
beta_offset
>>
1
<<
1
),
0
,
MAX_QP
)];
beta
[
1
]
=
betatable
[
av_clip
(
qp1
+
(
beta_offset
>>
1
<<
1
),
0
,
MAX_QP
)];
tc
[
0
]
=
bs0
?
TC_CALC
(
qp0
,
bs0
)
:
0
;
tc
[
1
]
=
bs1
?
TC_CALC
(
qp1
,
bs1
)
:
0
;
src
=
&
s
->
frame
->
data
[
LUMA
][
y
*
s
->
frame
->
linesize
[
LUMA
]
+
(
x
<<
s
->
sps
->
pixel_shift
)];
...
...
@@ -488,13 +488,13 @@ static void deblocking_filter_CTB(HEVCContext *s, int x0, int y0)
}
if
((
bs0
==
2
)
||
(
bs1
==
2
))
{
const
int
qp0
=
(
bs0
==
2
)
?
((
get_qPy
(
s
,
x
,
y
-
1
)
+
get_qPy
(
s
,
x
,
y
)
+
1
)
>>
1
)
:
0
;
const
int
qp1
=
(
bs1
==
2
)
?
((
get_qPy
(
s
,
x
+
8
,
y
-
1
)
+
get_qPy
(
s
,
x
+
8
,
y
)
+
1
)
>>
1
)
:
0
;
const
int
qp0
=
bs0
==
2
?
(
get_qPy
(
s
,
x
,
y
-
1
)
+
get_qPy
(
s
,
x
,
y
)
+
1
)
>>
1
:
0
;
const
int
qp1
=
bs1
==
2
?
(
get_qPy
(
s
,
x
+
8
,
y
-
1
)
+
get_qPy
(
s
,
x
+
8
,
y
)
+
1
)
>>
1
:
0
;
tc_offset
=
x
>=
x0
?
cur_tc_offset
:
left_tc_offset
;
c_tc
[
0
]
=
(
bs0
==
2
)
?
chroma_tc
(
s
,
qp0
,
chroma
,
tc_offset
)
:
0
;
c_tc
[
1
]
=
(
bs1
==
2
)
?
chroma_tc
(
s
,
qp1
,
chroma
,
cur_tc_offset
)
:
0
;
src
=
&
s
->
frame
->
data
[
chroma
][
(
y
/
2
)
*
s
->
frame
->
linesize
[
chroma
]
+
((
x
/
2
)
<<
s
->
sps
->
pixel_shift
)];
c_tc
[
0
]
=
bs0
==
2
?
chroma_tc
(
s
,
qp0
,
chroma
,
tc_offset
)
:
0
;
c_tc
[
1
]
=
bs1
==
2
?
chroma_tc
(
s
,
qp1
,
chroma
,
cur_tc_offset
)
:
0
;
src
=
&
s
->
frame
->
data
[
chroma
][
y
/
2
*
s
->
frame
->
linesize
[
chroma
]
+
((
x
/
2
)
<<
s
->
sps
->
pixel_shift
)];
if
(
pcmf
)
{
no_p
[
0
]
=
get_pcm
(
s
,
x
,
y
-
1
);
no_p
[
1
]
=
get_pcm
(
s
,
x
+
8
,
y
-
1
);
...
...
libavcodec/hevc_mvs.c
View file @
1a6948fa
...
...
@@ -70,9 +70,9 @@ static int z_scan_block_avail(HEVCContext *s, int xCurr, int yCurr,
yCurr
>>
s
->
sps
->
log2_min_tb_size
);
int
N
;
if
(
(
xN
<
0
)
||
(
yN
<
0
)
||
(
xN
>=
s
->
sps
->
width
)
||
(
yN
>=
s
->
sps
->
height
)
)
if
(
xN
<
0
||
yN
<
0
||
xN
>=
s
->
sps
->
width
||
yN
>=
s
->
sps
->
height
)
return
0
;
N
=
MIN_TB_ADDR_ZS
(
xN
>>
s
->
sps
->
log2_min_tb_size
,
...
...
@@ -516,8 +516,8 @@ static void derive_spatial_merge_candidates(HEVCContext *s, int x0, int y0,
mergecandlist
[
nb_merge_cand
].
mv
[
1
].
x
=
0
;
mergecandlist
[
nb_merge_cand
].
mv
[
1
].
y
=
0
;
mergecandlist
[
nb_merge_cand
].
is_intra
=
0
;
mergecandlist
[
nb_merge_cand
].
ref_idx
[
0
]
=
(
zero_idx
<
nb_refs
)
?
zero_idx
:
0
;
mergecandlist
[
nb_merge_cand
].
ref_idx
[
1
]
=
(
zero_idx
<
nb_refs
)
?
zero_idx
:
0
;
mergecandlist
[
nb_merge_cand
].
ref_idx
[
0
]
=
zero_idx
<
nb_refs
?
zero_idx
:
0
;
mergecandlist
[
nb_merge_cand
].
ref_idx
[
1
]
=
zero_idx
<
nb_refs
?
zero_idx
:
0
;
nb_merge_cand
++
;
zero_idx
++
;
...
...
@@ -691,9 +691,8 @@ void ff_hevc_luma_mv_mvp_mode(HEVCContext *s, int x0, int y0, int nPbW,
yA1_pu
=
yA1
>>
s
->
sps
->
log2_min_pu_size
;
is_available_a1
=
AVAILABLE
(
cand_left
,
A1
);
if
(
is_available_a0
||
is_available_a1
)
{
if
(
is_available_a0
||
is_available_a1
)
isScaledFlag_L0
=
1
;
}
if
(
is_available_a0
)
{
availableFlagLXA0
=
MP_MX
(
A0
,
pred_flag_index_l0
,
mxA
);
...
...
libavcodec/hevc_parser.c
View file @
1a6948fa
...
...
@@ -294,13 +294,12 @@ static int hevc_split(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
state
=
(
state
<<
8
)
|
buf
[
i
];
if
(((
state
>>
8
)
&
0xFFFFFF
)
==
START_CODE
)
{
int
nut
=
(
state
>>
1
)
&
0x3F
;
if
(
nut
>=
NAL_VPS
&&
nut
<=
NAL_PPS
)
{
if
(
nut
>=
NAL_VPS
&&
nut
<=
NAL_PPS
)
has_ps
=
1
;
}
else
if
(
has_ps
)
{
else
if
(
has_ps
)
return
i
-
3
;
}
else
{
// no parameter set at the beginning of the stream
else
// no parameter set at the beginning of the stream
return
0
;
}
}
}
return
0
;
...
...
libavcodec/hevc_refs.c
View file @
1a6948fa
...
...
@@ -263,7 +263,7 @@ int ff_hevc_slice_rpl(HEVCContext *s)
for
(
j
=
0
;
j
<
rps
->
nb_refs
&&
rpl_tmp
.
nb_refs
<
MAX_REFS
;
j
++
)
{
rpl_tmp
.
list
[
rpl_tmp
.
nb_refs
]
=
rps
->
list
[
j
];
rpl_tmp
.
ref
[
rpl_tmp
.
nb_refs
]
=
rps
->
ref
[
j
];
rpl_tmp
.
isLongTerm
[
rpl_tmp
.
nb_refs
]
=
(
i
==
2
)
;
rpl_tmp
.
isLongTerm
[
rpl_tmp
.
nb_refs
]
=
i
==
2
;
rpl_tmp
.
nb_refs
++
;
}
}
...
...
@@ -312,7 +312,7 @@ static HEVCFrame *find_ref_idx(HEVCContext *s, int poc)
for
(
i
=
0
;
i
<
FF_ARRAY_ELEMS
(
s
->
DPB
);
i
++
)
{
HEVCFrame
*
ref
=
&
s
->
DPB
[
i
];
if
(
ref
->
frame
->
buf
[
0
]
&&
(
ref
->
sequence
==
s
->
seq_decode
)
)
{
if
(
ref
->
frame
->
buf
[
0
]
&&
ref
->
sequence
==
s
->
seq_decode
)
{
if
(
ref
->
poc
==
poc
||
(
ref
->
poc
&
LtMask
)
==
poc
)
return
ref
;
}
...
...
@@ -450,9 +450,9 @@ int ff_hevc_compute_poc(HEVCContext *s, int poc_lsb)
int
prev_poc_msb
=
s
->
pocTid0
-
prev_poc_lsb
;
int
poc_msb
;
if
(
(
poc_lsb
<
prev_poc_lsb
)
&&
((
prev_poc_lsb
-
poc_lsb
)
>=
max_poc_lsb
/
2
)
)
if
(
poc_lsb
<
prev_poc_lsb
&&
prev_poc_lsb
-
poc_lsb
>=
max_poc_lsb
/
2
)
poc_msb
=
prev_poc_msb
+
max_poc_lsb
;
else
if
(
(
poc_lsb
>
prev_poc_lsb
)
&&
((
poc_lsb
-
prev_poc_lsb
)
>
(
max_poc_lsb
/
2
))
)
else
if
(
poc_lsb
>
prev_poc_lsb
&&
poc_lsb
-
prev_poc_lsb
>
max_poc_lsb
/
2
)
poc_msb
=
prev_poc_msb
-
max_poc_lsb
;
else
poc_msb
=
prev_poc_msb
;
...
...
libavcodec/hevc_sei.c
View file @
1a6948fa
...
...
@@ -38,10 +38,9 @@ static void decode_nal_sei_decoded_picture_hash(HEVCContext *s,
for
(
cIdx
=
0
;
cIdx
<
3
/*((s->sps->chroma_format_idc == 0) ? 1 : 3)*/
;
cIdx
++
)
{
if
(
hash_type
==
0
)
{
s
->
is_md5
=
1
;
for
(
i
=
0
;
i
<
16
;
i
++
)
{
for
(
i
=
0
;
i
<
16
;
i
++
)
s
->
md5
[
cIdx
][
i
]
=
get_bits
(
gb
,
8
);
}
}
else
if
(
hash_type
==
1
)
{
}
else
if
(
hash_type
==
1
)
{
// picture_crc = get_bits(gb, 16);
skip_bits
(
gb
,
16
);
}
else
if
(
hash_type
==
2
)
{
...
...
libavcodec/hevcdsp_template.c
View file @
1a6948fa
...
...
@@ -491,17 +491,15 @@ static void FUNC(sao_edge_filter_0)(uint8_t *_dst, uint8_t *_src,
if
(
sao_eo_class
!=
SAO_EO_HORIZ
)
{
if
(
borders
[
1
])
{
int
offset_val
=
sao_offset_val
[
0
];
for
(
x
=
init_x
;
x
<
width
;
x
++
)
{
for
(
x
=
init_x
;
x
<
width
;
x
++
)
dst
[
x
]
=
av_clip_pixel
(
src
[
x
]
+
offset_val
);
}
init_y
=
1
;
}
if
(
borders
[
3
])
{
int
offset_val
=
sao_offset_val
[
0
];
int
y_stride
=
stride
*
(
height
-
1
);
for
(
x
=
init_x
;
x
<
width
;
x
++
)
{
for
(
x
=
init_x
;
x
<
width
;
x
++
)
dst
[
x
+
y_stride
]
=
av_clip_pixel
(
src
[
x
+
y_stride
]
+
offset_val
);
}
height
--
;
}
}
...
...
@@ -672,17 +670,15 @@ static void FUNC(sao_edge_filter_2)(uint8_t *_dst, uint8_t *_src,
if
(
sao_eo_class
!=
SAO_EO_HORIZ
)
{
if
(
borders
[
1
])
{
int
offset_val
=
sao_offset_val
[
0
];
for
(
x
=
init_x
;
x
<
width
;
x
++
)
{
for
(
x
=
init_x
;
x
<
width
;
x
++
)
dst
[
x
]
=
av_clip_pixel
(
src
[
x
]
+
offset_val
);
}
init_y
=
1
;
}
if
(
borders
[
3
])
{
int
offset_val
=
sao_offset_val
[
0
];
int
y_stride
=
stride
*
(
height
-
1
);
for
(
x
=
init_x
;
x
<
width
;
x
++
)
{
for
(
x
=
init_x
;
x
<
width
;
x
++
)
dst
[
x
+
y_stride
]
=
av_clip_pixel
(
src
[
x
+
y_stride
]
+
offset_val
);
}
height
--
;
}
}
...
...
@@ -936,9 +932,8 @@ static void FUNC(put_hevc_epel_pixels)(int16_t *dst, ptrdiff_t dststride,
ptrdiff_t
srcstride
=
_srcstride
/
sizeof
(
pixel
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
dst
[
x
]
=
src
[
x
]
<<
(
14
-
BIT_DEPTH
);
}
src
+=
srcstride
;
dst
+=
dststride
;
}
...
...
@@ -961,9 +956,8 @@ static void FUNC(put_hevc_epel_h)(int16_t *dst, ptrdiff_t dststride,
int8_t
filter_2
=
filter
[
2
];
int8_t
filter_3
=
filter
[
3
];
for
(
y
=
0
;
y
<
height
;
y
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
dst
[
x
]
=
EPEL_FILTER
(
src
,
1
)
>>
(
BIT_DEPTH
-
8
);
}
src
+=
srcstride
;
dst
+=
dststride
;
}
...
...
@@ -984,9 +978,8 @@ static void FUNC(put_hevc_epel_v)(int16_t *dst, ptrdiff_t dststride,
int8_t
filter_3
=
filter
[
3
];
for
(
y
=
0
;
y
<
height
;
y
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
dst
[
x
]
=
EPEL_FILTER
(
src
,
srcstride
)
>>
(
BIT_DEPTH
-
8
);
}
src
+=
srcstride
;
dst
+=
dststride
;
}
...
...
@@ -1012,9 +1005,8 @@ static void FUNC(put_hevc_epel_hv)(int16_t *dst, ptrdiff_t dststride,
src
-=
EPEL_EXTRA_BEFORE
*
srcstride
;
for
(
y
=
0
;
y
<
height
+
EPEL_EXTRA
;
y
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
tmp
[
x
]
=
EPEL_FILTER
(
src
,
1
)
>>
(
BIT_DEPTH
-
8
);
}
src
+=
srcstride
;
tmp
+=
MAX_PB_SIZE
;
}
...
...
@@ -1025,9 +1017,8 @@ static void FUNC(put_hevc_epel_hv)(int16_t *dst, ptrdiff_t dststride,
filter_2
=
filter_v
[
2
];
filter_3
=
filter_v
[
3
];
for
(
y
=
0
;
y
<
height
;
y
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
dst
[
x
]
=
EPEL_FILTER
(
tmp
,
MAX_PB_SIZE
)
>>
6
;
}
tmp
+=
MAX_PB_SIZE
;
dst
+=
dststride
;
}
...
...
@@ -1048,9 +1039,8 @@ static void FUNC(put_unweighted_pred)(uint8_t *_dst, ptrdiff_t _dststride,
int
offset
=
0
;
#endif
for
(
y
=
0
;
y
<
height
;
y
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
dst
[
x
]
=
av_clip_pixel
((
src
[
x
]
+
offset
)
>>
shift
);
}
dst
+=
dststride
;
src
+=
srcstride
;
}
...
...
@@ -1073,9 +1063,8 @@ static void FUNC(put_weighted_pred_avg)(uint8_t *_dst, ptrdiff_t _dststride,
#endif
for
(
y
=
0
;
y
<
height
;
y
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
dst
[
x
]
=
av_clip_pixel
((
src1
[
x
]
+
src2
[
x
]
+
offset
)
>>
shift
);
}
dst
+=
dststride
;
src1
+=
srcstride
;
src2
+=
srcstride
;
...
...
@@ -1137,14 +1126,13 @@ static void FUNC(weighted_pred_avg)(uint8_t denom,
log2Wd
=
denom
+
shift
;
w0
=
wl0Flag
;
w1
=
wl1Flag
;
o0
=
(
ol0Flag
)
*
(
1
<<
(
BIT_DEPTH
-
8
));
o1
=
(
ol1Flag
)
*
(
1
<<
(
BIT_DEPTH
-
8
));
o0
=
ol0Flag
*
(
1
<<
(
BIT_DEPTH
-
8
));
o1
=
ol1Flag
*
(
1
<<
(
BIT_DEPTH
-
8
));
for
(
y
=
0
;
y
<
height
;
y
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
{
for
(
x
=
0
;
x
<
width
;
x
++
)
dst
[
x
]
=
av_clip_pixel
((
src1
[
x
]
*
w0
+
src2
[
x
]
*
w1
+
((
o0
+
o1
+
1
)
<<
log2Wd
))
>>
(
log2Wd
+
1
));
}
dst
+=
dststride
;
src1
+=
srcstride
;
src2
+=
srcstride
;
...
...
libavcodec/hevcpred_template.c
View file @
1a6948fa
...
...
@@ -491,9 +491,8 @@ static av_always_inline void FUNC(pred_angular)(uint8_t *_src,
fact
*
ref
[
x
+
idx
+
2
]
+
16
)
>>
5
;
}
}
else
{
for
(
x
=
0
;
x
<
size
;
x
++
)
{
for
(
x
=
0
;
x
<
size
;
x
++
)
POS
(
x
,
y
)
=
ref
[
x
+
idx
+
1
];
}
}
}
if
(
mode
==
26
&&
c_idx
==
0
&&
size
<
32
)
{
...
...
@@ -519,9 +518,8 @@ static av_always_inline void FUNC(pred_angular)(uint8_t *_src,
fact
*
ref
[
y
+
idx
+
2
]
+
16
)
>>
5
;
}
}
else
{
for
(
y
=
0
;
y
<
size
;
y
++
)
{
for
(
y
=
0
;
y
<
size
;
y
++
)
POS
(
x
,
y
)
=
ref
[
y
+
idx
+
1
];
}
}
}
if
(
mode
==
10
&&
c_idx
==
0
&&
size
<
32
)
{
...
...
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