FFmpeg
4.2.1
libavcodec
hevc_sei.h
Go to the documentation of this file.
1
/*
2
* HEVC Supplementary Enhancement Information messages
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_SEI_H
22
#define AVCODEC_HEVC_SEI_H
23
24
#include <stdint.h>
25
26
#include "
get_bits.h
"
27
28
/**
29
* SEI message types
30
*/
31
typedef
enum
{
32
HEVC_SEI_TYPE_BUFFERING_PERIOD
= 0,
33
HEVC_SEI_TYPE_PICTURE_TIMING
= 1,
34
HEVC_SEI_TYPE_PAN_SCAN_RECT
= 2,
35
HEVC_SEI_TYPE_FILLER_PAYLOAD
= 3,
36
HEVC_SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35
= 4,
37
HEVC_SEI_TYPE_USER_DATA_UNREGISTERED
= 5,
38
HEVC_SEI_TYPE_RECOVERY_POINT
= 6,
39
HEVC_SEI_TYPE_SCENE_INFO
= 9,
40
HEVC_SEI_TYPE_FULL_FRAME_SNAPSHOT
= 15,
41
HEVC_SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_START
= 16,
42
HEVC_SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_END
= 17,
43
HEVC_SEI_TYPE_FILM_GRAIN_CHARACTERISTICS
= 19,
44
HEVC_SEI_TYPE_POST_FILTER_HINT
= 22,
45
HEVC_SEI_TYPE_TONE_MAPPING_INFO
= 23,
46
HEVC_SEI_TYPE_FRAME_PACKING
= 45,
47
HEVC_SEI_TYPE_DISPLAY_ORIENTATION
= 47,
48
HEVC_SEI_TYPE_SOP_DESCRIPTION
= 128,
49
HEVC_SEI_TYPE_ACTIVE_PARAMETER_SETS
= 129,
50
HEVC_SEI_TYPE_DECODING_UNIT_INFO
= 130,
51
HEVC_SEI_TYPE_TEMPORAL_LEVEL0_INDEX
= 131,
52
HEVC_SEI_TYPE_DECODED_PICTURE_HASH
= 132,
53
HEVC_SEI_TYPE_SCALABLE_NESTING
= 133,
54
HEVC_SEI_TYPE_REGION_REFRESH_INFO
= 134,
55
HEVC_SEI_TYPE_TIME_CODE
= 136,
56
HEVC_SEI_TYPE_MASTERING_DISPLAY_INFO
= 137,
57
HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO
= 144,
58
HEVC_SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS
= 147,
59
HEVC_SEI_TYPE_ALPHA_CHANNEL_INFO
= 165,
60
}
HEVC_SEI_Type
;
61
62
typedef
struct
HEVCSEIPictureHash
{
63
uint8_t
md5
[3][16];
64
uint8_t
is_md5
;
65
}
HEVCSEIPictureHash
;
66
67
typedef
struct
HEVCSEIFramePacking
{
68
int
present
;
69
int
arrangement_type
;
70
int
content_interpretation_type
;
71
int
quincunx_subsampling
;
72
int
current_frame_is_frame0_flag
;
73
}
HEVCSEIFramePacking
;
74
75
typedef
struct
HEVCSEIDisplayOrientation
{
76
int
present
;
77
int
anticlockwise_rotation
;
78
int
hflip,
vflip
;
79
}
HEVCSEIDisplayOrientation
;
80
81
typedef
struct
HEVCSEIPictureTiming
{
82
int
picture_struct
;
83
}
HEVCSEIPictureTiming
;
84
85
typedef
struct
HEVCSEIA53Caption
{
86
int
a53_caption_size
;
87
uint8_t
*
a53_caption
;
88
}
HEVCSEIA53Caption
;
89
90
typedef
struct
HEVCSEIMasteringDisplay
{
91
int
present
;
92
uint16_t display_primaries[3][2];
93
uint16_t white_point[2];
94
uint32_t
max_luminance
;
95
uint32_t
min_luminance
;
96
}
HEVCSEIMasteringDisplay
;
97
98
typedef
struct
HEVCSEIContentLight
{
99
int
present
;
100
uint16_t
max_content_light_level
;
101
uint16_t
max_pic_average_light_level
;
102
}
HEVCSEIContentLight
;
103
104
typedef
struct
HEVCSEIAlternativeTransfer
{
105
int
present
;
106
int
preferred_transfer_characteristics
;
107
}
HEVCSEIAlternativeTransfer
;
108
109
typedef
struct
HEVCSEI
{
110
HEVCSEIPictureHash
picture_hash
;
111
HEVCSEIFramePacking
frame_packing
;
112
HEVCSEIDisplayOrientation
display_orientation
;
113
HEVCSEIPictureTiming
picture_timing
;
114
HEVCSEIA53Caption
a53_caption
;
115
HEVCSEIMasteringDisplay
mastering_display
;
116
HEVCSEIContentLight
content_light
;
117
int
active_seq_parameter_set_id
;
118
HEVCSEIAlternativeTransfer
alternative_transfer
;
119
}
HEVCSEI
;
120
121
struct
HEVCParamSets
;
122
123
int
ff_hevc_decode_nal_sei
(
GetBitContext
*gb,
void
*logctx,
HEVCSEI
*
s
,
124
const
struct
HEVCParamSets
*ps,
int
type
);
125
126
/**
127
* Reset SEI values that are stored on the Context.
128
* e.g. Caption data that was extracted during NAL
129
* parsing.
130
*
131
* @param s HEVCContext.
132
*/
133
void
ff_hevc_reset_sei
(
HEVCSEI
*
s
);
134
135
#endif
/* AVCODEC_HEVC_SEI_H */
HEVCSEIDisplayOrientation
Definition:
hevc_sei.h:75
HEVCSEIDisplayOrientation::anticlockwise_rotation
int anticlockwise_rotation
Definition:
hevc_sei.h:77
HEVCSEIMasteringDisplay
Definition:
hevc_sei.h:90
HEVCSEIFramePacking::current_frame_is_frame0_flag
int current_frame_is_frame0_flag
Definition:
hevc_sei.h:72
HEVC_SEI_TYPE_MASTERING_DISPLAY_INFO
Definition:
hevc_sei.h:56
HEVC_SEI_TYPE_SOP_DESCRIPTION
Definition:
hevc_sei.h:48
HEVCSEIPictureTiming
Definition:
hevc_sei.h:81
HEVCSEIPictureHash::is_md5
uint8_t is_md5
Definition:
hevc_sei.h:64
HEVCSEIA53Caption::a53_caption_size
int a53_caption_size
Definition:
hevc_sei.h:86
HEVC_SEI_TYPE_BUFFERING_PERIOD
Definition:
hevc_sei.h:32
HEVCSEIAlternativeTransfer
Definition:
hevc_sei.h:104
HEVCSEI::mastering_display
HEVCSEIMasteringDisplay mastering_display
Definition:
hevc_sei.h:115
HEVC_SEI_TYPE_POST_FILTER_HINT
Definition:
hevc_sei.h:44
HEVC_SEI_TYPE_SCENE_INFO
Definition:
hevc_sei.h:39
HEVCSEI::content_light
HEVCSEIContentLight content_light
Definition:
hevc_sei.h:116
uint8_t
uint8_t
Definition:
audio_convert.c:194
HEVC_SEI_TYPE_ALPHA_CHANNEL_INFO
Definition:
hevc_sei.h:59
HEVCSEI::active_seq_parameter_set_id
int active_seq_parameter_set_id
Definition:
hevc_sei.h:117
get_bits.h
bitstream reader API header.
HEVCSEIFramePacking::quincunx_subsampling
int quincunx_subsampling
Definition:
hevc_sei.h:71
HEVC_SEI_TYPE_FRAME_PACKING
Definition:
hevc_sei.h:46
HEVCSEIMasteringDisplay::present
int present
Definition:
hevc_sei.h:91
HEVCSEIFramePacking::content_interpretation_type
int content_interpretation_type
Definition:
hevc_sei.h:70
HEVCSEIPictureHash::md5
uint8_t md5[3][16]
Definition:
hevc_sei.h:63
HEVC_SEI_TYPE_FILLER_PAYLOAD
Definition:
hevc_sei.h:35
HEVC_SEI_TYPE_FULL_FRAME_SNAPSHOT
Definition:
hevc_sei.h:40
HEVCSEIFramePacking::present
int present
Definition:
hevc_sei.h:68
HEVC_SEI_TYPE_ACTIVE_PARAMETER_SETS
Definition:
hevc_sei.h:49
HEVCSEIAlternativeTransfer::preferred_transfer_characteristics
int preferred_transfer_characteristics
Definition:
hevc_sei.h:106
HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO
Definition:
hevc_sei.h:57
HEVCSEIDisplayOrientation::vflip
int vflip
Definition:
hevc_sei.h:78
ff_hevc_reset_sei
void ff_hevc_reset_sei(HEVCSEI *s)
Reset SEI values that are stored on the Context.
Definition:
hevc_sei.c:364
HEVC_SEI_TYPE_TONE_MAPPING_INFO
Definition:
hevc_sei.h:45
HEVC_SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_START
Definition:
hevc_sei.h:41
HEVC_SEI_TYPE_DECODING_UNIT_INFO
Definition:
hevc_sei.h:50
HEVCSEIPictureTiming::picture_struct
int picture_struct
Definition:
hevc_sei.h:82
ff_hevc_decode_nal_sei
int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, const struct HEVCParamSets *ps, int type)
HEVC_SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS
Definition:
hevc_sei.h:58
s
#define s(width, name)
Definition:
cbs_vp9.c:257
HEVC_SEI_TYPE_DISPLAY_ORIENTATION
Definition:
hevc_sei.h:47
HEVC_SEI_TYPE_DECODED_PICTURE_HASH
Definition:
hevc_sei.h:52
HEVC_SEI_TYPE_SCALABLE_NESTING
Definition:
hevc_sei.h:53
HEVC_SEI_TYPE_USER_DATA_UNREGISTERED
Definition:
hevc_sei.h:37
HEVC_SEI_TYPE_TIME_CODE
Definition:
hevc_sei.h:55
HEVCSEI::frame_packing
HEVCSEIFramePacking frame_packing
Definition:
hevc_sei.h:111
HEVCSEIContentLight::max_pic_average_light_level
uint16_t max_pic_average_light_level
Definition:
hevc_sei.h:101
HEVC_SEI_TYPE_FILM_GRAIN_CHARACTERISTICS
Definition:
hevc_sei.h:43
type
cl_device_type type
Definition:
hwcontext_opencl.c:192
HEVCSEIAlternativeTransfer::present
int present
Definition:
hevc_sei.h:105
HEVCSEIContentLight::present
int present
Definition:
hevc_sei.h:99
HEVCSEI
Definition:
hevc_sei.h:109
HEVCSEIDisplayOrientation::present
int present
Definition:
hevc_sei.h:76
HEVCSEI::picture_hash
HEVCSEIPictureHash picture_hash
Definition:
hevc_sei.h:110
HEVCSEIA53Caption::a53_caption
uint8_t * a53_caption
Definition:
hevc_sei.h:87
HEVC_SEI_TYPE_REGION_REFRESH_INFO
Definition:
hevc_sei.h:54
HEVCSEI::picture_timing
HEVCSEIPictureTiming picture_timing
Definition:
hevc_sei.h:113
HEVCSEIA53Caption
Definition:
hevc_sei.h:85
GetBitContext
Definition:
get_bits.h:61
HEVC_SEI_Type
HEVC_SEI_Type
SEI message types.
Definition:
hevc_sei.h:31
HEVC_SEI_TYPE_TEMPORAL_LEVEL0_INDEX
Definition:
hevc_sei.h:51
HEVC_SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35
Definition:
hevc_sei.h:36
HEVCSEI::alternative_transfer
HEVCSEIAlternativeTransfer alternative_transfer
Definition:
hevc_sei.h:118
HEVCSEI::display_orientation
HEVCSEIDisplayOrientation display_orientation
Definition:
hevc_sei.h:112
HEVCSEIContentLight::max_content_light_level
uint16_t max_content_light_level
Definition:
hevc_sei.h:100
HEVCSEIMasteringDisplay::max_luminance
uint32_t max_luminance
Definition:
hevc_sei.h:94
HEVC_SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_END
Definition:
hevc_sei.h:42
HEVCSEIContentLight
Definition:
hevc_sei.h:98
HEVCSEIPictureHash
Definition:
hevc_sei.h:62
HEVC_SEI_TYPE_RECOVERY_POINT
Definition:
hevc_sei.h:38
HEVCSEIMasteringDisplay::min_luminance
uint32_t min_luminance
Definition:
hevc_sei.h:95
HEVCSEI::a53_caption
HEVCSEIA53Caption a53_caption
Definition:
hevc_sei.h:114
HEVCParamSets
Definition:
hevc_ps.h:399
HEVCSEIFramePacking
Definition:
hevc_sei.h:67
HEVC_SEI_TYPE_PAN_SCAN_RECT
Definition:
hevc_sei.h:34
HEVCSEIFramePacking::arrangement_type
int arrangement_type
Definition:
hevc_sei.h:69
HEVC_SEI_TYPE_PICTURE_TIMING
Definition:
hevc_sei.h:33
Generated on Thu Sep 26 2019 14:53:49 for FFmpeg by
1.8.13