Package com.telnyx.webrtc.lib
Class SurfaceEglRenderer
java.lang.Object
com.telnyx.webrtc.lib.EglRenderer
com.telnyx.webrtc.lib.SurfaceEglRenderer
- All Implemented Interfaces:
SurfaceHolder.Callback,VideoSink
Display the video stream on a Surface.
renderFrame() is asynchronous to avoid blocking the calling thread.
This class is thread safe and handles access from potentially three different threads:
Interaction from the main app in init, release and setMirror.
Interaction from C++ rtc::VideoSinkInterface in renderFrame.
Interaction from SurfaceHolder lifecycle in surfaceCreated, surfaceChanged, and surfaceDestroyed.
-
Nested Class Summary
Nested classes/interfaces inherited from class com.telnyx.webrtc.lib.EglRenderer
EglRenderer.ErrorCallback, EglRenderer.FrameListener, EglRenderer.RenderListener -
Constructor Summary
ConstructorsConstructorDescriptionSurfaceEglRenderer(String name) In order to render something, you must first call init(). -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidinit(EglBase.Context sharedContext, int[] configAttributes, RendererCommon.GlDrawer drawer) Same as above with usePresentationTimeStamp set to false.voidinit(EglBase.Context sharedContext, RendererCommon.RendererEvents rendererEvents, int[] configAttributes, RendererCommon.GlDrawer drawer) Initialize this class, sharing resources with `sharedContext`.voidonFrame(VideoFrame frame) Implementations should call frame.retain() if they need to hold a reference to the frame after this function returns.voidvoidsetFpsReduction(float fps) Limit render framerate.voidsurfaceChanged(SurfaceHolder holder, int format, int width, int height) voidsurfaceCreated(SurfaceHolder holder) voidsurfaceDestroyed(SurfaceHolder holder) Methods inherited from class com.telnyx.webrtc.lib.EglRenderer
addFrameListener, addFrameListener, addFrameListener, addRenderListener, clearImage, clearImage, createEglSurface, createEglSurface, init, init, init, printStackTrace, release, releaseEglSurface, removeFrameListener, removeRenderListener, setErrorCallback, setLayoutAspectRatio, setMirror, setMirrorVertically
-
Constructor Details
-
SurfaceEglRenderer
In order to render something, you must first call init().
-
-
Method Details
-
init
public void init(EglBase.Context sharedContext, RendererCommon.RendererEvents rendererEvents, int[] configAttributes, RendererCommon.GlDrawer drawer) Initialize this class, sharing resources with `sharedContext`. The custom `drawer` will be used for drawing frames on the EGLSurface. This class is responsible for calling release() on `drawer`. It is allowed to call init() to reinitialize the renderer after a previous init()/release() cycle. -
init
public void init(EglBase.Context sharedContext, int[] configAttributes, RendererCommon.GlDrawer drawer) Description copied from class:EglRendererSame as above with usePresentationTimeStamp set to false.- Overrides:
initin classEglRenderer- See Also:
-
setFpsReduction
public void setFpsReduction(float fps) Limit render framerate.- Overrides:
setFpsReductionin classEglRenderer- Parameters:
fps- Limit render framerate to this value, or use Float.POSITIVE_INFINITY to disable fps reduction.
-
disableFpsReduction
public void disableFpsReduction()- Overrides:
disableFpsReductionin classEglRenderer
-
pauseVideo
public void pauseVideo()- Overrides:
pauseVideoin classEglRenderer
-
onFrame
Description copied from interface:VideoSinkImplementations should call frame.retain() if they need to hold a reference to the frame after this function returns. Each call to retain() should be followed by a call to frame.release() when the reference is no longer needed.- Specified by:
onFramein interfaceVideoSink- Overrides:
onFramein classEglRenderer
-
surfaceCreated
- Specified by:
surfaceCreatedin interfaceSurfaceHolder.Callback
-
surfaceDestroyed
- Specified by:
surfaceDestroyedin interfaceSurfaceHolder.Callback
-
surfaceChanged
- Specified by:
surfaceChangedin interfaceSurfaceHolder.Callback
-