20 #ifndef GNASH_MEDIAPARSER_H
21 #define GNASH_MEDIAPARSER_H
26 #include <condition_variable>
32 #include <boost/optional.hpp>
38 #define LOAD_MEDIA_IN_A_SEPARATE_THREAD 1
234 std::uint16_t sampleSizei,
bool stereoi,
235 std::uint64_t durationi,
codecType typei)
320 VideoInfo(
int codeci, std::uint16_t widthi, std::uint16_t heighti,
321 std::uint16_t frameRatei, std::uint64_t durationi,
397 const std::uint8_t*
data()
const {
return _data.get(); }
413 std::unique_ptr<std::uint8_t[]> _data;
414 unsigned int _frameNum;
415 std::uint64_t _timestamp;
423 std::unique_ptr<std::uint8_t[]>
data;
445 typedef std::multimap<std::uint64_t, std::shared_ptr<SimpleBuffer> >
469 virtual bool seek(std::uint32_t& time)=0;
480 DSOEXPORT std::uint64_t getBufferLength()
const;
490 return _bufferTime.load();
510 DSOEXPORT bool nextFrameTimestamp(std::uint64_t&
ts)
const;
519 DSOEXPORT bool nextVideoFrameTimestamp(std::uint64_t&
ts)
const;
528 DSOEXPORT std::unique_ptr<EncodedVideoFrame> nextVideoFrame();
537 DSOEXPORT bool nextAudioFrameTimestamp(std::uint64_t&
ts)
const;
546 DSOEXPORT std::unique_ptr<EncodedAudioFrame> nextAudioFrame();
587 return _stream->size();
599 virtual bool parseNextChunk()=0;
610 virtual void fetchMetaTags(OrderedMetaTags& tags, std::uint64_t
ts);
615 virtual boost::optional<Id3Info> getId3Info()
const;
636 void startParserThread();
645 void stopParserThread();
654 void pushEncodedAudioFrame(std::unique_ptr<EncodedAudioFrame> frame);
660 void pushEncodedVideoFrame(std::unique_ptr<EncodedVideoFrame> frame);
678 return _parserThreadKillRequested.load();
692 void waitIfNeeded(std::unique_lock<std::mutex>& qMutexLock);
694 void wakeupParserThread();
706 bool bufferFull()
const;
715 typedef std::deque<std::unique_ptr<EncodedVideoFrame>> VideoFrames;
716 typedef std::deque<std::unique_ptr<EncodedAudioFrame>> AudioFrames;
739 VideoFrames _videoFrames;
745 AudioFrames _audioFrames;
747 void requestParserThreadKill()
749 _parserThreadKillRequested=
true;
750 _parserThreadWakeup.notify_all();
754 std::uint64_t audioBufferLength()
const;
757 std::uint64_t videoBufferLength()
const;
760 std::uint64_t getBufferLengthNoLock()
const;
768 #endif // __MEDIAPARSER_H__
std::uint32_t ts
Definition: LocalConnection_as.cpp:150
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
Definition: GnashKey.h:166
#define DSOEXPORT
Definition: dsodefs.h:55