FFmpeg
Loading...
Searching...
No Matches
flv.h
Go to the documentation of this file.
1/*
2 * FLV common header
3 *
4 * Copyright (c) 2006 The FFmpeg Project
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23/**
24 * @file
25 * FLV common header
26 */
27
28#ifndef AVFORMAT_FLV_H
29#define AVFORMAT_FLV_H
30
31/* offsets for packed values */
32#define FLV_AUDIO_SAMPLESSIZE_OFFSET 1
33#define FLV_AUDIO_SAMPLERATE_OFFSET 2
34#define FLV_AUDIO_CODECID_OFFSET 4
35
36#define FLV_VIDEO_FRAMETYPE_OFFSET 4
37
38/* Extended VideoTagHeader
39 * defined in reference link:
40 * https://github.com/veovera/enhanced-rtmp/blob/main/enhanced-rtmp-v1.pdf
41 * */
42#define FLV_IS_EX_HEADER 0x80
43
44/* bitmasks to isolate specific values */
45#define FLV_AUDIO_CHANNEL_MASK 0x01
46#define FLV_AUDIO_SAMPLESIZE_MASK 0x02
47#define FLV_AUDIO_SAMPLERATE_MASK 0x0c
48#define FLV_AUDIO_CODECID_MASK 0xf0
49
50#define FLV_VIDEO_CODECID_MASK 0x0f
51#define FLV_VIDEO_FRAMETYPE_MASK 0x70
52
53#define AMF_END_OF_OBJECT 0x09
54
55#define KEYFRAMES_TAG "keyframes"
56#define KEYFRAMES_TIMESTAMP_TAG "times"
57#define KEYFRAMES_BYTEOFFSET_TAG "filepositions"
58
59
60enum {
63};
64
70
71enum {
77};
78
79enum {
82};
83
84enum {
87};
88
89enum {
90 FLV_SAMPLERATE_SPECIAL = 0, /**< signifies 5512Hz and 8000Hz in the case of NELLYMOSER */
94};
95
96enum {
109};
110
111enum {
120
121 // non-standard protocol extension that is in use in the wild
123};
124
125enum {
134};
135
136enum {
141};
142
143enum {
145};
146
147enum {
151};
152
153enum {
157};
158
159enum {
160 FLV_FRAME_KEY = 1 << FLV_VIDEO_FRAMETYPE_OFFSET, ///< key frame (for AVC, a seekable frame)
161 FLV_FRAME_INTER = 2 << FLV_VIDEO_FRAMETYPE_OFFSET, ///< inter frame (for AVC, a non-seekable frame)
162 FLV_FRAME_DISP_INTER = 3 << FLV_VIDEO_FRAMETYPE_OFFSET, ///< disposable inter frame (H.263 only)
163 FLV_FRAME_GENERATED_KEY = 4 << FLV_VIDEO_FRAMETYPE_OFFSET, ///< generated key frame (reserved for server use only)
164 FLV_FRAME_VIDEO_INFO_CMD = 5 << FLV_VIDEO_FRAMETYPE_OFFSET, ///< video info/command frame
165};
166
182
183#endif /* AVFORMAT_FLV_H */
@ PacketTypeMPEG2TSSequenceStart
Definition flv.h:131
@ PacketTypeMultitrack
Definition flv.h:132
@ PacketTypeModEx
Definition flv.h:133
@ PacketTypeSequenceEnd
Definition flv.h:128
@ PacketTypeMetadata
Definition flv.h:130
@ PacketTypeCodedFrames
Definition flv.h:127
@ PacketTypeCodedFramesX
Definition flv.h:129
@ PacketTypeSequenceStart
Definition flv.h:126
FlvTagType
Definition flv.h:65
@ FLV_TAG_TYPE_AUDIO
Definition flv.h:66
@ FLV_TAG_TYPE_META
Definition flv.h:68
@ FLV_TAG_TYPE_VIDEO
Definition flv.h:67
@ FLV_MONO
Definition flv.h:80
@ FLV_STEREO
Definition flv.h:81
#define FLV_VIDEO_FRAMETYPE_OFFSET
Definition flv.h:36
@ FLV_CODECID_SCREEN2
Definition flv.h:116
@ FLV_CODECID_MPEG4
Definition flv.h:119
@ FLV_CODECID_VP6A
Definition flv.h:115
@ FLV_CODECID_X_HEVC
Definition flv.h:122
@ FLV_CODECID_SCREEN
Definition flv.h:113
@ FLV_CODECID_REALH263
Definition flv.h:118
@ FLV_CODECID_H263
Definition flv.h:112
@ FLV_CODECID_VP6
Definition flv.h:114
@ FLV_CODECID_H264
Definition flv.h:117
@ FLV_STREAM_TYPE_AUDIO
Definition flv.h:73
@ FLV_STREAM_TYPE_DATA
Definition flv.h:75
@ FLV_STREAM_TYPE_SUBTITLE
Definition flv.h:74
@ FLV_STREAM_TYPE_NB
Definition flv.h:76
@ FLV_STREAM_TYPE_VIDEO
Definition flv.h:72
@ FLV_SAMPLESSIZE_16BIT
Definition flv.h:86
@ FLV_SAMPLESSIZE_8BIT
Definition flv.h:85
@ FLV_HEADER_FLAG_HASVIDEO
Definition flv.h:61
@ FLV_HEADER_FLAG_HASAUDIO
Definition flv.h:62
#define FLV_AUDIO_SAMPLERATE_OFFSET
Definition flv.h:33
AMFDataType
Definition flv.h:167
@ AMF_DATA_TYPE_OBJECT_END
Definition flv.h:176
@ AMF_DATA_TYPE_LONG_STRING
Definition flv.h:179
@ AMF_DATA_TYPE_OBJECT
Definition flv.h:171
@ AMF_DATA_TYPE_BOOL
Definition flv.h:169
@ AMF_DATA_TYPE_NUMBER
Definition flv.h:168
@ AMF_DATA_TYPE_MIXEDARRAY
Definition flv.h:175
@ AMF_DATA_TYPE_UNSUPPORTED
Definition flv.h:180
@ AMF_DATA_TYPE_NULL
Definition flv.h:172
@ AMF_DATA_TYPE_STRING
Definition flv.h:170
@ AMF_DATA_TYPE_UNDEFINED
Definition flv.h:173
@ AMF_DATA_TYPE_REFERENCE
Definition flv.h:174
@ AMF_DATA_TYPE_ARRAY
Definition flv.h:177
@ AMF_DATA_TYPE_DATE
Definition flv.h:178
@ AudioChannelOrderNative
Definition flv.h:149
@ AudioChannelOrderCustom
Definition flv.h:150
@ AudioChannelOrderUnspecified
Definition flv.h:148
@ FLV_CODECID_NELLYMOSER_16KHZ_MONO
Definition flv.h:101
@ FLV_CODECID_PCM
Definition flv.h:97
@ FLV_CODECID_EX_HEADER
Definition flv.h:106
@ FLV_CODECID_AAC
Definition flv.h:107
@ FLV_CODECID_MP3
Definition flv.h:99
@ FLV_CODECID_PCM_LE
Definition flv.h:100
@ FLV_CODECID_NELLYMOSER
Definition flv.h:103
@ FLV_CODECID_PCM_MULAW
Definition flv.h:105
@ FLV_CODECID_PCM_ALAW
Definition flv.h:104
@ FLV_CODECID_SPEEX
Definition flv.h:108
@ FLV_CODECID_ADPCM
Definition flv.h:98
@ FLV_CODECID_NELLYMOSER_8KHZ_MONO
Definition flv.h:102
@ FLV_SAMPLERATE_SPECIAL
signifies 5512Hz and 8000Hz in the case of NELLYMOSER
Definition flv.h:90
@ FLV_SAMPLERATE_22050HZ
Definition flv.h:92
@ FLV_SAMPLERATE_11025HZ
Definition flv.h:91
@ FLV_SAMPLERATE_44100HZ
Definition flv.h:93
#define FLV_AUDIO_CODECID_OFFSET
Definition flv.h:34
@ MultitrackTypeOneTrack
Definition flv.h:154
@ MultitrackTypeManyTracks
Definition flv.h:155
@ MultitrackTypeManyTracksManyCodecs
Definition flv.h:156
@ FLV_FRAME_INTER
inter frame (for AVC, a non-seekable frame)
Definition flv.h:161
@ FLV_FRAME_DISP_INTER
disposable inter frame (H.263 only)
Definition flv.h:162
@ FLV_FRAME_KEY
key frame (for AVC, a seekable frame)
Definition flv.h:160
@ FLV_FRAME_VIDEO_INFO_CMD
video info/command frame
Definition flv.h:164
@ FLV_FRAME_GENERATED_KEY
generated key frame (reserved for server use only)
Definition flv.h:163
#define FLV_AUDIO_SAMPLESSIZE_OFFSET
Definition flv.h:32
@ PacketModExTypeTimestampOffsetNano
Definition flv.h:144
@ AudioPacketTypeMultichannelConfig
Definition flv.h:139
@ AudioPacketTypeSequenceStart
Definition flv.h:137
@ AudioPacketTypeMultitrack
Definition flv.h:140
@ AudioPacketTypeCodedFrames
Definition flv.h:138