1 /* 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #import "RTCVideoFrame.h" 12 13 #include "webrtc/base/scoped_ptr.h" 14 15 #import "webrtc/api/objc/RTCVideoFrame+Private.h" 16 17 @implementation RTCVideoFrame { 18 rtc::scoped_ptr<cricket::VideoFrame> _videoFrame; 19 } 20 21 - (size_t)width { 22 return _videoFrame->GetWidth(); 23 } 24 25 - (size_t)height { 26 return _videoFrame->GetHeight(); 27 } 28 29 - (size_t)chromaWidth { 30 return _videoFrame->GetChromaWidth(); 31 } 32 33 - (size_t)chromaHeight { 34 return _videoFrame->GetChromaHeight(); 35 } 36 37 - (size_t)chromaSize { 38 return _videoFrame->GetChromaSize(); 39 } 40 41 - (const uint8_t *)yPlane { 42 const cricket::VideoFrame *const_frame = _videoFrame.get(); 43 return const_frame->GetYPlane(); 44 } 45 46 - (const uint8_t *)uPlane { 47 const cricket::VideoFrame *const_frame = _videoFrame.get(); 48 return const_frame->GetUPlane(); 49 } 50 51 - (const uint8_t *)vPlane { 52 const cricket::VideoFrame *const_frame = _videoFrame.get(); 53 return const_frame->GetVPlane(); 54 } 55 56 - (int32_t)yPitch { 57 return _videoFrame->GetYPitch(); 58 } 59 60 - (int32_t)uPitch { 61 return _videoFrame->GetUPitch(); 62 } 63 64 - (int32_t)vPitch { 65 return _videoFrame->GetVPitch(); 66 } 67 68 #pragma mark - Private 69 70 - (instancetype)initWithNativeFrame:(const cricket::VideoFrame *)nativeFrame { 71 if (self = [super init]) { 72 // Keep a shallow copy of the video frame. The underlying frame buffer is 73 // not copied. 74 _videoFrame.reset(nativeFrame->Copy()); 75 } 76 return self; 77 } 78 79 @end 80