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
|
/**************************************************
|
f667f79a
Hu Chunming
注释优化;
|
79
|
* 接口:startAllDecode
|
0573bd98
Hu Chunming
优化代码;添加注释
|
80
81
82
83
84
|
* 功能:启动全部解码
* 参数:void
* 返回:void
* 备注:
**************************************************/
|
aac5773f
hucm
功能基本完成,接口待打磨
|
85
|
void startAllDecode();
|
aac5773f
hucm
功能基本完成,接口待打磨
|
86
|
|
0573bd98
Hu Chunming
优化代码;添加注释
|
87
88
|
/**************************************************
* 接口:startDecodeByName
|
f667f79a
Hu Chunming
注释优化;
|
89
|
* 功能:启动名称对应的解码器
|
0573bd98
Hu Chunming
优化代码;添加注释
|
90
91
92
93
94
95
96
97
98
|
* 参数:string name 解码器名称
* 返回:成功返回true,失败返回false
* 备注:
**************************************************/
bool startDecodeByName(const string name);
/**************************************************
* 接口:closeDecoderByName
* 功能:关闭解码器名称对应的解码
|
f667f79a
Hu Chunming
注释优化;
|
99
|
* 参数:const string name 解码器名称
|
0573bd98
Hu Chunming
优化代码;添加注释
|
100
101
102
103
104
105
106
107
108
109
110
111
|
* 返回:成功返回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
|
};
|