PonyPlayer
ReverseDecoderImpl< type > 模板类 参考

#include <backward.hpp>

类 ReverseDecoderImpl< type > 继承关系图:
DecoderContext IDemuxDecoder

Public 成员函数

 ReverseDecoderImpl (AVStream *vs, TwinsBlockQueue< AVFrame * > *queue)
 
void setFollower (IDemuxDecoder *follower) override
 
void pushFrameStack () override
 
qreal getLastPts () override
 
void clearFrameStack () override
 
void setStart (qreal secs) override
 
qreal nextSegment () override
 
double duration () override
 
 ~ReverseDecoderImpl () override
 
bool accept (AVPacket *pkt, std::atomic< bool > &interrupt) override
 
void flushFFmpegBuffers () override
 
VideoFrameRef getPicture () override
 
AudioFrame getSample () override
 
PONY_THREAD_SAFE void setEnable (bool b) override
 
qreal viewFront () override
 
PonyAudioFormat getInputFormat () override
 
void setOutputFormat (const PonyAudioFormat &format) override
 
int skip (const std::function< bool(qreal)> &predicate) override
 
- Public 成员函数 继承自 DecoderContext
 DecoderContext (AVStream *vs)
 
 ~DecoderContext ()
 
- Public 成员函数 继承自 IDemuxDecoder
virtual ~IDemuxDecoder ()=default
 

Protected 属性

const qreal interval = 5.0
 
TwinsBlockQueue< AVFrame * > * frameQueue
 
std::vector< AVFrame * > * frameStack
 
IDemuxDecoderm_follower {}
 
qreal lastPts {-1.0}
 
qreal from
 
qreal next {-1.0}
 

额外继承的成员函数

- Public 类型 继承自 IDemuxDecoder
enum class  DecoderType { Audio , Video , Common }
 
- Public 属性 继承自 DecoderContext
AVCodec * codec = nullptr
 
AVStream * stream = nullptr
 
AVCodecContext * codecCtx = nullptr
 
AVFrame * frameBuf = nullptr
 

详细描述

template<IDemuxDecoder::DecoderType type>
class ReverseDecoderImpl< type >

反向Decoder

模板参数
type

构造及析构函数说明

◆ ReverseDecoderImpl()

ReverseDecoderImpl< type >::ReverseDecoderImpl ( AVStream *  vs,
TwinsBlockQueue< AVFrame * > *  queue 
)
inline

◆ ~ReverseDecoderImpl()

ReverseDecoderImpl< type >::~ReverseDecoderImpl ( )
inlineoverride

成员函数说明

◆ accept()

bool ReverseDecoderImpl< type >::accept ( AVPacket *  pkt,
std::atomic< bool > &  interrupt 
)
inlineoverridevirtual

接收一个包

参数
pkt
返回
如果还需要接收下一个 packet 返回 true, 否则返回 false

实现了 IDemuxDecoder.

◆ clearFrameStack()

void ReverseDecoderImpl< type >::clearFrameStack ( )
inlineoverridevirtual

重载 IDemuxDecoder .

◆ duration()

double ReverseDecoderImpl< type >::duration ( )
inlineoverridevirtual

获取流的长度

返回

实现了 IDemuxDecoder.

◆ flushFFmpegBuffers()

void ReverseDecoderImpl< type >::flushFFmpegBuffers ( )
inlineoverridevirtual

清空 FFmpeg 内部缓冲区

实现了 IDemuxDecoder.

◆ getInputFormat()

PonyAudioFormat ReverseDecoderImpl< type >::getInputFormat ( )
inlineoverridevirtual

实现了 IDemuxDecoder.

◆ getLastPts()

qreal ReverseDecoderImpl< type >::getLastPts ( )
inlineoverridevirtual

重载 IDemuxDecoder .

◆ getPicture()

VideoFrameRef ReverseDecoderImpl< type >::getPicture ( )
inlineoverridevirtual

获取视频帧并从队列中删除, 仅当当前解码器是视频解码器时有效

参数
b是否阻塞
返回
视频帧, 请用 isValid 判断是否有效

实现了 IDemuxDecoder.

◆ getSample()

AudioFrame ReverseDecoderImpl< type >::getSample ( )
inlineoverridevirtual

获取音频帧并从队列中删除, 仅当当前解码器是音频解码器时有效

参数
b是否阻塞
返回
音频帧, 请用 isValid 判断是否有效

实现了 IDemuxDecoder.

◆ nextSegment()

qreal ReverseDecoderImpl< type >::nextSegment ( )
inlineoverridevirtual

重载 IDemuxDecoder .

◆ pushFrameStack()

void ReverseDecoderImpl< type >::pushFrameStack ( )
inlineoverridevirtual

重载 IDemuxDecoder .

◆ setEnable()

PONY_THREAD_SAFE void ReverseDecoderImpl< type >::setEnable ( bool  b)
inlineoverridevirtual

实现了 IDemuxDecoder.

◆ setFollower()

void ReverseDecoderImpl< type >::setFollower ( IDemuxDecoder follower)
inlineoverridevirtual

重载 IDemuxDecoder .

◆ setOutputFormat()

void ReverseDecoderImpl< type >::setOutputFormat ( const PonyAudioFormat format)
inlineoverridevirtual

实现了 IDemuxDecoder.

◆ setStart()

void ReverseDecoderImpl< type >::setStart ( qreal  secs)
inlineoverridevirtual

重载 IDemuxDecoder .

◆ skip()

int ReverseDecoderImpl< type >::skip ( const std::function< bool(qreal)> &  predicate)
inlineoverridevirtual

线性扫描移除满足条件的帧, 当发现帧不满足条件时, 结束扫描

参数
predicate条件
返回
移除帧的个数

实现了 IDemuxDecoder.

◆ viewFront()

qreal ReverseDecoderImpl< type >::viewFront ( )
inlineoverridevirtual

获取队首帧的PTS, 若不存在, 返回NaN

返回
队首帧的PTS

实现了 IDemuxDecoder.

类成员变量说明

◆ frameQueue

TwinsBlockQueue<AVFrame *>* ReverseDecoderImpl< type >::frameQueue
protected

◆ frameStack

std::vector<AVFrame*>* ReverseDecoderImpl< type >::frameStack
protected

◆ from

qreal ReverseDecoderImpl< type >::from
protected

◆ interval

const qreal ReverseDecoderImpl< type >::interval = 5.0
protected

◆ lastPts

qreal ReverseDecoderImpl< type >::lastPts {-1.0}
protected

◆ m_follower

IDemuxDecoder* ReverseDecoderImpl< type >::m_follower {}
protected

◆ next

qreal ReverseDecoderImpl< type >::next {-1.0}
protected

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