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