From edebf45712397f30c960fcba329784ba70819b9c Mon Sep 17 00:00:00 2001 From: nisse Date: Thu, 15 Sep 2016 07:20:40 -0700 Subject: [PATCH] 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} --- .../Classes/avfoundationvideocapturer.mm | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm b/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm index ef29049aaa..5708346ae2 100644 --- a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm +++ b/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm @@ -740,17 +740,20 @@ void AVFoundationVideoCapturer::CaptureSampleBuffer( } 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(rotation)); + rtc::scoped_refptr 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(rotation)); + buffer = rotated_buffer; } }