Agora C++ API Reference for All Platforms
media_engine_i.h
1 //
2 // Agora Media SDK
3 //
4 // Copyright (c) 2015 Agora IO. All rights reserved.
5 //
6 
7 #pragma once
8 
9 #include "api/video/video_frame.h"
10 #include "IAgoraMediaEngine.h"
11 #include "IAgoraRtcEngineEx.h"
12 
13 namespace agora {
14 namespace media {
15 namespace base {
17  public:
19  void onFrame(const VideoFrame* frame) final {}
20  bool isExternal() final { return false; }
21  virtual void onFrame(const webrtc::VideoFrame& frame) = 0;
22 };
23 }
24 
29  public:
31 
32  bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE type, VideoFrame& videoFrame) final { return false; }
33  bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE type, VideoFrame& videoFrame) final { return false; }
34 
35  bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid,
36  VideoFrame& videoFrame) final { return false; }
37  bool onTranscodedVideoFrame(VideoFrame& videoFrame) final { return false; }
38  bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) final { return false; }
39  bool isExternal() final { return false; }
40 
41  virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE type, webrtc::VideoFrame& videoFrame) { return false; }
42  virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE type, webrtc::VideoFrame& videoFrame) { return false; }
43 
44  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid,
45  webrtc::VideoFrame& videoFrame) { return false; }
46  virtual bool onTranscodedVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
47  virtual bool onMediaPlayerVideoFrame(webrtc::VideoFrame& videoFrame, int mediaPlayerId) { return false; }
48 };
49 
53 class IMediaEngineEx : public IMediaEngine {
54  public:
55  virtual int pushVideoFrameEx(const webrtc::VideoFrame& frame, unsigned int video_track_id = 0) = 0;
56 
57  virtual int enableDualStreamModeEx(bool enabled, const rtc::SimulcastStreamConfig& streamConfig,
58  const rtc::RtcConnection& connection) = 0;
63  virtual int setExternalVideoConfigEx(const rtc::VideoEncoderConfiguration& config, const rtc::RtcConnection& connection) = 0;
64 
65  protected:
66  ~IMediaEngineEx() override = default;
67 };
68 
69 } // namespace media
70 } // namespace agora
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:689
agora::media::IMediaEngineEx::enableDualStreamModeEx
virtual int enableDualStreamModeEx(bool enabled, const rtc::SimulcastStreamConfig &streamConfig, const rtc::RtcConnection &connection)=0
agora::media::IVideoFrameObserverEx::onRenderVideoFrame
virtual bool onRenderVideoFrame(const char *channelId, rtc::uid_t remoteUid, webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:44
agora::media::IVideoFrameObserverEx
Definition: media_engine_i.h:28
agora::media::base::IVideoFrameObserverEx::onFrame
virtual void onFrame(const webrtc::VideoFrame &frame)=0
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:799
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1223
agora::media::base::IVideoFrameObserverEx
Definition: media_engine_i.h:16
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1753
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:1963
agora::media::IVideoFrameObserverEx::onCaptureVideoFrame
virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE type, webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:41
agora::media::base::IVideoFrameObserverEx::isExternal
bool isExternal() final
Definition: media_engine_i.h:20
agora::media::IMediaEngineEx::setExternalVideoConfigEx
virtual int setExternalVideoConfigEx(const rtc::VideoEncoderConfiguration &config)=0
agora
Definition: AgoraAtomicOps.h:21
agora::media::IVideoFrameObserverEx::onRenderVideoFrame
bool onRenderVideoFrame(const char *channelId, rtc::uid_t remoteUid, VideoFrame &videoFrame) final
Definition: media_engine_i.h:35
agora::media::IMediaEngineEx
Definition: media_engine_i.h:53
agora::media::IVideoFrameObserverEx::onCaptureVideoFrame
bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE type, VideoFrame &videoFrame) final
Definition: media_engine_i.h:32
agora::media::IMediaEngineEx::~IMediaEngineEx
~IMediaEngineEx() override=default
agora::media::IVideoFrameObserverEx::onMediaPlayerVideoFrame
bool onMediaPlayerVideoFrame(VideoFrame &videoFrame, int mediaPlayerId) final
Definition: media_engine_i.h:38
agora::media::IVideoFrameObserverEx::onPreEncodeVideoFrame
bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE type, VideoFrame &videoFrame) final
Definition: media_engine_i.h:33
agora::rtc::RtcConnection
Definition: IAgoraRtcEngineEx.h:20
agora::media::IVideoFrameObserverEx::onTranscodedVideoFrame
virtual bool onTranscodedVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:46
agora::media::IVideoFrameObserverEx::~IVideoFrameObserverEx
virtual ~IVideoFrameObserverEx()
Definition: media_engine_i.h:30
agora::rtc::VIDEO_SOURCE_TYPE
VIDEO_SOURCE_TYPE
Definition: AgoraMediaBase.h:45
agora::media::IMediaEngineEx::pushVideoFrameEx
virtual int pushVideoFrameEx(const webrtc::VideoFrame &frame, unsigned int video_track_id=0)=0
agora::media::IVideoFrameObserverEx::onMediaPlayerVideoFrame
virtual bool onMediaPlayerVideoFrame(webrtc::VideoFrame &videoFrame, int mediaPlayerId)
Definition: media_engine_i.h:47
agora::media::base::IVideoFrameObserverEx::~IVideoFrameObserverEx
virtual ~IVideoFrameObserverEx()
Definition: media_engine_i.h:18
agora::media::IMediaEngine
Definition: IAgoraMediaEngine.h:32
agora::media::IVideoFrameObserverEx::onTranscodedVideoFrame
bool onTranscodedVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:37
agora::media::IMediaEngineEx::setExternalVideoConfigEx
virtual int setExternalVideoConfigEx(const rtc::VideoEncoderConfiguration &config, const rtc::RtcConnection &connection)=0
agora::rtc::uid_t
unsigned int uid_t
Definition: AgoraMediaBase.h:29
agora::media::base::IVideoFrameObserverEx::onFrame
void onFrame(const VideoFrame *frame) final
Definition: media_engine_i.h:19
agora::media::IVideoFrameObserverEx::isExternal
bool isExternal() final
Definition: media_engine_i.h:39
agora::media::IVideoFrameObserverEx::onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE type, webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:42