Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Unified Diff: webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm

Issue 2176623002: iOS render: Handle frame rotation in OpenGL (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@nv21_texture_render
Patch Set: Keep RTCVideoFrame.h pure ObjC Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_];
« no previous file with comments | « webrtc/sdk/objc/Framework/Classes/RTCVideoFrame+Private.h ('k') | webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698