Package com.telnyx.webrtc.lib
Interface VideoEncoder
- All Known Implementing Classes:
LibaomAv1Encoder,LibvpxVp8Encoder,LibvpxVp9Encoder,VideoEncoderFallback,WrappedNativeVideoEncoder
public interface VideoEncoder
Interface for a video encoder that can be used with WebRTC. All calls will be made on the
encoding thread. The encoder may be constructed on a different thread and changing thread after
calling release is allowed.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classRepresents bitrate allocated for an encoder to produce frames.static interfacestatic classCapabilities (loss notification, etc.) passed to the encoder by WebRTC.static classCodec specific information about the encoded frame.static classstatic classstatic classstatic classstatic classAdditional info for encoding.static classMetadata about the Encoder.static classRate control parameters.static classBitrate limits for resolution.static classSettings for WebRTC quality based scaling.static classSettings passed to the encoder by WebRTC. -
Method Summary
Modifier and TypeMethodDescriptiondefault longcreateNative(long webrtcEnvRef) 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).encode(VideoFrame frame, VideoEncoder.EncodeInfo info) Requests the encoder to encode a frame.default VideoEncoder.EncoderInfoShould return a descriptive name for the implementation.default VideoEncoder.ResolutionBitrateLimits[]Returns the list of bitrate limits.Any encoder that wants to use WebRTC provided quality scaler must implement this method.initEncode(VideoEncoder.Settings settings, VideoEncoder.Callback encodeCallback) Initializes the encoding process.default booleanReturns true if the encoder is backed by hardware.release()Releases the encoder.setRateAllocation(VideoEncoder.BitrateAllocation allocation, int framerate) Sets the bitrate allocation and the target framerate for the encoder.default VideoCodecStatussetRates(VideoEncoder.RateControlParameters rcParameters) Sets the bitrate allocation and the target framerate for the encoder.
-
Method Details
-
createNative
default long createNative(long webrtcEnvRef) 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), createNative() 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), createNative() 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. -
isHardwareEncoder
default boolean isHardwareEncoder()Returns true if the encoder is backed by hardware. -
initEncode
Initializes the encoding process. Call before any calls to encode. -
release
VideoCodecStatus release()Releases the encoder. No more calls to encode will be made after this call. -
encode
Requests the encoder to encode a frame. -
setRateAllocation
Sets the bitrate allocation and the target framerate for the encoder. -
setRates
Sets the bitrate allocation and the target framerate for the encoder. -
getScalingSettings
VideoEncoder.ScalingSettings getScalingSettings()Any encoder that wants to use WebRTC provided quality scaler must implement this method. -
getResolutionBitrateLimits
Returns the list of bitrate limits. -
getImplementationName
String getImplementationName()Should return a descriptive name for the implementation. Gets called once and cached. May be called from arbitrary thread. -
getEncoderInfo
-