| 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;
|
| }
|
|
|