PonyPlayer
Demuxer类 参考

#include <demuxer.hpp>

类 Demuxer 继承关系图:

Public 槽

void seek (qreal secs)
 
void setAudioIndex (StreamIndex index)
 
void openFile (const std::string &fn)
 
void backward ()
 
void forward ()
 

信号

void openFileResult (PonyPlayer::OpenFileResultType result, QPrivateSignal)
 

Public 成员函数

 Demuxer (QObject *parent)
 
 ~Demuxer () override
 
VideoFrameRef getPicture ()
 
qreal frontPicture ()
 
PONY_THREAD_SAFE int skipPicture (const std::function< bool(qreal)> &predicate)
 
AudioFrame getSample ()
 
qreal frontSample ()
 
PONY_THREAD_SAFE int skipSample (const std::function< bool(qreal)> &predicate)
 
qreal audioDuration ()
 
qreal videoDuration ()
 
QStringList getTracks ()
 
PONY_THREAD_SAFE bool isBackward ()
 
PONY_THREAD_SAFE bool hasVideo ()
 
PONY_THREAD_SAFE void pause ()
 
PONY_THREAD_SAFE bool isFileOpen ()
 
 PONY_GUARD_BY (FRAME) void flush()
 
PONY_THREAD_SAFE void start ()
 
void setEnableAudio (bool enable)
 
PonyAudioFormat getInputFormat ()
 
void setOutputFormat (PonyAudioFormat format)
 
void close ()
 
void setTrack (int i)
 
void test_onWork ()
 

详细描述

生命周期伴随整个程序运行.

构造及析构函数说明

◆ Demuxer()

Demuxer::Demuxer ( QObject *  parent)
inlineexplicit

◆ ~Demuxer()

Demuxer::~Demuxer ( )
inlineoverride

成员函数说明

◆ audioDuration()

qreal Demuxer::audioDuration ( )
inline

◆ backward

void Demuxer::backward ( )
inlineslot

倒放视频, 必须保证解码器线程空闲且缓冲区为空. 方法返回后保证产生的帧是在时间正确.

参数
secs视频进度(单位: s)
参见
Demuxer2::statePause
Demuxer2::flush
DecodeDispatcher::seek

◆ close()

void Demuxer::close ( )
inline

◆ forward

void Demuxer::forward ( )
inlineslot

正向播放视频, 必须保证解码器线程空闲且缓冲区为空. 方法返回后保证产生的帧是在时间正确.

参数
secs视频进度(单位: s)
参见
Demuxer2::statePause
Demuxer2::flush
DecodeDispatcher::seek

◆ frontPicture()

qreal Demuxer::frontPicture ( )
inline

◆ frontSample()

qreal Demuxer::frontSample ( )
inline

◆ getInputFormat()

PonyAudioFormat Demuxer::getInputFormat ( )
inline

◆ getPicture()

VideoFrameRef Demuxer::getPicture ( )
inline

◆ getSample()

AudioFrame Demuxer::getSample ( )
inline

◆ getTracks()

QStringList Demuxer::getTracks ( )
inline

◆ hasVideo()

PONY_THREAD_SAFE bool Demuxer::hasVideo ( )
inline

◆ isBackward()

PONY_THREAD_SAFE bool Demuxer::isBackward ( )
inline

当前是否倒放

返回

◆ isFileOpen()

PONY_THREAD_SAFE bool Demuxer::isFileOpen ( )
inline

◆ openFile

void Demuxer::openFile ( const std::string &  fn)
inlineslot

打开文件

参数
fn本地文件路径

◆ openFileResult

void Demuxer::openFileResult ( PonyPlayer::OpenFileResultType  result,
QPrivateSignal   
)
signal

◆ pause()

PONY_THREAD_SAFE void Demuxer::pause ( )
inline

向 DecodeThread 发送信号尽快暂停解码, 并唤醒阻塞在上面的线程.

参见
DecodeDispatcher::statePause

◆ PONY_GUARD_BY()

Demuxer::PONY_GUARD_BY ( FRAME  )
inline

清空旧的帧, 这个方法会阻塞直到队列中的所有旧帧清理完成.

参见
DecodeDispatcher::flush

◆ seek

void Demuxer::seek ( qreal  secs)
inlineslot

调整视频进度, 必须保证解码器线程空闲且缓冲区为空. 方法返回后保证产生的帧是在时间正确.
一次完整的调整进度操作应该为:

  1. 在VideoThread线程调用 Demuxer2::statePause 使解码器线程停止运行;
  2. 在VideoThread线程调用 Demuxer2::seek 并阻塞等待函数返回, 接下来产生的帧是新的帧.
  3. 在VideoThread线程调用 Demuxer2::flush 清空队列中的旧帧.
  4. 在DeocdeThread线程中执行 Demuxer2::start, 恢复解码器线程线程运行.
    参数
    secs视频进度(单位: s)
    参见
    Demuxer2::statePause
    Demuxer2::flush
    DecodeDispatcher::seek

◆ setAudioIndex

void Demuxer::setAudioIndex ( StreamIndex  index)
inlineslot

设置音频索引, 必须保证解码器线程空闲且缓冲区为空

参数
index
参见
DecodeDispatcher::seek

◆ setEnableAudio()

void Demuxer::setEnableAudio ( bool  enable)
inline

◆ setOutputFormat()

void Demuxer::setOutputFormat ( PonyAudioFormat  format)
inline

设置 demuxer 输出格式, 必须保证 demuxer 已停止, 需要重新 seek 才能保证获取到正确的帧

参数
format

◆ setTrack()

void Demuxer::setTrack ( int  i)
inline

◆ skipPicture()

PONY_THREAD_SAFE int Demuxer::skipPicture ( const std::function< bool(qreal)> &  predicate)
inline

◆ skipSample()

PONY_THREAD_SAFE int Demuxer::skipSample ( const std::function< bool(qreal)> &  predicate)
inline

◆ start()

PONY_THREAD_SAFE void Demuxer::start ( )
inline

在 DecodeThread 启动解码器, 这个方法是非阻塞的, 但是可以保证返回后队里请求能够被阻塞.

◆ test_onWork()

void Demuxer::test_onWork ( )
inline

◆ videoDuration()

qreal Demuxer::videoDuration ( )
inline

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