FFmpeg
Loading...
Searching...
No Matches
h264_sei.h
Go to the documentation of this file.
1/*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19#ifndef AVCODEC_H264_SEI_H
20#define AVCODEC_H264_SEI_H
21
22#include "get_bits.h"
23#include "h2645_sei.h"
24#include "h264_ps.h"
25#include "sei.h"
26
27
28/**
29 * pic_struct in picture timing SEI message
30 */
31typedef enum {
32 H264_SEI_PIC_STRUCT_FRAME = 0, ///< 0: %frame
33 H264_SEI_PIC_STRUCT_TOP_FIELD = 1, ///< 1: top field
34 H264_SEI_PIC_STRUCT_BOTTOM_FIELD = 2, ///< 2: bottom field
35 H264_SEI_PIC_STRUCT_TOP_BOTTOM = 3, ///< 3: top field, bottom field, in that order
36 H264_SEI_PIC_STRUCT_BOTTOM_TOP = 4, ///< 4: bottom field, top field, in that order
37 H264_SEI_PIC_STRUCT_TOP_BOTTOM_TOP = 5, ///< 5: top field, bottom field, top field repeated, in that order
38 H264_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM = 6, ///< 6: bottom field, top field, bottom field repeated, in that order
39 H264_SEI_PIC_STRUCT_FRAME_DOUBLING = 7, ///< 7: %frame doubling
40 H264_SEI_PIC_STRUCT_FRAME_TRIPLING = 8 ///< 8: %frame tripling
42
43typedef struct H264SEITimeCode {
44 /* When not continuously receiving full timecodes, we have to reference
45 the previous timecode received */
46 int full;
47 int frame;
50 int hours;
53
54typedef struct H264SEIPictureTiming {
55 // maximum size of pic_timing according to the spec should be 274 bits
56 uint8_t payload[40];
58
61
62 /**
63 * Bit set of clock types for fields/frames in picture timing SEI message.
64 * For each found ct_type, appropriate bit is set (e.g., bit 1 for
65 * interlaced).
66 */
68
69 /**
70 * dpb_output_delay in picture timing SEI message, see H.264 C.2.2
71 */
73
74 /**
75 * cpb_removal_delay in picture timing SEI message, see H.264 C.1.2
76 */
78
79 /**
80 * Maximum three timecodes in a pic_timing SEI.
81 */
83
84 /**
85 * Number of timecode in use
86 */
89
90typedef struct H264SEIRecoveryPoint {
91 /**
92 * recovery_frame_cnt
93 *
94 * Set to -1 if no recovery point SEI message found or to number of frames
95 * before playback synchronizes. Frames having recovery point are key
96 * frames.
97 */
100
102 int present; ///< Buffering period SEI flag
103 int initial_cpb_removal_delay[32]; ///< Initial timestamps for CPBs
105
118
126
127struct H264ParamSets;
128
130 const struct H264ParamSets *ps, void *logctx);
131
132/**
133 * Reset SEI values at the beginning of the frame.
134 */
136
137/**
138 * Get stereo_mode string from the h264 frame_packing_arrangement
139 */
141
142/**
143 * Parse the contents of a picture timing message given an active SPS.
144 */
146 void *logctx);
147
148#endif /* AVCODEC_H264_SEI_H */
static int FUNC sps(CodedBitstreamContext *ctx, RWContext *rw, H264RawSPS *current)
bitstream reader API header.
H.264 parameter set handling.
const char * ff_h264_sei_stereo_mode(const H2645SEIFramePacking *h)
Get stereo_mode string from the h264 frame_packing_arrangement.
Definition h264_sei.c:304
void ff_h264_sei_uninit(H264SEIContext *h)
Reset SEI values at the beginning of the frame.
Definition h264_sei.c:48
H264_SEI_PicStructType
pic_struct in picture timing SEI message
Definition h264_sei.h:31
@ H264_SEI_PIC_STRUCT_BOTTOM_FIELD
2: bottom field
Definition h264_sei.h:34
@ H264_SEI_PIC_STRUCT_BOTTOM_TOP
4: bottom field, top field, in that order
Definition h264_sei.h:36
@ H264_SEI_PIC_STRUCT_TOP_BOTTOM_TOP
5: top field, bottom field, top field repeated, in that order
Definition h264_sei.h:37
@ H264_SEI_PIC_STRUCT_TOP_FIELD
1: top field
Definition h264_sei.h:33
@ H264_SEI_PIC_STRUCT_FRAME_TRIPLING
8: frame tripling
Definition h264_sei.h:40
@ H264_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM
6: bottom field, top field, bottom field repeated, in that order
Definition h264_sei.h:38
@ H264_SEI_PIC_STRUCT_TOP_BOTTOM
3: top field, bottom field, in that order
Definition h264_sei.h:35
@ H264_SEI_PIC_STRUCT_FRAME_DOUBLING
7: frame doubling
Definition h264_sei.h:39
@ H264_SEI_PIC_STRUCT_FRAME
0: frame
Definition h264_sei.h:32
int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, const struct H264ParamSets *ps, void *logctx)
int ff_h264_sei_process_picture_timing(H264SEIPictureTiming *h, const SPS *sps, void *logctx)
Parse the contents of a picture timing message given an active SPS.
Definition h264_sei.c:63
int initial_cpb_removal_delay[32]
Initial timestamps for CPBs.
Definition h264_sei.h:103
int present
Buffering period SEI flag.
Definition h264_sei.h:102
H2645SEI common
Definition h264_sei.h:120
H264SEIGreenMetaData green_metadata
Definition h264_sei.h:124
H264SEIRecoveryPoint recovery_point
Definition h264_sei.h:122
H264SEIBufferingPeriod buffering_period
Definition h264_sei.h:123
H264SEIPictureTiming picture_timing
Definition h264_sei.h:121
uint8_t percent_intra_coded_macroblocks
Definition h264_sei.h:112
uint8_t green_metadata_type
Definition h264_sei.h:107
uint8_t percent_six_tap_filtering
Definition h264_sei.h:113
uint16_t num_pictures
Definition h264_sei.h:110
uint8_t percent_alpha_point_deblocking_instance
Definition h264_sei.h:114
uint8_t percent_non_zero_macroblocks
Definition h264_sei.h:111
uint8_t xsd_metric_type
Definition h264_sei.h:115
uint16_t xsd_metric_value
Definition h264_sei.h:116
int dpb_output_delay
dpb_output_delay in picture timing SEI message, see H.264 C.2.2
Definition h264_sei.h:72
H264SEITimeCode timecode[3]
Maximum three timecodes in a pic_timing SEI.
Definition h264_sei.h:82
int ct_type
Bit set of clock types for fields/frames in picture timing SEI message.
Definition h264_sei.h:67
int timecode_cnt
Number of timecode in use.
Definition h264_sei.h:87
uint8_t payload[40]
Definition h264_sei.h:56
int cpb_removal_delay
cpb_removal_delay in picture timing SEI message, see H.264 C.1.2
Definition h264_sei.h:77
H264_SEI_PicStructType pic_struct
Definition h264_sei.h:60
int recovery_frame_cnt
recovery_frame_cnt
Definition h264_sei.h:98
Sequence parameter set.
Definition h264_ps.h:44