FFNvDecoderManager.h 1.03 KB
#include "FFNvDecoder.h"
#include<iostream>
#include<vector>
#include<map>

using namespace std;

struct MgrDecConfig
{
    FFDecConfig cfg;
    string name{""};
};

class FFNvDecoderManager{
public:
    static FFNvDecoderManager* getInstance(){
		static FFNvDecoderManager* singleton = nullptr;
		if (singleton == nullptr){
			singleton = new FFNvDecoderManager();
		}
		return singleton;
	}

    ~FFNvDecoderManager()
    {
        closeAllDecoder();
    }

    FFNvDecoder* createDecoder(MgrDecConfig& config);
    void setUserPtr(string name, const void * userPtr);

    FFNvDecoder* getDecoderByName(const string name);

    void startDecode(FFNvDecoder*);
    void startAllDecode();
    bool startDecodeByName(string name);

    bool closeDecoderByName(string name);
    void closeAllDecoder();

    bool pauseDecoder(string name);
    bool resumeDecoder(string name);

    bool isSurport(FFDecConfig& cfg);

    bool isRunning(string name);

    int count();

private:
    FFNvDecoderManager(){}

private:
    map<string, FFNvDecoder*> decoderMap;
};