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(VideoFrame& videoFrame) final { return false; }
33  bool onPreEncodeVideoFrame(VideoFrame& videoFrame) final { return false; }
34  bool onSecondaryCameraCaptureVideoFrame(VideoFrame& videoFrame) final { return false; }
35  bool onSecondaryPreEncodeCameraVideoFrame(VideoFrame& videoFrame) final { return false; }
36 
37  bool onScreenCaptureVideoFrame(VideoFrame& videoFrame) final { return false; }
38  bool onPreEncodeScreenVideoFrame(VideoFrame& videoFrame) final { return false; }
39  bool onSecondaryScreenCaptureVideoFrame(VideoFrame& videoFrame) final { return false; }
40  bool onSecondaryPreEncodeScreenVideoFrame(VideoFrame& videoFrame) final { return false; }
41 
42  bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid,
43  VideoFrame& videoFrame) final { return false; }
44  bool onTranscodedVideoFrame(VideoFrame& videoFrame) final { return false; }
45  bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) final { return false; }
46  bool isExternal() final { return false; }
47 
48  virtual bool onCaptureVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
49  virtual bool onPreEncodeVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
50  virtual bool onSecondaryCameraCaptureVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
51  virtual bool onSecondaryPreEncodeCameraVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
52 
53  virtual bool onScreenCaptureVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
54  virtual bool onPreEncodeScreenVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
55  virtual bool onSecondaryScreenCaptureVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
56  virtual bool onSecondaryPreEncodeScreenVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
57 
58  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid,
59  webrtc::VideoFrame& videoFrame) { return false; }
60  virtual bool onTranscodedVideoFrame(webrtc::VideoFrame& videoFrame) { return false; }
61  virtual bool onMediaPlayerVideoFrame(webrtc::VideoFrame& videoFrame, int mediaPlayerId) { return false; }
62 };
63 
67 class IMediaEngineEx : public IMediaEngine {
68  public:
69  virtual int pushVideoFrameEx(const webrtc::VideoFrame& frame, unsigned int video_track_id = 0) = 0;
70 
71  virtual int enableDualStreamModeEx(bool enabled, const rtc::SimulcastStreamConfig& streamConfig,
72  const rtc::RtcConnection& connection) = 0;
77  virtual int setExternalVideoConfigEx(const rtc::VideoEncoderConfiguration& config, const rtc::RtcConnection& connection) = 0;
78 
79  protected:
80  ~IMediaEngineEx() override = default;
81 };
82 
83 } // namespace media
84 } // namespace agora
agora::media::IVideoFrameObserverEx::onSecondaryCameraCaptureVideoFrame
virtual bool onSecondaryCameraCaptureVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:50
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:640
agora::media::IVideoFrameObserverEx::onPreEncodeVideoFrame
bool onPreEncodeVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:33
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:58
agora::media::IVideoFrameObserverEx
Definition: media_engine_i.h:28
agora::media::base::IVideoFrameObserverEx::onFrame
virtual void onFrame(const webrtc::VideoFrame &frame)=0
agora::media::IVideoFrameObserverEx::onCaptureVideoFrame
virtual bool onCaptureVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:48
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:744
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1142
agora::media::base::IVideoFrameObserverEx
Definition: media_engine_i.h:16
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1700
agora::media::IVideoFrameObserverEx::onSecondaryPreEncodeCameraVideoFrame
bool onSecondaryPreEncodeCameraVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:35
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:1907
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:42
agora::media::IVideoFrameObserverEx::onSecondaryScreenCaptureVideoFrame
virtual bool onSecondaryScreenCaptureVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:55
agora::media::IVideoFrameObserverEx::onPreEncodeScreenVideoFrame
virtual bool onPreEncodeScreenVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:54
agora::media::IMediaEngineEx
Definition: media_engine_i.h:67
agora::media::IMediaEngineEx::~IMediaEngineEx
~IMediaEngineEx() override=default
agora::media::IVideoFrameObserverEx::onMediaPlayerVideoFrame
bool onMediaPlayerVideoFrame(VideoFrame &videoFrame, int mediaPlayerId) final
Definition: media_engine_i.h:45
agora::media::IVideoFrameObserverEx::onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:49
agora::rtc::RtcConnection
Definition: IAgoraRtcEngineEx.h:20
agora::media::IVideoFrameObserverEx::onTranscodedVideoFrame
virtual bool onTranscodedVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:60
agora::media::IVideoFrameObserverEx::onCaptureVideoFrame
bool onCaptureVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:32
agora::media::IVideoFrameObserverEx::onSecondaryPreEncodeCameraVideoFrame
virtual bool onSecondaryPreEncodeCameraVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:51
agora::media::IVideoFrameObserverEx::~IVideoFrameObserverEx
virtual ~IVideoFrameObserverEx()
Definition: media_engine_i.h:30
agora::media::IVideoFrameObserverEx::onSecondaryCameraCaptureVideoFrame
bool onSecondaryCameraCaptureVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:34
agora::media::IVideoFrameObserverEx::onPreEncodeScreenVideoFrame
bool onPreEncodeScreenVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:38
agora::media::IVideoFrameObserverEx::onSecondaryScreenCaptureVideoFrame
bool onSecondaryScreenCaptureVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:39
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:61
agora::media::IVideoFrameObserverEx::onSecondaryPreEncodeScreenVideoFrame
bool onSecondaryPreEncodeScreenVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:40
agora::media::IVideoFrameObserverEx::onScreenCaptureVideoFrame
virtual bool onScreenCaptureVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:53
agora::media::IVideoFrameObserverEx::onScreenCaptureVideoFrame
bool onScreenCaptureVideoFrame(VideoFrame &videoFrame) final
Definition: media_engine_i.h:37
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:44
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:46
agora::media::IVideoFrameObserverEx::onSecondaryPreEncodeScreenVideoFrame
virtual bool onSecondaryPreEncodeScreenVideoFrame(webrtc::VideoFrame &videoFrame)
Definition: media_engine_i.h:56