Use I420Buffer rather than VideoFrameBuffer when writing pixels.

Prepares for deleting VideoFrameBuffer::MutableDataY{,U,V}. objc
changes extracted from cl https://codereview.webrtc.org/2278883002/.

BUG=webrtc:5921

Review-Url: https://codereview.webrtc.org/2346453002
Cr-Commit-Position: refs/heads/master@{#14236}
diff --git a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm b/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
index ef29049..5708346 100644
--- a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
+++ b/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
@@ -740,17 +740,20 @@
     } else {
       // Applying rotation is only supported for legacy reasons and performance
       // is not critical here.
-      buffer = (rotation == webrtc::kVideoRotation_180)
-          ? I420Buffer::Create(adapted_width, adapted_height)
-          : I420Buffer::Create(adapted_height, adapted_width);
-      libyuv::I420Rotate(scaled_buffer->DataY(), scaled_buffer->StrideY(),
-                         scaled_buffer->DataU(), scaled_buffer->StrideU(),
-                         scaled_buffer->DataV(), scaled_buffer->StrideV(),
-                         buffer->MutableDataY(), buffer->StrideY(),
-                         buffer->MutableDataU(), buffer->StrideU(),
-                         buffer->MutableDataV(), buffer->StrideV(),
-                         crop_width, crop_height,
-                         static_cast<libyuv::RotationMode>(rotation));
+      rtc::scoped_refptr<webrtc::I420Buffer> rotated_buffer(
+          (rotation == webrtc::kVideoRotation_180)
+              ? I420Buffer::Create(adapted_width, adapted_height)
+              : I420Buffer::Create(adapted_height, adapted_width));
+      libyuv::I420Rotate(
+          scaled_buffer->DataY(), scaled_buffer->StrideY(),
+          scaled_buffer->DataU(), scaled_buffer->StrideU(),
+          scaled_buffer->DataV(), scaled_buffer->StrideV(),
+          rotated_buffer->MutableDataY(), rotated_buffer->StrideY(),
+          rotated_buffer->MutableDataU(), rotated_buffer->StrideU(),
+          rotated_buffer->MutableDataV(), rotated_buffer->StrideV(),
+          crop_width, crop_height,
+          static_cast<libyuv::RotationMode>(rotation));
+      buffer = rotated_buffer;
     }
   }