PonyPlayer
DecodeDispatcher类 参考

解码器调度器, 将Packet分配给解码器进一步解码成Frame 这个类是RAII的 更多...

#include <dispatcher.hpp>

类 DecodeDispatcher 继承关系图:
DemuxDispatcherBase

信号

void signalStartWorker (QPrivateSignal)
 

Public 成员函数

 DecodeDispatcher (const std::string &fn, PonyPlayer::OpenFileResultType &result, StreamIndex audioStreamIndex=DEFAULT_STREAM_INDEX, StreamIndex videoStreamIndex=DEFAULT_STREAM_INDEX, QObject *parent=nullptr)
 
 ~DecodeDispatcher () override
 
void statePause () override
 
void flush () override
 
void stateResume () override
 
void seek (qreal secs) override
 
PONY_THREAD_SAFE VideoFrameRef getPicture () override
 
PONY_THREAD_SAFE qreal frontPicture () override
 
PONY_THREAD_SAFE int skipPicture (const std::function< bool(qreal)> &predicate) override
 
PONY_THREAD_SAFE AudioFrame getSample () override
 
PONY_THREAD_SAFE qreal frontSample () override
 
PONY_THREAD_SAFE int skipSample (const std::function< bool(qreal)> &predicate) override
 
qreal getAudionLength () const
 
qreal getVideoLength () const
 
void setTrack (int i) override
 
QStringList getTracks ()
 
void setAudioIndex (StreamIndex i)
 
bool hasVideo () override
 
void setEnableAudio (bool enable) override
 
PonyAudioFormat getAudioInputFormat () override
 
void setAudioOutputFormat (PonyAudioFormat format) override
 
void test_onWork () override
 

额外继承的成员函数

- Public 属性 继承自 DemuxDispatcherBase
const std::string filename
 
- Protected 成员函数 继承自 DemuxDispatcherBase
 DemuxDispatcherBase (const std::string &fn, QObject *parent)
 
 ~DemuxDispatcherBase () override
 
- Protected 属性 继承自 DemuxDispatcherBase
AVFormatContext * fmtCtx = nullptr
 
bool isAudio = false
 

详细描述

解码器调度器, 将Packet分配给解码器进一步解码成Frame 这个类是RAII的

构造及析构函数说明

◆ DecodeDispatcher()

DecodeDispatcher::DecodeDispatcher ( const std::string &  fn,
PonyPlayer::OpenFileResultType result,
StreamIndex  audioStreamIndex = DEFAULT_STREAM_INDEX,
StreamIndex  videoStreamIndex = DEFAULT_STREAM_INDEX,
QObject *  parent = nullptr 
)
inlineexplicit

◆ ~DecodeDispatcher()

DecodeDispatcher::~DecodeDispatcher ( )
inlineoverride

成员函数说明

◆ flush()

void DecodeDispatcher::flush ( )
inlineoverridevirtual

◆ frontPicture()

PONY_THREAD_SAFE qreal DecodeDispatcher::frontPicture ( )
inlineoverridevirtual

◆ frontSample()

PONY_THREAD_SAFE qreal DecodeDispatcher::frontSample ( )
inlineoverridevirtual

◆ getAudioInputFormat()

PonyAudioFormat DecodeDispatcher::getAudioInputFormat ( )
inlineoverridevirtual

实现了 DemuxDispatcherBase.

◆ getAudionLength()

qreal DecodeDispatcher::getAudionLength ( ) const
inline

◆ getPicture()

PONY_THREAD_SAFE VideoFrameRef DecodeDispatcher::getPicture ( )
inlineoverridevirtual

◆ getSample()

PONY_THREAD_SAFE AudioFrame DecodeDispatcher::getSample ( )
inlineoverridevirtual

◆ getTracks()

QStringList DecodeDispatcher::getTracks ( )
inline

◆ getVideoLength()

qreal DecodeDispatcher::getVideoLength ( ) const
inline

◆ hasVideo()

bool DecodeDispatcher::hasVideo ( )
inlineoverridevirtual

◆ seek()

void DecodeDispatcher::seek ( qreal  secs)
inlineoverridevirtual

修改视频播放进度, 注意: 这个方法必须在解码线程上调用.

参数
secs新的视频进度(单位: 秒)

重载 DemuxDispatcherBase .

◆ setAudioIndex()

void DecodeDispatcher::setAudioIndex ( StreamIndex  i)
inline

◆ setAudioOutputFormat()

void DecodeDispatcher::setAudioOutputFormat ( PonyAudioFormat  format)
inlineoverridevirtual

实现了 DemuxDispatcherBase.

◆ setEnableAudio()

void DecodeDispatcher::setEnableAudio ( bool  enable)
inlineoverridevirtual

◆ setTrack()

void DecodeDispatcher::setTrack ( int  i)
inlineoverridevirtual

◆ signalStartWorker

void DecodeDispatcher::signalStartWorker ( QPrivateSignal  )
signal

◆ skipPicture()

PONY_THREAD_SAFE int DecodeDispatcher::skipPicture ( const std::function< bool(qreal)> &  predicate)
inlineoverridevirtual

◆ skipSample()

PONY_THREAD_SAFE int DecodeDispatcher::skipSample ( const std::function< bool(qreal)> &  predicate)
inlineoverridevirtual

◆ statePause()

void DecodeDispatcher::statePause ( )
inlineoverridevirtual

保证阻塞获取结果的线程尽快被唤醒, 同时请求 DecodeThread 的工作尽快停止.

重载 DemuxDispatcherBase .

◆ stateResume()

void DecodeDispatcher::stateResume ( )
inlineoverridevirtual

保证可以阻塞地获取 Picture 和 Sample. 这个方法是线程安全的.

重载 DemuxDispatcherBase .

◆ test_onWork()

void DecodeDispatcher::test_onWork ( )
inlineoverridevirtual

实现了 DemuxDispatcherBase.

类成员变量说明

◆ audioDuration

qreal DecodeDispatcher::audioDuration = std::numeric_limits<qreal>::quiet_NaN()

◆ m_audioStreamsIndex

std::vector<StreamIndex> DecodeDispatcher::m_audioStreamsIndex

◆ m_videoStreamsIndex

std::vector<StreamIndex> DecodeDispatcher::m_videoStreamsIndex

◆ streamInfos

std::vector<StreamInfo> DecodeDispatcher::streamInfos

◆ videoDuration

qreal DecodeDispatcher::videoDuration = std::numeric_limits<qreal>::quiet_NaN()

该类的文档由以下文件生成: