AbstractDecoder.h 1.23 KB
#ifndef _ABSTRACT_DECODER_H_
#define _ABSTRACT_DECODER_H_

#include "interface_headers.h"

using namespace std;

class AbstractDecoder{
public:
    virtual ~AbstractDecoder(){};
    virtual bool init(FFDecConfig& cfg) = 0;
    virtual void close() = 0;
    virtual bool start() = 0;
    virtual void pause() = 0;
    virtual void resume() = 0;
            
    virtual void setDecKeyframe(bool bKeyframe) = 0;
            
    virtual bool isRunning() = 0;
    virtual bool isFinished() = 0;
    virtual bool isPausing() = 0;
    virtual bool getResolution( int &width, int &height ) = 0;

    virtual bool isSurport(FFDecConfig& cfg) = 0;
            
    virtual int getCachedQueueLength() = 0;

    virtual float fps() = 0;

    virtual DECODER_TYPE getDecoderType() = 0;

    virtual FFImgInfo* snapshot() = 0;

    virtual void setName(string nm) = 0;

    virtual string getName() = 0;

    virtual void setPostDecArg(const void* postDecArg) = 0;
    virtual void setFinishedDecArg(const void* finishedDecArg) = 0;

public:
    bool isSnapTime();
    
    void updateLastSnapTime();

    void setSnapTimeInterval(long interval);

public:
    long m_snap_time_interval{-1};
    long m_last_snap_time;
    long m_index{0};
};

#endif // _ABSTRACT_DECODER_H_