1 /*
2  *  Copyright 2018 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 <AVFoundation/AVFoundation.h>
12 
13 #import "RTCMacros.h"
14 #import "RTCVideoFrameBuffer.h"
15 
16 NS_ASSUME_NONNULL_BEGIN
17 
18 /** Protocol for RTCVideoFrameBuffers containing YUV planar data. */
19 RTC_OBJC_EXPORT
20 @protocol RTC_OBJC_TYPE
21 (RTCYUVPlanarBuffer)<RTC_OBJC_TYPE(RTCVideoFrameBuffer)>
22 
23     @property(nonatomic, readonly) int chromaWidth;
24 @property(nonatomic, readonly) int chromaHeight;
25 @property(nonatomic, readonly) const uint8_t *dataY;
26 @property(nonatomic, readonly) const uint8_t *dataU;
27 @property(nonatomic, readonly) const uint8_t *dataV;
28 @property(nonatomic, readonly) int strideY;
29 @property(nonatomic, readonly) int strideU;
30 @property(nonatomic, readonly) int strideV;
31 
32 - (instancetype)initWithWidth:(int)width
33                        height:(int)height
34                         dataY:(const uint8_t *)dataY
35                         dataU:(const uint8_t *)dataU
36                         dataV:(const uint8_t *)dataV;
37 - (instancetype)initWithWidth:(int)width height:(int)height;
38 - (instancetype)initWithWidth:(int)width
39                        height:(int)height
40                       strideY:(int)strideY
41                       strideU:(int)strideU
42                       strideV:(int)strideV;
43 
44 @end
45 
46 NS_ASSUME_NONNULL_END
47