PonyPlayer
IDemuxDecoder类 参考abstract

#include <decoders.hpp>

类 IDemuxDecoder 继承关系图:
DecoderImpl< Common > ReverseDecoderImpl< Common > DecoderImpl< type > ReverseDecoderImpl< type > VirtualVideoDecoder DecoderImpl< Audio > DecoderImpl< Video > ReverseDecoderImpl< Audio > ReverseDecoderImpl< Video >

Public 类型

enum class  DecoderType { Audio , Video , Common }
 

Public 成员函数

virtual bool accept (AVPacket *pkt, std::atomic< bool > &interrupt)=0
 
virtual void flushFFmpegBuffers ()=0
 
virtual VideoFrameRef getPicture ()=0
 
virtual AudioFrame getSample ()=0
 
virtual qreal viewFront ()=0
 
virtual int skip (const std::function< bool(qreal)> &predicate)=0
 
virtual double duration ()=0
 
virtual void setEnable (bool b)=0
 
virtual ~IDemuxDecoder ()=default
 
virtual void setFollower (IDemuxDecoder *follower)
 
virtual void pushFrameStack ()
 
virtual qreal getLastPts ()
 
virtual void clearFrameStack ()
 
virtual void setStart (qreal secs)
 
virtual qreal nextSegment ()
 
virtual PonyAudioFormat getInputFormat ()=0
 
virtual void setOutputFormat (const PonyAudioFormat &format)=0
 

成员枚举类型说明

◆ DecoderType

enum class IDemuxDecoder::DecoderType
strong

解码器类型

枚举值
Audio 

音频解码器

Video 

视频解码器

Common 

未指定

构造及析构函数说明

◆ ~IDemuxDecoder()

virtual IDemuxDecoder::~IDemuxDecoder ( )
virtualdefault

成员函数说明

◆ accept()

virtual bool IDemuxDecoder::accept ( AVPacket *  pkt,
std::atomic< bool > &  interrupt 
)
pure virtual

接收一个包

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

ReverseDecoderImpl< type >, ReverseDecoderImpl< Common > , 以及 VirtualVideoDecoder 内被实现.

◆ clearFrameStack()

virtual void IDemuxDecoder::clearFrameStack ( )
inlinevirtual

◆ duration()

virtual double IDemuxDecoder::duration ( )
pure virtual

◆ flushFFmpegBuffers()

virtual void IDemuxDecoder::flushFFmpegBuffers ( )
pure virtual

清空 FFmpeg 内部缓冲区

ReverseDecoderImpl< type >, ReverseDecoderImpl< Common > , 以及 VirtualVideoDecoder 内被实现.

◆ getInputFormat()

◆ getLastPts()

virtual qreal IDemuxDecoder::getLastPts ( )
inlinevirtual

◆ getPicture()

virtual VideoFrameRef IDemuxDecoder::getPicture ( )
pure virtual

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

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

ReverseDecoderImpl< type >, ReverseDecoderImpl< Common >, ReverseDecoderImpl< Video >, DecoderImpl< type >, DecoderImpl< Common >, DecoderImpl< Video > , 以及 VirtualVideoDecoder 内被实现.

◆ getSample()

virtual AudioFrame IDemuxDecoder::getSample ( )
pure virtual

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

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

ReverseDecoderImpl< type >, ReverseDecoderImpl< Common >, ReverseDecoderImpl< Audio >, DecoderImpl< type >, DecoderImpl< Common >, DecoderImpl< Audio > , 以及 VirtualVideoDecoder 内被实现.

◆ nextSegment()

virtual qreal IDemuxDecoder::nextSegment ( )
inlinevirtual

◆ pushFrameStack()

virtual void IDemuxDecoder::pushFrameStack ( )
inlinevirtual

◆ setEnable()

virtual void IDemuxDecoder::setEnable ( bool  b)
pure virtual

◆ setFollower()

virtual void IDemuxDecoder::setFollower ( IDemuxDecoder follower)
inlinevirtual

◆ setOutputFormat()

virtual void IDemuxDecoder::setOutputFormat ( const PonyAudioFormat format)
pure virtual

◆ setStart()

virtual void IDemuxDecoder::setStart ( qreal  secs)
inlinevirtual

◆ skip()

virtual int IDemuxDecoder::skip ( const std::function< bool(qreal)> &  predicate)
pure virtual

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

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

ReverseDecoderImpl< type >, ReverseDecoderImpl< Common >, ReverseDecoderImpl< Video >, DecoderImpl< type >, DecoderImpl< Common > , 以及 VirtualVideoDecoder 内被实现.

◆ viewFront()

virtual qreal IDemuxDecoder::viewFront ( )
pure virtual

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

返回
队首帧的PTS

ReverseDecoderImpl< type >, ReverseDecoderImpl< Common >, ReverseDecoderImpl< Video >, DecoderImpl< type >, DecoderImpl< Common > , 以及 VirtualVideoDecoder 内被实现.


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