From 0b71c2973fcbd115066c1a5cd31f92b12b9a94e2 Mon Sep 17 00:00:00 2001 From: "Piotr (Peter) Slatala" Date: Wed, 18 Apr 2018 12:42:30 -0700 Subject: [PATCH] Allow creation of 420 Buffer using YUV data. There currently are no Objective-C API's to create a buffer with that data. This change allows us to create a buffer with yuv data. Bug: webrtc:9167 Change-Id: I00f1b91b04bbaa013a88137d0f54bef44287c5aa Reviewed-on: https://webrtc-review.googlesource.com/70563 Reviewed-by: Anders Carlsson Reviewed-by: Zeke Chin Commit-Queue: Peter Slatala Cr-Commit-Position: refs/heads/master@{#22945} --- sdk/objc/Framework/Classes/Video/RTCI420Buffer.mm | 12 ++++++++++++ .../Framework/Headers/WebRTC/RTCVideoFrameBuffer.h | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/sdk/objc/Framework/Classes/Video/RTCI420Buffer.mm b/sdk/objc/Framework/Classes/Video/RTCI420Buffer.mm index 65f3d5ad41..3d0538e572 100644 --- a/sdk/objc/Framework/Classes/Video/RTCI420Buffer.mm +++ b/sdk/objc/Framework/Classes/Video/RTCI420Buffer.mm @@ -30,6 +30,18 @@ return self; } +- (instancetype)initWithWidth:(int)width + height:(int)height + dataY:(const uint8_t *)dataY + dataU:(const uint8_t *)dataU + dataV:(const uint8_t *)dataV { + if (self = [super init]) { + _i420Buffer = webrtc::I420Buffer::Copy( + width, height, dataY, width, dataU, (width + 1) / 2, dataV, (width + 1) / 2); + } + return self; +} + - (instancetype)initWithWidth:(int)width height:(int)height strideY:(int)strideY diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h b/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h index f17d952f98..d590a5f7fc 100644 --- a/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h +++ b/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h @@ -38,6 +38,11 @@ RTC_EXPORT @property(nonatomic, readonly) int strideU; @property(nonatomic, readonly) int strideV; +- (instancetype)initWithWidth:(int)width + height:(int)height + dataY:(const uint8_t *)dataY + dataU:(const uint8_t *)dataU + dataV:(const uint8_t *)dataV; - (instancetype)initWithWidth:(int)width height:(int)height; - (instancetype)initWithWidth:(int)width height:(int)height