Package tvi.webrtc
Interface VideoEncoder
-
- All Known Implementing Classes:
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 Classes Modifier and Type Interface Description static class
VideoEncoder.BitrateAllocation
Represents bitrate allocated for an encoder to produce frames.static interface
VideoEncoder.Callback
static class
VideoEncoder.Capabilities
Capabilities (loss notification, etc.) passed to the encoder by WebRTC.static class
VideoEncoder.CodecSpecificInfo
Codec specific information about the encoded frame.static class
VideoEncoder.CodecSpecificInfoH264
static class
VideoEncoder.CodecSpecificInfoVP8
static class
VideoEncoder.CodecSpecificInfoVP9
static class
VideoEncoder.EncodeInfo
Additional info for encoding.static class
VideoEncoder.ResolutionBitrateLimits
Bitrate limits for resolution.static class
VideoEncoder.ScalingSettings
Settings for WebRTC quality based scaling.static class
VideoEncoder.Settings
Settings passed to the encoder by WebRTC.
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description 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).VideoCodecStatus
encode(VideoFrame frame, VideoEncoder.EncodeInfo info)
Requests the encoder to encode a frame.java.lang.String
getImplementationName()
Should return a descriptive name for the implementation.default VideoEncoder.ResolutionBitrateLimits[]
getResolutionBitrateLimits()
Returns the list of bitrate limits.VideoEncoder.ScalingSettings
getScalingSettings()
Any encoder that wants to use WebRTC provided quality scaler must implement this method.VideoCodecStatus
initEncode(VideoEncoder.Settings settings, VideoEncoder.Callback encodeCallback)
Initializes the encoding process.default boolean
isHardwareEncoder()
Returns true if the encoder is backed by hardware.VideoCodecStatus
release()
Releases the encoder.VideoCodecStatus
setRateAllocation(VideoEncoder.BitrateAllocation allocation, int framerate)
Sets the bitrate allocation and the target framerate for the encoder.
-
-
-
Method Detail
-
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
VideoCodecStatus initEncode(VideoEncoder.Settings settings, VideoEncoder.Callback encodeCallback)
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
VideoCodecStatus encode(VideoFrame frame, VideoEncoder.EncodeInfo info)
Requests the encoder to encode a frame.
-
setRateAllocation
VideoCodecStatus setRateAllocation(VideoEncoder.BitrateAllocation allocation, int framerate)
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
default VideoEncoder.ResolutionBitrateLimits[] getResolutionBitrateLimits()
Returns the list of bitrate limits.
-
getImplementationName
java.lang.String getImplementationName()
Should return a descriptive name for the implementation. Gets called once and cached. May be called from arbitrary thread.
-
-