6 #ifndef _INC_cFLVFile_H
7 #define _INC_cFLVFile_H
12 #include "../AV/cAVSink.h"
215 static const BYTE k_VERSION_1 = 1;
221 FLV_FORMFLAG_VIDEO = 0x1,
222 FLV_FORMFLAG_AUDIO = 0x4,
241 static const char k_bFLV[4];
254 return m_bFormFlags & FLV_FORMFLAG_AUDIO;
258 return m_bFormFlags & FLV_FORMFLAG_VIDEO;
272 HRESULT WriteUI24(UINT32 uVal)
const;
273 HRESULT WriteUI32(UINT32 uVal)
const;
285 virtual HRESULT OnHeaderStream(
const cAVHeaderStream& head,
const void* pForm,
size_t nSizeForm)
override;
286 virtual HRESULT OnHeaderClose()
override;
288 virtual HRESULT OnClose()
override;
299 static const BYTE k_FLAG_Header = 0x80;
305 HRESULT ReadUI24(UINT32& uVal);
306 HRESULT ReadUI32(UINT32& uVal);
311 HRESULT UpdateHeaderAudio(BYTE bFormFlag);
312 HRESULT UpdateHeaderVideo(BYTE bFormFlag);
318 , m_bFormFlagsFound(0)
324 virtual HRESULT ReadStream()
override;
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cAVSink.h:181
Definition: cAVSink.h:130
Definition: cFLVFile.h:97
SIZE_TYPE get_SampleSize() const
Definition: cFLVFile.h:153
RATE_TYPE
Definition: cFLVFile.h:114
@ RATE_5KHZ
Definition: cFLVFile.h:115
@ RATE_22KHZ
Definition: cFLVFile.h:117
@ RATE_MASK
Definition: cFLVFile.h:119
@ RATE_11KHZ
Definition: cFLVFile.h:116
@ RATE_44KHZ
Definition: cFLVFile.h:118
FORMAT_TYPE get_Format() const
Definition: cFLVFile.h:135
FORMAT_TYPE
Definition: cFLVFile.h:122
@ FORMAT_NELLY_16KHZ_MONO
Definition: cFLVFile.h:127
@ FORMAT_MP3
Definition: cFLVFile.h:125
@ FORMAT_ADPCM
Definition: cFLVFile.h:124
@ FORMAT_PCM_LE
Definition: cFLVFile.h:126
@ FORMAT_SPEEX
Definition: cFLVFile.h:131
@ FORMAT_NELLYMOSER
Definition: cFLVFile.h:129
@ FORMAT_AAC
Definition: cFLVFile.h:130
@ FORMAT_UNCOMPRESSED
Definition: cFLVFile.h:123
@ FORMAT_MASK
Definition: cFLVFile.h:132
@ FORMAT_NELLY_8KHZ_MONO
Definition: cFLVFile.h:128
void put_SamplingRate(RATE_TYPE eSamplingRate)
Definition: cFLVFile.h:148
void put_SampleSize(SIZE_TYPE eSampleSize)
Definition: cFLVFile.h:157
CHAN_TYPE get_Channels() const
Definition: cFLVFile.h:162
RATE_TYPE get_SamplingRate() const
Definition: cFLVFile.h:144
SIZE_TYPE
Definition: cFLVFile.h:108
@ SIZE_8
Definition: cFLVFile.h:109
@ SIZE_16
Definition: cFLVFile.h:110
@ SIZE_MASK
Definition: cFLVFile.h:111
void put_Format(FORMAT_TYPE eFormat)
Definition: cFLVFile.h:139
CHAN_TYPE
Definition: cFLVFile.h:102
@ CHAN_MASK
Definition: cFLVFile.h:105
@ CHAN_STEREO
Definition: cFLVFile.h:103
@ CHAN_MONO
Definition: cFLVFile.h:104
void put_Channels(CHAN_TYPE eChan)
Definition: cFLVFile.h:166
Definition: cFLVFile.h:294
BYTE m_bFormFlagsFound
FLV_FORMFLAG_TYPE mask. What stream types have i got.
Definition: cFLVFile.h:300
virtual ~cFLVFileReader(void)
Definition: cFLVFile.h:321
cArrayRef< cAVFrame > m_FramesQ
Definition: cFLVFile.h:301
cFLVFileReader(cStreamInput &s, cAVSink *pAVSink)
Definition: cFLVFile.h:316
UNITTEST_FRIEND(cFLVFileReader)
Definition: cFLVFile.h:263
UNITTEST_FRIEND(cFLVFileWriter)
TIMESYSD_t m_timeStampA
from cAVHeader. 0 = real time.
Definition: cFLVFile.h:269
TIMESYSD_t m_timeStampV
accumulated from OnFrame calls
Definition: cFLVFile.h:270
cStreamOutput * m_pStreamOut
Definition: cFLVFile.h:267
float m_fFramesPerSec
Definition: cFLVFile.h:268
Definition: cFLVFile.h:209
BYTE m_bFormFlags
FLV_FORMFLAG_TYPE mask.
Definition: cFLVFile.h:242
FLV_META_TYPE
Definition: cFLVFile.h:225
@ FLV_META_String
2 = String type
Definition: cFLVFile.h:228
@ FLV_META_StrictArray
10 = Strict array type
Definition: cFLVFile.h:236
@ FLV_META_Date
11 = Date type
Definition: cFLVFile.h:237
@ FLV_META_ECMA
8 = ECMA array type
Definition: cFLVFile.h:234
@ FLV_META_Null
5 = Null type
Definition: cFLVFile.h:231
@ FLV_META_Ref
7 = Reference type
Definition: cFLVFile.h:233
@ FLV_META_Undef
6 = Undefined type
Definition: cFLVFile.h:232
@ FLV_META_END
9 = END marker.
Definition: cFLVFile.h:235
@ FLV_META_Boolean
1 = Boolean type
Definition: cFLVFile.h:227
@ FLV_META_Object
3 = Object type
Definition: cFLVFile.h:229
@ FLV_META_LongString
12 = Long string type
Definition: cFLVFile.h:238
@ FLV_META_MovieClip
4 = MovieClip type
Definition: cFLVFile.h:230
bool hasVideo() const
Definition: cFLVFile.h:256
cFLVAudio m_FormAudio
for the current frame.
Definition: cFLVFile.h:244
cFLVFile()
Definition: cFLVFile.h:247
cFLVVideo m_FormVideo
for the current frame.
Definition: cFLVFile.h:243
FLV_FORMFLAG_TYPE
Definition: cFLVFile.h:218
bool hasAudio() const
Definition: cFLVFile.h:252
Definition: cFLVFile.h:174
TAG_TYPE
Definition: cFLVFile.h:181
@ TAG_UNK
Definition: cFLVFile.h:184
@ TAG_META2
SCRIPTDATAOBJECT ???
Definition: cFLVFile.h:188
@ TAG_AUDIO
AUDIODATA.
Definition: cFLVFile.h:185
@ TAG_VIDEO
VIDEODATA.
Definition: cFLVFile.h:186
@ TAG_META
SCRIPTDATAOBJECT.
Definition: cFLVFile.h:187
cFLVTag()
Definition: cFLVFile.h:199
TIMESYSD_t m_timeStamp
3 actual bytes. Time in milliseconds at which the data in this tag applies. This value is relative to...
Definition: cFLVFile.h:193
size_t m_dataSize
3 actual bytes. sizeof data to follow, but not 4 byte tag tail.
Definition: cFLVFile.h:192
TAG_TYPE m_eTagType
1 byte
Definition: cFLVFile.h:191
UINT32 m_nStreamID
3 bytes = 0 = unused.
Definition: cFLVFile.h:194
static const size_t k_SIZE
Size of tag data is 11 bytes in stream.
Definition: cFLVFile.h:178
Definition: cFLVFile.h:48
void put_Codec(CODEC_TYPE eCodecType)
Definition: cFLVFile.h:80
void put_FrameType(FRAME_TYPE eFrameType)
Definition: cFLVFile.h:89
FRAME_TYPE
Definition: cFLVFile.h:66
@ FRAME_KEY
Definition: cFLVFile.h:70
@ FRAME_0
Definition: cFLVFile.h:69
@ FRAME_MASK
Definition: cFLVFile.h:73
@ FRAME_DISP_INTER
Definition: cFLVFile.h:72
@ FRAME_INTER
Definition: cFLVFile.h:71
FRAME_TYPE get_FrameType() const
Definition: cFLVFile.h:85
CODEC_TYPE get_Codec() const
Definition: cFLVFile.h:76
CODEC_TYPE
Definition: cFLVFile.h:53
@ CODEC_SCREEN2
Macromedia Screen Video 2. some chroma compression?
Definition: cFLVFile.h:61
@ CODEC_SCREEN
Macromedia Screen Video 1. ZLIB based.
Definition: cFLVFile.h:58
@ CODEC_H264
H.264 (MPEG-4 Part 10)
Definition: cFLVFile.h:62
@ CODEC_UNCOMPRESSED
Definition: cFLVFile.h:56
@ CODEC_H263
Sorenson Spark H.263.
Definition: cFLVFile.h:57
@ CODEC_MASK
Definition: cFLVFile.h:63
@ CODEC_ON2_VP6E
On2 TrueMotion VP6-E.
Definition: cFLVFile.h:59
@ CODEC_ON2_VP6S
On2 TrueMotion VP6-S.
Definition: cFLVFile.h:60
Definition: cSurfaceInfo.h:308
Definition: cArrayRef.h:21
Definition: cStream.h:126
INT32 TIMESYSD_t
Time delta. signed milli-Seconds Span. cTimeSys::k_DMAX, cTimeSys::k_INF = MAILSLOT_WAIT_FOREVER.
Definition: cTimeSys.h:28