Package org.webrtc

Class NV12Buffer

java.lang.Object
org.webrtc.NV12Buffer
All Implemented Interfaces:
RefCounted, VideoFrame.Buffer

public class NV12Buffer extends Object implements VideoFrame.Buffer
  • Field Details

    • width

      private final int width
    • height

      private final int height
    • stride

      private final int stride
    • sliceHeight

      private final int sliceHeight
    • buffer

      private final ByteBuffer buffer
    • refCountDelegate

      private final RefCountDelegate refCountDelegate
  • Constructor Details

    • NV12Buffer

      public NV12Buffer(int width, int height, int stride, int sliceHeight, ByteBuffer buffer, @Nullable Runnable releaseCallback)
  • Method Details

    • getWidth

      public int getWidth()
      Description copied from interface: VideoFrame.Buffer
      Resolution of the buffer in pixels.
      Specified by:
      getWidth in interface VideoFrame.Buffer
    • getHeight

      public int getHeight()
      Specified by:
      getHeight in interface VideoFrame.Buffer
    • toI420

      public VideoFrame.I420Buffer toI420()
      Description copied from interface: VideoFrame.Buffer
      Returns a memory-backed frame in I420 format. If the pixel data is in another format, a conversion will take place. All implementations must provide a fallback to I420 for compatibility with e.g. the internal WebRTC software encoders.

      Conversion may fail, for example if reading the pixel data from a texture fails. If the conversion fails, null is returned.

      Specified by:
      toI420 in interface VideoFrame.Buffer
    • retain

      public void retain()
      Description copied from interface: RefCounted
      Increases ref count by one.
      Specified by:
      retain in interface RefCounted
      Specified by:
      retain in interface VideoFrame.Buffer
    • release

      public void release()
      Description copied from interface: RefCounted
      Decreases ref count by one. When the ref count reaches zero, resources related to the object will be freed.
      Specified by:
      release in interface RefCounted
      Specified by:
      release in interface VideoFrame.Buffer
    • cropAndScale

      public VideoFrame.Buffer cropAndScale(int cropX, int cropY, int cropWidth, int cropHeight, int scaleWidth, int scaleHeight)
      Description copied from interface: VideoFrame.Buffer
      Crops a region defined by `cropx`, `cropY`, `cropWidth` and `cropHeight`. Scales it to size `scaleWidth` x `scaleHeight`.
      Specified by:
      cropAndScale in interface VideoFrame.Buffer
    • nativeCropAndScale

      private static void nativeCropAndScale(int cropX, int cropY, int cropWidth, int cropHeight, int scaleWidth, int scaleHeight, ByteBuffer src, int srcWidth, int srcHeight, int srcStride, int srcSliceHeight, ByteBuffer dstY, int dstStrideY, ByteBuffer dstU, int dstStrideU, ByteBuffer dstV, int dstStrideV)