Package tvi.webrtc

Class WrappedNativeVideoEncoder

java.lang.Object
tvi.webrtc.WrappedNativeVideoEncoder
All Implemented Interfaces:
VideoEncoder
Direct Known Subclasses:
LibaomAv1Encoder, LibvpxVp8Encoder, LibvpxVp9Encoder, VideoEncoderFallback

public abstract class WrappedNativeVideoEncoder extends Object implements VideoEncoder
Wraps a native webrtc::VideoEncoder.
  • Constructor Details

    • WrappedNativeVideoEncoder

      public WrappedNativeVideoEncoder()
  • Method Details

    • createNativeVideoEncoder

      public abstract long createNativeVideoEncoder()
      Description copied from interface: VideoEncoder
      The encoder implementation backing this interface is either 1) a Java encoder (e.g., an Android platform encoder), or alternatively 2) a native encoder (e.g., a software encoder or a C++ encoder adapter). For case 1), createNativeVideoEncoder() should return zero. In this case, we expect the native library to call the encoder through JNI using the Java interface declared below. For case 2), createNativeVideoEncoder() should return a non-zero value. In this case, we expect the native library to treat the returned value as a raw pointer of type webrtc::VideoEncoder* (ownership is transferred to the caller). The native library should then directly call the webrtc::VideoEncoder interface without going through JNI. All calls to the Java interface methods declared below should thus throw an UnsupportedOperationException.
      Specified by:
      createNativeVideoEncoder in interface VideoEncoder
    • isHardwareEncoder

      public abstract boolean isHardwareEncoder()
      Description copied from interface: VideoEncoder
      Returns true if the encoder is backed by hardware.
      Specified by:
      isHardwareEncoder in interface VideoEncoder
    • initEncode

      public final VideoCodecStatus initEncode(VideoEncoder.Settings settings, VideoEncoder.Callback encodeCallback)
      Description copied from interface: VideoEncoder
      Initializes the encoding process. Call before any calls to encode.
      Specified by:
      initEncode in interface VideoEncoder
    • release

      public final VideoCodecStatus release()
      Description copied from interface: VideoEncoder
      Releases the encoder. No more calls to encode will be made after this call.
      Specified by:
      release in interface VideoEncoder
    • encode

      public final VideoCodecStatus encode(VideoFrame frame, VideoEncoder.EncodeInfo info)
      Description copied from interface: VideoEncoder
      Requests the encoder to encode a frame.
      Specified by:
      encode in interface VideoEncoder
    • setRateAllocation

      public final VideoCodecStatus setRateAllocation(VideoEncoder.BitrateAllocation allocation, int framerate)
      Description copied from interface: VideoEncoder
      Sets the bitrate allocation and the target framerate for the encoder.
      Specified by:
      setRateAllocation in interface VideoEncoder
    • getScalingSettings

      public final VideoEncoder.ScalingSettings getScalingSettings()
      Description copied from interface: VideoEncoder
      Any encoder that wants to use WebRTC provided quality scaler must implement this method.
      Specified by:
      getScalingSettings in interface VideoEncoder
    • getImplementationName

      public final String getImplementationName()
      Description copied from interface: VideoEncoder
      Should return a descriptive name for the implementation. Gets called once and cached. May be called from arbitrary thread.
      Specified by:
      getImplementationName in interface VideoEncoder