FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
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_H
22
#define AVCODEC_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_IRAP_VCL22
= 22,
52
HEVC_NAL_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
109
// 7.4.2.1: vps_video_parameter_set_id is u(4).
110
HEVC_MAX_VPS_COUNT
= 16,
111
// 7.4.3.2.1: sps_seq_parameter_set_id is in [0, 15].
112
HEVC_MAX_SPS_COUNT
= 16,
113
// 7.4.3.3.1: pps_pic_parameter_set_id is in [0, 63].
114
HEVC_MAX_PPS_COUNT
= 64,
115
116
// A.4.2: MaxDpbSize is bounded above by 16.
117
HEVC_MAX_DPB_SIZE
= 16,
118
// 7.4.3.1: vps_max_dec_pic_buffering_minus1[i] is in [0, MaxDpbSize - 1].
119
HEVC_MAX_REFS
=
HEVC_MAX_DPB_SIZE
,
120
121
// 7.4.3.2.1: num_short_term_ref_pic_sets is in [0, 64].
122
HEVC_MAX_SHORT_TERM_REF_PIC_SETS
= 64,
123
// 7.4.3.2.1: num_long_term_ref_pics_sps is in [0, 32].
124
HEVC_MAX_LONG_TERM_REF_PICS
= 32,
125
126
// A.3: all profiles require that CtbLog2SizeY is in [4, 6].
127
HEVC_MIN_LOG2_CTB_SIZE
= 4,
128
HEVC_MAX_LOG2_CTB_SIZE
= 6,
129
130
// E.3.2: cpb_cnt_minus1[i] is in [0, 31].
131
HEVC_MAX_CPB_CNT
= 32,
132
133
// A.4.1: in table A.6 the highest level allows a MaxLumaPs of 35 651 584.
134
HEVC_MAX_LUMA_PS
= 35651584,
135
// A.4.1: pic_width_in_luma_samples and pic_height_in_luma_samples are
136
// constrained to be not greater than sqrt(MaxLumaPs * 8). Hence height/
137
// width are bounded above by sqrt(8 * 35651584) = 16888.2 samples.
138
HEVC_MAX_WIDTH
= 16888,
139
HEVC_MAX_HEIGHT
= 16888,
140
141
// A.4.1: table A.6 allows at most 22 tile rows for any level.
142
HEVC_MAX_TILE_ROWS
= 22,
143
// A.4.1: table A.6 allows at most 20 tile columns for any level.
144
HEVC_MAX_TILE_COLUMNS
= 20,
145
146
// 7.4.7.1: in the worst case (tiles_enabled_flag and
147
// entropy_coding_sync_enabled_flag are both set), entry points can be
148
// placed at the beginning of every Ctb row in every tile, giving an
149
// upper bound of (num_tile_columns_minus1 + 1) * PicHeightInCtbsY - 1.
150
// Only a stream with very high resolution and perverse parameters could
151
// get near that, though, so set a lower limit here with the maximum
152
// possible value for 4K video (at most 135 16x16 Ctb rows).
153
HEVC_MAX_ENTRY_POINT_OFFSETS
=
HEVC_MAX_TILE_COLUMNS
* 135,
154
};
155
156
157
#endif
/* AVCODEC_HEVC_H */
HEVC_NAL_UNSPEC49
Definition:
hevc.h:78
HEVC_NAL_UNSPEC58
Definition:
hevc.h:87
HEVC_NAL_UNSPEC56
Definition:
hevc.h:85
HEVC_NAL_IDR_N_LP
Definition:
hevc.h:49
HEVC_NAL_RSV_VCL26
Definition:
hevc.h:55
HEVC_NAL_IRAP_VCL23
Definition:
hevc.h:52
HEVC_MAX_TILE_ROWS
Definition:
hevc.h:142
HEVC_NAL_UNSPEC51
Definition:
hevc.h:80
HEVC_MAX_LOG2_CTB_SIZE
Definition:
hevc.h:128
HEVC_NAL_UNSPEC55
Definition:
hevc.h:84
HEVC_NAL_RSV_NVCL44
Definition:
hevc.h:73
HEVC_MAX_SPS_COUNT
Definition:
hevc.h:112
HEVC_NAL_BLA_W_LP
Definition:
hevc.h:45
HEVC_NAL_RSV_VCL30
Definition:
hevc.h:59
HEVC_NAL_TSA_N
Definition:
hevc.h:31
HEVC_NAL_RSV_NVCL43
Definition:
hevc.h:72
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_NAL_RSV_VCL25
Definition:
hevc.h:54
HEVC_MAX_REFS
Definition:
hevc.h:119
HEVC_NAL_RSV_NVCL46
Definition:
hevc.h:75
HEVC_SLICE_I
Definition:
hevc.h:98
HEVC_NAL_AUD
Definition:
hevc.h:64
HEVC_NAL_VCL_R11
Definition:
hevc.h:40
HEVC_MAX_DPB_SIZE
Definition:
hevc.h:117
HEVC_NAL_SEI_PREFIX
Definition:
hevc.h:68
HEVC_NAL_IDR_W_RADL
Definition:
hevc.h:48
HEVC_NAL_EOS_NUT
Definition:
hevc.h:65
HEVC_NAL_BLA_N_LP
Definition:
hevc.h:47
HEVC_NAL_RSV_VCL27
Definition:
hevc.h:56
HEVC_NAL_RASL_N
Definition:
hevc.h:37
HEVC_NAL_VCL_N12
Definition:
hevc.h:41
HEVC_NAL_STSA_R
Definition:
hevc.h:34
HEVC_NAL_RSV_NVCL45
Definition:
hevc.h:74
HEVC_NAL_UNSPEC60
Definition:
hevc.h:89
HEVC_NAL_RSV_VCL29
Definition:
hevc.h:58
HEVC_NAL_UNSPEC53
Definition:
hevc.h:82
HEVC_NAL_UNSPEC59
Definition:
hevc.h:88
HEVC_NAL_IRAP_VCL22
Definition:
hevc.h:51
HEVC_MAX_SHORT_TERM_REF_PIC_SETS
Definition:
hevc.h:122
HEVC_NAL_CRA_NUT
Definition:
hevc.h:50
HEVC_NAL_SPS
Definition:
hevc.h:62
HEVC_NAL_SEI_SUFFIX
Definition:
hevc.h:69
HEVC_NAL_RSV_NVCL42
Definition:
hevc.h:71
HEVC_NAL_VCL_N14
Definition:
hevc.h:43
HEVC_NAL_RSV_VCL31
Definition:
hevc.h:60
HEVC_MAX_LONG_TERM_REF_PICS
Definition:
hevc.h:124
HEVC_NAL_EOB_NUT
Definition:
hevc.h:66
HEVC_NAL_UNSPEC54
Definition:
hevc.h:83
HEVC_NAL_RADL_N
Definition:
hevc.h:35
HEVC_NAL_UNSPEC62
Definition:
hevc.h:91
HEVC_MIN_LOG2_CTB_SIZE
Definition:
hevc.h:127
HEVC_NAL_UNSPEC52
Definition:
hevc.h:81
HEVC_SLICE_P
Definition:
hevc.h:97
HEVC_NAL_TRAIL_N
Definition:
hevc.h:29
HEVC_NAL_VCL_R13
Definition:
hevc.h:42
HEVC_NAL_VPS
Definition:
hevc.h:61
HEVC_MAX_TILE_COLUMNS
Definition:
hevc.h:144
HEVC_NAL_UNSPEC61
Definition:
hevc.h:90
HEVC_MAX_CPB_CNT
Definition:
hevc.h:131
HEVC_NAL_TRAIL_R
Definition:
hevc.h:30
HEVC_MAX_VPS_COUNT
Definition:
hevc.h:110
HEVC_NAL_STSA_N
Definition:
hevc.h:33
HEVC_MAX_SUB_LAYERS
Definition:
hevc.h:105
HEVC_NAL_VCL_R15
Definition:
hevc.h:44
HEVCSliceType
HEVCSliceType
Definition:
hevc.h:95
HEVC_NAL_VCL_N10
Definition:
hevc.h:39
HEVC_MAX_WIDTH
Definition:
hevc.h:138
HEVC_MAX_LUMA_PS
Definition:
hevc.h:134
HEVC_MAX_LAYERS
Definition:
hevc.h:103
HEVC_NAL_BLA_W_RADL
Definition:
hevc.h:46
HEVC_NAL_RSV_NVCL41
Definition:
hevc.h:70
HEVC_MAX_ENTRY_POINT_OFFSETS
Definition:
hevc.h:153
HEVC_NAL_UNSPEC50
Definition:
hevc.h:79
HEVC_NAL_UNSPEC57
Definition:
hevc.h:86
HEVC_NAL_RSV_VCL28
Definition:
hevc.h:57
HEVC_MAX_PPS_COUNT
Definition:
hevc.h:114
HEVC_NAL_PPS
Definition:
hevc.h:63
HEVC_NAL_RSV_NVCL47
Definition:
hevc.h:76
HEVC_NAL_RASL_R
Definition:
hevc.h:38
HEVC_MAX_HEIGHT
Definition:
hevc.h:139
HEVC_SLICE_B
Definition:
hevc.h:96
HEVC_NAL_FD_NUT
Definition:
hevc.h:67
HEVC_NAL_UNSPEC63
Definition:
hevc.h:92
HEVC_NAL_RADL_R
Definition:
hevc.h:36
HEVC_NAL_RSV_VCL24
Definition:
hevc.h:53
HEVC_NAL_TSA_R
Definition:
hevc.h:32
HEVC_MAX_LAYER_SETS
Definition:
hevc.h:107
HEVC_NAL_UNSPEC48
Definition:
hevc.h:77
Generated on Tue Nov 6 2018 18:11:06 for FFmpeg by
1.8.6