New method I420Buffer::Copy.

Needed to replace cricket::VideoFrame::MakeExclusive in chromium.

BUG=webrtc:5682

Review URL: https://codereview.webrtc.org/1822283002

Cr-Original-Commit-Position: refs/heads/master@{#12155}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 7cc9cc0460b9828fa5c139ecb79cf568824e6dac
diff --git a/test/frame_utils.cc b/test/frame_utils.cc
index 13f358a..0f41144 100644
--- a/test/frame_utils.cc
+++ b/test/frame_utils.cc
@@ -47,5 +47,23 @@
                     f1.stride(webrtc::kVPlane), half_width, half_height);
 }
 
+bool FrameBufsEqual(const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& f1,
+                    const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& f2) {
+  if (f1->width() != f2->width() || f1->height() != f2->height() ||
+      f1->stride(webrtc::kYPlane) != f2->stride(webrtc::kYPlane) ||
+      f1->stride(webrtc::kUPlane) != f2->stride(webrtc::kUPlane) ||
+      f1->stride(webrtc::kVPlane) != f2->stride(webrtc::kVPlane)) {
+    return false;
+  }
+  const int half_width = (f1->width() + 1) / 2;
+  const int half_height = (f1->height() + 1) / 2;
+  return EqualPlane(f1->data(webrtc::kYPlane), f2->data(webrtc::kYPlane),
+                    f1->stride(webrtc::kYPlane), f1->width(), f1->height()) &&
+         EqualPlane(f1->data(webrtc::kUPlane), f2->data(webrtc::kUPlane),
+                    f1->stride(webrtc::kUPlane), half_width, half_height) &&
+         EqualPlane(f1->data(webrtc::kVPlane), f2->data(webrtc::kVPlane),
+                    f1->stride(webrtc::kVPlane), half_width, half_height);
+}
+
 }  // namespace test
 }  // namespace webrtc