Reason for revert: Fixed downstream issue. Original issue's description: > Revert of Delete method cricket::VideoFrame::Copy. (patchset #3 id:210001 of https://codereview.webrtc.org/2275243002/ ) > > Reason for revert: > Again, brakes a downstream build by removing VideoFrame::Copy method. > > Original issue's description: > > Reland of Delete method cricket::VideoFrame::Copy. (patchset #1 id:1 of https://codereview.webrtc.org/2087923004/ ) > > > > Reason for revert: > > Downstream issue now fixed. > > > > Original issue's description: > > > Revert of Delete method cricket::VideoFrame::Copy. (patchset #7 id:120001 of https://codereview.webrtc.org/2080253002/ ) > > > > > > Reason for revert: > > > It broke a downstream build by removing VideoFrame::Copy method. > > > > > > Original issue's description: > > > > Delete method cricket::VideoFrame::Copy. > > > > > > > > Should be unused in Chrome since cl > > > > https://codereview.chromium.org/2068703002/ > > > > > > > > TBR=tkchin@webrtc.org,magjed@webrtc.org > > > > BUG=webrtc:5682 > > > > > > > > Committed: https://crrev.com/9c00f646f0b3cd33506a1944c7bc6724af041237 > > > > Committed: https://crrev.com/7e4e00d189a5dfac2b463a5100ee65ee2f11ed79 > > > > Cr-Original-Commit-Position: refs/heads/master@{#13236} > > > > Cr-Commit-Position: refs/heads/master@{#13244} > > > > > > TBR=pbos@webrtc.org,tkchin@webrtc.org,magjed@webrtc.org,sergeyu@chromium.org,nisse@webrtc.org > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > NOPRESUBMIT=true > > > NOTREECHECKS=true > > > NOTRY=true > > > BUG=webrtc:5682 > > > > > > Committed: https://crrev.com/123f33cd009606d22cca8b0f4756812406d4580f > > > Cr-Commit-Position: refs/heads/master@{#13246} > > > > TBR=pbos@webrtc.org,tkchin@webrtc.org,magjed@webrtc.org,sergeyu@chromium.org,honghaiz@webrtc.org > > # Not skipping CQ checks because original CL landed more than 1 days ago. > > BUG=webrtc:5682 > > > > Committed: https://crrev.com/f715f983f1b33208ab2d2434f8b36ad5271f680f > > Cr-Commit-Position: refs/heads/master@{#13924} > > TBR=pbos@webrtc.org,tkchin@webrtc.org,magjed@webrtc.org,sergeyu@chromium.org,honghaiz@webrtc.org,nisse@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=webrtc:5682 > > Committed: https://crrev.com/91b03b0ff8c480e4245835c7a4a93733aac534a6 > Cr-Commit-Position: refs/heads/master@{#13925} TBR=pbos@webrtc.org,tkchin@webrtc.org,magjed@webrtc.org,sergeyu@chromium.org,honghaiz@webrtc.org,philipel@webrtc.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=webrtc:5682 Review-Url: https://codereview.webrtc.org/2287223002 Cr-Commit-Position: refs/heads/master@{#13949}
110 lines
3.4 KiB
Plaintext
110 lines
3.4 KiB
Plaintext
/*
|
|
* libjingle
|
|
* Copyright 2013 Google Inc.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
* 3. The name of the author may not be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#import "RTCI420Frame.h"
|
|
|
|
#include <memory>
|
|
|
|
#include "webrtc/media/engine/webrtcvideoframe.h"
|
|
|
|
@implementation RTCI420Frame {
|
|
std::unique_ptr<cricket::VideoFrame> _videoFrame;
|
|
}
|
|
|
|
- (NSUInteger)width {
|
|
return _videoFrame->width();
|
|
}
|
|
|
|
- (NSUInteger)height {
|
|
return _videoFrame->height();
|
|
}
|
|
|
|
// TODO(nisse): chromaWidth and chromaHeight are used only in
|
|
// RTCOpenGLVideoRenderer.mm. Update, and then delete these
|
|
// properties.
|
|
- (NSUInteger)chromaWidth {
|
|
return (self.width + 1) / 2;
|
|
}
|
|
|
|
- (NSUInteger)chromaHeight {
|
|
return (self.height + 1) / 2;
|
|
}
|
|
|
|
- (const uint8_t*)yPlane {
|
|
const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer =
|
|
_videoFrame->video_frame_buffer();
|
|
return buffer ? buffer->DataY() : nullptr;
|
|
}
|
|
|
|
- (const uint8_t*)uPlane {
|
|
const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer =
|
|
_videoFrame->video_frame_buffer();
|
|
return buffer ? buffer->DataU() : nullptr;
|
|
}
|
|
|
|
- (const uint8_t*)vPlane {
|
|
const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer =
|
|
_videoFrame->video_frame_buffer();
|
|
return buffer ? buffer->DataV() : nullptr;
|
|
}
|
|
|
|
- (NSInteger)yPitch {
|
|
const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer =
|
|
_videoFrame->video_frame_buffer();
|
|
return buffer ? buffer->StrideY() : 0;
|
|
}
|
|
|
|
- (NSInteger)uPitch {
|
|
const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer =
|
|
_videoFrame->video_frame_buffer();
|
|
return buffer ? buffer->StrideU() : 0;
|
|
}
|
|
|
|
- (NSInteger)vPitch {
|
|
const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer =
|
|
_videoFrame->video_frame_buffer();
|
|
return buffer ? buffer->StrideV() : 0;
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation RTCI420Frame (Internal)
|
|
|
|
- (instancetype)initWithVideoFrame:(cricket::VideoFrame*)videoFrame {
|
|
if (self = [super init]) {
|
|
// Keep a shallow copy of the video frame. The underlying frame buffer is
|
|
// not copied.
|
|
_videoFrame.reset(new cricket::WebRtcVideoFrame(
|
|
videoFrame->video_frame_buffer(),
|
|
videoFrame->rotation(),
|
|
videoFrame->timestamp_us()));
|
|
}
|
|
return self;
|
|
}
|
|
|
|
@end
|