Package tvi.webrtc
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
Modifier and TypeInterfaceDescriptionstatic class
Represents bitrate allocated for an encoder to produce frames.static interface
static class
Capabilities (loss notification, etc.) passed to the encoder by WebRTC.static class
Codec specific information about the encoded frame.static class
static class
static class
static class
static class
Additional info for encoding.static class
Metadata about the Encoder.static class
Rate control parameters.static class
Bitrate limits for resolution.static class
Settings for WebRTC quality based scaling.static class
Settings passed to the encoder by WebRTC. -
Method Summary
Modifier and TypeMethodDescriptiondefault long
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.EncoderInfo
Should 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 boolean
Returns 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 VideoCodecStatus
setRates
(VideoEncoder.RateControlParameters rcParameters) Sets the bitrate allocation and the target framerate for the encoder.
-
Method Details
-
createNativeVideoEncoder
default long createNativeVideoEncoder()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. -
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
-