#include "FFNvDecoder.h" #include #include #include #include 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(); void closeAllFinishedDecoder(); bool removeDecoderByName(string name); bool pauseDecoder(string name); bool resumeDecoder(string name); bool isSurport(FFDecConfig& cfg); bool isRunning(string name); int count(); private: FFNvDecoderManager(){} private: map decoderMap; mutex m_mutex_erase; };