blob: db2d07ba31a82a1e8371529cc5ff22592a42034e [file] [log] [blame]
Jon Hjelle78234952016-01-11 09:47:07 -08001/*
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