Blame view

src/FFNvDecoderManager.h 5.2 KB
aac5773f   hucm   功能基本完成,接口待打磨
1
2
3
4
5
  #include "FFNvDecoder.h"
  #include<iostream>
  #include<vector>
  #include<map>
  
f40cc409   Hu Chunming   优化显存占用。当前在3080显卡上...
6
7
  #include <mutex>
  
aac5773f   hucm   功能基本完成,接口待打磨
8
9
  using namespace std;
  
7319ea36   Hu Chunming   多显卡设置
10
11
  struct MgrDecConfig
  {
0573bd98   Hu Chunming   优化代码;添加注释
12
13
      FFDecConfig cfg;    // 解码器配置
      string name{""};    // 解码器名称
7319ea36   Hu Chunming   多显卡设置
14
15
  };
  
0573bd98   Hu Chunming   优化代码;添加注释
16
17
18
  /**
   * 解码器管理类,单例类
   **/
aac5773f   hucm   功能基本完成,接口待打磨
19
20
  class FFNvDecoderManager{
  public:
0573bd98   Hu Chunming   优化代码;添加注释
21
22
23
24
25
26
27
      /**************************************************
  	* 接口:getInstance
  	* 功能:获取解码器管理者实例
  	* 参数:无
  	* 返回:成功返回 解码器管理者实例, 失败返回 nullptr
  	* 备注:调用其他接口前,需要先调用该接口获取管理者实例
  	**************************************************/
aac5773f   hucm   功能基本完成,接口待打磨
28
29
30
31
32
33
34
35
36
37
38
39
40
      static FFNvDecoderManager* getInstance(){
  		static FFNvDecoderManager* singleton = nullptr;
  		if (singleton == nullptr){
  			singleton = new FFNvDecoderManager();
  		}
  		return singleton;
  	}
  
      ~FFNvDecoderManager()
      {
          closeAllDecoder();
      }
  
0573bd98   Hu Chunming   优化代码;添加注释
41
42
43
44
45
46
47
      /**************************************************
  	* 接口:createDecoder
  	* 功能:根据配置信息创建解码器
  	* 参数:MgrDecConfig& config 解码器配置信息
  	* 返回:成功返回解码器, 失败返回 nullptr
  	* 备注:
  	**************************************************/
7319ea36   Hu Chunming   多显卡设置
48
      FFNvDecoder* createDecoder(MgrDecConfig& config);
aac5773f   hucm   功能基本完成,接口待打磨
49
  
0573bd98   Hu Chunming   优化代码;添加注释
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
      /**************************************************
  	* 接口:setUserPtr
  	* 功能:设置解码数据回调接口的用户自定义参数
  	* 参数:string name 解码器名称
      *       const void * userPtr  用户自定义的要传到解码数据回调接口的数据
  	* 返回:设置成功返回true,失败返回false
  	* 备注:
  	**************************************************/
      bool setUserPtr(const string name, const void * userPtr);
  
      /**************************************************
  	* 接口:getDecoderByName
  	* 功能:根据解码器名称返回解码器对象指针
  	* 参数:const string name 解码器名称
  	* 返回:成功返回对应的解码器对象的指针,失败返回nullptr
  	* 备注:
  	**************************************************/
aac5773f   hucm   功能基本完成,接口待打磨
67
68
      FFNvDecoder* getDecoderByName(const string name);
  
0573bd98   Hu Chunming   优化代码;添加注释
69
70
71
72
73
74
75
      /**************************************************
  	* 接口:startDecode
  	* 功能:启动解码
  	* 参数:FFNvDecoder* 解码器指针
  	* 返回:void
  	* 备注:
  	**************************************************/
aac5773f   hucm   功能基本完成,接口待打磨
76
      void startDecode(FFNvDecoder*);
0573bd98   Hu Chunming   优化代码;添加注释
77
78
79
80
81
82
83
84
  
      /**************************************************
  	* 接口:startDecode
  	* 功能:启动全部解码
  	* 参数:void
  	* 返回:void
  	* 备注:
  	**************************************************/
aac5773f   hucm   功能基本完成,接口待打磨
85
      void startAllDecode();
aac5773f   hucm   功能基本完成,接口待打磨
86
  
0573bd98   Hu Chunming   优化代码;添加注释
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
      /**************************************************
  	* 接口:startDecodeByName
  	* 功能:启动解码器名称对应的解码
  	* 参数:string name 解码器名称
  	* 返回:成功返回true,失败返回false
  	* 备注:
  	**************************************************/
      bool startDecodeByName(const string name);
  
      /**************************************************
  	* 接口:closeDecoderByName
  	* 功能:关闭解码器名称对应的解码
  	* 参数:string name 解码器名称
  	* 返回:成功返回true,失败返回false
  	* 备注:
  	**************************************************/
      bool closeDecoderByName(const string name);
  
      /**************************************************
  	* 接口:closeAllDecoder
  	* 功能:关闭全部解码器
  	* 参数:void
  	* 返回:void
  	* 备注:
  	**************************************************/
aac5773f   hucm   功能基本完成,接口待打磨
112
      void closeAllDecoder();
aac5773f   hucm   功能基本完成,接口待打磨
113
  
0573bd98   Hu Chunming   优化代码;添加注释
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
      /**************************************************
  	* 接口:pauseDecoder
  	* 功能:暂停指定名称的解码器
  	* 参数:const string name 解码器名称
  	* 返回:成功返回true,失败返回false
  	* 备注:
  	**************************************************/
      bool pauseDecoder(const string name);
  
      /**************************************************
  	* 接口:pauseDecoder
  	* 功能:恢复指定名称的解码器
  	* 参数:const string name 解码器名称
  	* 返回:成功返回true,失败返回false
  	* 备注:
  	**************************************************/
      bool resumeDecoder(const string name);
  
      /**************************************************
  	* 接口:isSurport
  	* 功能:是否支持指定配置的解码
  	* 参数:FFDecConfig& cfg 解码器配置
  	* 返回:支持返回true,不支持返回false
  	* 备注:
  	**************************************************/
e96e6489   Hu Chunming   优化代码;添加isRunning函数
139
140
      bool isSurport(FFDecConfig& cfg);
  
0573bd98   Hu Chunming   优化代码;添加注释
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
      /**************************************************
  	* 接口:isRunning
  	* 功能:根据解码器名称判断解码器是否正在运行
  	* 参数:const string name 解码器名称
  	* 返回:正在运行返回true,否则返回false
  	* 备注:
  	**************************************************/
      bool isRunning(const string name);
  
      /**************************************************
  	* 接口:count
  	* 功能:获取正在运行的解码器数量
  	* 参数:void
  	* 返回:正在运行的解码器数量
  	* 备注:
  	**************************************************/
aac5773f   hucm   功能基本完成,接口待打磨
157
158
159
160
      int count();
  
  private:
      FFNvDecoderManager(){}
0573bd98   Hu Chunming   优化代码;添加注释
161
162
      
      void closeAllFinishedDecoder();
aac5773f   hucm   功能基本完成,接口待打磨
163
164
165
  
  private:
      map<string, FFNvDecoder*> decoderMap;
f40cc409   Hu Chunming   优化显存占用。当前在3080显卡上...
166
167
  
      mutex m_mutex_erase;
aac5773f   hucm   功能基本完成,接口待打磨
168
  };