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 208 os <<
"Uncompressed";
211 os <<
"Nellymoser 8Hz mono";
217 os <<
"Advanced Audio Coding";
223 os <<
"unknown/invalid codec " <<
static_cast<int>(
t);
268 std::uint16_t sampleSizei,
bool stereoi,
269 std::uint64_t durationi,
codecType typei)
272 sampleRate(sampleRatei),
273 sampleSize(sampleSizei),
354 VideoInfo(
int codeci, std::uint16_t widthi, std::uint16_t heighti,
355 std::uint16_t frameRatei, std::uint64_t durationi,
361 frameRate(frameRatei),
421 unsigned int frameNum,
422 std::uint64_t timestamp=0)
427 _timestamp(timestamp)
431 const std::uint8_t*
data()
const {
return _data.get(); }
447 std::unique_ptr<std::uint8_t[]> _data;
448 unsigned int _frameNum;
449 std::uint64_t _timestamp;
457 std::unique_ptr<std::uint8_t[]>
data;
479 typedef std::multimap<std::uint64_t, std::shared_ptr<SimpleBuffer> >
503 virtual bool seek(std::uint32_t& time)=0;
514 DSOEXPORT std::uint64_t getBufferLength()
const;
524 return _bufferTime.load();
544 DSOEXPORT bool nextFrameTimestamp(std::uint64_t&
ts)
const;
553 DSOEXPORT bool nextVideoFrameTimestamp(std::uint64_t& ts)
const;
562 DSOEXPORT std::unique_ptr<EncodedVideoFrame> nextVideoFrame();
571 DSOEXPORT bool nextAudioFrameTimestamp(std::uint64_t& ts)
const;
580 DSOEXPORT std::unique_ptr<EncodedAudioFrame> nextAudioFrame();
621 return _stream->size();
633 virtual bool parseNextChunk()=0;
644 virtual void fetchMetaTags(OrderedMetaTags& tags, std::uint64_t ts);
649 virtual boost::optional<Id3Info> getId3Info()
const;
670 void startParserThread();
679 void stopParserThread();
688 void pushEncodedAudioFrame(std::unique_ptr<EncodedAudioFrame> frame);
694 void pushEncodedVideoFrame(std::unique_ptr<EncodedVideoFrame> frame);
712 return _parserThreadKillRequested.load();
726 void waitIfNeeded(std::unique_lock<std::mutex>& qMutexLock);
728 void wakeupParserThread();
740 bool bufferFull()
const;
749 typedef std::deque<std::unique_ptr<EncodedVideoFrame>> VideoFrames;
750 typedef std::deque<std::unique_ptr<EncodedAudioFrame>> AudioFrames;
773 VideoFrames _videoFrames;
779 AudioFrames _audioFrames;
781 void requestParserThreadKill()
783 _parserThreadKillRequested=
true;
784 _parserThreadWakeup.notify_all();
788 std::uint64_t audioBufferLength()
const;
791 std::uint64_t videoBufferLength()
const;
794 std::uint64_t getBufferLengthNoLock()
const;
802 #endif // __MEDIAPARSER_H__
std::uint32_t ts
Definition: LocalConnection_as.cpp:150
SimpleBuffer data
Definition: LocalConnection_as.cpp:151
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
type
Definition: GnashKey.h:329
Definition: klash_part.cpp:329
Definition: GnashKey.h:166
Definition: klash_part.cpp:329
#define DSOEXPORT
Definition: dsodefs.h:55