MediaServerVdec.hpp
1 //
2 // Created by tfh on 2024/01/06.
3 //
4 
5 #ifndef EMX_MediaServerVdec_HPP
6 #define EMX_MediaServerVdec_HPP
7 
8 #include "EmxCore.hpp"
9 #include "MediaServerBase.hpp"
10 #include "media/common/MediaInfVdec.hpp"
11 #include "media/common/MediaRingBuffer.hpp"
12 
13 namespace Emx {
19  public:
20  explicit MediaServerVdecChn(int32_t chn) : MediaServerModuleChnBase(MediaModE::Vdec, chn) {}
21 
22  ~MediaServerVdecChn() 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  ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) override;
39 
41 
42  void OnServerDestroy() override;
43 
44  protected:
45  struct FrameData {
46  char *data;
47  uint32_t size;
48  uint64_t tsInUs;
49  };
55  virtual ErrCodeE SendFrame(FrameData &data) = 0;
56 
64 
69  virtual uint32_t GetVdecRawSize();
70 
76 
77 
78  protected:
82 
83  public:
87 
88  private:
89  int m_key;
90  int m_ringBufSize;
91  int m_ringReadBufSize;
92  int m_ringBusy;
93  };
94 
96  public:
98  };
100 }// namespace Emx
101 
102 #endif//EMX_MediaServerVdec_HPP
Definition: MediaInfVdec.hpp:15
媒体环形共享缓冲区读类(注意:所有操作都是非线程安全的)
Definition: MediaRingBuffer.hpp:60
媒体环形共享缓冲区写类(注意:所有操作都是非线程安全的)
Definition: MediaRingBuffer.hpp:17
媒体模块的通用基类
Definition: MediaServerBase.hpp:104
Definition: MediaServerBase.hpp:18
Definition: MediaServerVdec.hpp:18
virtual ErrCodeE SendFrame(FrameData &data)=0
发送视频流到解码器
virtual ErrCodeE SendFrameDecode(FrameData &data, FrameData &raw)
发送视频流到解码器并且返回解码后数据
ErrCodeE SaveParam() override
ErrCodeE OnServerCreate() override
ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) override
void * GetNewParam() override
Definition: MediaServerVdec.hpp:30
Param m_paramNew
新参数
Definition: MediaServerVdec.hpp:80
MediaRingBufferReader m_ring
环形缓冲区读取器
Definition: MediaServerVdec.hpp:85
int GetParamSize() override
Definition: MediaServerVdec.hpp:34
Param m_param
当前参数
Definition: MediaServerVdec.hpp:79
void OnServerDestroy() override
void * GetRunningParam() override
Definition: MediaServerVdec.hpp:32
virtual uint32_t GetVdecRawSize()
获取解码器输出数据大小
MediaServerVdecChn(int32_t chn)
Definition: MediaServerVdec.hpp:20
void * GetParam() override
Definition: MediaServerVdec.hpp:28
MediaRingBufferWriter m_ringWrite
环形缓冲区写入器
Definition: MediaServerVdec.hpp:86
ErrCodeE LoadParam() override
MsgTopicSubscriberAsync m_sub
消息主题订阅者异步
Definition: MediaServerVdec.hpp:84
Param m_paramRunning
运行参数
Definition: MediaServerVdec.hpp:81
ErrCodeE GetParamDefaultData(std::string &data) override
ErrCodeE PushVdecData(FrameData &fData)
将解码后的数据推送出去
~MediaServerVdecChn() override=default
Definition: MediaServerVdec.hpp:95
MediaServerVdec()
Definition: MediaServerVdec.hpp:97
用于Topic的异步订阅
Definition: MsgTopic.hpp:175
MediaModE
Definition: MediaTypedef.hpp:60
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10
视频解码持久化参数
Definition: MediaInfVdec.hpp:18
Definition: MediaServerVdec.hpp:45
uint32_t size
Definition: MediaServerVdec.hpp:47
uint64_t tsInUs
Definition: MediaServerVdec.hpp:48
char * data
Definition: MediaServerVdec.hpp:46