Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
agora::media::IMediaEngineEx Class Referenceabstract

#include <media_engine_i.h>

Inherits agora::media::IMediaEngine.

Public Member Functions

virtual int pushVideoFrameEx (const webrtc::VideoFrame &frame, unsigned int video_track_id=0)=0
 
virtual int enableDualStreamModeEx (bool enabled, const rtc::SimulcastStreamConfig &streamConfig, const rtc::RtcConnection &connection)=0
 
virtual int setExternalVideoConfigEx (const rtc::VideoEncoderConfiguration &config)=0
 
virtual int setExternalVideoConfigEx (const rtc::VideoEncoderConfiguration &config, const rtc::RtcConnection &connection)=0
 
 ~IMediaEngineEx () override=default
 
virtual int registerAudioFrameObserver (IAudioFrameObserver *observer)=0
 
virtual int registerVideoFrameObserver (IVideoFrameObserver *observer)=0
 
virtual int registerVideoEncodedFrameObserver (IVideoEncodedFrameObserver *observer)=0
 
virtual int pushEncodedVideoImage (const unsigned char *imageBuffer, size_t length, const agora::rtc::EncodedVideoFrameInfo &videoEncodedFrameInfo, unsigned int videoTrackId=0)=0
 
- Public Member Functions inherited from agora::media::IMediaEngine
virtual int registerFaceInfoObserver (IFaceInfoObserver *observer)=0
 
virtual int pushAudioFrame (IAudioFrameObserverBase::AudioFrame *frame, rtc::track_id_t trackId=0)=0
 
virtual int pullAudioFrame (IAudioFrameObserverBase::AudioFrame *frame)=0
 
virtual int setExternalVideoSource (bool enabled, bool useTexture, EXTERNAL_VIDEO_SOURCE_TYPE sourceType=VIDEO_FRAME, rtc::SenderOptions encodedVideoOption=rtc::SenderOptions())=0
 
virtual int setExternalRemoteEglContext (void *eglContext)=0
 
virtual int setExternalAudioSource (bool enabled, int sampleRate, int channels, bool localPlayback=false, bool publish=true) __deprecated=0
 
virtual rtc::track_id_t createCustomAudioTrack (rtc::AUDIO_TRACK_TYPE trackType, const rtc::AudioTrackConfig &config)=0
 
virtual int destroyCustomAudioTrack (rtc::track_id_t trackId)=0
 
virtual int setExternalAudioSink (bool enabled, int sampleRate, int channels)=0
 
virtual int enableCustomAudioLocalPlayback (rtc::track_id_t trackId, bool enabled)=0
 
virtual int pushVideoFrame (base::ExternalVideoFrame *frame, unsigned int videoTrackId=0)=0
 
virtual int addVideoFrameRenderer (IVideoFrameObserver *renderer)=0
 
virtual int removeVideoFrameRenderer (IVideoFrameObserver *renderer)=0
 
virtual void release ()=0
 

Additional Inherited Members

- Protected Member Functions inherited from agora::media::IMediaEngine
virtual ~IMediaEngine ()
 

Detailed Description

The IMediaEngineEx class

Constructor & Destructor Documentation

◆ ~IMediaEngineEx()

agora::media::IMediaEngineEx::~IMediaEngineEx ( )
overridedefault

Member Function Documentation

◆ pushVideoFrameEx()

virtual int agora::media::IMediaEngineEx::pushVideoFrameEx ( const webrtc::VideoFrame & frame,
unsigned int video_track_id = 0 )
pure virtual

◆ enableDualStreamModeEx()

virtual int agora::media::IMediaEngineEx::enableDualStreamModeEx ( bool enabled,
const rtc::SimulcastStreamConfig & streamConfig,
const rtc::RtcConnection & connection )
pure virtual

◆ setExternalVideoConfigEx() [1/2]

virtual int agora::media::IMediaEngineEx::setExternalVideoConfigEx ( const rtc::VideoEncoderConfiguration & config)
pure virtual

Deprecated by IRtcEngine::setVideoEncoderConfiguration.

◆ setExternalVideoConfigEx() [2/2]

virtual int agora::media::IMediaEngineEx::setExternalVideoConfigEx ( const rtc::VideoEncoderConfiguration & config,
const rtc::RtcConnection & connection )
pure virtual

◆ registerAudioFrameObserver()

virtual int agora::media::IMediaEngine::registerAudioFrameObserver ( IAudioFrameObserver * observer)
virtual

Registers an audio frame observer object.

Call this method to register an audio frame observer object (register a callback). When you need the SDK to trigger the onMixedAudioFrame, onRecordAudioFrame, onPlaybackAudioFrame, onPlaybackAudioFrameBeforeMixing or onEarMonitoringAudioFrame callback, you need to use this method to register the callbacks. Call timing: Call this method before joining a channel.

Parameters
observerThe observer instance. See IAudioFrameObserver. Set the value as NULL to release the instance. Agora recommends calling this method after receiving onLeaveChannel to release the audio observer object.
Returns
  • 0: Success.
  • < 0: Failure.

Implements agora::media::IMediaEngine.

◆ registerVideoFrameObserver()

virtual int agora::media::IMediaEngine::registerVideoFrameObserver ( IVideoFrameObserver * observer)
virtual

Registers a raw video frame observer object.

If you want to observe raw video frames (such as YUV or RGBA format), Agora recommends that you implement one IVideoFrameObserver class with this method. When calling this method to register a video observer, you can register callbacks in the IVideoFrameObserver class as needed. After you successfully register the video frame observer, the SDK triggers the registered callbacks each time a video frame is received. Applicable scenarios: After registering the raw video observer, you can use the obtained raw video data in various video pre-processing scenarios, such as virtual backgrounds and image enhacement by yourself. Call timing: Call this method before joining a channel.

Note
When handling the video data returned in the callbacks, pay attention to the changes in the width and height parameters, which may be adapted under the following circumstances:
  • When network conditions deteriorate, the video resolution decreases incrementally.
  • If the user adjusts the video profile, the resolution of the video returned in the callbacks also changes.
Parameters
observerThe observer instance. See IVideoFrameObserver. To release the instance, set the value as NULL.
Returns
  • 0: Success.
  • < 0: Failure.

Implements agora::media::IMediaEngine.

◆ registerVideoEncodedFrameObserver()

virtual int agora::media::IMediaEngine::registerVideoEncodedFrameObserver ( IVideoEncodedFrameObserver * observer)
virtual

Registers a receiver object for the encoded video image.

If you only want to observe encoded video frames (such as H.264 format) without decoding and rendering the video, Agora recommends that you implement one IVideoEncodedFrameObserver class through this method.

Note
Call this method before joining a channel.
Parameters
observerThe video frame observer object. See IVideoEncodedFrameObserver.
Returns
  • 0: Success.
  • < 0: Failure.

Implements agora::media::IMediaEngine.

◆ pushEncodedVideoImage()

virtual int agora::media::IMediaEngine::pushEncodedVideoImage ( const unsigned char * imageBuffer,
size_t length,
const agora::rtc::EncodedVideoFrameInfo & videoEncodedFrameInfo,
unsigned int videoTrackId = 0 )
virtual

Pushes the encoded video image to the app.

Parameters
imageBufferA pointer to the video image.
lengthThe data length.
videoEncodedFrameInfoThe reference to the information of the encoded video frame: EncodedVideoFrameInfo.
videoTrackIdThe id of the video track.
  • 0: Success.
  • < 0: Failure.

Implements agora::media::IMediaEngine.