PonyPlayer
DecoderImpl< type > 模板类 参考

#include <forward.hpp>

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

Public 成员函数

 DecoderImpl (AVStream *vs, TwinsBlockQueue< AVFrame * > *queue)
 
PONY_THREAD_SAFE double duration () override
 
 PONY_GUARD_BY (DECODER) bool accept(AVPacket *pkt
 
 if (ret< 0)
 
 while (ret >=0 &&!interrupt)
 
PONY_THREAD_SAFE VideoFrameRef getPicture () override
 
PONY_THREAD_SAFE AudioFrame getSample () override
 
PonyAudioFormat getInputFormat () override
 
void setOutputFormat (const PonyAudioFormat &format) override
 
PONY_THREAD_SAFE qreal viewFront () override
 
PONY_THREAD_SAFE int skip (const std::function< bool(qreal)> &predicate) override
 
PONY_THREAD_SAFE void setEnable (bool b) override
 
 PONY_GUARD_BY (DECODER) void flushFFmpegBuffers() override
 
- Public 成员函数 继承自 DecoderContext
 DecoderContext (AVStream *vs)
 
 ~DecoderContext ()
 
- Public 成员函数 继承自 IDemuxDecoder
virtual bool accept (AVPacket *pkt, std::atomic< bool > &interrupt)=0
 
virtual void flushFFmpegBuffers ()=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 ()
 

Public 属性

std::atomic< bool > &interrupt override
 
int ret = avcodec_send_packet(codecCtx, pkt)
 
return false
 
- Public 属性 继承自 DecoderContext
AVCodec * codec = nullptr
 
AVStream * stream = nullptr
 
AVCodecContext * codecCtx = nullptr
 
AVFrame * frameBuf = nullptr
 

Protected 属性

TwinsBlockQueue< AVFrame * > * frameQueue
 

额外继承的成员函数

- Public 类型 继承自 IDemuxDecoder
enum class  DecoderType { Audio , Video , Common }
 

构造及析构函数说明

◆ DecoderImpl()

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

成员函数说明

◆ duration()

PONY_THREAD_SAFE double DecoderImpl< type >::duration ( )
inlineoverridevirtual

获取流的长度

返回

实现了 IDemuxDecoder.

◆ getInputFormat()

PonyAudioFormat DecoderImpl< type >::getInputFormat ( )
inlineoverridevirtual

实现了 IDemuxDecoder.

◆ getPicture()

PONY_THREAD_SAFE VideoFrameRef DecoderImpl< type >::getPicture ( )
inlineoverridevirtual

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

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

实现了 IDemuxDecoder.

◆ getSample()

PONY_THREAD_SAFE AudioFrame DecoderImpl< type >::getSample ( )
inlineoverridevirtual

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

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

实现了 IDemuxDecoder.

◆ if()

DecoderImpl< type >::if ( )
inline

◆ PONY_GUARD_BY() [1/2]

DecoderImpl< type >::PONY_GUARD_BY ( DECODER  )

◆ PONY_GUARD_BY() [2/2]

DecoderImpl< type >::PONY_GUARD_BY ( DECODER  )
inlineoverride

◆ setEnable()

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

实现了 IDemuxDecoder.

◆ setOutputFormat()

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

实现了 IDemuxDecoder.

◆ skip()

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

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

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

实现了 IDemuxDecoder.

◆ viewFront()

PONY_THREAD_SAFE qreal DecoderImpl< type >::viewFront ( )
inlineoverridevirtual

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

返回
队首帧的PTS

实现了 IDemuxDecoder.

◆ while()

DecoderImpl< type >::while ( ret >=0 &&!  interrupt)
inline

类成员变量说明

◆ false

return DecoderImpl< type >::false

◆ frameQueue

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

◆ override

std::atomic<bool>& interrupt DecoderImpl< type >::override
初始值:
{
if (!frameQueue->isEnable())
return true
TwinsBlockQueue< AVFrame * > * frameQueue
Definition: forward.hpp:11

◆ ret

int DecoderImpl< type >::ret = avcodec_send_packet(codecCtx, pkt)

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