FFmpeg
libavcodec
hevc
hevc.h
Go to the documentation of this file.
1
/*
2
* HEVC shared code
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#ifndef AVCODEC_HEVC_HEVC_H
22
#define AVCODEC_HEVC_HEVC_H
23
24
/**
25
* Table 7-1 – NAL unit type codes and NAL unit type classes in
26
* T-REC-H.265-201802
27
*/
28
enum
HEVCNALUnitType
{
29
HEVC_NAL_TRAIL_N
= 0,
30
HEVC_NAL_TRAIL_R
= 1,
31
HEVC_NAL_TSA_N
= 2,
32
HEVC_NAL_TSA_R
= 3,
33
HEVC_NAL_STSA_N
= 4,
34
HEVC_NAL_STSA_R
= 5,
35
HEVC_NAL_RADL_N
= 6,
36
HEVC_NAL_RADL_R
= 7,
37
HEVC_NAL_RASL_N
= 8,
38
HEVC_NAL_RASL_R
= 9,
39
HEVC_NAL_VCL_N10
= 10,
40
HEVC_NAL_VCL_R11
= 11,
41
HEVC_NAL_VCL_N12
= 12,
42
HEVC_NAL_VCL_R13
= 13,
43
HEVC_NAL_VCL_N14
= 14,
44
HEVC_NAL_VCL_R15
= 15,
45
HEVC_NAL_BLA_W_LP
= 16,
46
HEVC_NAL_BLA_W_RADL
= 17,
47
HEVC_NAL_BLA_N_LP
= 18,
48
HEVC_NAL_IDR_W_RADL
= 19,
49
HEVC_NAL_IDR_N_LP
= 20,
50
HEVC_NAL_CRA_NUT
= 21,
51
HEVC_NAL_RSV_IRAP_VCL22
= 22,
52
HEVC_NAL_RSV_IRAP_VCL23
= 23,
53
HEVC_NAL_RSV_VCL24
= 24,
54
HEVC_NAL_RSV_VCL25
= 25,
55
HEVC_NAL_RSV_VCL26
= 26,
56
HEVC_NAL_RSV_VCL27
= 27,
57
HEVC_NAL_RSV_VCL28
= 28,
58
HEVC_NAL_RSV_VCL29
= 29,
59
HEVC_NAL_RSV_VCL30
= 30,
60
HEVC_NAL_RSV_VCL31
= 31,
61
HEVC_NAL_VPS
= 32,
62
HEVC_NAL_SPS
= 33,
63
HEVC_NAL_PPS
= 34,
64
HEVC_NAL_AUD
= 35,
65
HEVC_NAL_EOS_NUT
= 36,
66
HEVC_NAL_EOB_NUT
= 37,
67
HEVC_NAL_FD_NUT
= 38,
68
HEVC_NAL_SEI_PREFIX
= 39,
69
HEVC_NAL_SEI_SUFFIX
= 40,
70
HEVC_NAL_RSV_NVCL41
= 41,
71
HEVC_NAL_RSV_NVCL42
= 42,
72
HEVC_NAL_RSV_NVCL43
= 43,
73
HEVC_NAL_RSV_NVCL44
= 44,
74
HEVC_NAL_RSV_NVCL45
= 45,
75
HEVC_NAL_RSV_NVCL46
= 46,
76
HEVC_NAL_RSV_NVCL47
= 47,
77
HEVC_NAL_UNSPEC48
= 48,
78
HEVC_NAL_UNSPEC49
= 49,
79
HEVC_NAL_UNSPEC50
= 50,
80
HEVC_NAL_UNSPEC51
= 51,
81
HEVC_NAL_UNSPEC52
= 52,
82
HEVC_NAL_UNSPEC53
= 53,
83
HEVC_NAL_UNSPEC54
= 54,
84
HEVC_NAL_UNSPEC55
= 55,
85
HEVC_NAL_UNSPEC56
= 56,
86
HEVC_NAL_UNSPEC57
= 57,
87
HEVC_NAL_UNSPEC58
= 58,
88
HEVC_NAL_UNSPEC59
= 59,
89
HEVC_NAL_UNSPEC60
= 60,
90
HEVC_NAL_UNSPEC61
= 61,
91
HEVC_NAL_UNSPEC62
= 62,
92
HEVC_NAL_UNSPEC63
= 63,
93
};
94
95
enum
HEVCSliceType
{
96
HEVC_SLICE_B
= 0,
97
HEVC_SLICE_P
= 1,
98
HEVC_SLICE_I
= 2,
99
};
100
101
enum
{
102
// 7.4.3.1: vps_max_layers_minus1 is in [0, 62].
103
HEVC_MAX_LAYERS
= 63,
104
// 7.4.3.1: vps_max_sub_layers_minus1 is in [0, 6].
105
HEVC_MAX_SUB_LAYERS
= 7,
106
// 7.4.3.1: vps_num_layer_sets_minus1 is in [0, 1023].
107
HEVC_MAX_LAYER_SETS
= 1024,
108
// 7.4.3.1: vps_max_layer_id is in [0, 63].
109
HEVC_MAX_LAYER_ID
= 63,
110
HEVC_MAX_NUH_LAYER_ID
= 62,
111
112
// 7.4.2.1: vps_video_parameter_set_id is u(4).
113
HEVC_MAX_VPS_COUNT
= 16,
114
// 7.4.3.2.1: sps_seq_parameter_set_id is in [0, 15].
115
HEVC_MAX_SPS_COUNT
= 16,
116
// 7.4.3.3.1: pps_pic_parameter_set_id is in [0, 63].
117
HEVC_MAX_PPS_COUNT
= 64,
118
119
// A.4.2: MaxDpbSize is bounded above by 16.
120
HEVC_MAX_DPB_SIZE
= 16,
121
// 7.4.3.1: vps_max_dec_pic_buffering_minus1[i] is in [0, MaxDpbSize - 1].
122
HEVC_MAX_REFS
=
HEVC_MAX_DPB_SIZE
,
123
124
// 7.4.3.2.1: num_short_term_ref_pic_sets is in [0, 64].
125
HEVC_MAX_SHORT_TERM_REF_PIC_SETS
= 64,
126
// 7.4.3.2.1: num_long_term_ref_pics_sps is in [0, 32].
127
HEVC_MAX_LONG_TERM_REF_PICS
= 32,
128
129
// A.3: all profiles require that CtbLog2SizeY is in [4, 6].
130
HEVC_MIN_LOG2_CTB_SIZE
= 4,
131
HEVC_MAX_LOG2_CTB_SIZE
= 6,
132
133
// E.3.2: cpb_cnt_minus1[i] is in [0, 31].
134
HEVC_MAX_CPB_CNT
= 32,
135
136
// A.4.1: in table A.6 the highest level allows a MaxLumaPs of 35 651 584.
137
HEVC_MAX_LUMA_PS
= 35651584,
138
// A.4.1: pic_width_in_luma_samples and pic_height_in_luma_samples are
139
// constrained to be not greater than sqrt(MaxLumaPs * 8). Hence height/
140
// width are bounded above by sqrt(8 * 35651584) = 16888.2 samples.
141
HEVC_MAX_WIDTH
= 16888,
142
HEVC_MAX_HEIGHT
= 16888,
143
144
// A.4.1: table A.6 allows at most 22 tile rows for any level.
145
HEVC_MAX_TILE_ROWS
= 22,
146
// A.4.1: table A.6 allows at most 20 tile columns for any level.
147
HEVC_MAX_TILE_COLUMNS
= 20,
148
149
// A.4.2: table A.6 allows at most 600 slice segments for any level.
150
HEVC_MAX_SLICE_SEGMENTS
= 600,
151
152
// 7.4.7.1: in the worst case (tiles_enabled_flag and
153
// entropy_coding_sync_enabled_flag are both set), entry points can be
154
// placed at the beginning of every Ctb row in every tile, giving an
155
// upper bound of (num_tile_columns_minus1 + 1) * PicHeightInCtbsY - 1.
156
// Only a stream with very high resolution and perverse parameters could
157
// get near that, though, so set a lower limit here with the maximum
158
// possible value for 4K video (at most 135 16x16 Ctb rows).
159
HEVC_MAX_ENTRY_POINT_OFFSETS
=
HEVC_MAX_TILE_COLUMNS
* 135,
160
161
// A.3.7: Screen content coding extensions
162
HEVC_MAX_PALETTE_PREDICTOR_SIZE
= 128,
163
};
164
165
166
#endif
/* AVCODEC_HEVC_HEVC_H */
HEVC_NAL_VCL_R15
@ HEVC_NAL_VCL_R15
Definition:
hevc.h:44
HEVC_NAL_UNSPEC52
@ HEVC_NAL_UNSPEC52
Definition:
hevc.h:81
HEVC_NAL_AUD
@ HEVC_NAL_AUD
Definition:
hevc.h:64
HEVC_NAL_UNSPEC53
@ HEVC_NAL_UNSPEC53
Definition:
hevc.h:82
HEVC_NAL_RSV_NVCL45
@ HEVC_NAL_RSV_NVCL45
Definition:
hevc.h:74
HEVC_NAL_RSV_NVCL41
@ HEVC_NAL_RSV_NVCL41
Definition:
hevc.h:70
HEVC_NAL_RSV_VCL27
@ HEVC_NAL_RSV_VCL27
Definition:
hevc.h:56
HEVC_NAL_BLA_N_LP
@ HEVC_NAL_BLA_N_LP
Definition:
hevc.h:47
HEVC_NAL_UNSPEC61
@ HEVC_NAL_UNSPEC61
Definition:
hevc.h:90
HEVC_NAL_TSA_N
@ HEVC_NAL_TSA_N
Definition:
hevc.h:31
HEVC_NAL_IDR_N_LP
@ HEVC_NAL_IDR_N_LP
Definition:
hevc.h:49
HEVC_NAL_IDR_W_RADL
@ HEVC_NAL_IDR_W_RADL
Definition:
hevc.h:48
HEVC_MAX_HEIGHT
@ HEVC_MAX_HEIGHT
Definition:
hevc.h:142
HEVC_NAL_UNSPEC48
@ HEVC_NAL_UNSPEC48
Definition:
hevc.h:77
HEVC_NAL_UNSPEC57
@ HEVC_NAL_UNSPEC57
Definition:
hevc.h:86
HEVC_NAL_VCL_N14
@ HEVC_NAL_VCL_N14
Definition:
hevc.h:43
HEVC_NAL_RSV_NVCL47
@ HEVC_NAL_RSV_NVCL47
Definition:
hevc.h:76
HEVC_NAL_SEI_SUFFIX
@ HEVC_NAL_SEI_SUFFIX
Definition:
hevc.h:69
HEVC_NAL_RSV_VCL28
@ HEVC_NAL_RSV_VCL28
Definition:
hevc.h:57
HEVC_MAX_DPB_SIZE
@ HEVC_MAX_DPB_SIZE
Definition:
hevc.h:120
HEVC_NAL_RSV_IRAP_VCL22
@ HEVC_NAL_RSV_IRAP_VCL22
Definition:
hevc.h:51
HEVC_MAX_REFS
@ HEVC_MAX_REFS
Definition:
hevc.h:122
HEVC_NAL_SEI_PREFIX
@ HEVC_NAL_SEI_PREFIX
Definition:
hevc.h:68
HEVC_NAL_UNSPEC59
@ HEVC_NAL_UNSPEC59
Definition:
hevc.h:88
HEVC_NAL_RSV_NVCL44
@ HEVC_NAL_RSV_NVCL44
Definition:
hevc.h:73
HEVC_SLICE_B
@ HEVC_SLICE_B
Definition:
hevc.h:96
HEVC_NAL_VCL_N10
@ HEVC_NAL_VCL_N10
Definition:
hevc.h:39
HEVCNALUnitType
HEVCNALUnitType
Table 7-1 – NAL unit type codes and NAL unit type classes in T-REC-H.265-201802.
Definition:
hevc.h:28
HEVC_MAX_WIDTH
@ HEVC_MAX_WIDTH
Definition:
hevc.h:141
HEVC_NAL_VPS
@ HEVC_NAL_VPS
Definition:
hevc.h:61
HEVC_NAL_UNSPEC62
@ HEVC_NAL_UNSPEC62
Definition:
hevc.h:91
HEVC_MAX_TILE_ROWS
@ HEVC_MAX_TILE_ROWS
Definition:
hevc.h:145
HEVC_NAL_VCL_R11
@ HEVC_NAL_VCL_R11
Definition:
hevc.h:40
HEVC_NAL_VCL_N12
@ HEVC_NAL_VCL_N12
Definition:
hevc.h:41
HEVC_MAX_LONG_TERM_REF_PICS
@ HEVC_MAX_LONG_TERM_REF_PICS
Definition:
hevc.h:127
HEVC_MAX_ENTRY_POINT_OFFSETS
@ HEVC_MAX_ENTRY_POINT_OFFSETS
Definition:
hevc.h:159
HEVC_MAX_SHORT_TERM_REF_PIC_SETS
@ HEVC_MAX_SHORT_TERM_REF_PIC_SETS
Definition:
hevc.h:125
HEVC_SLICE_I
@ HEVC_SLICE_I
Definition:
hevc.h:98
HEVC_NAL_RSV_NVCL43
@ HEVC_NAL_RSV_NVCL43
Definition:
hevc.h:72
HEVC_NAL_STSA_N
@ HEVC_NAL_STSA_N
Definition:
hevc.h:33
HEVC_NAL_EOS_NUT
@ HEVC_NAL_EOS_NUT
Definition:
hevc.h:65
HEVC_MAX_LAYER_SETS
@ HEVC_MAX_LAYER_SETS
Definition:
hevc.h:107
HEVC_NAL_RSV_VCL31
@ HEVC_NAL_RSV_VCL31
Definition:
hevc.h:60
HEVC_NAL_UNSPEC50
@ HEVC_NAL_UNSPEC50
Definition:
hevc.h:79
HEVC_NAL_UNSPEC54
@ HEVC_NAL_UNSPEC54
Definition:
hevc.h:83
HEVCSliceType
HEVCSliceType
Definition:
hevc.h:95
HEVC_NAL_UNSPEC60
@ HEVC_NAL_UNSPEC60
Definition:
hevc.h:89
HEVC_NAL_RSV_IRAP_VCL23
@ HEVC_NAL_RSV_IRAP_VCL23
Definition:
hevc.h:52
HEVC_NAL_RASL_R
@ HEVC_NAL_RASL_R
Definition:
hevc.h:38
HEVC_MAX_LOG2_CTB_SIZE
@ HEVC_MAX_LOG2_CTB_SIZE
Definition:
hevc.h:131
HEVC_NAL_RSV_NVCL46
@ HEVC_NAL_RSV_NVCL46
Definition:
hevc.h:75
HEVC_MAX_LAYER_ID
@ HEVC_MAX_LAYER_ID
Definition:
hevc.h:109
HEVC_MAX_TILE_COLUMNS
@ HEVC_MAX_TILE_COLUMNS
Definition:
hevc.h:147
HEVC_NAL_RASL_N
@ HEVC_NAL_RASL_N
Definition:
hevc.h:37
HEVC_MAX_NUH_LAYER_ID
@ HEVC_MAX_NUH_LAYER_ID
Definition:
hevc.h:110
HEVC_NAL_SPS
@ HEVC_NAL_SPS
Definition:
hevc.h:62
HEVC_MIN_LOG2_CTB_SIZE
@ HEVC_MIN_LOG2_CTB_SIZE
Definition:
hevc.h:130
HEVC_NAL_PPS
@ HEVC_NAL_PPS
Definition:
hevc.h:63
HEVC_NAL_STSA_R
@ HEVC_NAL_STSA_R
Definition:
hevc.h:34
HEVC_MAX_CPB_CNT
@ HEVC_MAX_CPB_CNT
Definition:
hevc.h:134
HEVC_NAL_RSV_VCL24
@ HEVC_NAL_RSV_VCL24
Definition:
hevc.h:53
HEVC_MAX_SLICE_SEGMENTS
@ HEVC_MAX_SLICE_SEGMENTS
Definition:
hevc.h:150
HEVC_NAL_TSA_R
@ HEVC_NAL_TSA_R
Definition:
hevc.h:32
HEVC_NAL_UNSPEC51
@ HEVC_NAL_UNSPEC51
Definition:
hevc.h:80
HEVC_MAX_PPS_COUNT
@ HEVC_MAX_PPS_COUNT
Definition:
hevc.h:117
HEVC_NAL_RSV_VCL30
@ HEVC_NAL_RSV_VCL30
Definition:
hevc.h:59
HEVC_NAL_RSV_NVCL42
@ HEVC_NAL_RSV_NVCL42
Definition:
hevc.h:71
HEVC_NAL_EOB_NUT
@ HEVC_NAL_EOB_NUT
Definition:
hevc.h:66
HEVC_NAL_UNSPEC49
@ HEVC_NAL_UNSPEC49
Definition:
hevc.h:78
HEVC_NAL_UNSPEC58
@ HEVC_NAL_UNSPEC58
Definition:
hevc.h:87
HEVC_NAL_RSV_VCL26
@ HEVC_NAL_RSV_VCL26
Definition:
hevc.h:55
HEVC_NAL_CRA_NUT
@ HEVC_NAL_CRA_NUT
Definition:
hevc.h:50
HEVC_MAX_LAYERS
@ HEVC_MAX_LAYERS
Definition:
hevc.h:103
HEVC_NAL_VCL_R13
@ HEVC_NAL_VCL_R13
Definition:
hevc.h:42
HEVC_NAL_UNSPEC55
@ HEVC_NAL_UNSPEC55
Definition:
hevc.h:84
HEVC_MAX_LUMA_PS
@ HEVC_MAX_LUMA_PS
Definition:
hevc.h:137
HEVC_NAL_TRAIL_R
@ HEVC_NAL_TRAIL_R
Definition:
hevc.h:30
HEVC_NAL_RADL_R
@ HEVC_NAL_RADL_R
Definition:
hevc.h:36
HEVC_NAL_UNSPEC63
@ HEVC_NAL_UNSPEC63
Definition:
hevc.h:92
HEVC_MAX_SPS_COUNT
@ HEVC_MAX_SPS_COUNT
Definition:
hevc.h:115
HEVC_NAL_RSV_VCL29
@ HEVC_NAL_RSV_VCL29
Definition:
hevc.h:58
HEVC_NAL_RSV_VCL25
@ HEVC_NAL_RSV_VCL25
Definition:
hevc.h:54
HEVC_MAX_VPS_COUNT
@ HEVC_MAX_VPS_COUNT
Definition:
hevc.h:113
HEVC_NAL_RADL_N
@ HEVC_NAL_RADL_N
Definition:
hevc.h:35
HEVC_NAL_UNSPEC56
@ HEVC_NAL_UNSPEC56
Definition:
hevc.h:85
HEVC_NAL_FD_NUT
@ HEVC_NAL_FD_NUT
Definition:
hevc.h:67
HEVC_NAL_BLA_W_RADL
@ HEVC_NAL_BLA_W_RADL
Definition:
hevc.h:46
HEVC_MAX_PALETTE_PREDICTOR_SIZE
@ HEVC_MAX_PALETTE_PREDICTOR_SIZE
Definition:
hevc.h:162
HEVC_NAL_TRAIL_N
@ HEVC_NAL_TRAIL_N
Definition:
hevc.h:29
HEVC_SLICE_P
@ HEVC_SLICE_P
Definition:
hevc.h:97
HEVC_MAX_SUB_LAYERS
@ HEVC_MAX_SUB_LAYERS
Definition:
hevc.h:105
HEVC_NAL_BLA_W_LP
@ HEVC_NAL_BLA_W_LP
Definition:
hevc.h:45
Generated on Tue Nov 5 2024 19:21:37 for FFmpeg by
1.8.17