24 #ifndef GNASH_FLVPARSER_H 25 #define GNASH_FLVPARSER_H 31 #include <boost/utility.hpp> 65 std::unique_ptr<std::uint8_t[]>
data;
97 std::unique_ptr<std::uint8_t[]>
data;
114 static const size_t paddingBytes = 8;
124 FLVParser(std::unique_ptr<IOChannel> lt);
130 virtual bool seek(std::uint32_t&);
133 virtual bool parseNextChunk();
136 std::uint64_t getBytesLoaded()
const;
141 return _indexingCompleted;
162 FLV_AUDIO_TAG = 0x08,
163 FLV_VIDEO_TAG = 0x09,
167 struct FLVTag :
public boost::noncopyable
169 FLVTag(std::uint8_t* stream)
172 body_size(getUInt24(stream+1)),
173 timestamp(getUInt24(stream+4) | (stream[7] << 24) )
178 std::uint32_t body_size;
179 std::uint32_t timestamp;
182 struct FLVAudioTag :
public boost::noncopyable
184 FLVAudioTag(
const std::uint8_t& byte)
186 codec( (byte & 0xf0) >> 4 ),
187 samplerate( flv_audio_rates[(byte & 0x0C) >> 2] ),
188 samplesize( 1 + ((byte & 0x02) >> 1)),
189 stereo( (byte & 0x01) )
196 std::uint16_t samplerate;
199 std::uint8_t samplesize;
205 static const std::uint16_t flv_audio_rates[];
211 FLV_VIDEO_KEYFRAME = 1,
212 FLV_VIDEO_INTERLACED = 2,
213 FLV_VIDEO_DISPOSABLE = 3
216 struct FLVVideoTag :
public boost::noncopyable
218 FLVVideoTag(
const std::uint8_t& byte)
220 frametype( (byte & 0xf0) >> 4 ),
225 std::uint8_t frametype;
235 bool parseNextTag(
bool index_only);
237 std::unique_ptr<EncodedAudioFrame> parseAudioTag(
const FLVTag& flvtag,
238 const FLVAudioTag& audiotag, std::uint32_t thisTagPos);
240 std::unique_ptr<EncodedVideoFrame> parseVideoTag(
const FLVTag& flvtag,
241 const FLVVideoTag& videotag, std::uint32_t thisTagPos);
243 void indexAudioTag(
const FLVTag& tag, std::uint32_t thisTagPos);
245 void indexVideoTag(
const FLVTag& tag,
const FLVVideoTag& videotag,
246 std::uint32_t thisTagPos);
254 static std::uint32_t getUInt24(std::uint8_t* in);
258 std::uint64_t _lastParsedPosition;
261 std::uint64_t _nextPosToIndex;
269 std::unique_ptr<EncodedAudioFrame>
270 readAudioFrame(std::uint32_t dataSize, std::uint32_t timestamp);
272 std::unique_ptr<EncodedVideoFrame>
273 readVideoFrame(std::uint32_t dataSize, std::uint32_t timestamp);
278 typedef std::map<std::uint64_t, long> CuePointsMap;
279 CuePointsMap _cuePoints;
281 bool _indexingCompleted;
285 std::mutex _metaTagsMutex;
std::uint32_t ts
Definition: LocalConnection_as.cpp:150
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
type
Definition: GnashKey.h:329
#define DSOEXPORT
Definition: dsodefs.h:55