Package com.brightcove.player.video360
Class RenderThread
java.lang.Object
java.lang.Thread
android.os.HandlerThread
com.brightcove.player.video360.RenderThread
- All Implemented Interfaces:
Runnable
@RequiresApi(api=17)
public class RenderThread
extends android.os.HandlerThread
RenderThread waits for the SphericalVideoPlayer's SurfaceTexture to be
available then sets up a GL rendering context, creates an external
texture for the video decoder to output to, asks for vsync updates from
the Choreographer, attaches a frame available listener the video decode
SurfaceTexture, then begins video playback.
Drag events from the main thread will be forwarded to the RenderThread's message queue so that it may update the view state.
SphericalSceneRenderer draws the 360 video scene each frame using the latest latched video texture frame.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
-
Field Summary
Modifier and TypeFieldDescriptionstatic final float
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final float
static final float
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionandroid.view.Surface
Creates a newSurface
that will be used to render the 360 video.boolean
isVrMode()
Checks whether the renderer is currently configured to render the video in Google VR mode.void
notifySurfaceAvailable
(Object surface, int width, int height) Notifies the video render thread that the surface is available.void
notifySurfaceChanged
(android.view.Surface surface, int width, int height) Notifies the video render thread that the surface has changed.void
Notifies the video render thread that the surface has been destroyed.void
setOnFrameAvailableListener
(android.graphics.SurfaceTexture.OnFrameAvailableListener onFrameAvailableListener) void
setVrMode
(boolean vrMode) Sets whether the renderer should render the video in Google VR mode.void
start()
Starts the render thread to run asynchronously.Methods inherited from class android.os.HandlerThread
getLooper, getThreadId, onLooperPrepared, quit, quitSafely, run
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, suspend, toString, yield
-
Field Details
-
MSG_SURFACE_AVAILABLE
public static final int MSG_SURFACE_AVAILABLE- See Also:
-
MSG_SURFACE_CHANGED
public static final int MSG_SURFACE_CHANGED- See Also:
-
MSG_SURFACE_DESTROYED
public static final int MSG_SURFACE_DESTROYED- See Also:
-
MSG_FRAME_AVAILABLE
public static final int MSG_FRAME_AVAILABLE- See Also:
-
MSG_VSYNC
public static final int MSG_VSYNC- See Also:
-
MSG_ON_SCROLL
public static final int MSG_ON_SCROLL- See Also:
-
MSG_SET_POSITION
public static final int MSG_SET_POSITION- See Also:
-
FOVY
public static final float FOVY- See Also:
-
Z_NEAR
public static final float Z_NEAR- See Also:
-
Z_FAR
public static final float Z_FAR- See Also:
-
-
Constructor Details
-
RenderThread
Constructs a new 360 video renderer.- Parameters:
renderView
- reference the surface view that owns this render thread.- Throws:
NullPointerException
- if the render view is null.
-
-
Method Details
-
isVrMode
public boolean isVrMode()Checks whether the renderer is currently configured to render the video in Google VR mode.- Returns:
- true if Google VR mode is enabled, otherwise false.
- See Also:
-
setVrMode
public void setVrMode(boolean vrMode) Sets whether the renderer should render the video in Google VR mode.- Parameters:
vrMode
- true if Google VR mode should be enabled, otherwise false.- See Also:
-
notifySurfaceAvailable
Notifies the video render thread that the surface is available.- Parameters:
surface
- reference to aSurfaceView
or {TextureView
width
- the width of the surface.height
- the height of the surface.
-
notifySurfaceChanged
public void notifySurfaceChanged(android.view.Surface surface, int width, int height) Notifies the video render thread that the surface has changed.- Parameters:
surface
- reference to aSurfaceView
or {TextureView
width
- the new width of the surface.height
- the new height of the surface.
-
notifySurfaceDestroyed
public void notifySurfaceDestroyed()Notifies the video render thread that the surface has been destroyed. -
start
public void start()Starts the render thread to run asynchronously. Overrides the base implementation to -
getVideoDecodeSurface
public android.view.Surface getVideoDecodeSurface()Creates a newSurface
that will be used to render the 360 video.- Returns:
- reference to the surface.
- Throws:
IllegalStateException
- exception if the surface cannot be created.
-
setOnFrameAvailableListener
public void setOnFrameAvailableListener(android.graphics.SurfaceTexture.OnFrameAvailableListener onFrameAvailableListener)
-