FFmpeg
4.0
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-3: NAL unit type codes
26
*/
27
enum
HEVCNALUnitType
{
28
HEVC_NAL_TRAIL_N
= 0,
29
HEVC_NAL_TRAIL_R
= 1,
30
HEVC_NAL_TSA_N
= 2,
31
HEVC_NAL_TSA_R
= 3,
32
HEVC_NAL_STSA_N
= 4,
33
HEVC_NAL_STSA_R
= 5,
34
HEVC_NAL_RADL_N
= 6,
35
HEVC_NAL_RADL_R
= 7,
36
HEVC_NAL_RASL_N
= 8,
37
HEVC_NAL_RASL_R
= 9,
38
HEVC_NAL_VCL_N10
= 10,
39
HEVC_NAL_VCL_R11
= 11,
40
HEVC_NAL_VCL_N12
= 12,
41
HEVC_NAL_VCL_R13
= 13,
42
HEVC_NAL_VCL_N14
= 14,
43
HEVC_NAL_VCL_R15
= 15,
44
HEVC_NAL_BLA_W_LP
= 16,
45
HEVC_NAL_BLA_W_RADL
= 17,
46
HEVC_NAL_BLA_N_LP
= 18,
47
HEVC_NAL_IDR_W_RADL
= 19,
48
HEVC_NAL_IDR_N_LP
= 20,
49
HEVC_NAL_CRA_NUT
= 21,
50
HEVC_NAL_IRAP_VCL22
= 22,
51
HEVC_NAL_IRAP_VCL23
= 23,
52
HEVC_NAL_RSV_VCL24
= 24,
53
HEVC_NAL_RSV_VCL25
= 25,
54
HEVC_NAL_RSV_VCL26
= 26,
55
HEVC_NAL_RSV_VCL27
= 27,
56
HEVC_NAL_RSV_VCL28
= 28,
57
HEVC_NAL_RSV_VCL29
= 29,
58
HEVC_NAL_RSV_VCL30
= 30,
59
HEVC_NAL_RSV_VCL31
= 31,
60
HEVC_NAL_VPS
= 32,
61
HEVC_NAL_SPS
= 33,
62
HEVC_NAL_PPS
= 34,
63
HEVC_NAL_AUD
= 35,
64
HEVC_NAL_EOS_NUT
= 36,
65
HEVC_NAL_EOB_NUT
= 37,
66
HEVC_NAL_FD_NUT
= 38,
67
HEVC_NAL_SEI_PREFIX
= 39,
68
HEVC_NAL_SEI_SUFFIX
= 40,
69
};
70
71
enum
HEVCSliceType
{
72
HEVC_SLICE_B
= 0,
73
HEVC_SLICE_P
= 1,
74
HEVC_SLICE_I
= 2,
75
};
76
77
enum
{
78
// 7.4.3.1: vps_max_layers_minus1 is in [0, 62].
79
HEVC_MAX_LAYERS
= 63,
80
// 7.4.3.1: vps_max_sub_layers_minus1 is in [0, 6].
81
HEVC_MAX_SUB_LAYERS
= 7,
82
// 7.4.3.1: vps_num_layer_sets_minus1 is in [0, 1023].
83
HEVC_MAX_LAYER_SETS
= 1024,
84
85
// 7.4.2.1: vps_video_parameter_set_id is u(4).
86
HEVC_MAX_VPS_COUNT
= 16,
87
// 7.4.3.2.1: sps_seq_parameter_set_id is in [0, 15].
88
HEVC_MAX_SPS_COUNT
= 16,
89
// 7.4.3.3.1: pps_pic_parameter_set_id is in [0, 63].
90
HEVC_MAX_PPS_COUNT
= 64,
91
92
// A.4.2: MaxDpbSize is bounded above by 16.
93
HEVC_MAX_DPB_SIZE
= 16,
94
// 7.4.3.1: vps_max_dec_pic_buffering_minus1[i] is in [0, MaxDpbSize - 1].
95
HEVC_MAX_REFS
=
HEVC_MAX_DPB_SIZE
,
96
97
// 7.4.3.2.1: num_short_term_ref_pic_sets is in [0, 64].
98
HEVC_MAX_SHORT_TERM_REF_PIC_SETS
= 64,
99
// 7.4.3.2.1: num_long_term_ref_pics_sps is in [0, 32].
100
HEVC_MAX_LONG_TERM_REF_PICS
= 32,
101
102
// A.3: all profiles require that CtbLog2SizeY is in [4, 6].
103
HEVC_MIN_LOG2_CTB_SIZE
= 4,
104
HEVC_MAX_LOG2_CTB_SIZE
= 6,
105
106
// E.3.2: cpb_cnt_minus1[i] is in [0, 31].
107
HEVC_MAX_CPB_CNT
= 32,
108
109
// A.4.1: in table A.6 the highest level allows a MaxLumaPs of 35 651 584.
110
HEVC_MAX_LUMA_PS
= 35651584,
111
// A.4.1: pic_width_in_luma_samples and pic_height_in_luma_samples are
112
// constrained to be not greater than sqrt(MaxLumaPs * 8). Hence height/
113
// width are bounded above by sqrt(8 * 35651584) = 16888.2 samples.
114
HEVC_MAX_WIDTH
= 16888,
115
HEVC_MAX_HEIGHT
= 16888,
116
117
// A.4.1: table A.6 allows at most 22 tile rows for any level.
118
HEVC_MAX_TILE_ROWS
= 22,
119
// A.4.1: table A.6 allows at most 20 tile columns for any level.
120
HEVC_MAX_TILE_COLUMNS
= 20,
121
122
// 7.4.7.1: in the worst case (tiles_enabled_flag and
123
// entropy_coding_sync_enabled_flag are both set), entry points can be
124
// placed at the beginning of every Ctb row in every tile, giving an
125
// upper bound of (num_tile_columns_minus1 + 1) * PicHeightInCtbsY - 1.
126
// Only a stream with very high resolution and perverse parameters could
127
// get near that, though, so set a lower limit here with the maximum
128
// possible value for 4K video (at most 135 16x16 Ctb rows).
129
HEVC_MAX_ENTRY_POINT_OFFSETS
=
HEVC_MAX_TILE_COLUMNS
* 135,
130
};
131
132
133
#endif
/* AVCODEC_HEVC_H */
HEVC_MAX_SPS_COUNT
Definition:
hevc.h:88
HEVC_MAX_SHORT_TERM_REF_PIC_SETS
Definition:
hevc.h:98
HEVC_NAL_IDR_N_LP
Definition:
hevc.h:48
HEVC_NAL_RSV_VCL26
Definition:
hevc.h:54
HEVC_NAL_IRAP_VCL23
Definition:
hevc.h:51
HEVC_MAX_WIDTH
Definition:
hevc.h:114
HEVC_MAX_LAYER_SETS
Definition:
hevc.h:83
HEVC_NAL_BLA_W_LP
Definition:
hevc.h:44
HEVC_NAL_RSV_VCL30
Definition:
hevc.h:58
HEVC_NAL_TSA_N
Definition:
hevc.h:30
HEVC_MAX_TILE_COLUMNS
Definition:
hevc.h:120
HEVCNALUnitType
HEVCNALUnitType
Table 7-3: NAL unit type codes.
Definition:
hevc.h:27
HEVC_NAL_RSV_VCL25
Definition:
hevc.h:53
HEVC_SLICE_I
Definition:
hevc.h:74
HEVC_NAL_AUD
Definition:
hevc.h:63
HEVC_NAL_VCL_R11
Definition:
hevc.h:39
HEVC_MAX_DPB_SIZE
Definition:
hevc.h:93
HEVC_MAX_HEIGHT
Definition:
hevc.h:115
HEVC_NAL_SEI_PREFIX
Definition:
hevc.h:67
HEVC_NAL_IDR_W_RADL
Definition:
hevc.h:47
HEVC_NAL_EOS_NUT
Definition:
hevc.h:64
HEVC_NAL_BLA_N_LP
Definition:
hevc.h:46
HEVC_NAL_RSV_VCL27
Definition:
hevc.h:55
HEVC_MAX_LAYERS
Definition:
hevc.h:79
HEVC_NAL_RASL_N
Definition:
hevc.h:36
HEVC_NAL_VCL_N12
Definition:
hevc.h:40
HEVC_NAL_STSA_R
Definition:
hevc.h:33
HEVC_MAX_LUMA_PS
Definition:
hevc.h:110
HEVC_MAX_SUB_LAYERS
Definition:
hevc.h:81
HEVC_NAL_RSV_VCL29
Definition:
hevc.h:57
HEVC_NAL_IRAP_VCL22
Definition:
hevc.h:50
HEVC_NAL_CRA_NUT
Definition:
hevc.h:49
HEVC_NAL_SPS
Definition:
hevc.h:61
HEVC_NAL_SEI_SUFFIX
Definition:
hevc.h:68
HEVC_NAL_VCL_N14
Definition:
hevc.h:42
HEVC_NAL_RSV_VCL31
Definition:
hevc.h:59
HEVC_MAX_REFS
Definition:
hevc.h:95
HEVC_MAX_LONG_TERM_REF_PICS
Definition:
hevc.h:100
HEVC_NAL_EOB_NUT
Definition:
hevc.h:65
HEVC_NAL_RADL_N
Definition:
hevc.h:34
HEVC_SLICE_P
Definition:
hevc.h:73
HEVC_NAL_TRAIL_N
Definition:
hevc.h:28
HEVC_NAL_VCL_R13
Definition:
hevc.h:41
HEVC_NAL_VPS
Definition:
hevc.h:60
HEVC_MAX_VPS_COUNT
Definition:
hevc.h:86
HEVC_NAL_TRAIL_R
Definition:
hevc.h:29
HEVC_NAL_STSA_N
Definition:
hevc.h:32
HEVC_MAX_ENTRY_POINT_OFFSETS
Definition:
hevc.h:129
HEVC_MIN_LOG2_CTB_SIZE
Definition:
hevc.h:103
HEVC_NAL_VCL_R15
Definition:
hevc.h:43
HEVC_MAX_TILE_ROWS
Definition:
hevc.h:118
HEVCSliceType
HEVCSliceType
Definition:
hevc.h:71
HEVC_NAL_VCL_N10
Definition:
hevc.h:38
HEVC_MAX_LOG2_CTB_SIZE
Definition:
hevc.h:104
HEVC_NAL_BLA_W_RADL
Definition:
hevc.h:45
HEVC_NAL_RSV_VCL28
Definition:
hevc.h:56
HEVC_MAX_CPB_CNT
Definition:
hevc.h:107
HEVC_MAX_PPS_COUNT
Definition:
hevc.h:90
HEVC_NAL_PPS
Definition:
hevc.h:62
HEVC_NAL_RASL_R
Definition:
hevc.h:37
HEVC_SLICE_B
Definition:
hevc.h:72
HEVC_NAL_FD_NUT
Definition:
hevc.h:66
HEVC_NAL_RADL_R
Definition:
hevc.h:35
HEVC_NAL_RSV_VCL24
Definition:
hevc.h:52
HEVC_NAL_TSA_R
Definition:
hevc.h:31
Generated on Tue May 22 2018 07:06:33 for FFmpeg by
1.8.13