6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
1
2
|
#include "FFRecoder.h"
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
3
4
5
6
7
8
9
10
11
12
13
|
#include "depend_headers.h"
#include <list>
#include <queue>
#include <map>
#include <string>
#include <thread>
#include <mutex>
using namespace std;
|
4061a3c3
Hu Chunming
更换decoder
|
14
15
16
17
18
|
struct RecodeParam {
AVRational time_base;
RecoderInfo recoderInfo;
AVCodecContext* avctx;
};
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
19
20
21
|
typedef std::function<bool(const char *msg)> mq_callback_t;
|
4061a3c3
Hu Chunming
更换decoder
|
22
|
class FFRecoderTask {
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
23
|
public:
|
4061a3c3
Hu Chunming
更换decoder
|
24
25
|
FFRecoderTask();
virtual ~FFRecoderTask();
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
26
|
|
4061a3c3
Hu Chunming
更换decoder
|
27
|
void cache_pkt(AVPacket* pkt, long long frame_nb);
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
28
|
|
4061a3c3
Hu Chunming
更换decoder
|
29
|
bool init(int w, int h, int fps, int bit_rate, string dec_name);
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
30
31
32
33
34
35
36
37
38
|
void create_recode_task(RecoderInfo& recoderInfo);
void close();
void set_mq_callback(mq_callback_t cb);
public:
void recode_thread();
void pkt_cache_thread();
|
4061a3c3
Hu Chunming
更换decoder
|
39
|
std::string GetName(){return m_dec_name;}
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
40
41
42
43
44
45
|
private:
void save_intask_recoderinfo(RecoderInfo info);
list<DataPacket*>::iterator getStartIterator(unsigned long long frame_nb);
private:
|
4061a3c3
Hu Chunming
更换decoder
|
46
|
std::string m_dec_name;
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
std::queue<int> m_key_frame_interval;
std::list<unsigned long long> m_keyframe_nb_list;
std::list<DataPacket*> m_pkt_list_short; // 临时缓存
mutex m_pkt_list_short_mtx;
std::list<DataPacket*> m_pkt_list; //主要缓存
mutex m_pkt_list_mtx;
std::list<RecoderInfo> m_recoderinfo_list;
mutex m_recoderinfo_list_mtx;
bool m_bExit{false};
bool m_bExitRecoderThread{false};
AVRational m_time_base;
AVCodecContext* m_avctx;
AVStream* m_inStream;
|
4061a3c3
Hu Chunming
更换decoder
|
64
|
thread* m_recoder_thread{nullptr};
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
65
66
67
68
69
70
71
72
73
74
|
thread* m_cache_thread{nullptr};
mq_callback_t mq_publish_func;
// FFRecoder
int m_width;
int m_height;
int m_fps;
int m_bit_rate;
};
|