Go to the documentation of this file.
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;
156 virtual void fetchMetaTags(OrderedMetaTags& tags, std::uint64_t
ts);
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;
static LogFile & getDefaultInstance()
Definition: log.cpp:77
@ position
Definition: klash_part.cpp:329
Definition: arg_parser.h:59
std::string argument(const int i) const
Definition: arg_parser.h:119
#define dbglogfile
Definition: gtkext.cpp:48
void log_debug(StringType msg, Args... args)
Definition: log.h:301
@ i
Definition: GnashKey.h:155
int arguments() const
Definition: arg_parser.h:109
Definition: arg_parser.h:66
#define _(String)
Definition: log.h:44
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:41
#define PACKAGE
Definition: gnashconfig.h:556
std::uint32_t ts
Definition: LocalConnection_as.cpp:150
void log_error(StringType msg, Args... args)
Definition: log.h:283
const std::string & error() const
Definition: arg_parser.h:106
@ no
Definition: arg_parser.h:56
Definition: arg_parser.h:54
#define bindtextdomain(Domainname, Dirname)
Definition: gettext.h:66
VGPaint fill
Definition: testr_gtk.cpp:86
#define textdomain(Domainname)
Definition: gettext.h:65
int main(int argc, char *argv[])
Definition: flvdumper.cpp:116
type
Definition: GnashKey.h:330
code
Definition: GnashKey.h:44
std::vector< std::string > infiles
Definition: gnash.cpp:58
size_t size() const
Return size of the buffer.
Definition: SimpleBuffer.h:75
#define IF_VERBOSE_PARSE(x)
Definition: log.h:378
int code(const int i) const
Definition: arg_parser.h:113
static RcInitFile & getDefaultInstance()
Return the default instance of RC file.
Definition: rc.cpp:61
#define DSOEXPORT
Definition: dsodefs.h:55
bool equal(string_table &st, string_table::key a, string_table::key b, bool caseless)
Check whether two keys are equivalent.
Definition: string_table.cpp:174
void log_unimpl(StringType msg, Args... args)
Definition: log.h:289
std::string hexify(const unsigned char *p, size_t length, bool ascii)
Convert a sequence of bytes to hex or ascii format.
Definition: log.cpp:48
SimpleBuffer data
Definition: LocalConnection_as.cpp:151
@ e
Definition: GnashKey.h:151