FFmpeg
4.0
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_MASTERING_DISPLAY_INFO
= 137,
56
HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO
= 144,
57
HEVC_SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS
= 147,
58
}
HEVC_SEI_Type
;
59
60
typedef
struct
HEVCSEIPictureHash
{
61
uint8_t
md5
[3][16];
62
uint8_t
is_md5
;
63
}
HEVCSEIPictureHash
;
64
65
typedef
struct
HEVCSEIFramePacking
{
66
int
present
;
67
int
arrangement_type
;
68
int
content_interpretation_type
;
69
int
quincunx_subsampling
;
70
int
current_frame_is_frame0_flag
;
71
}
HEVCSEIFramePacking
;
72
73
typedef
struct
HEVCSEIDisplayOrientation
{
74
int
present
;
75
int
anticlockwise_rotation
;
76
int
hflip,
vflip
;
77
}
HEVCSEIDisplayOrientation
;
78
79
typedef
struct
HEVCSEIPictureTiming
{
80
int
picture_struct
;
81
}
HEVCSEIPictureTiming
;
82
83
typedef
struct
HEVCSEIA53Caption
{
84
int
a53_caption_size
;
85
uint8_t
*
a53_caption
;
86
}
HEVCSEIA53Caption
;
87
88
typedef
struct
HEVCSEIMasteringDisplay
{
89
int
present
;
90
uint16_t display_primaries[3][2];
91
uint16_t white_point[2];
92
uint32_t
max_luminance
;
93
uint32_t
min_luminance
;
94
}
HEVCSEIMasteringDisplay
;
95
96
typedef
struct
HEVCSEIContentLight
{
97
int
present
;
98
uint16_t
max_content_light_level
;
99
uint16_t
max_pic_average_light_level
;
100
}
HEVCSEIContentLight
;
101
102
typedef
struct
HEVCSEIAlternativeTransfer
{
103
int
present
;
104
int
preferred_transfer_characteristics
;
105
}
HEVCSEIAlternativeTransfer
;
106
107
typedef
struct
HEVCSEI
{
108
HEVCSEIPictureHash
picture_hash
;
109
HEVCSEIFramePacking
frame_packing
;
110
HEVCSEIDisplayOrientation
display_orientation
;
111
HEVCSEIPictureTiming
picture_timing
;
112
HEVCSEIA53Caption
a53_caption
;
113
HEVCSEIMasteringDisplay
mastering_display
;
114
HEVCSEIContentLight
content_light
;
115
int
active_seq_parameter_set_id
;
116
HEVCSEIAlternativeTransfer
alternative_transfer
;
117
}
HEVCSEI
;
118
119
struct
HEVCParamSets
;
120
121
int
ff_hevc_decode_nal_sei
(
GetBitContext
*gb,
void
*logctx,
HEVCSEI
*
s
,
122
const
struct
HEVCParamSets
*ps,
int
type
);
123
124
/**
125
* Reset SEI values that are stored on the Context.
126
* e.g. Caption data that was extracted during NAL
127
* parsing.
128
*
129
* @param s HEVCContext.
130
*/
131
void
ff_hevc_reset_sei
(
HEVCSEI
*
s
);
132
133
#endif
/* AVCODEC_HEVC_SEI_H */
s
const char * s
Definition:
avisynth_c.h:768
HEVCSEIDisplayOrientation
Definition:
hevc_sei.h:73
HEVCSEIDisplayOrientation::anticlockwise_rotation
int anticlockwise_rotation
Definition:
hevc_sei.h:75
HEVCSEIMasteringDisplay
Definition:
hevc_sei.h:88
HEVCSEIFramePacking::current_frame_is_frame0_flag
int current_frame_is_frame0_flag
Definition:
hevc_sei.h:70
HEVC_SEI_TYPE_MASTERING_DISPLAY_INFO
Definition:
hevc_sei.h:55
HEVC_SEI_TYPE_SOP_DESCRIPTION
Definition:
hevc_sei.h:48
HEVCSEIPictureTiming
Definition:
hevc_sei.h:79
HEVCSEIPictureHash::is_md5
uint8_t is_md5
Definition:
hevc_sei.h:62
HEVCSEIA53Caption::a53_caption_size
int a53_caption_size
Definition:
hevc_sei.h:84
HEVC_SEI_TYPE_BUFFERING_PERIOD
Definition:
hevc_sei.h:32
HEVCSEIAlternativeTransfer
Definition:
hevc_sei.h:102
HEVCSEI::mastering_display
HEVCSEIMasteringDisplay mastering_display
Definition:
hevc_sei.h:113
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:114
uint8_t
uint8_t
Definition:
audio_convert.c:194
HEVCSEI::active_seq_parameter_set_id
int active_seq_parameter_set_id
Definition:
hevc_sei.h:115
get_bits.h
bitstream reader API header.
HEVCSEIFramePacking::quincunx_subsampling
int quincunx_subsampling
Definition:
hevc_sei.h:69
HEVC_SEI_TYPE_FRAME_PACKING
Definition:
hevc_sei.h:46
HEVCSEIMasteringDisplay::present
int present
Definition:
hevc_sei.h:89
HEVCSEIFramePacking::content_interpretation_type
int content_interpretation_type
Definition:
hevc_sei.h:68
HEVCSEIPictureHash::md5
uint8_t md5[3][16]
Definition:
hevc_sei.h:61
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:66
HEVC_SEI_TYPE_ACTIVE_PARAMETER_SETS
Definition:
hevc_sei.h:49
HEVCSEIAlternativeTransfer::preferred_transfer_characteristics
int preferred_transfer_characteristics
Definition:
hevc_sei.h:104
HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO
Definition:
hevc_sei.h:56
HEVCSEIDisplayOrientation::vflip
int vflip
Definition:
hevc_sei.h:76
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:80
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:57
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
HEVCSEI::frame_packing
HEVCSEIFramePacking frame_packing
Definition:
hevc_sei.h:109
HEVCSEIContentLight::max_pic_average_light_level
uint16_t max_pic_average_light_level
Definition:
hevc_sei.h:99
HEVC_SEI_TYPE_FILM_GRAIN_CHARACTERISTICS
Definition:
hevc_sei.h:43
type
cl_device_type type
Definition:
hwcontext_opencl.c:189
HEVCSEIAlternativeTransfer::present
int present
Definition:
hevc_sei.h:103
HEVCSEIContentLight::present
int present
Definition:
hevc_sei.h:97
HEVCSEI
Definition:
hevc_sei.h:107
HEVCSEIDisplayOrientation::present
int present
Definition:
hevc_sei.h:74
HEVCSEI::picture_hash
HEVCSEIPictureHash picture_hash
Definition:
hevc_sei.h:108
HEVCSEIA53Caption::a53_caption
uint8_t * a53_caption
Definition:
hevc_sei.h:85
HEVC_SEI_TYPE_REGION_REFRESH_INFO
Definition:
hevc_sei.h:54
HEVCSEI::picture_timing
HEVCSEIPictureTiming picture_timing
Definition:
hevc_sei.h:111
HEVCSEIA53Caption
Definition:
hevc_sei.h:83
GetBitContext
Definition:
get_bits.h:56
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:116
HEVCSEI::display_orientation
HEVCSEIDisplayOrientation display_orientation
Definition:
hevc_sei.h:110
HEVCSEIContentLight::max_content_light_level
uint16_t max_content_light_level
Definition:
hevc_sei.h:98
HEVCSEIMasteringDisplay::max_luminance
uint32_t max_luminance
Definition:
hevc_sei.h:92
HEVC_SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_END
Definition:
hevc_sei.h:42
HEVCSEIContentLight
Definition:
hevc_sei.h:96
HEVCSEIPictureHash
Definition:
hevc_sei.h:60
HEVC_SEI_TYPE_RECOVERY_POINT
Definition:
hevc_sei.h:38
HEVCSEIMasteringDisplay::min_luminance
uint32_t min_luminance
Definition:
hevc_sei.h:93
HEVCSEI::a53_caption
HEVCSEIA53Caption a53_caption
Definition:
hevc_sei.h:112
HEVCParamSets
Definition:
hevc_ps.h:395
HEVCSEIFramePacking
Definition:
hevc_sei.h:65
HEVC_SEI_TYPE_PAN_SCAN_RECT
Definition:
hevc_sei.h:34
HEVCSEIFramePacking::arrangement_type
int arrangement_type
Definition:
hevc_sei.h:67
HEVC_SEI_TYPE_PICTURE_TIMING
Definition:
hevc_sei.h:33
Generated on Tue May 22 2018 07:06:33 for FFmpeg by
1.8.13