MediaServerVenc.hpp
1 //
2 // Created by xiong on 2020/10/27.
3 //
4 
5 #ifndef EMX_MediaServerVenc_HPP
6 #define EMX_MediaServerVenc_HPP
7 
8 #include "EmxCore.hpp"
9 #include "MediaServerBase.hpp"
10 #include "media/common/MediaInfVenc.hpp"
11 
12 namespace Emx {
16  class TimestampPtsToUtc;
17 
19  public:
20  explicit MediaServerVencChn(int32_t chn) : MediaServerModuleChnBase(MediaModE::Venc, chn), m_seq(0) {}
21 
22  ~MediaServerVencChn() override = default;
23 
24  ErrCodeE LoadParam() override;
25 
26  ErrCodeE SaveParam() override;
27 
28  void *GetParam() override { return &m_param; }
29 
30  void *GetNewParam() override { return &m_paramNew; }
31 
32  void *GetRunningParam() override { return &m_paramRunning; }
33 
34  int GetParamSize() override { return sizeof(Param); }
35 
36  ErrCodeE GetParamDefaultData(std::string &data) override;
37 
38  bool ParamValid() override;
39 
40  ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) override;
41 
42  protected:
46  virtual void StartStream();
47 
51  virtual void StopStream();
52 
53  struct FrameData {
54  std::vector<EmxData> data;
55  uint64_t tsInUs;
56  bool isKeyFrame;
58  };
59 
65  virtual ErrCodeE GetOneFrame(FrameData &frame) = 0;
66 
70  virtual void ReleaseOneFrame() = 0;
71 
72  private:
73  virtual void OnStream(void *arg);
74 
75  virtual void OnStreamComplete(ErrCodeE e, void *arg);
76 
77  protected:
81  TimestampPtsToUtc *m_ptsToUtc;
82 
83  private:
84  EuvWork m_work;
85  FrameData m_frame;
86  ErrCodeE m_getFrameErrCode;
87  uint32_t m_seq;
88  };
89 
91  public:
93  };
95 }// namespace Emx
96 
97 #endif//EMX_MediaServerVenc_HPP
提供在EuvLoop内调用线程池执行阻塞耗时任务的机制
Definition: EuvWork.hpp:18
Definition: MediaInfVenc.hpp:15
媒体模块的通用基类
Definition: MediaServerBase.hpp:104
Definition: MediaServerBase.hpp:18
Definition: MediaServerVenc.hpp:18
void * GetParam() override
Definition: MediaServerVenc.hpp:28
void * GetNewParam() override
Definition: MediaServerVenc.hpp:30
TimestampPtsToUtc * m_ptsToUtc
Definition: MediaServerVenc.hpp:81
int GetParamSize() override
Definition: MediaServerVenc.hpp:34
~MediaServerVencChn() override=default
virtual ErrCodeE GetOneFrame(FrameData &frame)=0
获取一帧编码图像
ErrCodeE SaveParam() override
bool ParamValid() override
ErrCodeE LoadParam() override
virtual void StopStream()
停止获取编码视频流
MediaServerVencChn(int32_t chn)
Definition: MediaServerVenc.hpp:20
Param m_param
Definition: MediaServerVenc.hpp:78
Param m_paramRunning
Definition: MediaServerVenc.hpp:80
ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) override
void * GetRunningParam() override
Definition: MediaServerVenc.hpp:32
virtual void StartStream()
开始获取编码视频流,调用后GetOneFrame会被不停触发
virtual void ReleaseOneFrame()=0
释放一帧编码图像,仅当GetOneFrame返回成功时此函数才会被执行
ErrCodeE GetParamDefaultData(std::string &data) override
Param m_paramNew
Definition: MediaServerVenc.hpp:79
Definition: MediaServerVenc.hpp:90
MediaServerVenc()
Definition: MediaServerVenc.hpp:92
MediaModE
Definition: MediaTypedef.hpp:60
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10
视频编码持久化参数
Definition: MediaInfVenc.hpp:27
Definition: MediaServerVenc.hpp:53
bool isKeyFrame
Definition: MediaServerVenc.hpp:56
bool isParamChanged
Definition: MediaServerVenc.hpp:57
std::vector< EmxData > data
Definition: MediaServerVenc.hpp:54
uint64_t tsInUs
Definition: MediaServerVenc.hpp:55