Separate AndroidVideoTrackSource::OnFrameCaptured from adaptation

AndroidVideoTrackSource::OnFrameCaptured currently does adaptation
before passing frames on. We want to add video processing between
adaptation and delivering the frame to the rest WebRTC C++. This
CL prepares for that by splitting OnFrameCaptured() into a separate
adaptation step and delivery step.

Bug: webrtc:10247
Change-Id: Iab759bac7f3072d4552ece80d0b81fc3e634c64c
Reviewed-on: https://webrtc-review.googlesource.com/c/119952
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26571}
diff --git a/sdk/android/api/org/webrtc/VideoSource.java b/sdk/android/api/org/webrtc/VideoSource.java
index f783a57..0939457 100644
--- a/sdk/android/api/org/webrtc/VideoSource.java
+++ b/sdk/android/api/org/webrtc/VideoSource.java
@@ -43,7 +43,20 @@
 
     @Override
     public void onFrameCaptured(VideoFrame frame) {
-      nativeAndroidVideoTrackSource.onFrameCaptured(frame);
+      final NativeAndroidVideoTrackSource.FrameAdaptationParameters parameters =
+          nativeAndroidVideoTrackSource.adaptFrame(frame);
+      if (parameters == null) {
+        // Drop frame.
+        return;
+      }
+
+      final VideoFrame.Buffer adaptedBuffer =
+          frame.getBuffer().cropAndScale(parameters.cropX, parameters.cropY, parameters.cropWidth,
+              parameters.cropHeight, parameters.scaleWidth, parameters.scaleHeight);
+      // TODO(magjed): Add video processing hook here.
+      nativeAndroidVideoTrackSource.onFrameCaptured(
+          new VideoFrame(adaptedBuffer, frame.getRotation(), parameters.timestampNs));
+      adaptedBuffer.release();
     }
   };