Name Description Size
AddIceObserver.java Interface to handle completion of addIceCandidate 735
audio
AudioDecoderFactoryFactory.java Implementations of this interface can create a native {@code webrtc::AudioDecoderFactory}. 728
AudioEncoderFactoryFactory.java Implementations of this interface can create a native {@code webrtc::AudioEncoderFactory}. 728
AudioProcessingFactory.java Factory for creating webrtc::AudioProcessing instances. 718
AudioSource.java Java wrapper for a C++ AudioSourceInterface. Used as the source for one or more {@code AudioTrack} objects. 806
AudioTrack.java Java wrapper for a C++ AudioTrackInterface 1020
BuiltinAudioDecoderFactoryFactory.java Creates a native {@code webrtc::AudioDecoderFactory} with the builtin audio decoders. 808
BuiltinAudioEncoderFactoryFactory.java This class creates a native {@code webrtc::AudioEncoderFactory} with the builtin audio encoders. 819
CallSessionFileRotatingLogSink.java 1367
Camera1Capturer.java 1261
Camera1Enumerator.java captureToTexture 7307
Camera2Capturer.java 1431
Camera2Enumerator.java Checks if API is supported and all cameras have better than legacy support. 9626
CameraEnumerationAndroid.java 8009
CameraEnumerator.java 933
CameraVideoCapturer.java Base interface for camera1 and camera2 implementations. Extends VideoCapturer with a switchCamera() function. Also provides subinterfaces for handling camera events, and a helper class for detecting camera freezes. 6504
CapturerObserver.java Interface for observering a capturer. Passed to {@link VideoCapturer#initialize}. Provided by {@link VideoSource#getCapturerObserver}. All callbacks must be executed on a single thread. 948
CryptoOptions.java CryptoOptions defines advanced cryptographic settings for native WebRTC. These settings must be passed into RTCConfiguration. WebRTC is secur by default and you should not need to set any of these options unless you are specifically looking for an additional crypto feature such as AES_GCM support. This class is the Java binding of native api/crypto/cryptooptions.h 5058
DataChannel.java Java wrapper for a C++ DataChannelInterface. 5452
Dav1dDecoder.java 642
DefaultVideoDecoderFactory.java Helper class that combines HW and SW decoders. 2944
DtmfSender.java Java wrapper for a C++ DtmfSenderInterface. 3633
EglBase.java Holds EGL state and utility methods for handling an egl 1.0 EGLContext, an EGLDisplay, and an EGLSurface. 11663
EglBase10.java EGL 1.0 implementation of EglBase. 968
EglBase14.java EGL 1.4 implementation of EglBase. 854
EglRenderer.java Implements VideoSink by displaying the video stream on an EGL Surface. This class is intended to be used as a helper class for rendering on SurfaceViews and TextureViews. 30365
EglThread.java EGL graphics thread that allows multiple clients to share the same underlying EGLContext. 8191
EncodedImage.java An encoded frame from a video stream. Used as an input for decoders and as an output for encoders. 4728
FecControllerFactoryFactoryInterface.java Factory for creating webrtc::FecControllerFactory instances. 746
FileVideoCapturer.java Read video data from file for the .y4m container. 6397
FrameDecryptor.java The FrameDecryptor interface allows Java API users to provide a pointer to their native implementation of the FrameDecryptorInterface. FrameDecryptors are extremely performance sensitive as they must process all incoming video and audio frames. Due to this reason they should always be backed by a native implementation @note Not ready for production use. 943
FrameEncryptor.java The FrameEncryptor interface allows Java API users to provide a pointer to their native implementation of the FrameEncryptorInterface. FrameEncyptors are extremely performance sensitive as they must process all outgoing video and audio frames. Due to this reason they should always be backed by a native implementation. @note Not ready for production use. 943
GlRectDrawer.java Simplest possible GL shader that just draws frames as opaque quads. 1081
GlShader.java Enable and upload a vertex array for attribute `label`. The vertex data is specified in `buffer` with `dimension` number of components per vertex. 5184
GlTextureFrameBuffer.java Helper class for handling OpenGL framebuffer with only color attachment and no depth or stencil buffer. Intended for simple tasks such as texture copy, texture downscaling, and texture color conversion. This class is not thread safe and must be used by a thread with an active GL context. 4285
GlUtil.java Some OpenGL static utility functions. 2256
HardwareVideoDecoderFactory.java Factory for Android hardware VideoDecoders. 2301
IceCandidateErrorEvent.java The local IP address used to communicate with the STUN or TURN server. 1676
JavaI420Buffer.java Implementation of VideoFrame.I420Buffer backed by Java direct byte buffers. 6896
LibaomAv1Encoder.java 735
LibvpxVp8Decoder.java 675
LibvpxVp8Encoder.java 735
LibvpxVp9Decoder.java 692
LibvpxVp9Encoder.java 781
MediaConstraints.java Description of media constraints for {@code MediaStream} and {@code PeerConnection}. 2486
MediaSource.java Java wrapper for a C++ MediaSourceInterface. 1957
MediaStreamTrack.java Java wrapper for a C++ MediaStreamTrackInterface. 3533
Metrics.java Class holding histogram information. 2404
NativeLibraryLoader.java Interface for loading native libraries. A custom loader can be passed to PeerConnectionFactory.initialize. 721
NativePeerConnectionFactory.java Factory for creating webrtc::jni::OwnedPeerConnection instances. 737
NetEqFactoryFactory.java Implementations of this interface can create a native {@code webrtc::NetEqFactory}. 700
PlatformSoftwareVideoDecoderFactory.java Factory for Android platform software VideoDecoders. 1392
Predicate.java Represents a predicate (boolean-valued function) of one argument. 2350
RefCounted.java Interface for ref counted objects in WebRTC. These objects have significant resources that need to be freed when they are no longer in use. Each objects starts with ref count of one when created. If a reference is passed as a parameter to a method, the caller has ownesrship of the object by default - calling release is not necessary unless retain is called. 1078
RendererCommon.java Static helper functions for renderer implementations. 10897
RenderSynchronizer.java Class to synchronize rendering updates with display refresh cycles and save power by blocking updates that exceeds the target frame rate. 4124
ScreenCapturerAndroid.java An implementation of VideoCapturer to capture the screen content as a video stream. Capturing is done by {@code MediaProjection} on a {@code SurfaceTexture}. We interact with this {@code SurfaceTexture} using a {@code SurfaceTextureHelper}. The {@code SurfaceTextureHelper} is created by the native code and passed to this capturer in {@code VideoCapturer.initialize()}. On receiving a new frame, this capturer passes it as a texture to the native code via {@code CapturerObserver.onFrameCaptured()}. This takes place on the HandlerThread of the given {@code SurfaceTextureHelper}. When done with each frame, the native code returns the buffer to the {@code SurfaceTextureHelper} to be used for new frames. At any time, at most one frame is being processed. 8576
SdpObserver.java Interface for observing SDP-related events. 954
SessionDescription.java Description of an RFC 4566 Session. SDPs are passed as serialized Strings in Java-land and are materialized to SessionDescriptionInterface as appropriate in the JNI layer. 1472
SoftwareVideoDecoderFactory.java 1684
SoftwareVideoEncoderFactory.java 1793
SSLCertificateVerifier.java The SSLCertificateVerifier interface allows API users to provide custom logic to verify certificates. 989
StatsObserver.java Interface for observing Stats reports (see webrtc::StatsObservers). 649
StatsReport.java Java version of webrtc::StatsReport. 1797
SurfaceEglRenderer.java Display the video stream on a Surface. renderFrame() is asynchronous to avoid blocking the calling thread. This class is thread safe and handles access from potentially three different threads: Interaction from the main app in init, release and setMirror. Interaction from C++ rtc::VideoSinkInterface in renderFrame. Interaction from SurfaceHolder lifecycle in surfaceCreated, surfaceChanged, and surfaceDestroyed. 5406
SurfaceTextureHelper.java Helper class for using a SurfaceTexture to create WebRTC VideoFrames. In order to create WebRTC VideoFrames, render onto the SurfaceTexture. The frames will be delivered to the listener. Only one texture frame can be in flight at once, so the frame must be released in order to receive a new frame. Call stopListening() to stop receiveing new frames. Call dispose to release all resources once the texture frame is released. 14538
SurfaceViewRenderer.java Display the video stream on a SurfaceView. 10582
TextureBufferImpl.java Android texture buffer that glues together the necessary information together with a generic release callback. ToI420() is implemented by providing a Handler and a YuvConverter. 6673
TimestampAligner.java The TimestampAligner class helps translating camera timestamps into the same timescale as is used by rtc::TimeNanos(). Some cameras have built in timestamping which is more accurate than reading the system clock, but using a different epoch and unknown clock drift. Frame timestamps in webrtc should use rtc::TimeNanos (system monotonic time), and this class provides a filter which lets us use the rtc::TimeNanos timescale, and at the same time take advantage of higher accuracy of the camera clock. This class is a wrapper on top of rtc::TimestampAligner. 2400
TurnCustomizer.java Java wrapper for a C++ TurnCustomizer. 1227
VideoCapturer.java This function is used to initialize the camera thread, the android application context, and the capture observer. It will be called only once and before any startCapture() request. The camera thread is guaranteed to be valid until dispose() is called. If the VideoCapturer wants to deliver texture frames, it should do this by rendering on the SurfaceTexture in {@code surfaceTextureHelper}, register itself as a listener, and forward the frames to CapturerObserver.onFrameCaptured(). The caller still has ownership of {@code surfaceTextureHelper} and is responsible for making sure surfaceTextureHelper.dispose() is called. This also means that the caller can reuse the SurfaceTextureHelper to initialize a new VideoCapturer once the previous VideoCapturer has been disposed. 2142
VideoCodecInfo.java Represent a video codec as encoded in SDP. 2539
VideoCodecStatus.java Status codes reported by video encoding/decoding components. This should be kept in sync with video_error_codes.h. 1009
VideoDecoder.java Interface for a video decoder that can be used in WebRTC. All calls to the class will be made on a single decoding thread. 3389
VideoDecoderFactory.java Factory for creating VideoDecoders. 926
VideoDecoderFallback.java A combined video decoder that falls back on a secondary decoder if the primary decoder fails. 1063
VideoEncoder.java 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. 12764
VideoEncoderFactory.java Factory for creating VideoEncoders. 2573
VideoEncoderFallback.java A combined video encoder that falls back on a secondary encoder if the primary encoder fails. 1159
VideoFileRenderer.java Can be used to save the video frames to file. 6006
VideoFrame.java Java version of webrtc::VideoFrame and webrtc::VideoFrameBuffer. A difference from the C++ version is that no explicit tag is used, and clients are expected to use 'instanceof' to find the right subclass of the buffer. This allows clients to create custom VideoFrame.Buffer in arbitrary format in their custom VideoSources, and then cast it back to the correct subclass in their custom VideoSinks. All implementations must also implement the toI420() function, converting from the underlying representation if necessary. I420 is the most widely accepted format and serves as a fallback for video sinks that can only handle I420, e.g. the internal WebRTC software encoders. 7880
VideoFrameBufferType.java 871
VideoFrameDrawer.java Helper class to draw VideoFrames. Calls either drawer.drawOes, drawer.drawRgb, or drawer.drawYuv depending on the type of the buffer. The frame will be rendered with rotation taken into account. You can supply an additional render matrix for custom transformations. 9947
VideoProcessor.java Lightweight abstraction for an object that can receive video frames, process them, and pass them on to another object. This object is also allowed to observe capturer start/stop. 2799
VideoSink.java Java version of rtc::VideoSinkInterface. 819
VideoSource.java Java wrapper of native AndroidVideoTrackSource. 6015
VideoTrack.java Java version of VideoTrackInterface. 2531
WrappedNativeVideoDecoder.java Wraps a native webrtc::VideoDecoder. 1212
WrappedNativeVideoEncoder.java Wraps a native webrtc::VideoEncoder. 1582
YuvConverter.java Class for converting OES textures to a YUV ByteBuffer. It can be constructed on any thread, but should only be operated from a single thread with an active EGL context. 9854
YuvHelper.java Wraps libyuv methods to Java. All passed byte buffers must be direct byte buffers. 11261