package org.webrtc; import org.webrtc.VideoFrame; import org.webrtc.VideoProcessor; public class NativeCapturerObserver implements CapturerObserver { private final NativeAndroidVideoTrackSource nativeAndroidVideoTrackSource; @CalledByNative public NativeCapturerObserver(long j) { this.nativeAndroidVideoTrackSource = new NativeAndroidVideoTrackSource(j); } @Override // org.webrtc.CapturerObserver public void onCapturerStarted(boolean z2) { this.nativeAndroidVideoTrackSource.setState(z2); } @Override // org.webrtc.CapturerObserver public void onCapturerStopped() { this.nativeAndroidVideoTrackSource.setState(false); } @Override // org.webrtc.CapturerObserver public void onFrameCaptured(VideoFrame videoFrame) { VideoProcessor.FrameAdaptationParameters adaptFrame = this.nativeAndroidVideoTrackSource.adaptFrame(videoFrame); if (adaptFrame != null) { VideoFrame.Buffer cropAndScale = videoFrame.getBuffer().cropAndScale(adaptFrame.cropX, adaptFrame.cropY, adaptFrame.cropWidth, adaptFrame.cropHeight, adaptFrame.scaleWidth, adaptFrame.scaleHeight); this.nativeAndroidVideoTrackSource.onFrameCaptured(new VideoFrame(cropAndScale, videoFrame.getRotation(), adaptFrame.timestampNs)); cropAndScale.release(); } } }