MediaAdec.hpp
1 //
2 // Created by xiong on 2020/11/23.
3 //
4 
5 #ifndef EMX_MEDIAADEC_HPP
6 #define EMX_MEDIAADEC_HPP
7 
8 #include "media/common/MediaInfAdec.hpp"
9 #include "MediaParamCBase.hpp"
10 #include "core/EmxUtils.hpp"
11 namespace Emx {
16  class MediaAdec : public MediaInfAdec, public MediaParamCBase<MediaInfAdec::Param> {
17  public:
18  explicit MediaAdec(int32_t chn) : MediaParamCBase(MediaModE::Adec, chn) {}
19 
20  ErrCodeE SetVolume(int32_t volume) override;
21 
22  ErrCodeE SetVolumeTemp(int32_t volume) override;
23 
25  };
26 
29  public:
37  static ErrCodeE PushFrame(int32_t chn, MediaAdec::Frame &frame, int32_t timeoutMs = 1000);
38 
46  static ErrCodeE PushRawPcm(int32_t chn, MediaAdec::Frame &frame, int32_t timeoutMs = 1000);
47 
55  static ErrCodeE PlayFile(int32_t chn, const char *path, int32_t timeoutMs = 1000);
56 
65  static ErrCodeE PlayFileWithVolume(int32_t chn, const char *path, int32_t volume, int32_t timeoutMs = 1000);
66 
74  static ErrCodeE PlayCtrlQuit(int32_t chn, bool fullInterrupt = true, int32_t timeoutMs = 1000);
75  };
76 
79  public:
84  ErrCodeE Create() { return m_pub.Create(); }
88  void Destroy() { m_pub.Destroy(); }
96  ErrCodeE PushFrame(int32_t chn, MediaAdec::Frame &frame, int32_t timeoutMs = 1000);
97 
105  ErrCodeE PushRawPcm(int32_t chn, MediaAdec::Frame &frame, int32_t timeoutMs = 1000);
106 
114  ErrCodeE PlayFile(int32_t chn, const char *path, int32_t timeoutMs = 1000);
115 
124  ErrCodeE PlayFileWithVolume(int32_t chn, const char *path, int32_t volume, int32_t timeoutMs = 1000);
125 
133  ErrCodeE PlayCtrlQuit(int32_t chn, bool fullInterrupt = true, int32_t timeoutMs = 1000);
134 
135  private:
137  };
138 
141  public:
150  ErrCodeE Create(EuvLoop &loop, uint32_t buffSize);
151 
158  ErrCodeE PushFrame(int32_t chn, MediaAdec::Frame &frame);
165  ErrCodeE PushRawPcm(int32_t chn, MediaAdec::Frame &frame);
166 
170  void Destroy();
171 
172  private:
179  ErrCodeE PushData(uint32_t topic, MediaAdec::Frame &frame);
180 
181  private:
183  int m_chn;
184  uint8_t *m_buffer;
185  uint32_t m_bufferSize;
186  uint32_t m_userSize;
187  };
189 }// namespace Emx
190 
191 #endif//EMX_MEDIAADEC_HPP
实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上
Definition: EuvLoop.hpp:18
音频流解码异步接口,均为异步操作
Definition: MediaAdec.hpp:140
ErrCodeE Create(EuvLoop &loop, uint32_t buffSize)
创建异步音频解码流。
void Destroy()
销毁异步音频解码流。
ErrCodeE PushRawPcm(int32_t chn, MediaAdec::Frame &frame)
发送Pcm音频帧到媒体服务直接播放
ErrCodeE PushFrame(int32_t chn, MediaAdec::Frame &frame)
发送音频帧到媒体服务进行解码播放,这里发送的音频帧的编码格式需要与MediaClientAenc中配置的解码格式一致
音频流解码接口,均为同步阻塞操作,分离了创建-发送-销毁,相比于MediaAdecStreamSync减少频繁调用下的性能开销
Definition: MediaAdec.hpp:78
void Destroy()
销毁MsgTopicPublisherSync2
Definition: MediaAdec.hpp:88
ErrCodeE PlayFile(int32_t chn, const char *path, int32_t timeoutMs=1000)
添加音频文件路径至媒体服务的播放列表中,添加后此函数就会返回,列表为空时会立刻播放
ErrCodeE PushFrame(int32_t chn, MediaAdec::Frame &frame, int32_t timeoutMs=1000)
发送音频帧到媒体服务进行解码播放,这里发送的音频帧的编码格式需要与MediaClientAenc中配置的解码格式一致
ErrCodeE PlayFileWithVolume(int32_t chn, const char *path, int32_t volume, int32_t timeoutMs=1000)
添加音频文件路径至媒体服务的播放列表中,添加后此函数就会返回,列表为空时会立刻播放
ErrCodeE PushRawPcm(int32_t chn, MediaAdec::Frame &frame, int32_t timeoutMs=1000)
发送Pcm音频帧到媒体服务直接播放
ErrCodeE PlayCtrlQuit(int32_t chn, bool fullInterrupt=true, int32_t timeoutMs=1000)
终止播放并清空媒体服务播放列表
ErrCodeE Create()
创建MsgTopicPublisherSync2
Definition: MediaAdec.hpp:84
音频流解码接口,均为同步阻塞操作
Definition: MediaAdec.hpp:28
static ErrCodeE PushFrame(int32_t chn, MediaAdec::Frame &frame, int32_t timeoutMs=1000)
发送音频帧到媒体服务进行解码播放,这里发送的音频帧的编码格式需要与MediaClientAenc中配置的解码格式一致
static ErrCodeE PlayFileWithVolume(int32_t chn, const char *path, int32_t volume, int32_t timeoutMs=1000)
添加音频文件路径至媒体服务的播放列表中,添加后此函数就会返回,列表为空时会立刻播放
static ErrCodeE PushRawPcm(int32_t chn, MediaAdec::Frame &frame, int32_t timeoutMs=1000)
发送Pcm音频帧到媒体服务直接播放
static ErrCodeE PlayFile(int32_t chn, const char *path, int32_t timeoutMs=1000)
添加音频文件路径至媒体服务的播放列表中,添加后此函数就会返回,列表为空时会立刻播放
static ErrCodeE PlayCtrlQuit(int32_t chn, bool fullInterrupt=true, int32_t timeoutMs=1000)
终止播放并清空媒体服务播放列表
音频编码
Definition: MediaAdec.hpp:16
ErrCodeE SetVolume(int32_t volume) override
PlayStatusE GetPlayStatus() override
ErrCodeE SetVolumeTemp(int32_t volume) override
MediaAdec(int32_t chn)
Definition: MediaAdec.hpp:18
音频解码
Definition: MediaInfAdec.hpp:16
PlayStatusE
播放状态
Definition: MediaInfAdec.hpp:36
客户端参数基类,方便通用操作
Definition: MediaParamCBase.hpp:35
用于Topic的异步发布
Definition: MsgTopic.hpp:68
同步阻塞发布消息,分离socket的创建和销毁,用于需要同步频繁发布消息的场景
Definition: MsgTopic.hpp:145
void Destroy()
销毁发布连接
ErrCodeE Create(int32_t timeoutMs=3000)
创建发布连接
MediaModE
Definition: MediaTypedef.hpp:60
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10
音频解码帧结构定义(目前未使用MediaFrame结构)
Definition: MediaInfAdec.hpp:28