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
a15e68de
Commit
a15e68de
authored
Jul 23, 2003
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bitstream changes to match JM7.2
Originally committed as revision 2073 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
e70fcf07
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
45 deletions
+36
-45
h264.c
libavcodec/h264.c
+36
-45
No files found.
libavcodec/h264.c
View file @
a15e68de
...
@@ -59,9 +59,6 @@ typedef struct SPS{
...
@@ -59,9 +59,6 @@ typedef struct SPS{
int
profile_idc
;
int
profile_idc
;
int
level_idc
;
int
level_idc
;
int
multiple_slice_groups
;
///< more_than_one_slice_group_allowed_flag
int
arbitrary_slice_order
;
///< arbitrary_slice_order_allowed_flag
int
redundant_slices
;
///< redundant_slices_allowed_flag
int
log2_max_frame_num
;
///< log2_max_frame_num_minus4 + 4
int
log2_max_frame_num
;
///< log2_max_frame_num_minus4 + 4
int
poc_type
;
///< pic_order_cnt_type
int
poc_type
;
///< pic_order_cnt_type
int
log2_max_poc_lsb
;
///< log2_max_pic_order_cnt_lsb_minus4
int
log2_max_poc_lsb
;
///< log2_max_pic_order_cnt_lsb_minus4
...
@@ -70,12 +67,17 @@ typedef struct SPS{
...
@@ -70,12 +67,17 @@ typedef struct SPS{
int
offset_for_top_to_bottom_field
;
int
offset_for_top_to_bottom_field
;
int
poc_cycle_length
;
///< num_ref_frames_in_pic_order_cnt_cycle
int
poc_cycle_length
;
///< num_ref_frames_in_pic_order_cnt_cycle
int
ref_frame_count
;
///< num_ref_frames
int
ref_frame_count
;
///< num_ref_frames
int
required_frame_num_update_behaviour
_flag
;
int
gaps_in_frame_num_allowed
_flag
;
int
mb_width
;
///< frame_width_in_mbs_minus1 + 1
int
mb_width
;
///< frame_width_in_mbs_minus1 + 1
int
mb_height
;
///< frame_height_in_mbs_minus1 + 1
int
mb_height
;
///< frame_height_in_mbs_minus1 + 1
int
frame_mbs_only_flag
;
int
frame_mbs_only_flag
;
int
mb_aff
;
///<mb_adaptive_frame_field_flag
int
mb_aff
;
///<mb_adaptive_frame_field_flag
int
direct_8x8_inference_flag
;
int
direct_8x8_inference_flag
;
int
crop
;
///< frame_cropping_flag
int
crop_left
;
///< frame_cropping_rect_left_offset
int
crop_right
;
///< frame_cropping_rect_right_offset
int
crop_top
;
///< frame_cropping_rect_top_offset
int
crop_bottom
;
///< frame_cropping_rect_bottom_offset
int
vui_parameters_present_flag
;
int
vui_parameters_present_flag
;
int
sar_width
;
int
sar_width
;
int
sar_height
;
int
sar_height
;
...
@@ -100,11 +102,6 @@ typedef struct PPS{
...
@@ -100,11 +102,6 @@ typedef struct PPS{
int
deblocking_filter_parameters_present
;
///< deblocking_filter_parameters_present_flag
int
deblocking_filter_parameters_present
;
///< deblocking_filter_parameters_present_flag
int
constrained_intra_pred
;
///< constrained_intra_pred_flag
int
constrained_intra_pred
;
///< constrained_intra_pred_flag
int
redundant_pic_cnt_present
;
///< redundant_pic_cnt_present_flag
int
redundant_pic_cnt_present
;
///< redundant_pic_cnt_present_flag
int
crop
;
///< frame_cropping_flag
int
crop_left
;
///< frame_cropping_rect_left_offset
int
crop_right
;
///< frame_cropping_rect_right_offset
int
crop_top
;
///< frame_cropping_rect_top_offset
int
crop_bottom
;
///< frame_cropping_rect_bottom_offset
}
PPS
;
}
PPS
;
/**
/**
...
@@ -789,7 +786,6 @@ static inline void pred_motion(H264Context * const h, int n, int part_width, int
...
@@ -789,7 +786,6 @@ static inline void pred_motion(H264Context * const h, int n, int part_width, int
diagonal_ref
=
fetch_diagonal_mv
(
h
,
&
C
,
index8
,
list
,
part_width
);
diagonal_ref
=
fetch_diagonal_mv
(
h
,
&
C
,
index8
,
list
,
part_width
);
match_count
=
(
diagonal_ref
==
ref
)
+
(
top_ref
==
ref
)
+
(
left_ref
==
ref
);
match_count
=
(
diagonal_ref
==
ref
)
+
(
top_ref
==
ref
)
+
(
left_ref
==
ref
);
if
(
match_count
>
1
){
//most common
if
(
match_count
>
1
){
//most common
*
mx
=
mid_pred
(
A
[
0
],
B
[
0
],
C
[
0
]);
*
mx
=
mid_pred
(
A
[
0
],
B
[
0
],
C
[
0
]);
*
my
=
mid_pred
(
A
[
1
],
B
[
1
],
C
[
1
]);
*
my
=
mid_pred
(
A
[
1
],
B
[
1
],
C
[
1
]);
...
@@ -2876,16 +2872,12 @@ static int decode_slice_header(H264Context *h){
...
@@ -2876,16 +2872,12 @@ static int decode_slice_header(H264Context *h){
s
->
mb_x
=
first_mb_in_slice
%
s
->
mb_width
;
s
->
mb_x
=
first_mb_in_slice
%
s
->
mb_width
;
s
->
mb_y
=
first_mb_in_slice
/
s
->
mb_width
;
//FIXME AFFW
s
->
mb_y
=
first_mb_in_slice
/
s
->
mb_width
;
//FIXME AFFW
s
->
width
=
16
*
s
->
mb_width
-
2
*
(
h
->
pps
.
crop_left
+
h
->
p
ps
.
crop_right
);
s
->
width
=
16
*
s
->
mb_width
-
2
*
(
h
->
sps
.
crop_left
+
h
->
s
ps
.
crop_right
);
if
(
h
->
sps
.
frame_mbs_only_flag
)
if
(
h
->
sps
.
frame_mbs_only_flag
)
s
->
height
=
16
*
s
->
mb_height
-
2
*
(
h
->
pps
.
crop_top
+
h
->
p
ps
.
crop_bottom
);
s
->
height
=
16
*
s
->
mb_height
-
2
*
(
h
->
sps
.
crop_top
+
h
->
s
ps
.
crop_bottom
);
else
else
s
->
height
=
16
*
s
->
mb_height
-
4
*
(
h
->
pps
.
crop_top
+
h
->
p
ps
.
crop_bottom
);
//FIXME recheck
s
->
height
=
16
*
s
->
mb_height
-
4
*
(
h
->
sps
.
crop_top
+
h
->
s
ps
.
crop_bottom
);
//FIXME recheck
if
(
h
->
pps
.
crop_left
||
h
->
pps
.
crop_top
){
fprintf
(
stderr
,
"insane croping not completly supported, this could look slightly wrong ...
\n
"
);
}
if
(
s
->
aspected_height
)
//FIXME emms at end of slice ?
if
(
s
->
aspected_height
)
//FIXME emms at end of slice ?
new_aspect
=
h
->
sps
.
sar_width
*
s
->
width
/
(
float
)(
s
->
height
*
h
->
sps
.
sar_height
);
new_aspect
=
h
->
sps
.
sar_width
*
s
->
width
/
(
float
)(
s
->
height
*
h
->
sps
.
sar_height
);
else
else
...
@@ -3807,28 +3799,23 @@ static inline int decode_vui_parameters(H264Context *h, SPS *sps){
...
@@ -3807,28 +3799,23 @@ static inline int decode_vui_parameters(H264Context *h, SPS *sps){
static
inline
int
decode_seq_parameter_set
(
H264Context
*
h
){
static
inline
int
decode_seq_parameter_set
(
H264Context
*
h
){
MpegEncContext
*
const
s
=
&
h
->
s
;
MpegEncContext
*
const
s
=
&
h
->
s
;
int
profile_idc
,
level_idc
,
multiple_slice_groups
,
arbitrary_slice_order
,
redundant_slices
;
int
profile_idc
,
level_idc
;
int
sps_id
,
i
;
int
sps_id
,
i
;
SPS
*
sps
;
SPS
*
sps
;
profile_idc
=
get_bits
(
&
s
->
gb
,
8
);
profile_idc
=
get_bits
(
&
s
->
gb
,
8
);
get_bits1
(
&
s
->
gb
);
//constraint_set0_flag
get_bits1
(
&
s
->
gb
);
//constraint_set1_flag
get_bits1
(
&
s
->
gb
);
//constraint_set2_flag
get_bits
(
&
s
->
gb
,
5
);
// reserved
level_idc
=
get_bits
(
&
s
->
gb
,
8
);
level_idc
=
get_bits
(
&
s
->
gb
,
8
);
multiple_slice_groups
=
get_bits1
(
&
s
->
gb
);
arbitrary_slice_order
=
get_bits1
(
&
s
->
gb
);
redundant_slices
=
get_bits1
(
&
s
->
gb
);
sps_id
=
get_ue_golomb
(
&
s
->
gb
);
sps_id
=
get_ue_golomb
(
&
s
->
gb
);
sps
=
&
h
->
sps_buffer
[
sps_id
];
sps
=
&
h
->
sps_buffer
[
sps_id
];
sps
->
profile_idc
=
profile_idc
;
sps
->
profile_idc
=
profile_idc
;
sps
->
level_idc
=
level_idc
;
sps
->
level_idc
=
level_idc
;
sps
->
multiple_slice_groups
=
multiple_slice_groups
;
sps
->
arbitrary_slice_order
=
arbitrary_slice_order
;
sps
->
redundant_slices
=
redundant_slices
;
sps
->
log2_max_frame_num
=
get_ue_golomb
(
&
s
->
gb
)
+
4
;
sps
->
log2_max_frame_num
=
get_ue_golomb
(
&
s
->
gb
)
+
4
;
sps
->
poc_type
=
get_ue_golomb
(
&
s
->
gb
);
sps
->
poc_type
=
get_ue_golomb
(
&
s
->
gb
);
if
(
sps
->
poc_type
==
0
){
//FIXME #define
if
(
sps
->
poc_type
==
0
){
//FIXME #define
...
@@ -3848,7 +3835,7 @@ static inline int decode_seq_parameter_set(H264Context *h){
...
@@ -3848,7 +3835,7 @@ static inline int decode_seq_parameter_set(H264Context *h){
}
}
sps
->
ref_frame_count
=
get_ue_golomb
(
&
s
->
gb
);
sps
->
ref_frame_count
=
get_ue_golomb
(
&
s
->
gb
);
sps
->
required_frame_num_update_behaviour
_flag
=
get_bits1
(
&
s
->
gb
);
sps
->
gaps_in_frame_num_allowed
_flag
=
get_bits1
(
&
s
->
gb
);
sps
->
mb_width
=
get_ue_golomb
(
&
s
->
gb
)
+
1
;
sps
->
mb_width
=
get_ue_golomb
(
&
s
->
gb
)
+
1
;
sps
->
mb_height
=
get_ue_golomb
(
&
s
->
gb
)
+
1
;
sps
->
mb_height
=
get_ue_golomb
(
&
s
->
gb
)
+
1
;
sps
->
frame_mbs_only_flag
=
get_bits1
(
&
s
->
gb
);
sps
->
frame_mbs_only_flag
=
get_bits1
(
&
s
->
gb
);
...
@@ -3859,18 +3846,36 @@ static inline int decode_seq_parameter_set(H264Context *h){
...
@@ -3859,18 +3846,36 @@ static inline int decode_seq_parameter_set(H264Context *h){
sps
->
direct_8x8_inference_flag
=
get_bits1
(
&
s
->
gb
);
sps
->
direct_8x8_inference_flag
=
get_bits1
(
&
s
->
gb
);
sps
->
crop
=
get_bits1
(
&
s
->
gb
);
if
(
sps
->
crop
){
sps
->
crop_left
=
get_ue_golomb
(
&
s
->
gb
);
sps
->
crop_right
=
get_ue_golomb
(
&
s
->
gb
);
sps
->
crop_top
=
get_ue_golomb
(
&
s
->
gb
);
sps
->
crop_bottom
=
get_ue_golomb
(
&
s
->
gb
);
if
(
sps
->
crop_left
||
sps
->
crop_top
){
fprintf
(
stderr
,
"insane croping not completly supported, this could look slightly wrong ...
\n
"
);
}
}
else
{
sps
->
crop_left
=
sps
->
crop_right
=
sps
->
crop_top
=
sps
->
crop_bottom
=
0
;
}
sps
->
vui_parameters_present_flag
=
get_bits1
(
&
s
->
gb
);
sps
->
vui_parameters_present_flag
=
get_bits1
(
&
s
->
gb
);
if
(
sps
->
vui_parameters_present_flag
)
if
(
sps
->
vui_parameters_present_flag
)
decode_vui_parameters
(
h
,
sps
);
decode_vui_parameters
(
h
,
sps
);
if
(
s
->
avctx
->
debug
&
FF_DEBUG_PICT_INFO
){
if
(
s
->
avctx
->
debug
&
FF_DEBUG_PICT_INFO
){
printf
(
"sps:%d profile:%d/%d poc:%d ref:%d %dx%d %s %s %s
\n
"
,
printf
(
"sps:%d profile:%d/%d poc:%d ref:%d %dx%d %s %s
crop:%d/%d/%d/%d
%s
\n
"
,
sps_id
,
sps
->
profile_idc
,
sps
->
level_idc
,
sps_id
,
sps
->
profile_idc
,
sps
->
level_idc
,
sps
->
poc_type
,
sps
->
poc_type
,
sps
->
ref_frame_count
,
sps
->
ref_frame_count
,
sps
->
mb_width
,
sps
->
mb_height
,
sps
->
mb_width
,
sps
->
mb_height
,
sps
->
frame_mbs_only_flag
?
"FRM"
:
(
sps
->
mb_aff
?
"MB-AFF"
:
"PIC-AFF"
),
sps
->
frame_mbs_only_flag
?
"FRM"
:
(
sps
->
mb_aff
?
"MB-AFF"
:
"PIC-AFF"
),
sps
->
direct_8x8_inference_flag
?
"8B8"
:
""
,
sps
->
direct_8x8_inference_flag
?
"8B8"
:
""
,
sps
->
crop_left
,
sps
->
crop_right
,
sps
->
crop_top
,
sps
->
crop_bottom
,
sps
->
vui_parameters_present_flag
?
"VUI"
:
""
sps
->
vui_parameters_present_flag
?
"VUI"
:
""
);
);
}
}
...
@@ -3938,21 +3943,9 @@ fprintf(stderr, "FMO not supported\n");
...
@@ -3938,21 +3943,9 @@ fprintf(stderr, "FMO not supported\n");
pps
->
deblocking_filter_parameters_present
=
get_bits1
(
&
s
->
gb
);
pps
->
deblocking_filter_parameters_present
=
get_bits1
(
&
s
->
gb
);
pps
->
constrained_intra_pred
=
get_bits1
(
&
s
->
gb
);
pps
->
constrained_intra_pred
=
get_bits1
(
&
s
->
gb
);
pps
->
redundant_pic_cnt_present
=
get_bits1
(
&
s
->
gb
);
pps
->
redundant_pic_cnt_present
=
get_bits1
(
&
s
->
gb
);
pps
->
crop
=
get_bits1
(
&
s
->
gb
);
if
(
pps
->
crop
){
pps
->
crop_left
=
get_ue_golomb
(
&
s
->
gb
);
pps
->
crop_right
=
get_ue_golomb
(
&
s
->
gb
);
pps
->
crop_top
=
get_ue_golomb
(
&
s
->
gb
);
pps
->
crop_bottom
=
get_ue_golomb
(
&
s
->
gb
);
}
else
{
pps
->
crop_left
=
pps
->
crop_right
=
pps
->
crop_top
=
pps
->
crop_bottom
=
0
;
}
if
(
s
->
avctx
->
debug
&
FF_DEBUG_PICT_INFO
){
if
(
s
->
avctx
->
debug
&
FF_DEBUG_PICT_INFO
){
printf
(
"pps:%d sps:%d %s slice_groups:%d ref:%d/%d %s qp:%d/%d/%d %s %s %s
crop:%d/%d/%d/%d
\n
"
,
printf
(
"pps:%d sps:%d %s slice_groups:%d ref:%d/%d %s qp:%d/%d/%d %s %s %s
\n
"
,
pps_id
,
pps
->
sps_id
,
pps_id
,
pps
->
sps_id
,
pps
->
cabac
?
"CABAC"
:
"CAVLC"
,
pps
->
cabac
?
"CABAC"
:
"CAVLC"
,
pps
->
slice_group_count
,
pps
->
slice_group_count
,
...
@@ -3961,9 +3954,7 @@ fprintf(stderr, "FMO not supported\n");
...
@@ -3961,9 +3954,7 @@ fprintf(stderr, "FMO not supported\n");
pps
->
init_qp
,
pps
->
init_qs
,
pps
->
chroma_qp_index_offset
,
pps
->
init_qp
,
pps
->
init_qs
,
pps
->
chroma_qp_index_offset
,
pps
->
deblocking_filter_parameters_present
?
"LPAR"
:
""
,
pps
->
deblocking_filter_parameters_present
?
"LPAR"
:
""
,
pps
->
constrained_intra_pred
?
"CONSTR"
:
""
,
pps
->
constrained_intra_pred
?
"CONSTR"
:
""
,
pps
->
redundant_pic_cnt_present
?
"REDU"
:
""
,
pps
->
redundant_pic_cnt_present
?
"REDU"
:
""
pps
->
crop_left
,
pps
->
crop_right
,
pps
->
crop_top
,
pps
->
crop_bottom
);
);
}
}
...
...
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