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

Unified Diff: webrtc/sdk/objc/Framework/Classes/RTCVideoFrame.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/RTCVideoFrame.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame.mm b/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame.mm
index 5b2d2586b156fd5cc68840ca5a28619c76ec7690..4b2b75415f43ecff32e4a056c4524dbecee45935 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame.mm
+++ b/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame.mm
@@ -12,17 +12,25 @@
#include <memory>
+#include "webrtc/common_video/rotation.h"
+
@implementation RTCVideoFrame {
- std::unique_ptr<cricket::VideoFrame> _videoFrame;
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> _videoBuffer;
+ webrtc::VideoRotation _rotation;
+ int64_t _timeStampNs;
rtc::scoped_refptr<webrtc::VideoFrameBuffer> _i420Buffer;
}
- (size_t)width {
- return _videoFrame->width();
+ return _videoBuffer->width();
}
- (size_t)height {
- return _videoFrame->height();
+ return _videoBuffer->height();
+}
+
+- (int)rotation {
+ return static_cast<int>(_rotation);
}
// TODO(nisse): chromaWidth and chromaHeight are used only in
@@ -78,34 +86,32 @@
return self.i420Buffer->StrideV();
}
-- (int64_t)timeStamp {
- return _videoFrame->GetTimeStamp();
+- (int64_t)timeStampNs {
+ return _timeStampNs;
}
- (CVPixelBufferRef)nativeHandle {
- return static_cast<CVPixelBufferRef>(
- _videoFrame->video_frame_buffer()->native_handle());
+ return static_cast<CVPixelBufferRef>(_videoBuffer->native_handle());
}
- (void)convertBufferIfNeeded {
if (!_i420Buffer) {
- if (_videoFrame->video_frame_buffer()->native_handle()) {
- // Convert to I420.
- _i420Buffer = _videoFrame->video_frame_buffer()->NativeToI420Buffer();
- } else {
- // Should already be I420.
- _i420Buffer = _videoFrame->video_frame_buffer();
- }
+ _i420Buffer = _videoBuffer->native_handle()
+ ? _videoBuffer->NativeToI420Buffer()
+ : _videoBuffer;
}
}
#pragma mark - Private
-- (instancetype)initWithNativeFrame:(const cricket::VideoFrame *)nativeFrame {
+- (instancetype)initWithVideoBuffer:
+ (rtc::scoped_refptr<webrtc::VideoFrameBuffer>)videoBuffer
+ rotation:(webrtc::VideoRotation)rotation
+ timeStampNs:(int64_t)timeStampNs {
if (self = [super init]) {
- // Keep a shallow copy of the video frame. The underlying frame buffer is
- // not copied.
- _videoFrame.reset(nativeFrame->Copy());
+ _videoBuffer = videoBuffer;
+ _rotation = rotation;
+ _timeStampNs = timeStampNs;
}
return self;
}
« no previous file with comments | « webrtc/sdk/objc/Framework/Classes/RTCShader+Private.h ('k') | webrtc/sdk/objc/Framework/Classes/RTCVideoFrame+Private.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698