|
Gnash
0.8.11dev
|
FFMPEG based MediaParser. More...
#include <MediaParserFfmpeg.h>
Public Member Functions | |
| MediaParserFfmpeg (std::unique_ptr< IOChannel > stream) | |
| Construct a ffmpeg-based media parser for given stream. More... | |
| ~MediaParserFfmpeg () | |
| virtual bool | seek (std::uint32_t &) |
| Seeks to the closest possible position the given position, and returns the new position. More... | |
| virtual bool | parseNextChunk () |
| Parse next chunk of input. More... | |
| virtual std::uint64_t | getBytesLoaded () const |
| Return number of bytes parsed so far. More... | |
| virtual boost::optional< Id3Info > | getId3Info () const |
| Get ID3 data from the parsed stream if it exists. More... | |
Public Member Functions inherited from gnash::media::MediaParser | |
| MediaParser (std::unique_ptr< IOChannel > stream) | |
| virtual | ~MediaParser () |
| DSOEXPORT std::uint64_t | getBufferLength () const |
| Returns mininum length of available buffers in milliseconds. More... | |
| DSOEXPORT bool | isBufferEmpty () const |
| Return true if both audio and video buffers are empty. More... | |
| DSOEXPORT std::uint_fast64_t | getBufferTime () const |
| Return the time we want the parser thread to maintain in the buffer. More... | |
| DSOEXPORT void | setBufferTime (std::uint_fast64_t t) |
| Set the time we want the parser thread to maintain in the buffer. More... | |
| DSOEXPORT bool | nextFrameTimestamp (std::uint64_t &ts) const |
| Get timestamp of the next frame available, if any. More... | |
| DSOEXPORT bool | nextVideoFrameTimestamp (std::uint64_t &ts) const |
| Get timestamp of the video frame which would be returned on nextVideoFrame. More... | |
| DSOEXPORT std::unique_ptr< EncodedVideoFrame > | nextVideoFrame () |
| Returns the next video frame in the parsed buffer, advancing video cursor. More... | |
| DSOEXPORT bool | nextAudioFrameTimestamp (std::uint64_t &ts) const |
| Get timestamp of the audio frame which would be returned on nextAudioFrame. More... | |
| DSOEXPORT std::unique_ptr< EncodedAudioFrame > | nextAudioFrame () |
| Returns the next audio frame in the parsed buffer, advancing audio cursor. More... | |
| VideoInfo * | getVideoInfo () |
| Returns a VideoInfo class about the videostream. More... | |
| AudioInfo * | getAudioInfo () |
| Returns a AudioInfo class about the audiostream. More... | |
| bool | parsingCompleted () const |
| Return true of parsing is completed. More... | |
| virtual bool | indexingCompleted () const |
| Return true of indexing is completed. More... | |
| std::uint64_t | getBytesTotal () const |
| Return total number of bytes in input. More... | |
| virtual void | fetchMetaTags (OrderedMetaTags &tags, std::uint64_t ts) |
| Retrieve any parsed metadata tags up to a specified timestamp. More... | |
Additional Inherited Members | |
Public Types inherited from gnash::media::MediaParser | |
| typedef std::multimap< std::uint64_t, std::shared_ptr< SimpleBuffer > > | MetaTags |
| A container for executable MetaTags contained in media streams. More... | |
| typedef std::vector< MetaTags::mapped_type > | OrderedMetaTags |
Protected Member Functions inherited from gnash::media::MediaParser | |
| void | startParserThread () |
| }@ More... | |
| void | stopParserThread () |
| Stop the parser thread. More... | |
| void | clearBuffers () |
| Clear the a/v buffers. More... | |
| void | pushEncodedAudioFrame (std::unique_ptr< EncodedAudioFrame > frame) |
| Push an encoded audio frame to buffer. More... | |
| void | pushEncodedVideoFrame (std::unique_ptr< EncodedVideoFrame > frame) |
| Push an encoded video frame to buffer. More... | |
| void | parserLoop () |
| bool | parserThreadKillRequested () const |
| void | waitIfNeeded (std::unique_lock< std::mutex > &qMutexLock) |
| void | wakeupParserThread () |
| bool | bufferFull () const |
| Method to check if buffer is full w/out locking the _qMutex. More... | |
Protected Attributes inherited from gnash::media::MediaParser | |
| std::unique_ptr< VideoInfo > | _videoInfo |
| Subclasses must set the following variables: More... | |
| std::unique_ptr< AudioInfo > | _audioInfo |
| Info about the audio stream (if any) More... | |
| bool | _parsingComplete |
| Whether the parsing is complete or not. More... | |
| std::atomic< std::uint_fast64_t > | _bytesLoaded |
| Number of bytes loaded. More... | |
| std::unique_ptr< IOChannel > | _stream |
| The stream used to access the file. More... | |
| std::mutex | _streamMutex |
| std::atomic< std::uint_fast64_t > | _bufferTime |
| std::thread | _parserThread |
| std::atomic< bool > | _parserThreadKillRequested |
| std::condition_variable | _parserThreadWakeup |
| std::mutex | _qMutex |
| mutex protecting access to the a/v encoded frames queues More... | |
| bool | _seekRequest |
FFMPEG based MediaParser.
| gnash::media::ffmpeg::MediaParserFfmpeg::MediaParserFfmpeg | ( | std::unique_ptr< IOChannel > | stream | ) |
Construct a ffmpeg-based media parser for given stream.
Can throw a GnashException if input format couldn't be detected
References _, gnash::media::MediaParser::_audioInfo, gnash::media::MediaParser::_videoInfo, gnash::media::Id3Info::album, gnash::media::CODEC_TYPE_CUSTOM, height, gnash::key::i, gnash::log_debug(), gnash::log_error(), gnash::media::setId3Info(), gnash::media::MediaParser::startParserThread(), and width.
| gnash::media::ffmpeg::MediaParserFfmpeg::~MediaParserFfmpeg | ( | ) |
|
virtual |
Return number of bytes parsed so far.
Reimplemented from gnash::media::MediaParser.
|
virtual |
Get ID3 data from the parsed stream if it exists.
It's best to do this only when parsingComplete is true.
Reimplemented from gnash::media::MediaParser.
References _, gnash::media::MediaParser::_stream, gnash::log_error(), LOG_ONCE, and gnash::log_unimpl().
|
virtual |
Parse next chunk of input.
The implementations are required to parse a small chunk of input, so to avoid blocking too much if parsing conditions change (ie: seek or destruction requested)
When LOAD_MEDIA_IN_A_SEPARATE_THREAD is defined, this should never be called by users (consider protected).
Implements gnash::media::MediaParser.
|
virtual |
Seeks to the closest possible position the given position, and returns the new position.
| time | input/output parameter, input requests a time, output return the actual time seeked to. |
Implements gnash::media::MediaParser.
References _, __FUNCTION__, __PRETTY_FUNCTION__, gnash::media::MediaParser::_parsingComplete, gnash::media::MediaParser::_stream, gnash::media::MediaParser::_streamMutex, gnash::media::MediaParser::clearBuffers(), data, gnash::log_debug(), gnash::log_error(), LOG_ONCE, gnash::log_unimpl(), gnash::media::MediaParser::pushEncodedAudioFrame(), and gnash::media::MediaParser::pushEncodedVideoFrame().
1.8.12