Index: webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm |
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm b/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm |
index a130d0e7bf43d6054a184e85d1b6f2bfd59f2ad7..73682d3eafe57ed935bfdf7799eb3d63cca48441 100644 |
--- a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm |
+++ b/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm |
@@ -27,27 +27,14 @@ class VideoRendererAdapter |
} |
void OnFrame(const cricket::VideoFrame& nativeVideoFrame) override { |
- RTCVideoFrame *videoFrame = nil; |
- // Rotation of native handles is unsupported right now. Convert to CPU |
- // I420 buffer for rotation before calling the rotation method otherwise |
- // it will hit a DCHECK. |
- if (nativeVideoFrame.rotation() != webrtc::kVideoRotation_0 && |
- nativeVideoFrame.video_frame_buffer()->native_handle()) { |
- rtc::scoped_refptr<webrtc::VideoFrameBuffer> i420Buffer = |
- nativeVideoFrame.video_frame_buffer()->NativeToI420Buffer(); |
- std::unique_ptr<cricket::VideoFrame> cpuFrame( |
- new cricket::WebRtcVideoFrame(i420Buffer, nativeVideoFrame.rotation(), |
- nativeVideoFrame.timestamp_us(), |
- nativeVideoFrame.transport_frame_id())); |
- const cricket::VideoFrame *rotatedFrame = |
- cpuFrame->GetCopyWithRotationApplied(); |
- videoFrame = [[RTCVideoFrame alloc] initWithNativeFrame:rotatedFrame]; |
- } else { |
- const cricket::VideoFrame *rotatedFrame = |
- nativeVideoFrame.GetCopyWithRotationApplied(); |
- videoFrame = [[RTCVideoFrame alloc] initWithNativeFrame:rotatedFrame]; |
- } |
- CGSize current_size = CGSizeMake(videoFrame.width, videoFrame.height); |
+ RTCVideoFrame* videoFrame = [[RTCVideoFrame alloc] |
+ initWithVideoBuffer:nativeVideoFrame.video_frame_buffer() |
+ rotation:nativeVideoFrame.rotation() |
+ timeStampNs:nativeVideoFrame.GetTimeStamp()]; |
+ CGSize current_size = (videoFrame.rotation % 180 == 0) |
+ ? CGSizeMake(videoFrame.width, videoFrame.height) |
+ : CGSizeMake(videoFrame.height, videoFrame.width); |
+ |
if (!CGSizeEqualToSize(size_, current_size)) { |
size_ = current_size; |
[adapter_.videoRenderer setSize:size_]; |