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 Details

    • handle

      protected long handle
    • context

      protected android.content.Context context
    • shouldRotateOnConfigurationChanges

      protected boolean shouldRotateOnConfigurationChanges
  • Constructor Details

    • SurfaceSource

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

    • 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
    • getDescriptor

      public Device.Descriptor getDescriptor()
      Specified by:
      getDescriptor in class Device
    • getPreviewTextureView

      public ImagePreviewView getPreviewTextureView(BroadcastConfiguration.AspectMode aspectMode)
      Specified by:
      getPreviewTextureView in class ImageDevice
    • getPreviewSurfaceView

      public ImagePreviewSurfaceView getPreviewSurfaceView(BroadcastConfiguration.AspectMode aspectMode)
      Specified by:
      getPreviewSurfaceView in class ImageDevice
    • getPreviewSurfaceTarget

      public ImagePreviewSurfaceTarget getPreviewSurfaceTarget(BroadcastConfiguration.AspectMode aspectMode)
      Specified by:
      getPreviewSurfaceTarget in class ImageDevice
    • 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 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)