Adds ScaleVideoFrameBuffer to libyuv.

This will be used for frame matching in a follow up CL.

Bug: webrtc:10365
Change-Id: If29fd59f8fff4c30b4c509104ade0e4ff02b08b2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/130489
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27399}
diff --git a/common_video/libyuv/include/webrtc_libyuv.h b/common_video/libyuv/include/webrtc_libyuv.h
index c748d86..0331b37 100644
--- a/common_video/libyuv/include/webrtc_libyuv.h
+++ b/common_video/libyuv/include/webrtc_libyuv.h
@@ -77,6 +77,11 @@
                     int dst_sample_size,
                     uint8_t* dst_frame);
 
+rtc::scoped_refptr<I420BufferInterface> ScaleVideoFrameBuffer(
+    const I420BufferInterface& source,
+    int dst_width,
+    int dst_height);
+
 double I420SSE(const I420BufferInterface& ref_buffer,
                const I420BufferInterface& test_buffer);
 
diff --git a/common_video/libyuv/webrtc_libyuv.cc b/common_video/libyuv/webrtc_libyuv.cc
index eee8cd1..833001c 100644
--- a/common_video/libyuv/webrtc_libyuv.cc
+++ b/common_video/libyuv/webrtc_libyuv.cc
@@ -201,6 +201,16 @@
   return merged_buffer;
 }
 
+rtc::scoped_refptr<I420BufferInterface> ScaleVideoFrameBuffer(
+    const I420BufferInterface& source,
+    int dst_width,
+    int dst_height) {
+  rtc::scoped_refptr<I420Buffer> scaled_buffer =
+      I420Buffer::Create(dst_width, dst_height);
+  scaled_buffer->ScaleFrom(source);
+  return scaled_buffer;
+}
+
 double I420SSE(const I420BufferInterface& ref_buffer,
                const I420BufferInterface& test_buffer) {
   RTC_DCHECK_EQ(ref_buffer.width(), test_buffer.width());