Class SurfaceSource

  • Direct Known Subclasses:
    CameraSource, CustomImageSource

    public class SurfaceSource
    extends ImageDevice
    An image source backed by an Android Surface. This may be used with inputs such as a Camera2 producer, OpenGL ES or Vulkan, or a MediaProjection. See also Session.createImageInputSource()
    • Field Detail

      • handle

        protected long handle
      • context

        protected android.content.Context context
      • shouldRotateOnConfigurationChanges

        protected boolean shouldRotateOnConfigurationChanges
    • Constructor Detail

      • SurfaceSource

        protected SurfaceSource​(@NonNull
                                android.content.Context context,
                                @Nullable
                                android.view.Surface inputSurface,
                                @Nullable
                                android.graphics.SurfaceTexture inputSurfaceTexture,
                                @NonNull
                                android.os.Handler handler,
                                java.lang.String tag,
                                long handle)
    • Method Detail

      • getInputSurface

        @Nullable
        public android.view.Surface getInputSurface()
        Retrieving this Surface can be done from any thread, but API calls on the Surface may not be thread safe.
        Returns:
        The input surface to be attached to some image producer such as a camera or opengl context
      • setSize

        public void setSize​(int width,
                            int height)
        Set the size of the surface
        Parameters:
        width - width in pixels
        height - height in pixels
      • setOnFrameCallback

        public void setOnFrameCallback​(@Nullable
                                       ImageDevice.FrameCallback callback)
        Description copied from class: ImageDevice
        Set a callback to receive information about image frames as they move through this device. This will be called on the main thread.
        Specified by:
        setOnFrameCallback in class ImageDevice
        Parameters:
        callback - A callback lambda that takes a ImageDeviceFrame.
      • isValid

        public boolean isValid()
        Specified by:
        isValid in class Device
      • getTag

        public java.lang.String getTag()
        Specified by:
        getTag in class Device
      • setRotation

        public void setRotation​(float rotation)
        Description copied from class: ImageDevice
        Sets the rotation of the ImageDevice.
        Specified by:
        setRotation in class ImageDevice
        Parameters:
        rotation - Rotation in radians
      • rotateOnConfigurationChanges

        public void rotateOnConfigurationChanges​(boolean enable)
        Description copied from class: ImageDevice
        Enables/disables rotations of this ImageDevice when the physical device is rotated. When this is enabled, the image source will be rotated to match configuration changes. This is often useful with camera devices, for example. When this is disabled, the image source will not be rotated to match configuration changes. This is often useful for custom image sources or if the camera ought to be locked to a particular orientation to match the application.
        Specified by:
        rotateOnConfigurationChanges in class ImageDevice
        Parameters:
        enable - Whether this device should rotate on configuration changes (e.g. when the physical device is rotated).
      • willRotateOnConfigurationChanges

        public boolean willRotateOnConfigurationChanges()
        Specified by:
        willRotateOnConfigurationChanges in class ImageDevice
        Returns:
        Whether this ImageDevice will rotate on configuration changes.
      • getHandle

        protected long getHandle()
      • setInputSurface

        protected void setInputSurface​(@Nullable
                                       android.view.Surface inputSurface,
                                       @Nullable
                                       android.graphics.SurfaceTexture inputSurfaceTexture)